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