************************************************************** * * 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