6549 lines
121 KiB
NASM
6549 lines
121 KiB
NASM
****************************************************************
|
||
*
|
||
* Software: Jamie Rivett
|
||
* Initiated: ?
|
||
*
|
||
* Modified: ?
|
||
*
|
||
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
|
||
*
|
||
*.Last mod - 1/15/93 15:29
|
||
****************************************************************
|
||
.file "select.asm"
|
||
.title "name & team selection"
|
||
.width 132
|
||
.option b,d,l,t
|
||
.mnolist
|
||
|
||
|
||
.include "mproc.equ"
|
||
.include "disp.equ"
|
||
.include "sys.equ"
|
||
.include "gsp.equ"
|
||
.include "mac2.asm"
|
||
|
||
.include "imgtblm.glo"
|
||
; .include "mugshot.tbl"
|
||
|
||
.include "imgtbl.glo"
|
||
.include "imgtblp.glo"
|
||
.include "imgtbl2.glo"
|
||
.include "bgndtbl.glo"
|
||
.include "game.equ"
|
||
.include "audit.equ"
|
||
.include "shawn.hdr"
|
||
|
||
|
||
.def _DAL ;27
|
||
.def _MIN ;26
|
||
.def _MI ;22
|
||
.def _WAS ;21
|
||
.def _PHI ;25
|
||
.def _SAC ;24
|
||
.def _MIL ;18
|
||
.def _DEN ;23
|
||
.def _GOL ;20
|
||
.def _SAN ;19
|
||
.def _SEA ;17
|
||
.def _ATL ;16
|
||
.def _ORL ;15
|
||
.def _LAC ;14
|
||
.def _NJ ;13
|
||
.def _CHA ;12
|
||
.def _BOS ;11
|
||
.def _CLE ;10
|
||
.def _DET ;9
|
||
.def _HOU ;8
|
||
.def _IND ;7
|
||
.def _LAL ;6
|
||
.def _UTA ;5
|
||
.def _NY ;4
|
||
.def _POR ;3
|
||
.def _PHX ;2
|
||
.def _CHI ;1
|
||
|
||
.def logos
|
||
.def game_purchased
|
||
|
||
.def get_teams_pop
|
||
|
||
.global initials_entry
|
||
|
||
.ref OBJOFF,OBJON
|
||
.ref WLK_ATL,RAD_MK2,AUG_ATL,HRD_GLD,MUL_GLD
|
||
.ref our_heads,SCO_MK2,REP_MK2,SUB_MK2
|
||
.ref speech_playovrp
|
||
.ref baby_flag
|
||
.ref challenger2,our_names
|
||
.ref challenger
|
||
.ref brown_shadow
|
||
.ref blue_shadow
|
||
.ref attrib_off
|
||
.ref attrib_on
|
||
.ref update_attribs
|
||
|
||
.ref check_suckup
|
||
.ref player_attribs
|
||
.ref SQTR_R_P
|
||
.ref SQTR_B_P
|
||
.ref set_imgs,SQUD_1,SQUD_2
|
||
.ref ingame_mess
|
||
.ref TWOPLAYERS ;0 = NO, 1 = YES 2 players
|
||
|
||
.ref get_all_sticks_cur
|
||
.ref get_all_sticks_down
|
||
.ref get_all_buttons_cur
|
||
.ref get_all_buttons_down
|
||
.ref get_all_starts_down
|
||
.ref get_but_val_down
|
||
.ref get_stick_val_cur
|
||
.ref get_but_val_down_nt
|
||
.ref get_but_val_cur
|
||
.ref get_stick_val_down
|
||
.ref get_steal_but_cur
|
||
.ref get_team1_turbo,get_team2_turbo
|
||
|
||
.ref timeout,timeout2,timeout3
|
||
.ref matchup_screen
|
||
.ref check_initials
|
||
|
||
|
||
.ref COLTAB
|
||
.ref CYCLE_TABLE
|
||
|
||
.ref snd_play1ovr
|
||
.ref call_team_name,call_matchup
|
||
.ref plyrsdropped
|
||
.ref newplyrs,player_names
|
||
.ref newptr,player_heads
|
||
.ref CR_CONTP
|
||
.ref dropout_stats
|
||
.ref qtr_purchased,game_over
|
||
.ref gmqrtr
|
||
.ref get_initials_string
|
||
|
||
.ref message_buffer
|
||
.ref dec_to_asc,print_string_C
|
||
.ref mess_cursx,copy_string
|
||
.ref mess_line_spacing
|
||
.ref setup_message,print_string_C2
|
||
.ref osgemd_ascii
|
||
.ref arrow1t,arrow2t,arrow3t,arrow4t
|
||
.ref horn_snd
|
||
.ref get_all_records
|
||
.ref sort_wins
|
||
.ref RNDRNG0
|
||
.ref P1DATA,P2DATA,P3DATA,P4DATA
|
||
.ref get_player_record
|
||
.ref print_player_stats
|
||
.ref print_teams_defeated
|
||
.ref GAMSTATE
|
||
|
||
.ref CRED_P
|
||
.ref PCNT,HALT
|
||
.ref pal_find
|
||
|
||
.ref scores
|
||
.ref conttimers
|
||
.ref tvpanelon
|
||
|
||
; in MAIN.ASM
|
||
.ref DELBOBJ
|
||
|
||
;sounds
|
||
|
||
.ref cntdown_snd
|
||
win_snd .word >f3ff,>8,>80a5,0 ;Winner snd/Suckup credits
|
||
tune1end_snd .word >f3fe,1,>8004,0 ;End team select tune
|
||
tune1_snd .word >f3fe,10,>8001,0 ;team select screen
|
||
cursor_snd1 .word >f3f7,>8,>8080,0 ;cursor movement
|
||
cursor_snd2 .word >f3f7,>8,>8081,0 ;
|
||
cursor_snd3 .word >f3f7,>8,>8082,0 ;
|
||
cursor_snd4 .word >f3f7,>8,>8083,0 ;
|
||
select_snd1 .word >f3f7,>8,>8084,0 ;select option sound
|
||
select_snd2 .word >f3f7,>8,>8085,0 ;
|
||
select_snd3 .word >f3f7,>8,>8086,0 ;
|
||
select_snd4 .word >f3f7,>8,>8087,0 ;
|
||
fullgame_snd1 .word >f3f7,>8,>8088,0 ;fullgame purchase
|
||
fullgame_snd2 .word >f3f7,>8,>8089,0 ;
|
||
fullgame_snd3 .word >f3f7,>8,>808a,0 ;
|
||
fullgame_snd4 .word >f3f7,>8,>808b,0 ;
|
||
scroll_snd .word >f3ff,>8,>8097,0 ;Scroll snd
|
||
welcm_snd .word >f990,40,>81cb,0 ;Welcome
|
||
baddec_snd .word >f990,72,>81b7,0 ;bad decision <--change!
|
||
|
||
cursor_sounds
|
||
.long cursor_snd1,cursor_snd2
|
||
.long cursor_snd3,cursor_snd4
|
||
|
||
select_sounds
|
||
.long select_snd1,select_snd2
|
||
.long select_snd3,select_snd4
|
||
|
||
;symbols defined in this file
|
||
|
||
.def name_sort
|
||
|
||
;symbols defined externally
|
||
|
||
.global player1_data,player2_data,player3_data,player4_data
|
||
|
||
.ref strongmen
|
||
.ref print_ranking
|
||
.ref show_hiscore
|
||
.ref show_player_records
|
||
.ref GET_AUD,AUD,AUD1
|
||
.ref COLRTEMP
|
||
.ref cntrs_delay
|
||
.ref KILBGND
|
||
.ref BAKMODS,BGND_UD1,CLR_SCRN
|
||
.ref pal_clean,pal_getf
|
||
.ref GET_ADJ
|
||
.ref pal_set
|
||
.ref PSTATUS,PSTATUS2
|
||
.ref dpageflip
|
||
.ref IRQSKYE
|
||
.ref WIPEOUT
|
||
.ref BINBCD
|
||
|
||
.def inmatchup
|
||
.bss inmatchup,16
|
||
BSSX kp_ram, 10*32
|
||
;ram
|
||
BSSX credit1_obj, 32 ;10's object
|
||
BSSX credit2_obj, 32 ;1's object
|
||
BSSX credit3_obj, 32 ;CREDIT or FREE PLAY object
|
||
.bss exit_status, 16
|
||
|
||
.bss credtime1_obj, 32*1 ;
|
||
.bss credtime2_obj, 32*1 ;
|
||
.bss credtime3_obj, 32*1 ;
|
||
.bss credtime4_obj, 32*1 ;
|
||
|
||
BSSX name1_obj, 32
|
||
BSSX name2_obj, 32
|
||
BSSX name3_obj, 32
|
||
BSSX name4_obj, 32
|
||
|
||
BSSX attrib1_obj, 32*9
|
||
BSSX attrib2_obj, 32*9
|
||
BSSX attrib3_obj, 32*9
|
||
BSSX attrib4_obj, 32*9
|
||
|
||
|
||
.bss head1_obj, 32
|
||
.bss head2_obj, 32
|
||
.bss head3_obj, 32
|
||
.bss head4_obj, 32
|
||
|
||
BSSX teamset1_obj, 32
|
||
BSSX teamset2_obj, 32
|
||
|
||
.bss logo1_obj, 2*32
|
||
.bss logo2_obj, 2*32
|
||
|
||
.bss message1_obj, 32
|
||
.bss message2_obj, 32
|
||
.bss message3_obj, 32
|
||
.bss message4_obj, 32
|
||
|
||
.bss team1, 16
|
||
.bss team2, 16
|
||
.bss team1_control, 16 ;player selecting team 1
|
||
.bss team2_control, 16 ;player selecting team 2
|
||
.global team1,team2
|
||
.global team1_control,team2_control
|
||
BSSX oteam1, 16 ;Used to keep original court colors
|
||
|
||
.bss enter_initials, 16
|
||
BSSX can_enter_inits,16
|
||
.bss game_purchased, 16 ;full game purchase
|
||
BSSX page_scrolling, 16 ;0=no, 1=yes
|
||
|
||
.bss plate1_objs, 2*32 ;plate behind heads & logo
|
||
.bss plate2_objs, 2*32 ; " " "
|
||
|
||
BSSX force_selection,16
|
||
BSSX in_team_select,16
|
||
|
||
BSSX special_heads,16*4 ;-1 = normal player head
|
||
|
||
; BSSX player_toggle1, 16 ;0 = no toggle
|
||
; BSSX player_toggle2, 16 ;must follow player_toggle1!!!
|
||
|
||
.bss bigroster1, 16
|
||
.bss bigroster2, 16
|
||
|
||
.bss tm1taps, 16 ;For powering up big roster
|
||
.bss tm2taps, 16
|
||
.bss dbnce1, 16
|
||
.bss dbnce2, 16
|
||
.bss tm1swrl, 16
|
||
.bss tm2swrl, 16
|
||
|
||
.bss toggle1_time, 16
|
||
.bss toggle2_time, 16
|
||
.bss switch_1,16
|
||
.bss switch_2,16
|
||
.bss team1_switch,16
|
||
.bss team2_switch,16
|
||
|
||
NUM_TEAMS equ 27
|
||
|
||
BSSX tm1set,(NUM_TEAMS+1)*16
|
||
BSSX tm2set,(NUM_TEAMS+1)*16
|
||
|
||
.bss teams_pop, NUM_TEAMS*32
|
||
.bss sorted_teams, NUM_TEAMS*16
|
||
|
||
BSSX fatality,16 ;Fatality 0,1,2, or 3 for both teams
|
||
BSSX winningteam,16
|
||
|
||
.bss fixbug,16
|
||
|
||
.text
|
||
|
||
TEAMSEL_PAGE equ 0*256
|
||
NAMENT_PAGE equ 1*256
|
||
YESNO_PAGE equ 2*256
|
||
|
||
XTRA_CRTIME equ >7fff ;20*60
|
||
MAX_CRTIME equ >7fff ;30*60
|
||
|
||
_ATL equ 0
|
||
_BOS equ 1
|
||
_CHA equ 2
|
||
_CHI equ 3
|
||
_CLE equ 4
|
||
_DAL equ 5
|
||
_DEN equ 6
|
||
_DET equ 7
|
||
_GOL equ 8
|
||
_HOU equ 9
|
||
_IND equ 10
|
||
_LAC equ 11
|
||
_LAL equ 12
|
||
_MI equ 13
|
||
_MIL equ 14
|
||
_MIN equ 15
|
||
_NJ equ 16
|
||
_NY equ 17
|
||
_ORL equ 18
|
||
_PHI equ 19
|
||
_PHX equ 20
|
||
_POR equ 21
|
||
_SAC equ 22
|
||
_SAN equ 23
|
||
_SEA equ 24
|
||
_UTA equ 25
|
||
_WAS equ 26
|
||
_MK2 equ 27 ;Special defeated all 27 teams - MK2
|
||
|
||
#******************************************************************************
|
||
|
||
SCROLL_SPEED equ 8
|
||
|
||
SUBRP initials_entry
|
||
|
||
.if 0
|
||
JSRP show_player_records
|
||
.endif
|
||
|
||
.if 0
|
||
clr a0 ;cycle through hiscore stuff
|
||
#whopper
|
||
PUSHP a0
|
||
JSRP show_hiscore
|
||
PULLP a0
|
||
inc a0
|
||
jruc #whopper
|
||
.endif
|
||
|
||
calla display_blank
|
||
calla WIPEOUT ;CLEAN SYSTEM OUT
|
||
|
||
clr a0
|
||
move a0,@HALT
|
||
move a0,@in_team_select
|
||
move a0,@toggle1_time
|
||
move a0,@toggle2_time
|
||
move a0,@strongmen
|
||
|
||
movk 27,a1
|
||
movi tm1set,a2
|
||
movi tm2set,a3
|
||
#lp move a0,*a2+
|
||
move a0,*a3+
|
||
dsjs a1,#lp
|
||
|
||
|
||
movi -1,a0
|
||
move a0,@team1 ;no teams selected
|
||
move a0,@team2
|
||
move a0,@team1_control ;player selecting team 1
|
||
move a0,@team2_control ;player selecting team 2
|
||
|
||
move a0,@special_heads
|
||
move a0,@special_heads+10h
|
||
move a0,@special_heads+20h
|
||
move a0,@special_heads+30h
|
||
|
||
move a0,@bigroster1
|
||
move a0,@bigroster2
|
||
|
||
clr a0
|
||
move a0,@tm1swrl
|
||
move a0,@tm2swrl
|
||
move a0,@tm1taps
|
||
move a0,@tm2taps
|
||
move a0,@page_scrolling ;not scrolling
|
||
move a0,@team1_switch
|
||
move a0,@team2_switch
|
||
move a0,@baby_flag
|
||
|
||
movi tune1_snd,a0
|
||
calla snd_play1ovr
|
||
|
||
movi MAX_CRTIME,a0
|
||
move a0,@cntrs_delay
|
||
|
||
movi -1,a0 ;init all 4 players data to -1
|
||
movi player1_data,a1
|
||
movi 4*PR_SIZE/16,a2 ;4 players @ PR_SIZE words each
|
||
#init_loop
|
||
move a0,*a1+
|
||
dsj a2,#init_loop
|
||
|
||
movk 1,a0 ;page flipping on
|
||
move a0,@dpageflip
|
||
|
||
movi 4<<10+4<<5+7,a0
|
||
move a0,@IRQSKYE
|
||
|
||
SLEEPK 1
|
||
; CALLA COLRPRC
|
||
|
||
; movi PALFRAM+PALRSIZ,a2 ;>Steal pals 1-3
|
||
; movi junkp,a1
|
||
; movk 3,a3
|
||
;#loop move a1,*a2+,L
|
||
; dsj a3,#loop
|
||
|
||
movi SCRNEND,a0 ;[256,405]
|
||
move a0,@SCRNLR,L
|
||
|
||
clr a0
|
||
move a0,@WORLDTLX,L
|
||
movi [YESNO_PAGE,0],a0
|
||
move a0,@WORLDTLY,L
|
||
|
||
SLEEPK 2
|
||
|
||
CREATE0 strt_snd
|
||
|
||
movi name_entry_mod,a0
|
||
move @TWOPLAYERS,a1 ;0 = NO, 1 = YES 2 players
|
||
jrz #not2
|
||
|
||
movi name_entry_kit_mod,a0
|
||
#not2
|
||
move a0,@BAKMODS,L
|
||
calla BGND_UD1
|
||
|
||
calla blue_shadow
|
||
|
||
calla create_bits
|
||
|
||
|
||
CREATE0 monitor_buyins
|
||
CREATE0 team_control
|
||
|
||
|
||
CREATE0 credits
|
||
CREATE0 credit_messages
|
||
CREATE0 monitor_fullgame
|
||
|
||
|
||
movk 1,a0
|
||
move a0,@DISPLAYON
|
||
SLEEPK 2
|
||
calla display_unblank
|
||
|
||
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrnz #2_plyrs
|
||
|
||
.ref winner_stays_box
|
||
JSRP winner_stays_box ;skip if 2 player kit
|
||
#2_plyrs
|
||
|
||
|
||
movi #init_setup,a2
|
||
calla setup_message
|
||
|
||
.global mess_objid
|
||
|
||
movi CLSDEAD|123,a0
|
||
move a0,@mess_objid
|
||
movk 22,a0
|
||
move a0,@mess_line_spacing
|
||
movi #str_init,a4
|
||
calla print_string_C2
|
||
|
||
calla scrnrel_off
|
||
|
||
calla create_text
|
||
|
||
movi [200-57,0],a0 ;x val
|
||
movi [62-3,0],a1 ;y val
|
||
movi yesnobak,a2 ;* image
|
||
movk 5,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
movi TYPTEXT,a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ
|
||
|
||
SLEEP TSEC-30
|
||
|
||
clr a9
|
||
clr a10
|
||
movi 20*TSEC,a7
|
||
#input_loop
|
||
PUSHP a7
|
||
move a10,a11 ;last cursor pos
|
||
calla get_all_sticks_cur
|
||
btst 1,a0 ;down
|
||
jrz #no_down
|
||
movk 1,a10
|
||
#no_down
|
||
btst 0,a0 ;up
|
||
jrz #no_up
|
||
clr a10
|
||
#no_up
|
||
move a10,a0
|
||
sll 4,a0 ;x 16 bits
|
||
addi #ypos,a0
|
||
move *a0,a0
|
||
move *a8(OYPOS),a1
|
||
andni 0ffh,a1 ;or in page offset
|
||
or a1,a0
|
||
move a0,*a8(OYPOS) ;new cursor Y
|
||
|
||
cmp a10,a11
|
||
jreq #no_change
|
||
SOUND1 cursor_snd1
|
||
clr a9
|
||
#no_change
|
||
|
||
btst 4,a9
|
||
jrz #ison
|
||
calla obj_off
|
||
jruc #skip
|
||
#ison
|
||
calla obj_on
|
||
#skip
|
||
inc a9
|
||
|
||
SLEEPK 1
|
||
|
||
;; move @PSTATUS,a0
|
||
;; jrz #timed_out
|
||
|
||
PULLP a7
|
||
dec a7
|
||
jrnz #no_timeout
|
||
movk 1,a10 ;no initials
|
||
move *a8(OYPOS),a1
|
||
andni 0ffh,a1 ;or in page offset
|
||
movi 129-3,a0
|
||
or a0,a1
|
||
move a1,*a8(OYPOS)
|
||
jruc #timeout
|
||
#no_timeout
|
||
calla get_all_buttons_down
|
||
jrz #input_loop
|
||
#timeout
|
||
|
||
calla obj_on
|
||
movi 0f0fh,a0
|
||
move a0,*a8(OCONST)
|
||
|
||
SOUND1 select_snd1
|
||
movk 3,a11
|
||
#again
|
||
calla const_on
|
||
SLEEPK 3
|
||
calla const_off
|
||
SLEEPK 3
|
||
dsj a11,#again
|
||
|
||
SLEEP 20
|
||
|
||
xori 1,a10 ;1 = yes, 0 = no
|
||
move a10,@enter_initials
|
||
jrz #skip_name
|
||
|
||
movi cheer_snd,a0
|
||
calla snd_play1
|
||
|
||
movi AUD_INITENTRD,a0 ;inc initials entered audit
|
||
calla AUD1
|
||
|
||
calla del_offscreen_bobjs
|
||
JSRP name_entry
|
||
|
||
move @PSTATUS,a0
|
||
jrz #timed_out
|
||
jruc #do_teamsel
|
||
#skip_name
|
||
movi boo1_snd,a0
|
||
calla snd_play1
|
||
|
||
calla KILBGND ;Kill old background
|
||
calla pal_clean
|
||
|
||
movi [NAMENT_PAGE,0],a0
|
||
move a0,@WORLDTLY,L
|
||
movi [NAMENT_PAGE,0],a0
|
||
move a0,@WORLDTL,L
|
||
|
||
movi name_entry2_mod,a0
|
||
move a0,@BAKMODS,L
|
||
calla BGND_UD1
|
||
|
||
|
||
|
||
|
||
movi #init_setup2,a2
|
||
calla setup_message
|
||
movi CLSDEAD|123,a0
|
||
move a0,@mess_objid
|
||
movk 22,a0
|
||
move a0,@mess_line_spacing
|
||
movi #str_init,a4
|
||
calla print_string_C2
|
||
|
||
calla scrnrel_off
|
||
|
||
calla create_text
|
||
|
||
|
||
#do_teamsel
|
||
|
||
calla del_offscreen_bobjs
|
||
|
||
JSRP team_selection
|
||
|
||
movk 25,a10
|
||
#waitabit
|
||
SLEEPK 1
|
||
move @team1,a0
|
||
move @team2,a1
|
||
and a0,a1
|
||
move a1,a1
|
||
jrn #timed_out
|
||
dsj a10,#waitabit
|
||
|
||
.ref select_teams
|
||
calla select_teams
|
||
|
||
movi horn_snd,a0
|
||
calla snd_play1
|
||
|
||
; SOUND1 tune1end_snd
|
||
|
||
movk 1,a0
|
||
move a0,@inmatchup
|
||
|
||
JSRP matchup_screen
|
||
|
||
clr a0
|
||
move a0,@in_team_select
|
||
move a0,@inmatchup
|
||
|
||
#timed_out
|
||
RETP
|
||
|
||
strt_snd
|
||
SLEEP >d8
|
||
movi welcm_snd,a0
|
||
calla snd_play1
|
||
DIE
|
||
|
||
|
||
SUBRP scrnrel_off
|
||
|
||
movi OBJLST,a14
|
||
#lp8
|
||
move *a14,a14,L
|
||
jrz #x
|
||
move *a14(OID),a2
|
||
cmpi CLSDEAD|123,a2
|
||
jrne #lp8
|
||
move *a14(OFLAGS),a0
|
||
andni M_SCRNREL,a0 ;turn off screen relative
|
||
move a0,*a14(OFLAGS)
|
||
movk 6,a0
|
||
move a0,*a14(OZPOS)
|
||
jruc #lp8
|
||
#x rets
|
||
|
||
|
||
#ypos .word 62-3,129-3
|
||
|
||
|
||
#init_setup
|
||
RJR_STR osgemd_ascii,10,0,199,12+YESNO_PAGE,WHITEPAL,0
|
||
#init_setup2
|
||
RJR_STR osgemd_ascii,10,0,199,12+NAMENT_PAGE,WHITEPAL,0
|
||
#str_init
|
||
.string "enter initials for",1
|
||
.string "record keeping?",0
|
||
|
||
|
||
cheer_snd .word >f898,10,>8144,0 ;Quick cheer
|
||
cheer1_snd .word >fd84,80,>8111,0 ;Long cheer
|
||
cheer2_snd .word >f894,80,>8144,0 ;Long cheer
|
||
cheer3_snd .word >fc84,120,>814e,0 ;Long cheer
|
||
boo1_snd .word >f884,120,>814a,0 ;Boo
|
||
.even
|
||
|
||
|
||
#******************************************************************************
|
||
|
||
SUBRP delete_text
|
||
|
||
movi TYPTEXT,a0 ;object ID
|
||
clr a1 ;mask
|
||
calla obj_delc
|
||
rets
|
||
|
||
#******************************************************************************
|
||
|
||
SUBRP create_text
|
||
|
||
movk 5,a4
|
||
movi #images,a5
|
||
#initext
|
||
movi LGMDGLD,b0
|
||
move *a5+,a0 ;x val
|
||
sll 16,a0
|
||
move *a5+,a1 ;y val
|
||
sll 16,a1
|
||
move *a5+,a2,L ;* image
|
||
PUSH a4,a5
|
||
movk 6,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
movi TYPTEXT,a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJP
|
||
PULL a4,a5
|
||
dsj a4,#initext
|
||
|
||
rets
|
||
|
||
|
||
.asg 62,Y1
|
||
.asg 129,Y2
|
||
.asg 200-52,X1
|
||
.asg 200-39,X2
|
||
#images
|
||
.word X1,Y1
|
||
.long lgmd_Y
|
||
|
||
.word X1+38+3,Y1
|
||
.long lgmd_E
|
||
|
||
.word X1+38+3+30+3,Y1
|
||
.long lgmd_S
|
||
|
||
.word X2,Y2
|
||
.long lgmd_N
|
||
|
||
.word X2+38+3,Y2
|
||
.long lgmd_O
|
||
|
||
|
||
#******************************************************************************
|
||
|
||
SUBRP name_entry
|
||
|
||
clr a0
|
||
move a0,@force_selection
|
||
|
||
movk 1,a0
|
||
move a0,@can_enter_inits ;can enter initials
|
||
|
||
calla get_all_records
|
||
calla sort_wins
|
||
|
||
movk 1,a10
|
||
CREATE0 player_cursor
|
||
movk 1,a10 ;player 2
|
||
CREATE0 challenger
|
||
movk 2,a10
|
||
CREATE0 player_cursor
|
||
movk 2,a10 ;player 3
|
||
CREATE0 challenger
|
||
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrnz #2_plyrs
|
||
|
||
clr a10
|
||
CREATE0 player_cursor
|
||
clr a10 ;player 1
|
||
CREATE0 challenger
|
||
movk 3,a10
|
||
CREATE0 player_cursor
|
||
movk 3,a10 ;player 4
|
||
CREATE0 challenger
|
||
|
||
#2_plyrs
|
||
|
||
MOVI [3,9],a8 ;START AT COLOR 3, CYCLE 9 COLORS
|
||
MOVI SGMD8PLV,a9 ;PAL NAME
|
||
MOVI COLTAB,a10 ;TABLE TO CYCLE WITH
|
||
MOVK 3,a11 ;RATE OF CYCLE IN TICKS
|
||
CREATE CYCPID2,CYCLE_TABLE ;START PROCESS TO DO CYCLE
|
||
|
||
clr a0
|
||
move a0,@exit_status
|
||
|
||
movi -SCROLL_SPEED<<16,a10
|
||
JSRP scroll_page
|
||
|
||
calla delete_text
|
||
|
||
calla brown_shadow
|
||
|
||
movi 25*TSEC,a10
|
||
CREATE CNTDWN_PID,timeout
|
||
|
||
#wait_exit
|
||
SLEEPK 1
|
||
calla update_credits
|
||
|
||
move @exit_status,a0
|
||
jrnz #wait_exit
|
||
|
||
clr a0
|
||
move a0,@can_enter_inits ;can't enter initials
|
||
|
||
movi CNTDWN_PID,a0
|
||
calla KIL1C
|
||
|
||
movi CYCPID2,a0 ;kill cycler
|
||
calla KIL1C
|
||
|
||
calla delete_text
|
||
|
||
RETP
|
||
|
||
#******************************************************************************
|
||
|
||
SUBR team_selection
|
||
|
||
movk 8,a9 ;palette
|
||
movi [32+TEAMSEL_PAGE,44],a10 ;start y,x
|
||
movi city_table_left+2*16,a8 ;* alpha table
|
||
clr a11 ;object ID
|
||
calla display_alpha_table
|
||
|
||
movk 9,a9 ;palette
|
||
movi [32+TEAMSEL_PAGE,44],a10 ;start y,x
|
||
movi city_table_right+2*16,a8 ;* alpha table
|
||
clr a11 ;object ID
|
||
calla display_alpha_table
|
||
|
||
clr a0
|
||
move a0,@exit_status
|
||
move a0,@force_selection
|
||
move a0,@fatality
|
||
|
||
clr a10
|
||
CREATE0 challenger2
|
||
movk 1,a10
|
||
CREATE0 challenger2
|
||
|
||
CREATE0 team1_cursor
|
||
CREATE0 team2_cursor
|
||
|
||
clr a0
|
||
calla create_logos
|
||
clr a0
|
||
calla create_player_heads
|
||
clr a0
|
||
calla create_team_set
|
||
CREATE0 create_team_set_flsh
|
||
calla update_team_set
|
||
|
||
SLEEP 2
|
||
|
||
calla update_logos
|
||
calla update_player_heads
|
||
|
||
movi -SCROLL_SPEED<<16,a10
|
||
JSRP scroll_page
|
||
movk 1,a0
|
||
move a0,@page_scrolling ;scrolling
|
||
|
||
calla find_plates ;find bgnd plate objects (for flashing)
|
||
calla delete_text
|
||
|
||
calla brown_shadow
|
||
|
||
movk 1,a0
|
||
move a0,@in_team_select
|
||
|
||
calla del_offscreen_bobjs
|
||
calla create_player_names
|
||
calla update_player_names
|
||
|
||
; movi #press_setup,a2
|
||
; calla setup_message
|
||
; movi #str_press,a4
|
||
; calla print_string_C2
|
||
|
||
SLEEPK 15
|
||
|
||
clr a0
|
||
move a0,@page_scrolling ;not scrolling
|
||
|
||
.ref blink_tmslct
|
||
CREATE0 blink_tmslct
|
||
|
||
SUBRP subs_in
|
||
|
||
;Temp
|
||
; movi 07ffffffh,a0
|
||
; move a0,@player3_data+PR_TEAMSDEF,L
|
||
; move a0,@player2_data+PR_TEAMSDEF,L
|
||
|
||
move @team1_control,a0 ;player selecting team 1
|
||
jrn #not_bigrost
|
||
sll 5,a0
|
||
addi defeated,a0
|
||
move *a0,a0,L
|
||
move *a0,a0,L
|
||
cmpi 07ffffffh,a0
|
||
jrnz #not_bigrost
|
||
|
||
move @team1_control,a4 ;player selecting team 1
|
||
movi rosterblu,a9
|
||
sll 4,a4 ;x 16 bits
|
||
addi plaque_xs,a4
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2p
|
||
addi 4*16,a4
|
||
#not_2p
|
||
move *a4,a10
|
||
sll 16,a10
|
||
clr a0
|
||
move a0,@HALT
|
||
CREATE0 fullgame_purchased
|
||
|
||
#not_bigrost
|
||
|
||
move @team2_control,a0 ;player selecting team 1
|
||
jrn #not_bigrost2
|
||
sll 5,a0
|
||
addi defeated,a0
|
||
move *a0,a0,L
|
||
move *a0,a0,L
|
||
cmpi 07ffffffh,a0
|
||
jrnz #not_bigrost2
|
||
|
||
move @team2_control,a4 ;player selecting team 1
|
||
movi rosterred,a9
|
||
sll 4,a4 ;x 16 bits
|
||
addi plaque_xs,a4
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2p2
|
||
addi 4*16,a4
|
||
#not_2p2
|
||
move *a4,a10
|
||
sll 16,a10
|
||
clr a0
|
||
move a0,@HALT
|
||
CREATE0 fullgame_purchased
|
||
|
||
#not_bigrost2
|
||
|
||
|
||
|
||
|
||
|
||
#wait_loop0
|
||
movi 30*TSEC,a10
|
||
CREATE CNTDWN_PID,timeout
|
||
|
||
#wait_loop
|
||
SLEEPK 1
|
||
calla update_logos
|
||
calla update_player_names
|
||
calla update_team_set
|
||
calla update_player_heads
|
||
|
||
move @exit_status,a0
|
||
jrnz #wait_loop
|
||
|
||
movi CNTDWN_PID,a0
|
||
calla KIL1C
|
||
calla delete_text
|
||
|
||
CREATE0 suckup_credits
|
||
|
||
#wait_loop2
|
||
SLEEPK 1
|
||
|
||
calla update_logos
|
||
calla update_player_names
|
||
calla update_team_set
|
||
calla update_player_heads
|
||
|
||
move @exit_status,a0
|
||
jrnz #wait_loop0
|
||
|
||
calla check_suckup ;wait for all credits
|
||
jrz #wait_loop2 ;to be sucked up
|
||
|
||
movi TSEC+30,a10
|
||
#wait_loop3
|
||
SLEEPK 1
|
||
PUSH a10
|
||
calla update_logos
|
||
calla update_player_names
|
||
calla update_team_set
|
||
calla update_player_heads
|
||
PULL a10
|
||
dsj a10,#wait_loop3
|
||
|
||
RETP
|
||
|
||
;#press_setup
|
||
; RJR_STR osgemd_ascii,8,0,200,10-4,WHITEPAL,0
|
||
;#str_press
|
||
; .string "press button to select",0
|
||
.even
|
||
|
||
#*****************************************************************************
|
||
|
||
BOX_IMG_WIDTH equ 88
|
||
BOX_WIDTH equ 80
|
||
BOX_HEIGHT equ 95
|
||
OPEN_SPEED equ 4
|
||
BOX_PSIZE equ 6 ;bits per pixel
|
||
|
||
SUBRP suckup_credits
|
||
|
||
calla check_suckup ;credits unused?
|
||
jrnz #snuffit
|
||
|
||
movi win_snd,a0
|
||
calla snd_play1
|
||
|
||
movi [200-4,0],a0 ;x val
|
||
movi [132-20-BOX_HEIGHT/2,0],a1 ;y val
|
||
movi growbox,a2 ;* image
|
||
movi 19999,a3 ;z pos
|
||
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
|
||
movi CLSNEUT|TYPTEXT|SUBMES2,a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
move a8,*a13(PDATA+0h),L
|
||
|
||
movi [200,0],a0 ;x val
|
||
movi [132-20-BOX_HEIGHT/2,0],a1 ;y val
|
||
movi growbox,a2 ;* image
|
||
movi 19999,a3 ;z pos
|
||
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
|
||
movi CLSNEUT|TYPTEXT|SUBMES2,a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
move a8,*a13(PDATA+20h),L
|
||
move *a8(OSAG),a0,L
|
||
move a0,*a13(PDATA+40h),L
|
||
|
||
move *a13(PDATA+20h),a8,L
|
||
movi 200,a0 ;x val
|
||
move a0,*a8(OXPOS)
|
||
move *a13(PDATA+40h),a0,L ;OSAG
|
||
addi (BOX_IMG_WIDTH-4)*BOX_PSIZE,a0
|
||
move a0,*a8(OSAG),L
|
||
movi BOX_IMG_WIDTH-4,a0
|
||
move a0,*a8(OFSET)
|
||
|
||
move *a13(PDATA+0h),a8,L
|
||
movi 200-4,a0 ;x val
|
||
move a0,*a8(OXPOS)
|
||
movi BOX_IMG_WIDTH-4,a0
|
||
move a0,*a8(OFSET)
|
||
|
||
#open_box
|
||
SLEEP 1
|
||
|
||
move *a13(PDATA+20h),a8,L
|
||
move *a8(OSAG),a0,L
|
||
subi OPEN_SPEED*BOX_PSIZE,a0
|
||
move a0,*a8(OSAG),L
|
||
move *a8(OFSET),a0
|
||
subi OPEN_SPEED,a0
|
||
move a0,*a8(OFSET)
|
||
|
||
move *a13(PDATA+0h),a8,L
|
||
move *a8(OFSET),a0
|
||
subi OPEN_SPEED,a0
|
||
move a0,*a8(OFSET)
|
||
move *a8(OXPOS),a0
|
||
subi OPEN_SPEED,a0
|
||
move a0,*a8(OXPOS)
|
||
cmpi 200-BOX_WIDTH,a0
|
||
jrhi #open_box
|
||
|
||
movi [200,0],a0 ;x val
|
||
movi [132-10-BOX_HEIGHT/2,0],a1 ;y val
|
||
movi useupbx,a2 ;* image
|
||
movi 20000,a3 ;z pos
|
||
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
|
||
movi CLSNEUT|TYPTEXT|SUBMES2,a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
|
||
#wait
|
||
SLEEPK 1
|
||
move @exit_status,a0
|
||
jrnz #close_box0
|
||
calla check_suckup ;wait for all credits
|
||
jrz #wait ;to be sucked up
|
||
|
||
#close_box0
|
||
calla DELOBJA8
|
||
#close_box
|
||
SLEEPK 1
|
||
|
||
move *a13(PDATA+20h),a8,L
|
||
move *a8(OSAG),a0,L
|
||
addi OPEN_SPEED*BOX_PSIZE,a0
|
||
move a0,*a8(OSAG),L
|
||
move *a8(OFSET),a0
|
||
addi OPEN_SPEED,a0
|
||
move a0,*a8(OFSET)
|
||
|
||
move *a13(PDATA+0h),a8,L
|
||
move *a8(OFSET),a0
|
||
addi OPEN_SPEED,a0
|
||
move a0,*a8(OFSET)
|
||
move *a8(OXPOS),a0
|
||
addi OPEN_SPEED,a0
|
||
move a0,*a8(OXPOS)
|
||
cmpi 200-4,a0
|
||
jrlo #close_box
|
||
SLEEPK 1
|
||
movi CLSNEUT|TYPTEXT|SUBMES2,A0
|
||
calla obj_del1c
|
||
#snuffit
|
||
DIE
|
||
|
||
|
||
|
||
#*****************************************************************************
|
||
|
||
.global sorted_teams
|
||
.global teams_pop
|
||
|
||
SUBRP get_teams_pop
|
||
|
||
clr a0
|
||
movi teams_pop,a1 ;zero all team selected counts
|
||
movi NUM_TEAMS,a2
|
||
#init_loop
|
||
move a0,*a1,L
|
||
dsj a2,#init_loop
|
||
|
||
|
||
movi AUD_WAS,a0 ;audit number
|
||
|
||
#next_audit
|
||
PUSH a0
|
||
calla GET_AUD ;val in a1
|
||
|
||
movi -1,a10 ;position
|
||
movi teams_pop-32,a4
|
||
movi sorted_teams-16,a5
|
||
#next_team
|
||
addi 32,a4
|
||
addi 16,a5
|
||
inc a10
|
||
move *a4,a0,L
|
||
cmp a0,a1 ;a1-a0
|
||
jrhs #insert
|
||
cmpi NUM_TEAMS-1,a10
|
||
jrlt #next_team
|
||
|
||
#insert
|
||
calla bump_down
|
||
move a1,*a4,L
|
||
PULL a0
|
||
move a0,a1
|
||
subi AUD_ATL,a1
|
||
move a1,*a5
|
||
dec a0
|
||
cmpi AUD_ATL,a0
|
||
jrhs #next_audit
|
||
|
||
rets
|
||
|
||
|
||
bump_down
|
||
PUSH a1
|
||
cmpi NUM_TEAMS-1,a10
|
||
jreq #no_bump
|
||
|
||
movi NUM_TEAMS-1,a3
|
||
sub a10,a3
|
||
PUSH a3 ;num down shits required
|
||
movi NUM_TEAMS*32,a1
|
||
addi teams_pop,a1
|
||
move a1,a2
|
||
subi 32,a2
|
||
#bump_loop1
|
||
move -*a2,-*a1,L
|
||
dsj a3,#bump_loop1
|
||
|
||
PULL a3
|
||
movi NUM_TEAMS*16,a1
|
||
addi sorted_teams,a1
|
||
move a1,a2
|
||
subi 16,a2
|
||
#bump_loop2
|
||
move -*a2,-*a1
|
||
dsj a3,#bump_loop2
|
||
|
||
#no_bump
|
||
PULL a1
|
||
rets
|
||
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBRP print_initials
|
||
|
||
clr a5
|
||
movk 1,a7 ;num objs
|
||
|
||
move *a13(PC_NAM1OBJ),a8,L
|
||
calla obj_off
|
||
move *a13(PC_NAM2OBJ),a8,L
|
||
calla obj_off
|
||
move *a13(PC_NAM3OBJ),a8,L
|
||
calla obj_off
|
||
|
||
move *a13(PC_DATADDR),a2,L ;start of player data
|
||
move *a2+,a0
|
||
move *a13(PC_NAM1OBJ),a8,L
|
||
move *a8(OIMG),a0,L
|
||
cmpi OSGEMD_SPC,a0
|
||
jreq #is_space1
|
||
calla obj_on
|
||
#is_space1
|
||
move *a8(OSIZEX),a0 ;width of object
|
||
add a0,a5
|
||
|
||
move *a2+,a0
|
||
jrn #skip
|
||
inc a7
|
||
addk 2,a5 ;+ 2 pixel space
|
||
move *a13(PC_NAM2OBJ),a8,L
|
||
move *a8(OIMG),a0,L
|
||
cmpi OSGEMD_SPC,a0
|
||
jreq #is_space2
|
||
calla obj_on
|
||
#is_space2
|
||
move *a8(OSIZEX),a0 ;width of object
|
||
add a0,a5
|
||
|
||
move *a2,a0
|
||
jrn #skip
|
||
inc a7
|
||
addk 2,a5 ;+ 2 pixel space
|
||
move *a13(PC_NAM3OBJ),a8,L
|
||
move *a8(OIMG),a0,L
|
||
cmpi OSGEMD_SPC,a0
|
||
jreq #is_space3
|
||
calla obj_on
|
||
#is_space3
|
||
move *a8(OSIZEX),a0 ;width of object
|
||
add a0,a5
|
||
|
||
#skip
|
||
inc a5 ;+ 1/2
|
||
srl 1,a5 ;width / 2
|
||
move *a13(PC_CENTERX2),a6
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrz #no_2p
|
||
move *a13(PC_CENTERXkit),a6
|
||
#no_2p
|
||
sub a5,a6 ;center - width/2
|
||
|
||
movi PC_NAM1OBJ,a4
|
||
add a13,a4
|
||
#loop
|
||
move *a4+,a2,L ;* object
|
||
move a6,*a2(OXPOS)
|
||
move *a2(OSIZEX),a0 ;width of object
|
||
add a0,a6
|
||
addk 2,a6 ;2 pixel spacing
|
||
dsj a7,#loop ;another img?
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
;returns a8 = * alpha table
|
||
|
||
SUBRP get_menu_data
|
||
|
||
clr a0
|
||
move a0,*a13(PC_CURSPOS) ;position
|
||
move *a13(PC_OBJID),a11 ;OBJ ID
|
||
move *a13(PC_MENUBASE),a1,L
|
||
move *a13(PC_MENULEVEL),a8
|
||
sll 5,a8 ;x 32 bits
|
||
add a1,a8
|
||
move *a8,a8,L ;get start addr
|
||
move *a8+,a9 ;palette number
|
||
move *a8+,a10
|
||
move a10,*a13(PC_STARTX) ;menu start x
|
||
move *a8+,a0
|
||
move a0,*a13(PC_STARTY) ;menu start y
|
||
sll 16,a0 ;top word
|
||
movy a0,a10 ;[yy,xx] format
|
||
move *a8,a8,L ;table addr
|
||
move *a8+,a1
|
||
move a1,*a13(PC_TABWIDTH) ;table width
|
||
move *a8+,a1
|
||
move a1,*a13(PC_TABSIZE) ;table size
|
||
move a8,*a13(PC_TABLE),L
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBRP create_menu
|
||
|
||
calla get_menu_data
|
||
calla display_alpha_table ;create table of objects
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
;switch vals in a0 (starting at bit0)
|
||
|
||
SUBRP move_team_cursor
|
||
|
||
andi 01111b,a0
|
||
sll 5,a0 ;x 32 bits
|
||
addi joy_moves,a0
|
||
move *a0,a0,L
|
||
call a0
|
||
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
;switch vals in a0 (starting at bit0)
|
||
|
||
SUBRP move_cursor
|
||
|
||
andi 01111b,a0
|
||
sll 5,a0 ;x 32 bits
|
||
addi joy_moves,a0
|
||
move *a0,a0,L
|
||
call a0
|
||
rets
|
||
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBRP update_statbox_images
|
||
|
||
move *a13(PC_CHARPOS),a0
|
||
sll 5,a0 ;x 32 bits
|
||
addi #curspos_actions,a0
|
||
move *a0,a0,L
|
||
jump a0
|
||
rets
|
||
|
||
*****************************
|
||
#curspos_actions
|
||
.long #name0,#name1,#name2,#month,#day
|
||
|
||
*****************************
|
||
#name0
|
||
#name1
|
||
#name2
|
||
move *a13(PC_CHARPOS),a0 ;0 - 2
|
||
sll 5,a0 ;x 32 bits
|
||
addi PC_NAM1OBJ,a0
|
||
add a13,a0
|
||
move *a0,a8,L ;* object
|
||
calla update_image
|
||
|
||
calla print_initials
|
||
|
||
|
||
rets
|
||
|
||
|
||
*****************************
|
||
#month
|
||
#day
|
||
|
||
movi PC_MONTHOBJ,a0
|
||
add a13,a0
|
||
move *a0,a8,L ;* object
|
||
calla update_image
|
||
|
||
move *a13(PC_MONTHOBJ),a4,L
|
||
move *a4(OSIZEX),a3 ;width of object
|
||
inc a3 ;+ 1/2
|
||
srl 1,a3 ;width / 2
|
||
move *a13(PC_CENTERX),a2
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrz #no_2p
|
||
move *a13(PC_CENTERXkit),a2
|
||
#no_2p
|
||
sub a3,a2 ;center - width/2
|
||
move a2,*a4(OXPOS)
|
||
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
* A8=*Obj
|
||
|
||
SUBRP update_image
|
||
|
||
move *a8(OYPOS),a0
|
||
andni 400h,a0 ;onscreen Y
|
||
move a0,*a8(OYPOS)
|
||
calla get_table_address ;returns * entry in a1
|
||
move *a1+,a1 ;char under cursor
|
||
sll 5,a1 ;x 32 bits
|
||
addi alpha_table,a1
|
||
move *a1,a0,L ;image addr
|
||
movi DMAWNZ,a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
.asg 57,X1
|
||
.asg 146,X2
|
||
.asg 251,X3
|
||
.asg 340,X4
|
||
.asg 214+TEAMSEL_PAGE-12-2,PNAMES_Y
|
||
|
||
SUBRP create_player_names ;and attributes
|
||
|
||
|
||
movi [X1,0],a0 ;x val
|
||
movi [PNAMES_Y,0],a1 ;y val
|
||
movi WILKINS,a2 ;* image
|
||
move @special_heads,b0
|
||
jrn #not_spec1
|
||
sll 5,b0 ;x 32 bits
|
||
addi our_names,b0
|
||
move *b0,b0,L
|
||
move b0,a2
|
||
#not_spec1
|
||
movi 120,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ
|
||
move a8,@name1_obj,L
|
||
|
||
movi [X2,0],a0 ;x val
|
||
movi [PNAMES_Y,0],a1 ;y val
|
||
movi AUGMON,a2 ;* image
|
||
move @special_heads+10h,b0
|
||
jrn #not_spec2
|
||
sll 5,b0 ;x 32 bits
|
||
addi our_names,b0
|
||
move *b0,b0,L
|
||
move b0,a2
|
||
#not_spec2
|
||
calla BEGINOBJ
|
||
move a8,@name2_obj,L
|
||
|
||
movi [X3,0],a0 ;x val
|
||
movi [PNAMES_Y,0],a1 ;y val
|
||
movi WILKINS,a2 ;* image
|
||
move @special_heads+20h,b0
|
||
jrn #not_spec3
|
||
sll 5,b0 ;x 32 bits
|
||
addi our_names,b0
|
||
move *b0,b0,L
|
||
move b0,a2
|
||
#not_spec3
|
||
calla BEGINOBJ
|
||
move a8,@name3_obj,L
|
||
|
||
movi [X4,0],a0 ;x val
|
||
movi [PNAMES_Y,0],a1 ;y val
|
||
movi AUGMON,a2 ;* image
|
||
move @special_heads+30h,b0
|
||
jrn #not_spec4
|
||
sll 5,b0 ;x 32 bits
|
||
addi our_names,b0
|
||
move *b0,b0,L
|
||
move b0,a2
|
||
#not_spec4
|
||
calla BEGINOBJ
|
||
move a8,@name4_obj,L
|
||
|
||
|
||
movi [X1-40,0],a0 ;x val
|
||
movi [PNAMES_Y+10,0],a1 ;y val
|
||
movi ATT_BLU,a2 ;attribs,a2 ;* image
|
||
movi 120,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ
|
||
move a8,@attrib1_obj,L
|
||
|
||
movi [X2-40,0],a0 ;x val
|
||
movi [PNAMES_Y+10,0],a1 ;y val
|
||
movi ATT_BLU,a2 ;attribs,a2 ;* image
|
||
calla BEGINOBJ
|
||
move a8,@attrib2_obj,L
|
||
|
||
movi [X3-40,0],a0 ;x val
|
||
movi [PNAMES_Y+10,0],a1 ;y val
|
||
movi ATT_BLU,a2 ;attribs,a2 ;* image
|
||
calla BEGINOBJ
|
||
move a8,@attrib3_obj,L
|
||
|
||
movi [X4-40,0],a0 ;x val
|
||
movi [PNAMES_Y+10,0],a1 ;y val
|
||
movi ATT_BLU,a2 ;attribs,a2 ;* image
|
||
calla BEGINOBJ
|
||
move a8,@attrib4_obj,L
|
||
|
||
movi [X1-8,0],a0 ;x val
|
||
movi [PNAMES_Y+10,0],a1 ;y val
|
||
movi attrib1_obj+20h,a10
|
||
calla #create_attrib
|
||
|
||
movi [X2-8,0],a0 ;x val
|
||
movi [PNAMES_Y+10,0],a1 ;y val
|
||
movi attrib2_obj+20h,a10
|
||
calla #create_attrib
|
||
|
||
movi [X3-8,0],a0 ;x val
|
||
movi [PNAMES_Y+10,0],a1 ;y val
|
||
movi attrib3_obj+20h,a10
|
||
calla #create_attrib
|
||
|
||
movi [X4-8,0],a0 ;x val
|
||
movi [PNAMES_Y+10,0],a1 ;y val
|
||
movi attrib4_obj+20h,a10
|
||
calla #create_attrib
|
||
|
||
rets
|
||
|
||
;a0 = x
|
||
;a1 = y
|
||
;a10 = * attrib obj
|
||
#create_attrib
|
||
movk 8,a2 ;# of attributes
|
||
PUSH a0,a1
|
||
#atloop
|
||
PUSH a0,a1,a2,a10
|
||
movi font60w,a2 ;* image
|
||
movi 120,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ
|
||
PULL a0,a1,a2,a10
|
||
move a8,*a10+,L
|
||
addi [6,0],a1
|
||
cmpi 5,a2
|
||
jrnz #noadj
|
||
|
||
PULL a0,a1
|
||
addi [41,0],a0 ;adjust x
|
||
#noadj
|
||
dsj a2,#atloop
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* a0 = table offset to use for coordinates
|
||
*
|
||
|
||
SUBR create_player_heads
|
||
|
||
PUSH a10,a11
|
||
|
||
sll 5,a0 ;x 32 bits
|
||
addi #xy_starts,a0
|
||
move *a0,a10,L
|
||
move *a10+,a11
|
||
sll 16,a11 ;y pos
|
||
|
||
|
||
; movi HRD_GLD,a2 ;* image
|
||
movi RAD_MK2,a2 ;* image
|
||
move @special_heads,b0
|
||
jrn #nrmhd1
|
||
sll 5,b0 ;x 32 bits
|
||
addi our_heads,b0
|
||
move *b0,b0,L
|
||
move b0,a2
|
||
#nrmhd1
|
||
move *a10+,a0 ;x val
|
||
sll 16,a0
|
||
move a11,a1 ;y pos
|
||
movi 121,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
move a8,@head1_obj,L
|
||
|
||
|
||
|
||
; movi MUL_GLD,a2 ;* image
|
||
movi RAD_MK2,a2 ;* image
|
||
|
||
move @special_heads+10h,b0
|
||
jrn #nrmhd2
|
||
sll 5,b0 ;x 32 bits
|
||
addi our_heads,b0
|
||
move *b0,b0,L
|
||
move b0,a2
|
||
#nrmhd2
|
||
move *a10+,a0 ;x val
|
||
sll 16,a0
|
||
move a11,a1 ;y pos
|
||
movi DMAWNZ|M_FLIPH,a4 ;DMA flags
|
||
calla BEGINOBJ2
|
||
move a8,@head2_obj,L
|
||
|
||
; movi WLK_ATL,a2 ;* image
|
||
movi RAD_MK2,a2 ;* image
|
||
|
||
move @special_heads+20h,b0
|
||
jrn #nrmhd3
|
||
sll 5,b0 ;x 32 bits
|
||
addi our_heads,b0
|
||
move *b0,b0,L
|
||
move b0,a2
|
||
#nrmhd3
|
||
move *a10+,a0 ;x val
|
||
sll 16,a0
|
||
move a11,a1 ;y pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
calla BEGINOBJ2
|
||
move a8,@head3_obj,L
|
||
|
||
; movi AUG_ATL,a2 ;* image
|
||
movi RAD_MK2,a2 ;* image
|
||
|
||
move @special_heads+30h,b0
|
||
jrn #nrmhd4
|
||
sll 5,b0 ;x 32 bits
|
||
addi our_heads,b0
|
||
move *b0,b0,L
|
||
move b0,a2
|
||
#nrmhd4
|
||
move *a10,a0 ;x val
|
||
sll 16,a0
|
||
move a11,a1 ;y pos
|
||
movi DMAWNZ|M_FLIPH,a4 ;DMA flags
|
||
calla BEGINOBJ2
|
||
move a8,@head4_obj,L
|
||
|
||
|
||
PULL a10,a11
|
||
|
||
rets
|
||
|
||
SUBR create_team_set_flsh
|
||
|
||
SLEEP 3Ah
|
||
|
||
move @teamset1_obj,a8,L
|
||
move @teamset2_obj,a9,L
|
||
|
||
movk 11,a10
|
||
#again
|
||
movi 1717h,a2
|
||
move a2,*a8(OCONST)
|
||
move a2,*a9(OCONST)
|
||
setf 4,0,0
|
||
movk M_CONNON,a0 ;Replace non-zero data with constant
|
||
move a0,*a8(OCTRL) ;Write 4 low bits
|
||
move a0,*a9(OCTRL) ;Write 4 low bits
|
||
setf 16,1,0
|
||
|
||
SLEEPK 4
|
||
|
||
setf 4,0,0
|
||
movk M_WRNONZ,a0
|
||
move a0,*a8(OCTRL) ;Write 4 low bits
|
||
move a0,*a9(OCTRL) ;Write 4 low bits
|
||
setf 16,1,0
|
||
|
||
SLEEPK 3
|
||
|
||
dsj a10,#again
|
||
|
||
DIE
|
||
|
||
|
||
*****************************************************************************
|
||
*
|
||
* a0 = table offset to use for coordinates
|
||
*
|
||
|
||
SUBR create_team_set
|
||
|
||
PUSH a10,a11
|
||
|
||
|
||
sll 5,a0 ;x 32 bits
|
||
addi #xy_starts2,a0
|
||
move *a0,a10,L
|
||
move *a10+,a11
|
||
sll 16,a11 ;y pos
|
||
|
||
|
||
movi SQUD_1,a2 ;* image
|
||
move *a10+,a0 ;x val
|
||
sll 16,a0
|
||
move a11,a1 ;y pos
|
||
; movi 221,a3 ;z pos
|
||
movi 30001,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
move a8,@teamset1_obj,L
|
||
|
||
|
||
|
||
movi SQUD_2,a2 ;* image
|
||
move *a10+,a0 ;x val
|
||
sll 16,a0
|
||
move a11,a1 ;y pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
calla BEGINOBJ2
|
||
move a8,@teamset2_obj,L
|
||
|
||
|
||
PULL a10,a11
|
||
|
||
rets
|
||
|
||
#xy_starts2
|
||
.long #stxy1a,#stxy2a
|
||
|
||
#stxy1a .word 207-14-2 ;Y
|
||
.word 94+6,288+7
|
||
|
||
#stxy2a .word 207-14-2+256 ;Y
|
||
.word 94+6,288+7
|
||
|
||
#xy_starts
|
||
.long #stxy1,#stxy2,#stxy3
|
||
|
||
#stxy1 .word 207-14 ;Y
|
||
.word 15,187-1,209,381-1
|
||
|
||
#stxy2 .word 186 ;Y
|
||
.word 24,154-1,242,371-1
|
||
|
||
#stxy3 .word >1c1
|
||
.word >13-4,>bd-4,>d6-4,>180-4
|
||
|
||
|
||
;RAD_MK2:
|
||
;SCO_MK2:
|
||
;REP_MK2:
|
||
;SUB_MK2:
|
||
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBR update_player_heads
|
||
|
||
PUSH a10
|
||
|
||
move @team1,a0
|
||
cmpi 27,a0
|
||
jrnz #cont1a
|
||
move @gmqrtr,a14
|
||
cmpi 2,a14
|
||
jrnz #cont1a
|
||
move @fixbug,a14
|
||
jrz #do_team2
|
||
#cont1a
|
||
|
||
move @team1,a0
|
||
jrnn #valid_team1
|
||
move @head1_obj,a8,L
|
||
calla obj_off
|
||
move @head2_obj,a8,L
|
||
calla obj_off
|
||
jruc #do_team2
|
||
|
||
#valid_team1
|
||
movi player_heads,a10
|
||
move @team1,a2
|
||
#lp cmpi 0,a2
|
||
jrz #out
|
||
addi 20*64,a10
|
||
dec a2
|
||
jruc #lp
|
||
#out
|
||
move @team1,a0
|
||
sll 4,a0
|
||
addi tm1set,a0
|
||
move *a0,a14
|
||
sll 6,a14
|
||
add a14,a10
|
||
|
||
move @head1_obj,a8,L
|
||
calla obj_on
|
||
move *a10,a2,L ;* image
|
||
move @special_heads,b0
|
||
jrnn #spec_head1
|
||
move *a2(ICMAP),a0,L ;Get *palette
|
||
calla pal_getf
|
||
move a0,*a8(OPAL),L ;Set palette & constant
|
||
move a2,a0 ;* image
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
|
||
move a2,a14
|
||
|
||
cmpi RAD_MK2,a14
|
||
jrz #mk2c
|
||
cmpi SUB_MK2,a14
|
||
jrz #mk2c
|
||
cmpi REP_MK2,a14
|
||
jrz #mk2c
|
||
cmpi SCO_MK2,a14
|
||
jrz #mk2c
|
||
jrnz #notmkc
|
||
#mk2c
|
||
move *a8(OFLAGS),A1
|
||
btst 14,a1
|
||
jrnz #on
|
||
move @gmqrtr,a14
|
||
cmpi 2,a14
|
||
jrnz #cont1
|
||
move @fixbug,a14
|
||
jrnz #on
|
||
#cont1
|
||
move a0,a14
|
||
move a8,a0
|
||
calla OBJOFF
|
||
calla obj_off
|
||
move a14,a0
|
||
|
||
move *a8(OFLAGS),A1
|
||
ori >7000,a1 ;DMA flags
|
||
move a1,*a8(OFLAGS)
|
||
move *a8(OCTRL),a1
|
||
ori >7000,a1 ;DMA flags
|
||
move a1,*a8(OCTRL)
|
||
jruc #notmkcx
|
||
#on
|
||
move a0,a14
|
||
calla obj_on
|
||
move a8,a0
|
||
calla OBJON
|
||
move a14,a0
|
||
jruc #notmkcx
|
||
#notmkc
|
||
move *a8(OFLAGS),A1
|
||
andi >80ff,a1 ;DMA flags
|
||
move a1,*a8(OFLAGS)
|
||
move *a8(OCTRL),a1
|
||
andi >80ff,a1 ;DMA flags
|
||
move a1,*a8(OCTRL)
|
||
|
||
#notmkcx
|
||
calla obj_aniq ;change object image
|
||
#spec_head1
|
||
|
||
move @head2_obj,a8,L
|
||
calla obj_on
|
||
move *a10(20h),a2,L ;* image
|
||
move @special_heads+10h,b0
|
||
jrnn #spec_head2
|
||
move *a2(ICMAP),a0,L ;Get *palette
|
||
calla pal_getf
|
||
move a0,*a8(OPAL),L ;Set palette & constant
|
||
move a2,a0 ;* image
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
|
||
move a2,a14
|
||
|
||
cmpi RAD_MK2,a14
|
||
jrz #mk2b
|
||
cmpi SUB_MK2,a14
|
||
jrz #mk2b
|
||
cmpi REP_MK2,a14
|
||
jrz #mk2b
|
||
cmpi SCO_MK2,a14
|
||
jrz #mk2b
|
||
jrnz #notmkb
|
||
#mk2b
|
||
move *a8(OFLAGS),A1
|
||
btst 14,a1
|
||
jrnz #onxb
|
||
move @gmqrtr,a14
|
||
cmpi 2,a14
|
||
jrnz #cont2
|
||
move @fixbug,a14
|
||
jrnz #onxb
|
||
#cont2
|
||
move a0,a14
|
||
move a8,a0
|
||
calla OBJOFF
|
||
calla obj_off
|
||
move a14,a0
|
||
|
||
move *a8(OFLAGS),A1
|
||
ori >7010,a1 ;DMA flags
|
||
move a1,*a8(OFLAGS)
|
||
move *a8(OCTRL),a1
|
||
ori >7010,a1 ;DMA flags
|
||
move a1,*a8(OCTRL)
|
||
jruc #notmkxb
|
||
#onxb
|
||
move a0,a14
|
||
calla obj_on
|
||
move a8,a0
|
||
calla OBJON
|
||
move a14,a0
|
||
jruc #notmkxb
|
||
#notmkb
|
||
move *a8(OFLAGS),A1
|
||
andi >80ff,a1 ;DMA flags
|
||
move a1,*a8(OFLAGS)
|
||
move *a8(OCTRL),a1
|
||
andi >80ff,a1 ;DMA flags
|
||
move a1,*a8(OCTRL)
|
||
|
||
#notmkxb
|
||
calla obj_aniq ;change object image
|
||
#spec_head2
|
||
|
||
|
||
#do_team2
|
||
move @team2,a0
|
||
cmpi 27,a0
|
||
jrnz #cont3a
|
||
move @gmqrtr,a14
|
||
cmpi 2,a14
|
||
jrnz #cont3a
|
||
move @fixbug,a14
|
||
jrz #x
|
||
#cont3a
|
||
|
||
move @team2,a0
|
||
jrnn #valid_team2
|
||
move @head3_obj,a8,L
|
||
calla obj_off
|
||
move @head4_obj,a8,L
|
||
calla obj_off
|
||
jruc #x
|
||
|
||
#valid_team2
|
||
movi player_heads,a10
|
||
move @team2,a2
|
||
#lp2 cmpi 0,a2
|
||
jrz #out2
|
||
addi 20*64,a10
|
||
dec a2
|
||
jruc #lp2
|
||
#out2
|
||
move @team2,a0
|
||
sll 4,a0
|
||
addi tm2set,a0
|
||
move *a0,a14
|
||
sll 6,a14
|
||
add a14,a10
|
||
|
||
move @head3_obj,a8,L
|
||
calla obj_on
|
||
move *a10,a2,L ;* image
|
||
move @special_heads+20h,b0
|
||
jrnn #spec_head3
|
||
move *a2(ICMAP),a0,L ;Get *palette
|
||
calla pal_getf
|
||
move a0,*a8(OPAL),L ;Set palette & constant
|
||
move a2,a0 ;* image
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
|
||
move a2,a14
|
||
|
||
cmpi RAD_MK2,a14
|
||
jrz #mk2a
|
||
cmpi SUB_MK2,a14
|
||
jrz #mk2a
|
||
cmpi REP_MK2,a14
|
||
jrz #mk2a
|
||
cmpi SCO_MK2,a14
|
||
jrz #mk2a
|
||
jrnz #notmka
|
||
#mk2a
|
||
move *a8(OFLAGS),A1
|
||
btst 14,a1
|
||
jrnz #onx2
|
||
move @gmqrtr,a14
|
||
cmpi 2,a14
|
||
jrnz #cont3
|
||
move @fixbug,a14
|
||
jrnz #onx2
|
||
#cont3
|
||
move a0,a14
|
||
move a8,a0
|
||
calla OBJOFF
|
||
calla obj_off
|
||
move a14,a0
|
||
|
||
move *a8(OFLAGS),A1
|
||
ori >7000,a1 ;DMA flags
|
||
move a1,*a8(OFLAGS)
|
||
move *a8(OCTRL),a1
|
||
ori >7000,a1 ;DMA flags
|
||
move a1,*a8(OCTRL)
|
||
jruc #notmkx2
|
||
#onx2
|
||
move a0,a14
|
||
calla obj_on
|
||
move a8,a0
|
||
calla OBJON
|
||
move a14,a0
|
||
jruc #notmkx2
|
||
#notmka
|
||
move *a8(OFLAGS),A1
|
||
andi >80ff,a1 ;DMA flags
|
||
move a1,*a8(OFLAGS)
|
||
move *a8(OCTRL),a1
|
||
andi >80ff,a1 ;DMA flags
|
||
move a1,*a8(OCTRL)
|
||
|
||
#notmkx2
|
||
calla obj_aniq ;change object image
|
||
#spec_head3
|
||
|
||
move @head4_obj,a8,L
|
||
calla obj_on
|
||
move *a10(20h),a2,L ;* image
|
||
move @special_heads+30h,b0
|
||
jrnn #spec_head4
|
||
move *a2(ICMAP),a0,L ;Get *palette
|
||
calla pal_getf
|
||
move a0,*a8(OPAL),L ;Set palette & constant
|
||
move a2,a0 ;* image
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
|
||
move a2,a14
|
||
|
||
cmpi RAD_MK2,a14
|
||
jrz #mk2
|
||
cmpi SUB_MK2,a14
|
||
jrz #mk2
|
||
cmpi REP_MK2,a14
|
||
jrz #mk2
|
||
cmpi SCO_MK2,a14
|
||
jrz #mk2
|
||
jrnz #notmk
|
||
#mk2
|
||
move *a8(OFLAGS),a1
|
||
btst 14,a1
|
||
jrnz #onx
|
||
move @gmqrtr,a14
|
||
cmpi 2,a14
|
||
jrnz #cont4
|
||
move @fixbug,a14
|
||
jrnz #onx
|
||
#cont4
|
||
move a0,a14
|
||
move a8,a0
|
||
calla OBJOFF
|
||
calla obj_off
|
||
move a14,a0
|
||
|
||
move *a8(OFLAGS),a1
|
||
ori >7010,a1 ;DMA flags
|
||
move a1,*a8(OFLAGS)
|
||
move *a8(OCTRL),a1
|
||
ori >7010,a1 ;DMA flags
|
||
move a1,*a8(OCTRL)
|
||
jruc #notmkx
|
||
#onx
|
||
move a0,a14
|
||
calla obj_on
|
||
move a8,a0
|
||
calla OBJON
|
||
move a14,a0
|
||
jruc #notmkx
|
||
#notmk
|
||
move *a8(OFLAGS),A1
|
||
andi >80ff,a1 ;DMA flags
|
||
move a1,*a8(OFLAGS)
|
||
move *a8(OCTRL),a1
|
||
andi >80ff,a1 ;DMA flags
|
||
move a1,*a8(OCTRL)
|
||
|
||
#notmkx
|
||
calla obj_aniq ;change object image
|
||
#spec_head4
|
||
|
||
|
||
#x
|
||
PULL a10
|
||
|
||
clr a0
|
||
move a0,@fixbug
|
||
|
||
rets
|
||
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBRP update_player_names
|
||
|
||
move @team1,a0
|
||
jrnn #valid_team1
|
||
move @name1_obj,a8,L
|
||
calla obj_off
|
||
movi attrib1_obj,a2
|
||
calla attrib_off
|
||
|
||
move @name2_obj,a8,L
|
||
calla obj_off
|
||
movi attrib2_obj,a2
|
||
calla attrib_off
|
||
jruc #do_team2
|
||
|
||
#valid_team1
|
||
movi player_names,a10
|
||
move @team1,a2
|
||
#lp cmpi 0,a2
|
||
jrz #out
|
||
addi 20*64,a10
|
||
dec a2
|
||
jruc #lp
|
||
#out
|
||
move @team1,a0
|
||
sll 4,a0
|
||
addi tm1set,a0
|
||
move *a0,a14
|
||
sll 6,a14
|
||
add a14,a10
|
||
|
||
move @name1_obj,a8,L
|
||
calla obj_on
|
||
clr a1 ;bit 0
|
||
movi attrib1_obj,a11
|
||
calla flash_player_name
|
||
|
||
move *a10,a0,L ;image addr
|
||
move @special_heads,b0
|
||
jrnn #spec1
|
||
movi DMAWNZ,a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
#spec1
|
||
|
||
move @name2_obj,a8,L
|
||
movk 1,a1 ;bit 1
|
||
movi attrib2_obj,a11
|
||
calla flash_player_name
|
||
move *a10(20h),a0,L ;image addr
|
||
move @special_heads+10h,b0
|
||
jrnn #spec2
|
||
movi DMAWNZ,a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
#spec2
|
||
|
||
movi attrib1_obj+20h,a11
|
||
movi player_names,a10
|
||
move @team1,a2
|
||
#lp3 cmpi 0,a2
|
||
jrz #out3
|
||
addi 20*64,a10
|
||
dec a2
|
||
jruc #lp3
|
||
#out3
|
||
move @team1,a0
|
||
sll 4,a0
|
||
addi tm1set,a0
|
||
move *a0,a14
|
||
sll 6,a14
|
||
add a14,a10
|
||
move *a10,a0,L
|
||
movi name_sort,a14
|
||
movi -1,a10
|
||
#lp4
|
||
inc a10
|
||
move *a14+,a1,L
|
||
cmp a1,a0
|
||
jrnz #lp4
|
||
|
||
sll 7,a10
|
||
addi player_attribs,a10
|
||
|
||
PUSH a10
|
||
move @special_heads,a6
|
||
calla update_attribs
|
||
PULL a10
|
||
|
||
movi attrib2_obj+20h,a11
|
||
|
||
movi player_names,a10
|
||
|
||
move @team1,a2
|
||
#lp3x cmpi 0,a2
|
||
jrz #out3x
|
||
addi 20*64,a10
|
||
dec a2
|
||
jruc #lp3x
|
||
#out3x
|
||
|
||
|
||
move @team1,a0
|
||
sll 4,a0
|
||
addi tm1set,a0
|
||
move *a0,a14
|
||
sll 6,a14
|
||
add a14,a10
|
||
addk 32,a10
|
||
move *a10,a0,L
|
||
movi name_sort,a14
|
||
movi -1,a10
|
||
#lp4x
|
||
inc a10
|
||
move *a14+,a1,L
|
||
cmp a1,a0
|
||
jrnz #lp4x
|
||
|
||
sll 7,a10
|
||
addi player_attribs,a10
|
||
|
||
|
||
|
||
move @special_heads+10h,a6
|
||
calla update_attribs
|
||
|
||
|
||
#do_team2
|
||
move @team2,a0
|
||
jrnn #valid_team2
|
||
move @name3_obj,a8,L
|
||
calla obj_off
|
||
movi attrib3_obj,a2
|
||
calla attrib_off
|
||
|
||
move @name4_obj,a8,L
|
||
calla obj_off
|
||
movi attrib4_obj,a2
|
||
calla attrib_off
|
||
rets
|
||
|
||
#valid_team2
|
||
movi player_names,a10
|
||
move @team2,a2
|
||
#lp2 cmpi 0,a2
|
||
jrz #out2
|
||
addi 20*64,a10
|
||
dec a2
|
||
jruc #lp2
|
||
#out2
|
||
move @team2,a0
|
||
sll 4,a0
|
||
addi tm2set,a0
|
||
move *a0,a14
|
||
sll 6,a14
|
||
add a14,a10
|
||
|
||
; move @team2,a10 ;cursor position
|
||
; sll 6,a10 ;x 2 x 32 bits
|
||
; addi player_names,a10 ;start of logos
|
||
|
||
move @name3_obj,a8,L
|
||
calla obj_on
|
||
movk 2,a1 ;bit 2
|
||
movi attrib3_obj,a11
|
||
calla flash_player_name
|
||
|
||
move *a10,a0,L ;image addr
|
||
; move @player_toggle2,b0 ;no toggle
|
||
; jrz #not3
|
||
; move *a10(20h),a0,L ;image addr
|
||
;#not3
|
||
move @special_heads+20h,b0
|
||
jrnn #spec3
|
||
movi DMAWNZ,a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
#spec3
|
||
|
||
move @name4_obj,a8,L
|
||
calla obj_on
|
||
movk 3,a1 ;bit 3
|
||
movi attrib4_obj,a11
|
||
calla flash_player_name
|
||
|
||
move *a10(20h),a0,L ;image addr
|
||
; move @player_toggle2,b0 ;no toggle
|
||
; jrz #not4
|
||
; move *a10,a0,L ;image addr
|
||
;#not4
|
||
move @special_heads+30h,b0
|
||
jrnn #spec4
|
||
movi DMAWNZ,a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
#spec4
|
||
movi attrib3_obj+20h,a11
|
||
; move @player_toggle2,a0 ;no toggle
|
||
; jrz #not3a
|
||
; movi attrib4_obj+20h,a11
|
||
;#not3a
|
||
|
||
|
||
movi player_names,a10
|
||
move @team2,a2
|
||
#lp6 cmpi 0,a2
|
||
jrz #out6
|
||
addi 20*64,a10
|
||
dec a2
|
||
jruc #lp6
|
||
#out6
|
||
move @team2,a0
|
||
sll 4,a0
|
||
addi tm2set,a0
|
||
move *a0,a14
|
||
sll 6,a14
|
||
add a14,a10
|
||
move *a10,a0,L
|
||
; move *a0(OIMG),a0,L
|
||
movi name_sort,a14
|
||
movi -1,a10
|
||
#lp5
|
||
inc a10
|
||
move *a14+,a1,L
|
||
; jrz $
|
||
cmp a1,a0
|
||
jrnz #lp5
|
||
|
||
sll 7,a10
|
||
addi player_attribs,a10
|
||
|
||
|
||
|
||
; move @team2,a10 ;cursor position
|
||
; sll 8,a10 ;x16x8x2=128
|
||
; addi player_attribs,a10
|
||
|
||
|
||
PUSH a10
|
||
move @special_heads+20h,a6
|
||
calla update_attribs
|
||
PULL a10
|
||
movi attrib4_obj+20h,a11
|
||
; move @player_toggle2,a0 ;no toggle
|
||
; jrz #not4a
|
||
; movi attrib3_obj+20h,a11
|
||
;#not4a
|
||
; addi 16*8,a10 ;*4
|
||
|
||
movi player_names,a10
|
||
move @team2,a2
|
||
#lp6x cmpi 0,a2
|
||
jrz #out6x
|
||
addi 20*64,a10
|
||
dec a2
|
||
jruc #lp6x
|
||
#out6x
|
||
|
||
move @team2,a0
|
||
sll 4,a0
|
||
addi tm2set,a0
|
||
move *a0,a14
|
||
sll 6,a14
|
||
add a14,a10
|
||
addk 32,a10
|
||
move *a10,a0,L
|
||
movi name_sort,a14
|
||
movi -1,a10
|
||
#lp4y
|
||
inc a10
|
||
move *a14+,a1,L
|
||
; jrz $
|
||
cmp a1,a0
|
||
jrnz #lp4y
|
||
|
||
sll 7,a10
|
||
addi player_attribs,a10
|
||
|
||
|
||
move @special_heads+30h,a6
|
||
calla update_attribs
|
||
|
||
rets
|
||
|
||
|
||
flash_player_name
|
||
move @PSTATUS,a0
|
||
btst a1,a0
|
||
|
||
; jruc #player_active
|
||
|
||
|
||
; movk ADJFREPL,a0 ;in free play?
|
||
; calla GET_ADJ
|
||
; jrnz #in_free
|
||
; move @PCNT,a0 ;frame count
|
||
; btst 5,a0
|
||
; jrnz #objon
|
||
;#in_free ;so no name displayed
|
||
; calla obj_off
|
||
; move a11,a2
|
||
; calla #attrib_off
|
||
; rets
|
||
;#objon
|
||
|
||
#player_active
|
||
calla obj_on
|
||
move a11,a2
|
||
calla attrib_on
|
||
rets
|
||
|
||
|
||
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* a0 = table offset to use for coordinates
|
||
*
|
||
|
||
|
||
SUBR create_logos
|
||
|
||
|
||
sll 5,a0 ;x 32 bits
|
||
addi #startxys,a0
|
||
move *a0,a2,L
|
||
|
||
move *a2+,a1,L
|
||
move *a2,a0 ;x val
|
||
sll 16,a0
|
||
PUSH a1,a2
|
||
movi T_SUNS,a2 ;* image
|
||
movi 120,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
move a8,@logo1_obj,L
|
||
|
||
PULL a1,a2
|
||
move *a2+,a0 ;x val
|
||
PUSH a1,a2
|
||
addi [2,0],a1 ;down 2
|
||
addk 2,a0 ;right 2
|
||
sll 16,a0
|
||
movi T_SUNS,a2 ;* image
|
||
movi 119,a3 ;z pos
|
||
movi DMACNZ,a4 ;DMA flags
|
||
movi SGMD8YEL,b0 ;palette to use
|
||
calla BEGINOBJP2
|
||
move a8,@logo1_obj+20h,L
|
||
movi 0202h,a0 ;black shadow
|
||
move a0,*a8(OCONST)
|
||
|
||
|
||
PULL a1,a2 ;y val
|
||
move *a2,a0 ;x val
|
||
PUSH a1,a2
|
||
sll 16,a0
|
||
movi T_KNIKS,a2 ;* image
|
||
movi 120,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
move a8,@logo2_obj,L
|
||
|
||
PULL a1,a2
|
||
move *a2+,a0 ;x val
|
||
addi [2,0],a1 ;down 2
|
||
addk 2,a0 ;right 2
|
||
sll 16,a0
|
||
movi T_KNIKS,a2 ;* image
|
||
movi 119,a3 ;z pos
|
||
movi DMACNZ,a4 ;DMA flags
|
||
movi SGMD8YEL,b0 ;palette to use
|
||
calla BEGINOBJP2
|
||
move a8,@logo2_obj+20h,L
|
||
movi 0202h,a0 ;black shadow
|
||
move a0,*a8(OCONST)
|
||
rets
|
||
|
||
#startxys .long #stxy1,#stxy2,#stxy3
|
||
|
||
#stxy1 .long (172+TEAMSEL_PAGE-14)<<16 ;Y
|
||
.word 101,295
|
||
|
||
#stxy2 .long 80<<16 ;Y
|
||
.word 80,200+80
|
||
|
||
#stxy3 .long >1a0<<16
|
||
.word >68-4,>12d-4
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBR update_team_set
|
||
;Updated by toggle routine
|
||
move @teamset1_obj,a8,L
|
||
move @team1,a0
|
||
jrnn #ok
|
||
calla obj_off
|
||
jruc #ok1
|
||
#ok
|
||
calla obj_on
|
||
|
||
move @team1,a0
|
||
sll 4,a0
|
||
addi tm1set,a0
|
||
move *a0,a0
|
||
|
||
sll 5,a0 ;x 32 bits
|
||
addi set_imgs,a0
|
||
move *a0,a2,L ;image addr
|
||
; move *a2(ICMAP),a0,L ;Get *palette
|
||
movi SQTR_B_P,a0
|
||
calla pal_getf
|
||
ori 17170000h,a0
|
||
move @teamset1_obj,a8,L
|
||
move a0,*a8(OPAL),L ;Set pallette & constant
|
||
move a2,a0 ;* image
|
||
move *a8(OCTRL),a1
|
||
; movi DMAWNZ,a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
|
||
#ok1
|
||
move @teamset2_obj,a8,L
|
||
move @team2,a0
|
||
jrnn #ok2
|
||
calla obj_off
|
||
rets
|
||
#ok2
|
||
calla obj_on
|
||
|
||
move @team2,a0
|
||
sll 4,a0
|
||
addi tm2set,a0
|
||
move *a0,a0
|
||
|
||
sll 5,a0 ;x 32 bits
|
||
addi set_imgs,a0
|
||
move *a0,a2,L ;image addr
|
||
|
||
movi SQTR_R_P,a0
|
||
; move *a2(ICMAP),a0,L ;Get *palette
|
||
calla pal_getf
|
||
ori 17170000h,a0
|
||
move @teamset2_obj,a8,L
|
||
move a0,*a8(OPAL),L ;Set pallette & constant
|
||
move a2,a0 ;* image
|
||
move *a8(OCTRL),a1
|
||
; movi DMAWNZ,a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
|
||
#notvalid
|
||
rets
|
||
|
||
|
||
SUBR update_logos
|
||
|
||
move @logo1_obj,a8,L
|
||
calla obj_on
|
||
move @logo1_obj+20h,a8,L
|
||
calla obj_on
|
||
move @team1,a0
|
||
jrnn #valid_team1
|
||
move @logo1_obj,a8,L
|
||
calla obj_off
|
||
move @logo1_obj+20h,a8,L
|
||
calla obj_off
|
||
jruc #team2
|
||
|
||
#valid_team1
|
||
sll 5,a0 ;x 32 bits
|
||
addi logos,a0
|
||
move *a0,a2,L ;image addr
|
||
move *a2(ICMAP),a0,L ;Get *palette
|
||
calla pal_getf
|
||
move @logo1_obj,a8,L
|
||
move a0,*a8(OPAL),L ;Set pallette & constant
|
||
move a2,a0 ;* image
|
||
PUSH a0
|
||
movi DMAWNZ,a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
PULL a0
|
||
move @logo1_obj+20h,a8,L
|
||
movi DMACNZ,a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
|
||
#team2
|
||
move @logo2_obj,a8,L
|
||
calla obj_on
|
||
move @logo2_obj+20h,a8,L
|
||
calla obj_on
|
||
move @team2,a0
|
||
jrnn #valid_team2
|
||
move @logo2_obj,a8,L
|
||
calla obj_off
|
||
move @logo2_obj+20h,a8,L
|
||
calla obj_off
|
||
rets
|
||
|
||
#valid_team2
|
||
sll 5,a0 ;x 32 bits
|
||
addi logos,a0
|
||
move *a0,a2,L ;image addr
|
||
move *a2(ICMAP),a0,L ;Get *palette
|
||
calla pal_getf
|
||
move @logo2_obj,a8,L
|
||
move a0,*a8(OPAL),L ;Set pallette & constant
|
||
move a2,a0 ;* image
|
||
PUSH a0
|
||
movi DMAWNZ,a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
PULL a0
|
||
move @logo2_obj+20h,a8,L
|
||
movi DMACNZ,a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
rets
|
||
|
||
|
||
#*****************************************************************************
|
||
;returns a pointer into the menu table at
|
||
;the current cursor position
|
||
;a1 = * current entry
|
||
|
||
SUBRP get_table_address
|
||
|
||
move *a13(PC_CURSPOS),a0 ;cursor position
|
||
movi 3*16,a1 ;3 x 16 bits
|
||
mpyu a0,a1
|
||
move *a13(PC_TABLE),a0,L ;table address
|
||
add a0,a1
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
update_team_cursor1
|
||
|
||
move @gmqrtr,a0
|
||
jrnz up_out
|
||
calla update_arrow1
|
||
calla update_cursor
|
||
;; calla obj_on ;don't flash
|
||
up_out
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
update_team_cursor2
|
||
|
||
move @gmqrtr,a0
|
||
jrnz up_out
|
||
calla update_arrow2
|
||
calla update_cursor
|
||
;; calla obj_on ;don't flash
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
update_arrow1
|
||
|
||
move *a13(PC_ARROWOBJ),a8,L
|
||
move @team1_control,a0
|
||
jrn #off
|
||
|
||
calla get_table_address
|
||
move *a1+,a3 ;char under cursor
|
||
move *a13(PC_STARTX),a2
|
||
move *a1+,a0 ;x offset
|
||
add a2,a0
|
||
move a0,*a8(OXPOS)
|
||
|
||
move *a13(PC_STARTY),a2
|
||
move *a1+,a0 ;y offset
|
||
add a2,a0
|
||
move a0,*a8(OYPOS)
|
||
PUSH a0
|
||
|
||
move @team1_control,a0
|
||
|
||
move @TWOPLAYERS,a1 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2
|
||
dec a0 ;1-2
|
||
#not_2
|
||
sll 5,a0 ;x 32 bits
|
||
addi arrow_imgs,a0
|
||
move *a0,a0,L ;* image
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
|
||
PULL a0
|
||
subi 28,a0
|
||
move a0,*a8(OYPOS)
|
||
|
||
rets
|
||
#off
|
||
calla obj_off
|
||
rets
|
||
|
||
arrow_imgs
|
||
.long arrow1t,arrow2t,arrow3t,arrow4t
|
||
|
||
#*****************************************************************************
|
||
|
||
update_arrow2
|
||
|
||
move *a13(PC_ARROWOBJ),a8,L
|
||
move @team2_control,a0
|
||
jrn #off
|
||
|
||
calla get_table_address
|
||
move *a1+,a3 ;char under cursor
|
||
move *a13(PC_STARTX),a2
|
||
move *a1+,a0 ;x offset
|
||
add a2,a0
|
||
addk 15,a0
|
||
move a0,*a8(OXPOS)
|
||
|
||
move *a13(PC_STARTY),a2
|
||
move *a1+,a0 ;y offset
|
||
add a2,a0
|
||
move a0,*a8(OYPOS)
|
||
PUSH a0
|
||
|
||
move @team2_control,a0
|
||
|
||
move @TWOPLAYERS,a1 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2
|
||
dec a0 ;1-2
|
||
#not_2
|
||
sll 5,a0 ;x 32 bits
|
||
addi arrow_imgs,a0
|
||
move *a0,a0,L ;* image
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
|
||
PULL a0
|
||
subi 28,a0
|
||
move a0,*a8(OYPOS)
|
||
|
||
rets
|
||
#off
|
||
calla obj_off
|
||
rets
|
||
|
||
|
||
#*****************************************************************************
|
||
;update cursor position & size for a player
|
||
;base on the image it's over
|
||
|
||
update_cursor
|
||
|
||
calla get_table_address
|
||
move *a1+,a3 ;char under cursor
|
||
sll 5,a3 ;x 32 bits
|
||
addi alpha_table,a3
|
||
move *a3,a3,L ;image addr
|
||
move *a3+,a0 ;image width
|
||
addi 4,a0
|
||
move *a13(PC_CURSOBJ),a8,L
|
||
move a0,*a8(OSIZEX)
|
||
move *a3,a0 ;image height
|
||
addi 2,a0
|
||
move a0,*a8(OSIZEY)
|
||
|
||
move *a1+,a0 ;x offset
|
||
move *a13(PC_STARTX),a2
|
||
add a2,a0
|
||
subi 2,a0
|
||
move a0,*a8(OXPOS)
|
||
move *a1+,a0 ;y offset
|
||
move *a13(PC_STARTY),a2
|
||
add a2,a0
|
||
subi 1,a0
|
||
move a0,*a8(OYPOS)
|
||
|
||
|
||
move *a13(PC_FLASHCOUNT),a0 ;cursor flash count
|
||
btst 3,a0
|
||
jrnz #off
|
||
calla obj_on
|
||
rets
|
||
#off
|
||
calla obj_off
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBRP create_heading
|
||
|
||
move *a13(PC_MENULEVEL),a0
|
||
move @TWOPLAYERS,a1 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2pa
|
||
addk 4,a0
|
||
#not_2pa
|
||
sll 5,a0 ;x 32 bits
|
||
addi #heading_imgs,a0
|
||
move *a0,a2,L ;* image
|
||
|
||
move *a13(PC_CENTERX),a0 ;x val
|
||
|
||
move @TWOPLAYERS,a1 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2pb
|
||
|
||
move *a13(PC_CENTERXkit),a0 ;x val
|
||
#not_2pb
|
||
sll 16,a0 ;shift up past fractional
|
||
movi [6+NAMENT_PAGE-2,0],a1 ;y val
|
||
movk 1,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
move *a13(PC_OBJID),a5 ;OBJ ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
|
||
rets
|
||
|
||
|
||
#heading_imgs
|
||
.long INITIALS,BirthM,BirthD,Stats
|
||
.long INITIALS_B,BirthM_B,BirthD_B,Stats_B
|
||
|
||
#plaque_imgs
|
||
; .long InitBACK,MnthBACK,DayBACK
|
||
|
||
|
||
#*****************************************************************************
|
||
;a5 = object ID
|
||
|
||
SUBRP create_name_objs
|
||
|
||
movk 4,a2 ;3 x name objs + 1 month/day obj
|
||
move a13,a1
|
||
addi PC_NAM1OBJ,a1
|
||
#obj_loop
|
||
PUSH a0,a1,a2,a5
|
||
clr a0 ;x val
|
||
movi [400h | (213-7),0],a1 ;y val
|
||
movi OSGEMD_F,a2 ;* image
|
||
movi 100,a3 ;z pos
|
||
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
|
||
; movi TYPTEXT|SUBPL1,a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
PULL a0,a1,a2,a5
|
||
move a8,*a1+,L ;save * object
|
||
addi [21,0],a0
|
||
dsj a2,#obj_loop
|
||
|
||
clr a0
|
||
move a0,*a13(PC_CHARPOS)
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBRP next_menu
|
||
|
||
move *a13(PC_OBJID),a0 ;OBJ ID's created by this PROC
|
||
calla obj_del1c ;delete all objs with this ID
|
||
|
||
move *a13(PC_MENULEVEL),a0
|
||
inc a0
|
||
cmpi 3,a0
|
||
jrlt #ok
|
||
clr a0
|
||
#ok
|
||
move a0,*a13(PC_MENULEVEL)
|
||
calla create_menu
|
||
calla update_cursor
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
; saves the selected menu item into playerX_data
|
||
|
||
SUBRP save_selection
|
||
|
||
move *a13(PC_DATADDR),a0,L ;start of player data
|
||
move *a13(PC_CHARPOS),a1
|
||
sll 4,a1 ;x 16 bits
|
||
add a0,a1
|
||
move *a13(PC_CURSPOS),a0
|
||
move a0,*a1 ;save char selected
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBRP check_delete
|
||
|
||
move *a13(PC_CURSPOS),a0
|
||
cmpi 27,a0 ;delete icon?
|
||
jrne #no_delete
|
||
|
||
move *a13(PC_CHARPOS),a0 ;no delete, but can't select
|
||
jrz #zippo ;delete icon either
|
||
|
||
move *a13(PC_DATADDR),a0,L ;start of player data
|
||
move *a13(PC_CHARPOS),a1
|
||
sll 4,a1 ;x 16 bits
|
||
add a0,a1
|
||
movi -1,a0
|
||
move a0,*a1 ;delete char
|
||
|
||
move *a13(PC_CHARPOS),a0
|
||
dec a0
|
||
move a0,*a13(PC_CHARPOS)
|
||
|
||
#zippo
|
||
setc
|
||
rets
|
||
|
||
#no_delete
|
||
clrc
|
||
rets
|
||
|
||
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBRP inc_charpos
|
||
|
||
move *a13(PC_CHARPOS),a0
|
||
inc a0
|
||
move a0,*a13(PC_CHARPOS)
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBRP button_actions
|
||
|
||
move *a13(PC_PLAYNUM),a0
|
||
sll 5,a0
|
||
addi select_sounds,a0
|
||
move *a0,a0,L
|
||
calla snd_play1
|
||
|
||
move *a13(PC_CURSOBJ),a8,L
|
||
calla obj_on
|
||
; movi 0202h,a9 ;const flash colour (black)
|
||
movi 0d0dh,a9 ;const flash colour (white)
|
||
movi 0101h,a10 ;const colour
|
||
JSRP flash_cursor
|
||
|
||
move *a13(PC_CHARPOS),a0
|
||
sll 5,a0 ;x 32 bits
|
||
addi #actions,a0
|
||
move *a0,a0,L
|
||
call a0
|
||
RETP
|
||
|
||
#actions
|
||
.long #name0,#name1,#name2,#month,#day
|
||
|
||
#name0
|
||
calla check_delete
|
||
jrc #x1
|
||
calla inc_charpos
|
||
#x1
|
||
rets
|
||
#name1
|
||
calla check_delete
|
||
jrc #x2
|
||
calla inc_charpos
|
||
#x2
|
||
rets
|
||
#name2
|
||
calla check_delete
|
||
jrc #x3
|
||
calla inc_charpos
|
||
calla next_menu
|
||
calla hide_name_objs
|
||
clr a0
|
||
calla move_cursor
|
||
calla create_heading
|
||
#x3
|
||
rets
|
||
#month
|
||
calla inc_charpos
|
||
calla next_menu
|
||
calla hide_name_objs
|
||
clr a0
|
||
calla move_cursor
|
||
calla create_heading
|
||
rets
|
||
#day
|
||
move *a13(PC_OBJID),a0 ;OBJ ID's created by this PROC
|
||
calla obj_del1c ;delete all objs with this ID
|
||
|
||
move *a13(PC_MENULEVEL),a0
|
||
inc a0
|
||
move a0,*a13(PC_MENULEVEL)
|
||
calla hide_name_objs
|
||
|
||
; calla inc_charpos
|
||
; calla next_menu
|
||
calla create_heading
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
* hide all name images off bottom of screen
|
||
|
||
SUBRP hide_name_objs
|
||
|
||
movi PC_NAM1OBJ,a3
|
||
add a13,a3
|
||
movk 4,a2 ;3 name objs to hide + month/day obj
|
||
#hide_loop
|
||
move *a3+,a1,L ;* object
|
||
move *a1(OYPOS),a0
|
||
ori 400h,a0 ;offscreen Y
|
||
move a0,*a1(OYPOS)
|
||
dsj a2,#hide_loop
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
PSEL_START_DELAY equ 22 ;# frames before repeating
|
||
PSEL_REPEAT_DELAY equ 15 ;10 ;# frames delay til next repeat
|
||
|
||
JOY_UP equ 1
|
||
JOY_DOWN equ 2
|
||
JOY_LEFT equ 4
|
||
JOY_RIGHT equ 8
|
||
|
||
SUBRP team1_cursor
|
||
|
||
clr a0
|
||
move a0,*a13(PC_PLAYNUM)
|
||
|
||
#wait_for_players
|
||
SLEEPK 1
|
||
move @PSTATUS,a0
|
||
andi 011b,a0
|
||
jrz #wait_for_players
|
||
|
||
;player 1 and/or 2 active
|
||
|
||
move @exit_status,a0
|
||
ori 1<<0,a0
|
||
move a0,@exit_status ;exit
|
||
|
||
clr a0
|
||
move a0,*a13(PC_FLASHCOUNT)
|
||
|
||
movi player1_data+PR_PTEAM,a0
|
||
move a0,*a13(PC_DATADDR),L ;start of player data
|
||
movi TYPTEXT|SUBPL1,a0
|
||
move a0,*a13(PC_OBJID) ;OBJ ID's created by this PROC
|
||
|
||
movi arw4p,b0 ;palette to use
|
||
; movi arwbp,b0 ;palette to use
|
||
|
||
movi arrow1t,a2
|
||
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrnz #okz
|
||
|
||
|
||
move @team1_control,a0
|
||
jrz #okz
|
||
movi arrow2t,a2
|
||
#okz
|
||
movi [62h,0],a0 ;x val
|
||
movi [176h,0],a1 ;y val
|
||
move @gmqrtr,a3
|
||
jrnz #oka
|
||
|
||
movi [80,0],a1 ;y val
|
||
movk 20,a0 ;Phoenix
|
||
move a0,@team1
|
||
#oka
|
||
movi 20001,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJP2
|
||
move a8,*a13(PC_ARROWOBJ),L
|
||
|
||
movi SGMD8YEL,b0 ;palette to use
|
||
movi [250,0],a0 ;x val
|
||
move @gmqrtr,a1
|
||
jrz #okb
|
||
movi [1250,0],a0 ;x val
|
||
#okb
|
||
movi [80,0],a1 ;y val
|
||
movi OSGEMD_A,a2 ;* image
|
||
movk 1,a3 ;z pos
|
||
movi DMACAL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJP2
|
||
movi 0f0fh,a0
|
||
move a0,*a8(OCONST)
|
||
move a8,*a13(PC_CURSOBJ),L
|
||
|
||
movi team_menus,a0 ;menu start
|
||
move a0,*a13(PC_MENUBASE),L
|
||
clr a0 ;menu number
|
||
move a0,*a13(PC_MENULEVEL)
|
||
; calla create_menu
|
||
calla get_menu_data
|
||
#restart_cursor
|
||
clr a0
|
||
move a0,*a13(PC_FLASHCOUNT)
|
||
|
||
movk 12,a0
|
||
move @team2,a1
|
||
cmpi 20,a1 ;is other cursor on portland?
|
||
jrne #nope
|
||
clr a0 ;yes, so put cursor on Golden State
|
||
#nope
|
||
move a0,*a13(PC_CURSPOS) ;position
|
||
calla update_team_cursor1
|
||
clr a0
|
||
calla try_move_cursor1
|
||
|
||
#loop
|
||
calla update_team_cursor1
|
||
SLEEPK 7
|
||
movi PSEL_START_DELAY,a10 ;initial repeat delay
|
||
jruc #skippy
|
||
#repeat_delay
|
||
calla update_team_cursor1
|
||
SLEEPK 1
|
||
#skippy
|
||
|
||
move @team1_control,a0 ;player selecting team 1
|
||
jrn #no_team1
|
||
|
||
move @page_scrolling,a0
|
||
jrnz #loop ;scrolling on, so no input
|
||
|
||
move *a13(PC_FLASHCOUNT),a0 ;cursor flash count
|
||
inc a0
|
||
move a0,*a13(PC_FLASHCOUNT)
|
||
|
||
calla #toggle1
|
||
|
||
;Check for team switch powerup on team #1
|
||
|
||
move @team1_switch,a0
|
||
jrnz #switch
|
||
move @gmqrtr,a0
|
||
jrz #noswitch
|
||
|
||
|
||
calla tournament_on
|
||
jrc #noswitch
|
||
|
||
|
||
;Possibly switch teams at the half!
|
||
move @team1_control,a0 ;player selecting team 1
|
||
calla get_steal_but_cur
|
||
jrz #tapz
|
||
move @team1_control,a0 ;player selecting team 1
|
||
calla get_stick_val_cur
|
||
cmpi 8,a0
|
||
jrnz #tapz
|
||
;Yes, trying to powerup team switch!
|
||
move @switch_1,a0
|
||
inc a0
|
||
move a0,@switch_1
|
||
cmpi 120,a0
|
||
jrlt #noswitch
|
||
move a0,@team1_switch
|
||
|
||
move @team1_control,a4 ;player selecting team 1
|
||
movi swapblu,a9
|
||
jruc #yesf0a
|
||
; jruc #noswitch
|
||
#tapz
|
||
clr a0
|
||
move a0,@switch_1
|
||
jruc #noswitch
|
||
|
||
#switch
|
||
move @team1_control,a0 ;player selecting team 1
|
||
calla get_steal_but_cur
|
||
jrz #nodbc
|
||
move @dbnce1,a0
|
||
jrnz #noswitch
|
||
movk 1,a0
|
||
move a0,@dbnce1
|
||
SOUND1 bounce_snd
|
||
move @team1,a0
|
||
inc a0
|
||
move a0,@team1
|
||
cmpi 27,a0
|
||
jrlt #noswitch
|
||
clr a0
|
||
move a0,@team1
|
||
jruc #noswitch
|
||
#nodbc
|
||
clr a0
|
||
move a0,@dbnce1
|
||
|
||
|
||
#noswitch
|
||
|
||
;Check for roster powerup taps
|
||
calla tournament_on
|
||
jrc #notap
|
||
|
||
move @bigroster1,a0
|
||
jrnn #notap
|
||
|
||
move @team1_control,a0 ;player selecting team 1
|
||
calla get_steal_but_cur
|
||
jrnz #tap
|
||
clr a0
|
||
move a0,@dbnce1
|
||
jruc #notap
|
||
#tap
|
||
|
||
;Check swirl on stick
|
||
move @team1_control,a0 ;player selecting team 1
|
||
calla get_stick_val_cur
|
||
|
||
move @tm1swrl,a1
|
||
or a0,a1
|
||
move a1,@tm1swrl
|
||
|
||
move @dbnce1,a0
|
||
jrnz #notap
|
||
movk 1,a0
|
||
move a0,@dbnce1
|
||
move @tm1taps,a0
|
||
inc a0
|
||
move a0,@tm1taps
|
||
cmpi 4,a0
|
||
jrlo #notap
|
||
|
||
cmpi 20,a0
|
||
jrlo #notfat
|
||
cmpi 1,a1
|
||
jrnz #notfat
|
||
|
||
|
||
jruc #notfat
|
||
|
||
|
||
move @fatality,a0
|
||
btst 0,a0
|
||
jrnz #notfat
|
||
movi fatalblu,a9
|
||
move @team1_control,a4 ;player selecting team 1
|
||
jruc #yesf
|
||
|
||
#notfat
|
||
cmpi >f,a1
|
||
jrnz #notap
|
||
;Yes! Powerup this particular roster
|
||
move @team1,a0
|
||
move a0,@bigroster1
|
||
|
||
move @team1_control,a4 ;player selecting team 1
|
||
|
||
;If no additional players are available, fatalitites enabled box appears
|
||
|
||
sll 4,a0
|
||
addi fatal_tbl,a0
|
||
move *a0,a0
|
||
jrz #reg
|
||
|
||
;Do bad decision speech call!
|
||
movi baddec_snd,a0
|
||
calla speech_playovrp
|
||
|
||
#reg
|
||
movi rosterblu,a9
|
||
jruc #yesf0a
|
||
#yesf
|
||
move @fatality,a0
|
||
ori 1,a0
|
||
move a0,@fatality
|
||
#yesf0a
|
||
sll 4,a4 ;x 16 bits
|
||
addi plaque_xs,a4
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2p
|
||
addi 4*16,a4
|
||
#not_2p
|
||
move *a4,a10
|
||
sll 16,a10 ;x pos
|
||
clr a0
|
||
move a0,@HALT
|
||
CREATE0 fullgame_purchased
|
||
|
||
#notap
|
||
move @team1_control,a0 ;player selecting team 1
|
||
calla get_but_val_down_nt
|
||
jrnz #team_selected
|
||
move @force_selection,a0
|
||
jrnz #team_selected
|
||
|
||
move @team1_control,a0 ;player selecting team 1
|
||
calla get_steal_but_cur
|
||
jrnz #nomov
|
||
move @team1_control,a0
|
||
calla get_stick_val_down
|
||
jrnz #movit
|
||
dsj a10,#repeat_delay
|
||
|
||
move @team1_control,a0 ;player selecting team 1
|
||
calla get_steal_but_cur
|
||
jrnz #nomov
|
||
move @team1_control,a0 ;player selecting team 1
|
||
calla get_stick_val_cur
|
||
calla try_move_cursor1
|
||
#nomov
|
||
movi PSEL_REPEAT_DELAY,a10 ;repeat delay
|
||
jruc #repeat_delay
|
||
|
||
#movit
|
||
move @gmqrtr,a14
|
||
jrnz #nomov
|
||
|
||
calla try_move_cursor1
|
||
jruc #loop
|
||
|
||
plaque_xs
|
||
.word 15,104,209,298
|
||
.word 0,101-42,296-42,0
|
||
|
||
#team_selected
|
||
move @gmqrtr,a0
|
||
jrnz #skp
|
||
|
||
move @team1,a0
|
||
addi AUD_ATL,a0
|
||
calla AUD1 ;inc audit
|
||
|
||
move @team1,a0
|
||
calla call_team_name
|
||
#skp
|
||
|
||
SOUND1 select_snd1
|
||
move *a13(PC_CURSOBJ),a8,L
|
||
calla obj_on
|
||
move *a13(PC_ARROWOBJ),a8,L
|
||
calla obj_off
|
||
|
||
movi 0d0dh,a9 ;const flash colour
|
||
movi 0f0fh,a10 ;const colour
|
||
movi plate1_objs,a11
|
||
JSRP flash_cursorNplate
|
||
move @exit_status,a0
|
||
andni 1<<0,a0
|
||
move a0,@exit_status ;exit
|
||
|
||
#wait_loop2
|
||
SLEEPK 1
|
||
move @PSTATUS,a0
|
||
andi 011b,a0
|
||
jrnz #wait_loop2
|
||
|
||
#no_team1
|
||
move @exit_status,a0
|
||
andni 1<<0,a0
|
||
move a0,@exit_status ;exit
|
||
|
||
move *a13(PC_CURSOBJ),a8,L
|
||
calla obj_off
|
||
move *a13(PC_ARROWOBJ),a8,L
|
||
calla obj_off
|
||
|
||
move @gmqrtr,a14
|
||
cmpi 2,a14
|
||
jaz SUCIDE
|
||
|
||
#wait_loop
|
||
SLEEPK 1
|
||
|
||
move @PSTATUS,a0
|
||
andi 011b,a0
|
||
jrz #wait_loop
|
||
|
||
move @exit_status,a0
|
||
ori 1<<0,a0
|
||
move a0,@exit_status ;exit
|
||
|
||
jruc #restart_cursor
|
||
|
||
|
||
#toggle1
|
||
move @toggle1_time,a0
|
||
jrz #can
|
||
dec a0
|
||
move a0,@toggle1_time
|
||
jrnz #no_toggle
|
||
|
||
#can
|
||
calla get_team1_turbo ;check if players want to toggle heads
|
||
jrz #no_toggle
|
||
|
||
SOUND1 bounce_snd
|
||
; move @player_toggle1,a0
|
||
; xori 1,a0
|
||
; move a0,@player_toggle1
|
||
movk 6,a0 ;20
|
||
move a0,@toggle1_time
|
||
|
||
move @team1,a0
|
||
sll 4,a0
|
||
addi tm1set,a0
|
||
move *a0,a14
|
||
|
||
|
||
cmpi 5,a14
|
||
jrlo #ok
|
||
|
||
|
||
;MJT
|
||
;Bigroster if defeated all the teams
|
||
move @team1_control,a1
|
||
sll 5,a1
|
||
addi defeated,a1
|
||
move *a1,a1,L
|
||
move *a1,a1,L
|
||
cmpi 07ffffffh,a1
|
||
jrz #bonus
|
||
|
||
|
||
move @bigroster1,a1
|
||
jrn #cont
|
||
move @team1,a2
|
||
cmp a1,a2
|
||
jrnz #cont
|
||
|
||
#bonus
|
||
;Player has powered up his roster, and is sitting on the powered up team.
|
||
cmpi 19,a14
|
||
jrz #cont
|
||
|
||
#ok
|
||
inc a14
|
||
move a14,*a0
|
||
|
||
movi player_heads,a1
|
||
move @team1,a14
|
||
#lp cmpi 0,a14
|
||
jrz #out
|
||
addi 20*64,a1
|
||
dec a14
|
||
jruc #lp
|
||
#out
|
||
move *a0,a14
|
||
sll 6,a14
|
||
add a14,a1
|
||
move *a1,a1
|
||
jrnz #no_toggle
|
||
#cont clr a1
|
||
move a1,*a0
|
||
|
||
#no_toggle
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* INPUT: a0 = switch bits 0-3
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBRP try_move_cursor1
|
||
|
||
move *a13(PC_CURSPOS),a1 ;save curs position
|
||
move a1,b1
|
||
move a0,b0 ;save joy switch vals
|
||
calla move_team_cursor ;move cursor
|
||
calla get_team_number
|
||
move @team2,a1 ;on cursor 2 ?
|
||
cmp a0,a1
|
||
|
||
; jrne #not_same
|
||
jruc #not_same
|
||
|
||
move b0,a0 ;restor joy switch vals
|
||
calla move_team_cursor ;move it again
|
||
calla get_team_number
|
||
move @team2,a1 ;on cursor 2 ?
|
||
cmp a0,a1
|
||
jrne #not_same
|
||
|
||
move b1,a0
|
||
move a0,*a13(PC_CURSPOS) ;restore position
|
||
rets
|
||
|
||
#not_same
|
||
move @gmqrtr,a14
|
||
jrnz #out
|
||
move @team1,a14
|
||
cmp a0,a14
|
||
jrz #out
|
||
move a0,@team1
|
||
move @bigroster1,a14
|
||
jrnn #out
|
||
clr a14
|
||
move a14,@tm1taps
|
||
move a14,@tm1swrl
|
||
#out
|
||
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBRP team2_cursor
|
||
|
||
movk 1,a0
|
||
move a0,*a13(PC_PLAYNUM)
|
||
|
||
#wait_for_players
|
||
SLEEPK 1
|
||
move @PSTATUS,a0
|
||
andi 01100b,a0
|
||
jrz #wait_for_players
|
||
|
||
;player 3 and/or 4 active
|
||
|
||
move @exit_status,a0
|
||
ori 1<<1,a0
|
||
move a0,@exit_status ;exit
|
||
|
||
clr a0
|
||
move a0,*a13(PC_FLASHCOUNT)
|
||
|
||
movi player2_data+PR_PTEAM,a0
|
||
move a0,*a13(PC_DATADDR),L ;start of player data
|
||
movi TYPTEXT|SUBPL2,a0
|
||
move a0,*a13(PC_OBJID) ;OBJ ID's created by this PROC
|
||
|
||
movi arw1p,b0 ;palette to use
|
||
; movi arw3p,b0 ;palette to use
|
||
|
||
|
||
movi arrow2t,a2
|
||
move @TWOPLAYERS,a1 ;0 = NO, 1 = YES 2 players
|
||
jrnz #okz
|
||
|
||
|
||
movi arrow3t,a2
|
||
move @team2_control,a0
|
||
cmpi 2,a0
|
||
jrz #okz
|
||
movi arrow4t,a2
|
||
#okz
|
||
movi [390-62h,0],a0 ;x val
|
||
movi [176h,0],a1 ;y val
|
||
move @gmqrtr,a3
|
||
jrnz #oka
|
||
|
||
movi [80,0],a1 ;y val
|
||
movk 17,a0 ;New York
|
||
move a0,@team2
|
||
#oka
|
||
movi 20001,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJP2
|
||
move a8,*a13(PC_ARROWOBJ),L
|
||
|
||
movi SGMD8YEL,b0 ;palette to use
|
||
movi [250,0],a0 ;x val
|
||
move @gmqrtr,a1
|
||
jrz #okb
|
||
movi [1250,0],a0 ;x val
|
||
#okb
|
||
movi [80,0],a1 ;y val
|
||
movi OSGEMD_A,a2 ;* image
|
||
movk 1,a3 ;z pos
|
||
movi DMACAL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJP2
|
||
movi 0c0ch,a0
|
||
move a0,*a8(OCONST)
|
||
move a8,*a13(PC_CURSOBJ),L
|
||
|
||
movi team_menus,a0 ;menu start
|
||
move a0,*a13(PC_MENUBASE),L
|
||
clr a0 ;menu number
|
||
move a0,*a13(PC_MENULEVEL)
|
||
; calla create_menu
|
||
calla get_menu_data
|
||
#restart_cursor
|
||
clr a0
|
||
move a0,*a13(PC_FLASHCOUNT)
|
||
|
||
movk 15,a0
|
||
move @team1,a1
|
||
cmpi 17,a1 ;is other cursor on New York?
|
||
jrne #nope
|
||
movk 3,a0 ;yes, so put cursor on Boston
|
||
#nope
|
||
move a0,*a13(PC_CURSPOS) ;position
|
||
calla update_team_cursor2
|
||
clr a0
|
||
calla try_move_cursor2
|
||
|
||
#loop
|
||
calla update_team_cursor2
|
||
SLEEP 7
|
||
movi PSEL_START_DELAY,a10 ;initial repeat delay
|
||
jruc #skippy
|
||
#repeat_delay
|
||
calla update_team_cursor2
|
||
SLEEPK 1
|
||
#skippy
|
||
|
||
move @team2_control,a0 ;player selecting team 2
|
||
jrn #no_team2
|
||
|
||
move @page_scrolling,a0
|
||
jrnz #loop ;scrolling on, so no input
|
||
|
||
move *a13(PC_FLASHCOUNT),a0 ;cursor flash count
|
||
inc a0
|
||
move a0,*a13(PC_FLASHCOUNT)
|
||
|
||
calla #toggle2
|
||
;Check for team switch powerup on team #2
|
||
|
||
move @team2_switch,a0
|
||
jrnz #switch
|
||
move @gmqrtr,a0
|
||
jrz #noswitch
|
||
|
||
|
||
.ref tournament_on
|
||
calla tournament_on
|
||
jrc #noswitch
|
||
|
||
|
||
;Possibly switch teams at the half!
|
||
move @team2_control,a0 ;player selecting team 1
|
||
calla get_steal_but_cur
|
||
jrz #tapz
|
||
move @team2_control,a0 ;player selecting team 1
|
||
calla get_stick_val_cur
|
||
cmpi 8,a0
|
||
jrnz #tapz
|
||
;Yes, trying to powerup team switch!
|
||
move @switch_2,a0
|
||
inc a0
|
||
move a0,@switch_2
|
||
cmpi 120,a0
|
||
jrlt #noswitch
|
||
move a0,@team2_switch
|
||
move @team2_control,a4 ;player selecting team 1
|
||
movi swapred,a9
|
||
jruc #yesf1a
|
||
; jruc #noswitch
|
||
#tapz
|
||
clr a0
|
||
move a0,@switch_2
|
||
jruc #noswitch
|
||
|
||
#switch
|
||
move @team2_control,a0 ;player selecting team 1
|
||
calla get_steal_but_cur
|
||
jrz #nodbc
|
||
move @dbnce2,a0
|
||
jrnz #noswitch
|
||
movk 1,a0
|
||
move a0,@dbnce2
|
||
SOUND1 bounce_snd
|
||
move @team2,a0
|
||
inc a0
|
||
move a0,@team2
|
||
cmpi 27,a0
|
||
jrlt #noswitch
|
||
clr a0
|
||
move a0,@team2
|
||
jruc #noswitch
|
||
#nodbc
|
||
clr a0
|
||
move a0,@dbnce2
|
||
|
||
#noswitch
|
||
|
||
;Check for roster powerup taps
|
||
calla tournament_on
|
||
jrc #notap
|
||
|
||
move @bigroster2,a0
|
||
jrnn #notap
|
||
|
||
move @team2_control,a0 ;player selecting team 1
|
||
calla get_steal_but_cur
|
||
jrnz #tap
|
||
clr a0
|
||
move a0,@dbnce2
|
||
jruc #notap
|
||
#tap
|
||
|
||
;Check swirl on stick
|
||
move @team2_control,a0 ;player selecting team 1
|
||
calla get_stick_val_cur
|
||
|
||
move @tm2swrl,a1
|
||
or a0,a1
|
||
move a1,@tm2swrl
|
||
|
||
move @dbnce2,a0
|
||
jrnz #notap
|
||
movk 1,a0
|
||
move a0,@dbnce2
|
||
move @tm2taps,a0
|
||
inc a0
|
||
move a0,@tm2taps
|
||
cmpi 4,a0
|
||
jrlo #notap
|
||
|
||
cmpi 20,a0
|
||
jrlo #notfat
|
||
cmpi 1,a1
|
||
jrnz #notfat
|
||
|
||
move @fatality,a0
|
||
btst 1,a0
|
||
jrnz #notfat
|
||
movi fatalred,a9
|
||
move @team2_control,a4 ;player selecting team 1
|
||
jruc #yesf1
|
||
|
||
#notfat
|
||
cmpi >f,a1
|
||
jrnz #notap
|
||
;Yes! Powerup this particular roster
|
||
move @team2,a0
|
||
move a0,@bigroster2
|
||
|
||
move @team2_control,a4 ;player selecting team 1
|
||
|
||
;If no additional players are available, fatalitites enabled box appears
|
||
|
||
sll 4,a0
|
||
addi fatal_tbl,a0
|
||
move *a0,a0
|
||
jrz #reg ;Br=yes fatality
|
||
|
||
;Do bad decision speech call!
|
||
movi baddec_snd,a0
|
||
calla speech_playovrp
|
||
|
||
#reg
|
||
movi rosterred,a9
|
||
jruc #yesf1a
|
||
#yesf1
|
||
move @fatality,a0
|
||
ori 2,a0
|
||
move a0,@fatality
|
||
#yesf1a
|
||
sll 4,a4 ;x 16 bits
|
||
addi plaque_xs,a4
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2p
|
||
addi 4*16,a4
|
||
#not_2p
|
||
move *a4,a10
|
||
sll 16,a10
|
||
;MJT ;x pos
|
||
clr a0
|
||
move a0,@HALT
|
||
CREATE0 fullgame_purchased
|
||
|
||
#notap
|
||
move @team2_control,a0 ;player selecting team 2
|
||
calla get_but_val_down_nt
|
||
jrnz #team_selected
|
||
move @force_selection,a0
|
||
jrnz #team_selected
|
||
|
||
move @team2_control,a0 ;player selecting team 2
|
||
calla get_steal_but_cur
|
||
jrnz #nomov
|
||
move @team2_control,a0
|
||
calla get_stick_val_down
|
||
jrnz #movit
|
||
dsj a10,#repeat_delay
|
||
|
||
move @team2_control,a0 ;player selecting team 1
|
||
calla get_steal_but_cur
|
||
jrnz #nomov
|
||
move @team2_control,a0 ;player selecting team 2
|
||
calla get_stick_val_cur
|
||
calla try_move_cursor2
|
||
#nomov
|
||
|
||
movi PSEL_REPEAT_DELAY,a10 ;repeat delay
|
||
jruc #repeat_delay
|
||
#movit
|
||
move @gmqrtr,a14
|
||
jrnz #nomov
|
||
|
||
calla try_move_cursor2
|
||
jruc #loop
|
||
|
||
#team_selected
|
||
move @gmqrtr,a0
|
||
jrnz #skp
|
||
|
||
move @team2,a0
|
||
addi AUD_ATL,a0
|
||
calla AUD1 ;inc audit
|
||
|
||
move @team2,a0
|
||
calla call_team_name
|
||
#skp
|
||
|
||
SOUND1 select_snd2
|
||
move *a13(PC_CURSOBJ),a8,L
|
||
calla obj_on
|
||
move *a13(PC_ARROWOBJ),a8,L
|
||
calla obj_off
|
||
|
||
movi 0d0dh,a9 ;const flash colour
|
||
movi 0c0ch,a10 ;const colour
|
||
movi plate2_objs,a11
|
||
JSRP flash_cursorNplate
|
||
move @exit_status,a0
|
||
andni 1<<1,a0
|
||
move a0,@exit_status ;exit
|
||
|
||
#wait_loop2
|
||
SLEEPK 1
|
||
move @PSTATUS,a0
|
||
andi 01100b,a0
|
||
jrnz #wait_loop2
|
||
|
||
#no_team2
|
||
move @exit_status,a0
|
||
andni 1<<1,a0
|
||
move a0,@exit_status ;exit
|
||
|
||
move *a13(PC_CURSOBJ),a8,L
|
||
calla obj_off
|
||
move *a13(PC_ARROWOBJ),a8,L
|
||
calla obj_off
|
||
|
||
move @gmqrtr,a14
|
||
cmpi 2,a14
|
||
jaz SUCIDE
|
||
|
||
#wait_loop
|
||
SLEEPK 1
|
||
|
||
move @PSTATUS,a0
|
||
andi 01100b,a0
|
||
jrz #wait_loop
|
||
|
||
move @exit_status,a0
|
||
ori 1<<1,a0
|
||
move a0,@exit_status ;exit
|
||
|
||
jruc #restart_cursor
|
||
|
||
|
||
#toggle2
|
||
move @toggle2_time,a0
|
||
jrz #can
|
||
dec a0
|
||
move a0,@toggle2_time
|
||
jrnz #no_toggle
|
||
|
||
#can
|
||
calla get_team2_turbo ;check if players want to toggle heads
|
||
jrz #no_toggle
|
||
|
||
SOUND1 bounce_snd
|
||
; move @player_toggle2,a0
|
||
; xori 1,a0
|
||
; move a0,@player_toggle2
|
||
movi 6,a0
|
||
move a0,@toggle2_time
|
||
|
||
move @team2,a0
|
||
sll 4,a0
|
||
addi tm2set,a0
|
||
move *a0,a14
|
||
|
||
cmpi 5,a14
|
||
jrlo #ok
|
||
|
||
|
||
|
||
;MJT
|
||
;Bigroster if defeated all the teams
|
||
move @team2_control,a1
|
||
sll 5,a1
|
||
addi defeated,a1
|
||
move *a1,a1,L
|
||
move *a1,a1,L
|
||
cmpi 07ffffffh,a1
|
||
jrz #bonus2
|
||
|
||
|
||
|
||
|
||
move @bigroster2,a1
|
||
jrn #cont
|
||
move @team2,a2
|
||
cmp a1,a2
|
||
jrnz #cont
|
||
#bonus2
|
||
;Player has powered up his roster, and is sitting on the powered up team.
|
||
cmpi 19,a14
|
||
jrz #cont
|
||
|
||
#ok
|
||
inc a14
|
||
move a14,*a0
|
||
|
||
movi player_heads,a1
|
||
move @team2,a14
|
||
#lp cmpi 0,a14
|
||
jrz #out
|
||
addi 20*64,a1
|
||
dec a14
|
||
jruc #lp
|
||
#out
|
||
move *a0,a14
|
||
sll 6,a14
|
||
add a14,a1
|
||
move *a1,a1
|
||
jrnz #no_toggle
|
||
#cont clr a1
|
||
move a1,*a0
|
||
|
||
#no_toggle
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* INPUT: a0 = switch bits 0-3
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBRP try_move_cursor2
|
||
|
||
move *a13(PC_CURSPOS),a1 ;save curs position
|
||
move a1,b1
|
||
move a0,b0 ;save joy switch vals
|
||
calla move_team_cursor ;move cursor
|
||
calla get_team_number
|
||
move @team1,a1 ;on cursor 1 ?
|
||
cmp a0,a1
|
||
|
||
; jrne #not_same
|
||
; jruc #not_same
|
||
|
||
; move b0,a0 ;restor joy switch vals
|
||
; calla move_team_cursor ;move it again
|
||
; calla get_team_number
|
||
; move @team1,a1 ;on cursor 1 ?
|
||
; cmp a0,a1
|
||
; jrne #not_same
|
||
;
|
||
; move b1,a0
|
||
; move a0,*a13(PC_CURSPOS) ;restore position
|
||
; rets
|
||
;
|
||
;#not_same
|
||
move @gmqrtr,a14
|
||
jrnz #out
|
||
move @team2,a14
|
||
cmp a0,a14
|
||
jrz #out
|
||
move a0,@team2
|
||
move @bigroster2,a14
|
||
jrnn #out
|
||
clr a14
|
||
move a14,@tm2taps
|
||
move a14,@tm2swrl
|
||
#out
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* INPUT: a9 = const colour for flash
|
||
* a10 = const colour to revert to
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBRP flash_cursor
|
||
|
||
movk 2,a11
|
||
#again
|
||
move a9,*a8(OCONST)
|
||
SLEEPK 3
|
||
move a10,*a8(OCONST)
|
||
SLEEPK 3
|
||
dsj a11,#again
|
||
|
||
RETP
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* INPUT: a9 = const colour for flash
|
||
* a10 = const colour to revert to
|
||
* a11 = * plate objs
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBRP flash_cursorNplate
|
||
|
||
movk 6,a0
|
||
#again
|
||
PUSHP a0
|
||
move *a11,a8,L
|
||
; movi 2f2fh,a2
|
||
movi 1919h,a2
|
||
move a2,*a8(OCONST)
|
||
calla const_on
|
||
move *a11(20h),a8,L
|
||
; movi 2f2fh,a2
|
||
movi 1919h,a2
|
||
move a2,*a8(OCONST)
|
||
calla const_on
|
||
|
||
move *a13(PC_CURSOBJ),a8,L
|
||
move a9,*a8(OCONST)
|
||
|
||
SLEEPK 3
|
||
|
||
move *a11,a8,L
|
||
calla const_off
|
||
move *a11(20h),a8,L
|
||
calla const_off
|
||
move *a13(PC_CURSOBJ),a8,L
|
||
move a10,*a8(OCONST)
|
||
|
||
SLEEPK 3
|
||
PULLP a0
|
||
dsj a0,#again
|
||
|
||
RETP
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* convert team cursor position into actual team number
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
SUBRP get_team_number
|
||
|
||
move *a13(PC_CURSPOS),a0 ;position
|
||
sll 4,a0 ;x16 bits
|
||
addi team_convert,a0
|
||
move *a0,a0
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* process that displays PRESS START & INSERT COIN in player stat boxes
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBR credit_messages
|
||
|
||
MESSAGE_Y equ 216<<16
|
||
|
||
movk 4,a4
|
||
movi message1_obj,a5
|
||
movi #msg_x,a6
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_kit
|
||
movi #msg_x2,a6
|
||
#not_kit
|
||
#init_loop
|
||
move *a6+,a0 ;x val
|
||
sll 16,a0
|
||
PUSH a4,a5,a6
|
||
|
||
move @TWOPLAYERS,a1 ;0 = NO, 1 = YES 2 players
|
||
jrz #skip_chk
|
||
cmpi 1,a4 ;no player 1
|
||
jreq #skip
|
||
cmpi 4,a4 ;no player 4
|
||
jreq #skip
|
||
#skip_chk
|
||
|
||
movi MESSAGE_Y,a1 ;y val
|
||
movi start3,a2 ;* image
|
||
movi 127,a3 ;z pos
|
||
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
#skip
|
||
PULL a4,a5,a6
|
||
move a8,*a5+,L
|
||
dsj a4,#init_loop
|
||
|
||
#msg_loop
|
||
movk 1,a1 ;player 2
|
||
move @message2_obj,a8,L
|
||
calla update_credit_message
|
||
|
||
movk 2,a1 ;player 3
|
||
move @message3_obj,a8,L
|
||
calla update_credit_message
|
||
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrnz #2_plyrs
|
||
|
||
clr a1 ;player 1
|
||
move @message1_obj,a8,L
|
||
calla update_credit_message
|
||
|
||
movk 3,a1 ;player 4
|
||
move @message4_obj,a8,L
|
||
calla update_credit_message
|
||
|
||
#2_plyrs
|
||
SLEEPK 1
|
||
jruc #msg_loop
|
||
|
||
|
||
#msg_x .word 56,145,250,339 ;x val
|
||
|
||
#msg_x2 .word 0,101,295,0 ;x val
|
||
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* INPUT: a8 = * message obj
|
||
* a1 = player bit number (0-3)
|
||
*-----------------------------------------------------------------------------
|
||
|
||
;prints either Insert Coin or Press Start based on # credits
|
||
|
||
SUBRP update_credit_message
|
||
|
||
move a1,a9
|
||
|
||
move @PSTATUS,a0
|
||
btst a1,a0
|
||
jrnz #player_active
|
||
|
||
move @in_team_select,a14
|
||
jrz #no
|
||
;Check to see if teammate is in game, if so, don't blink messages over
|
||
;attributes
|
||
XORK 1,a1
|
||
btst a1,a0
|
||
jrnz #player_active
|
||
#no
|
||
|
||
move @PCNT,a0 ;frame count
|
||
btst 5,a0
|
||
jrnz #objoff
|
||
|
||
movk ADJFREPL,a0 ;in free play?
|
||
calla GET_ADJ
|
||
jrnz #in_free
|
||
|
||
;Check to see if in INFREEPRICE GAMSTATE
|
||
move @winningteam,a0 ;0 or 1
|
||
jrnn #tmfree
|
||
|
||
move @GAMSTATE,a0
|
||
cmpi INFREEPRICE,a0
|
||
jrnz #no1
|
||
#tmfree
|
||
move @scores,a0
|
||
move @scores+16,a1
|
||
cmp a0,a1
|
||
jrlt #tm1
|
||
;Team 2 has won! Print PRESS START for these guys
|
||
cmpi 2,a9
|
||
jrge #in_free
|
||
jruc #no1
|
||
#tm1 cmpi 2,a9
|
||
jrlt #in_free
|
||
|
||
#no1
|
||
movi insert3,a10 ;Insert Coin message
|
||
|
||
movk ADJCSTRT,a0 ;get # credits to start
|
||
calla GET_ADJ
|
||
move a0,a9
|
||
calla CRED_P ;# credits returned in A0
|
||
cmp a0,a9
|
||
jrgt #no_credits
|
||
|
||
#in_free
|
||
movi start3,a10 ;Press Start message
|
||
#no_credits
|
||
calla obj_on
|
||
move a10,a0 ;* image
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
rets
|
||
|
||
#objoff
|
||
movk ADJFREPL,a0 ;in free play?
|
||
calla GET_ADJ
|
||
jrz #not_free
|
||
|
||
calla obj_on
|
||
movi freplay3,a0 ;* image
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
rets
|
||
|
||
#not_free
|
||
#player_active
|
||
calla obj_off
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
|
||
MESSAGE_Y equ 216<<16
|
||
|
||
SUBRP player_cursor
|
||
|
||
|
||
move a10,*a13(PC_PLAYNUM)
|
||
#resart_cursor
|
||
movk 1,a0
|
||
move *a13(PC_PLAYNUM),a1
|
||
sll a1,a0
|
||
move @exit_status,a1
|
||
andn a0,a1
|
||
move a1,@exit_status ;exit
|
||
|
||
|
||
move *a13(PC_PLAYNUM),a10
|
||
|
||
move a10,a0
|
||
sll 5,a0 ;x 32 bits
|
||
addi #player_data,a0
|
||
move *a0,a1,L ;start address of player data
|
||
movi PR_INIT1,a2
|
||
add a1,a2
|
||
move a2,*a13(PC_DATADDR),L ;start of player data
|
||
|
||
movi -1,a0 ;init player data to -1
|
||
move a0,*a1(PR_COUNT)
|
||
move a0,*a1(PR_INIT1)
|
||
move a0,*a1(PR_INIT2)
|
||
move a0,*a1(PR_INIT3)
|
||
|
||
move a10,a0
|
||
sll 6,a0 ;x 64
|
||
addi #center_xs,a0
|
||
move *a0+,a1
|
||
move a1,*a13(PC_CENTERX) ;name center X
|
||
move *a0+,a1
|
||
move a1,*a13(PC_CENTERX2) ;stats box center X
|
||
move *a0,a1
|
||
move a1,*a13(PC_CENTERXkit) ;name center X (kit)
|
||
|
||
clr a0
|
||
move a0,*a13(PC_FLASHCOUNT)
|
||
|
||
move a10,a0
|
||
sll 4,a0 ;x 16 bits
|
||
addi #obj_ids,a0
|
||
move *a0,a0
|
||
move a0,*a13(PC_OBJID) ;OBJ ID's created by this PROC
|
||
movk 10h,a1 ;mask (bits to remove)
|
||
calla obj_delc
|
||
|
||
#wait_for_player
|
||
SLEEPK 1
|
||
move *a13(PC_PLAYNUM),a1
|
||
move @PSTATUS,a0
|
||
btst a1,a0
|
||
jrz #wait_for_player
|
||
move @force_selection,a0
|
||
jrnz #youre_out
|
||
|
||
;player 1 active
|
||
|
||
move @can_enter_inits,a0 ;can player enter initials?
|
||
jrnz #enter_ok
|
||
DIE
|
||
|
||
#enter_ok
|
||
|
||
movk ADJTOURNEY,a0 ;Tournament mode?
|
||
calla GET_ADJ ;0-1
|
||
jrnz #skip ;Br=Not in tournament mode
|
||
;Turn on tournament mode - no secrets message
|
||
move *a13(PC_PLAYNUM),a8
|
||
|
||
.ref nosecrets_drw
|
||
CREATE0 nosecrets_drw
|
||
movk 1,a0
|
||
move *a13(PC_PLAYNUM),a1
|
||
sll a1,a0
|
||
move @exit_status,a1
|
||
or a0,a1
|
||
move a1,@exit_status ;no exit
|
||
SLEEP 90
|
||
#skip
|
||
movk 1,a0
|
||
move *a13(PC_PLAYNUM),a1
|
||
sll a1,a0
|
||
move @exit_status,a1
|
||
or a0,a1
|
||
move a1,@exit_status ;no exit
|
||
|
||
movi [250,0],a0 ;x val
|
||
movi [80,0],a1 ;y val
|
||
movi SGMD8_A,a2 ;* image
|
||
movk 1,a3 ;z pos
|
||
movi DMACAL,a4 ;DMA flags
|
||
move *a13(PC_OBJID),a5
|
||
ori 10h,a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
movi 0101h,a0
|
||
move a0,*a8(OCONST)
|
||
move a8,*a13(PC_CURSOBJ),L
|
||
|
||
move *a13(PC_OBJID),a5
|
||
ori 10h,a5 ;ID
|
||
calla create_name_objs
|
||
|
||
move *a13(PC_PLAYNUM),a0
|
||
sll 5,a0 ;x 32 bits
|
||
addi #player_menus,a0
|
||
move @TWOPLAYERS,a1
|
||
jrz #not_2p
|
||
addi 4*32,a0
|
||
#not_2p
|
||
move *a0,a0,L ;menu start
|
||
move a0,*a13(PC_MENUBASE),L
|
||
clr a0 ;menu number
|
||
move a0,*a13(PC_MENULEVEL)
|
||
calla create_menu
|
||
calla create_heading
|
||
calla update_cursor
|
||
|
||
; calla update_statbox_images
|
||
|
||
SLEEPK 1
|
||
|
||
#loop
|
||
movi PSEL_START_DELAY,a10 ;initial repeat delay
|
||
#repeat_delay
|
||
SLEEPK 1
|
||
|
||
move *a13(PC_PLAYNUM),a1
|
||
move @PSTATUS,a0
|
||
btst a1,a0
|
||
jrz #resart_cursor
|
||
|
||
move @force_selection,a0
|
||
jrnz #resart_cursor
|
||
|
||
move @page_scrolling,a0
|
||
jrnz #loop ;scrolling on, so no input
|
||
|
||
move *a13(PC_FLASHCOUNT),a0 ;cursor flash count
|
||
inc a0
|
||
move a0,*a13(PC_FLASHCOUNT)
|
||
|
||
calla save_selection
|
||
calla update_statbox_images
|
||
|
||
move *a13(PC_PLAYNUM),a0
|
||
calla get_but_val_down
|
||
jrz #no_action
|
||
|
||
JSRP button_actions
|
||
move *a13(PC_MENULEVEL),a0
|
||
cmpi 3,a0
|
||
jreq #done
|
||
#no_action
|
||
move *a13(PC_PLAYNUM),a0
|
||
calla get_stick_val_down
|
||
jrnz #movit
|
||
calla update_cursor
|
||
dsj a10,#repeat_delay
|
||
move *a13(PC_PLAYNUM),a0
|
||
calla get_stick_val_cur
|
||
calla move_cursor
|
||
calla update_cursor
|
||
movi PSEL_REPEAT_DELAY,a10 ;repeat delay
|
||
jruc #repeat_delay
|
||
#movit
|
||
calla move_cursor
|
||
calla update_cursor
|
||
jruc #loop
|
||
|
||
#done
|
||
move *a13(PC_CURSOBJ),a0,L ;delete cursor
|
||
calla DELOBJ
|
||
|
||
SLEEPK 1
|
||
|
||
move *a13(PC_PLAYNUM),a0
|
||
sll 5,a0 ;x 32 bits
|
||
addi #player_data,a0
|
||
move *a0,a0,L ;start address of player data
|
||
move a0,*a13(PC_DATADDR),L ;start of player data
|
||
calla get_player_record
|
||
|
||
move *a13(PC_DATADDR),a0,L ;start of player data
|
||
move *a0(PR_RANK),a0
|
||
cmpi 10,a0
|
||
jrgt #not_topten
|
||
|
||
move *a13(PC_PLAYNUM),a10
|
||
move a10,a0
|
||
sll 5,a0 ;x 32 bits
|
||
addi topten_imgs,a0
|
||
|
||
move @TWOPLAYERS,a1 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2pxz
|
||
addi 4*32,a0
|
||
#not_2pxz
|
||
|
||
|
||
move *a0,a9,L
|
||
CREATE0 topten_player
|
||
|
||
#not_topten
|
||
|
||
move *a13(PC_DATADDR),a3,L ;start of player data
|
||
move *a13(PC_PLAYNUM),a10
|
||
calla check_initials
|
||
|
||
calla print_player_stats
|
||
|
||
move *a13(PC_DATADDR),a3,L ;start of player data
|
||
move *a3(PR_INIT1),a0
|
||
jrnz #not_AAA_JAN_1
|
||
move *a3(PR_INIT2),a0
|
||
jrnz #not_AAA_JAN_1
|
||
move *a3(PR_INIT3),a0
|
||
jrnz #not_AAA_JAN_1
|
||
move *a3(PR_MONTH),a0
|
||
jrnz #not_AAA_JAN_1
|
||
move *a3(PR_DAY),a0
|
||
jrnz #not_AAA_JAN_1
|
||
|
||
;is AAA JAN 1 ;so erase his ass
|
||
|
||
movi -1,a0
|
||
move a0,*a3(PR_INIT1)
|
||
move a0,*a3(PR_INIT2)
|
||
move a0,*a3(PR_INIT3)
|
||
clr a0
|
||
move a0,*a3(PR_COUNT)
|
||
|
||
#not_AAA_JAN_1
|
||
|
||
movk 30,a10
|
||
#dly1
|
||
SLEEPK 1
|
||
move *a13(PC_PLAYNUM),a1
|
||
move @PSTATUS,a0
|
||
btst a1,a0
|
||
jrz #resart_cursor
|
||
move @force_selection,a0
|
||
jrnz #youre_out
|
||
dsj a10,#dly1
|
||
|
||
|
||
movi 7*60,a10
|
||
#wait SLEEPK 1
|
||
move *a13(PC_PLAYNUM),a1
|
||
move @PSTATUS,a0
|
||
btst a1,a0
|
||
jrz #resart_cursor
|
||
move @force_selection,a0
|
||
jrnz #youre_out
|
||
move *a13(PC_PLAYNUM),a0
|
||
calla get_but_val_cur
|
||
jrnz #exit1
|
||
dec a10
|
||
jrnz #wait
|
||
jruc #ex2
|
||
|
||
bounce_snd .word >fc80,10,>8129,0 ;Ball bounce
|
||
|
||
#exit1
|
||
;Do a snd when whacking through
|
||
SOUND1 bounce_snd
|
||
#ex2
|
||
|
||
move *a13(PC_OBJID),a0 ;OBJ ID's created by this PROC
|
||
calla obj_del1c ;delete all objs with this ID
|
||
|
||
move *a13(PC_DATADDR),a1,L ;start of player data
|
||
|
||
move *a1(PR_NUMDEF),a0 ;number teams defeated
|
||
jrz #no_wins
|
||
cmpi 27,a0
|
||
jreq #defeated_all
|
||
|
||
;;; calla create_heading
|
||
calla print_teams_defeated
|
||
|
||
movk 30,a10
|
||
#dly2
|
||
SLEEPK 1
|
||
move *a13(PC_PLAYNUM),a1
|
||
move @PSTATUS,a0
|
||
btst a1,a0
|
||
jrz #resart_cursor
|
||
move @force_selection,a0
|
||
jrnz #youre_out
|
||
dsj a10,#dly2
|
||
|
||
movi 7*60,a10
|
||
#wait2 SLEEPK 1
|
||
move *a13(PC_PLAYNUM),a1
|
||
move @PSTATUS,a0
|
||
btst a1,a0
|
||
jrz #resart_cursor
|
||
move @force_selection,a0
|
||
jrnz #youre_out
|
||
move *a13(PC_PLAYNUM),a0
|
||
calla get_but_val_cur
|
||
jrnz #exit2a
|
||
dec a10
|
||
jrnz #wait2
|
||
jruc #exit2
|
||
#exit2a
|
||
|
||
SOUND1 bounce_snd
|
||
|
||
#exit2
|
||
move *a13(PC_OBJID),a0 ;OBJ ID's created by this PROC
|
||
calla obj_del1c ;delete all objs with this ID
|
||
|
||
#defeated_all
|
||
#no_wins
|
||
movk 10,a10
|
||
#dly3
|
||
SLEEPK 1
|
||
move *a13(PC_PLAYNUM),a1
|
||
move @PSTATUS,a0
|
||
btst a1,a0
|
||
jrz #resart_cursor
|
||
move @force_selection,a0
|
||
jrnz #youre_out
|
||
dsj a10,#dly3
|
||
#youre_out
|
||
move *a13(PC_OBJID),a0 ;OBJ ID's created by this PROC
|
||
calla obj_del1c ;delete all objs with this ID
|
||
|
||
movk 1,a0
|
||
move *a13(PC_PLAYNUM),a1
|
||
sll a1,a0
|
||
move @exit_status,a1
|
||
andn a0,a1
|
||
move a1,@exit_status ;exit
|
||
|
||
DIE
|
||
|
||
|
||
topten_imgs
|
||
.long TopTenorg
|
||
.long TopTengrn
|
||
.long TopTengld
|
||
.long TopTenred
|
||
|
||
;For kit
|
||
.long TopTengrn
|
||
.long TopTenorg
|
||
.long TopTenred
|
||
.long TopTengld
|
||
|
||
#obj_ids
|
||
.word TYPTEXT|SUBPL1
|
||
.word TYPTEXT|SUBPL2
|
||
.word TYPTEXT|SUBPL3
|
||
.word TYPTEXT|SUBPL4
|
||
|
||
#center_xs
|
||
.word 52,56, 0,0 ;player 1
|
||
.word 149,145,101,0 ;player 2
|
||
.word 246,250,295,0 ;player 3
|
||
.word 343,339,0,0 ;player 4
|
||
|
||
; .word 52,57 ;player 1
|
||
; .word 148,145 ;player 2
|
||
; .word 245,251 ;player 3
|
||
; .word 342,339 ;player 4
|
||
|
||
#player_data
|
||
.long player1_data,player2_data
|
||
.long player3_data,player4_data
|
||
|
||
#player_menus
|
||
.long player1_menus,player2_menus
|
||
.long player3_menus,player4_menus
|
||
|
||
.long player1k_menus,player1k_menus
|
||
.long player2k_menus,player2k_menus
|
||
|
||
|
||
#*****************************************************************************
|
||
joy_moves
|
||
.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
|
||
rets
|
||
defeated
|
||
.long player1_data+PR_TEAMSDEF
|
||
.long player2_data+PR_TEAMSDEF
|
||
.long player3_data+PR_TEAMSDEF
|
||
.long player4_data+PR_TEAMSDEF
|
||
|
||
*******************
|
||
#up ;1
|
||
|
||
move *a13(PC_TABWIDTH),a1 ;table width
|
||
move *a13(PC_CURSPOS),a0
|
||
sub a1,a0
|
||
jrlt #no_up
|
||
move a0,*a13(PC_CURSPOS)
|
||
clr a0
|
||
move a0,*a13(PC_FLASHCOUNT) ;cursor flash count
|
||
|
||
move *a13(PC_PLAYNUM),a0
|
||
sll 5,a0
|
||
addi cursor_sounds,a0
|
||
move *a0,a0,L
|
||
calla snd_play1
|
||
#no_up
|
||
rets
|
||
|
||
*******************
|
||
#down ;2
|
||
|
||
move *a13(PC_TABWIDTH),a1 ;table width
|
||
move *a13(PC_CURSPOS),a10
|
||
add a1,a10
|
||
move *a13(PC_TABSIZE),a1 ;table size
|
||
cmp a10,a1
|
||
jrle #no_down
|
||
|
||
move a10,*a13(PC_CURSPOS)
|
||
calla get_table_address
|
||
move *a1+,a0 ;char under cursor
|
||
cmpi 123,a0
|
||
jrnz #not_blankd
|
||
;
|
||
; jrnn #not_blankd
|
||
|
||
;MJT
|
||
move @team1_control,a0
|
||
move *a13(PC_PLAYNUM),a1
|
||
jrz #lft
|
||
move @team2_control,a0
|
||
#lft
|
||
sll 5,a0
|
||
addi defeated,a0
|
||
move *a0,a0,L
|
||
move *a0,a0,L
|
||
cmpi 07ffffffh,a0
|
||
jrz #not_blankd
|
||
|
||
|
||
move *a13(PC_TABWIDTH),a1 ;table width
|
||
sub a1,a10 ;can't move down
|
||
#not_blankd
|
||
move a10,*a13(PC_CURSPOS)
|
||
clr a0
|
||
move a0,*a13(PC_FLASHCOUNT) ;cursor flash count
|
||
move *a13(PC_PLAYNUM),a0
|
||
sll 5,a0
|
||
addi cursor_sounds,a0
|
||
move *a0,a0,L
|
||
calla snd_play1
|
||
#no_down
|
||
rets
|
||
|
||
*******************
|
||
#left ;4
|
||
|
||
move *a13(PC_CURSPOS),a10
|
||
jrz #no_left
|
||
dec a10
|
||
move a10,*a13(PC_CURSPOS)
|
||
calla get_table_address
|
||
move *a1+,a0 ;char under cursor
|
||
cmpi 123,a0
|
||
jrnz #not_blankl
|
||
|
||
; jrnn #not_blankl
|
||
|
||
;MJT
|
||
move @team1_control,a0
|
||
move *a13(PC_PLAYNUM),a1
|
||
jrz #lft1
|
||
move @team2_control,a0
|
||
#lft1
|
||
sll 5,a0
|
||
addi defeated,a0
|
||
move *a0,a0,L
|
||
move *a0,a0,L
|
||
cmpi 07ffffffh,a0
|
||
jrz #not_blankl
|
||
|
||
|
||
|
||
dec a10 ;skip to left of blank position
|
||
#not_blankl
|
||
move a10,*a13(PC_CURSPOS)
|
||
clr a0
|
||
move a0,*a13(PC_FLASHCOUNT) ;cursor flash count
|
||
|
||
move *a13(PC_PLAYNUM),a0
|
||
sll 5,a0
|
||
addi cursor_sounds,a0
|
||
move *a0,a0,L
|
||
calla snd_play1
|
||
#no_left
|
||
rets
|
||
|
||
*******************
|
||
#up_left ;5
|
||
calla #up
|
||
calla #left
|
||
rets
|
||
|
||
*******************
|
||
#down_left ;6
|
||
calla #down
|
||
calla #left
|
||
rets
|
||
|
||
*******************
|
||
#right ;8
|
||
|
||
move *a13(PC_CURSPOS),a10
|
||
inc a10
|
||
move *a13(PC_TABSIZE),a1 ;table size
|
||
cmp a10,a1
|
||
jrle #no_right
|
||
move a10,*a13(PC_CURSPOS)
|
||
calla get_table_address
|
||
move *a1+,a0 ;char under cursor
|
||
cmpi 123,a0
|
||
jrnz #not_blankr
|
||
|
||
; jrnn #not_blankr
|
||
|
||
|
||
;MJT
|
||
move @team1_control,a0
|
||
move *a13(PC_PLAYNUM),a1
|
||
jrz #lft2
|
||
move @team2_control,a0
|
||
#lft2
|
||
sll 5,a0
|
||
addi defeated,a0
|
||
move *a0,a0,L
|
||
move *a0,a0,L
|
||
cmpi 07ffffffh,a0
|
||
jrz #not_blankr
|
||
|
||
|
||
|
||
inc a10 ;skip to right of blank position
|
||
#not_blankr
|
||
move a10,*a13(PC_CURSPOS)
|
||
clr a0
|
||
move a0,*a13(PC_FLASHCOUNT) ;cursor flash count
|
||
|
||
move *a13(PC_PLAYNUM),a0
|
||
sll 5,a0
|
||
addi cursor_sounds,a0
|
||
move *a0,a0,L
|
||
calla snd_play1
|
||
#no_right
|
||
rets
|
||
|
||
*******************
|
||
#up_right ;9
|
||
calla #up
|
||
calla #right
|
||
rets
|
||
|
||
*******************
|
||
#down_right ;10
|
||
calla #down
|
||
calla #right
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
; a8 = * alpha table
|
||
; a9 = palette number (indexed into #palettes table)
|
||
;a10 = [y,x] start pos
|
||
;a11 = OBJECT ID
|
||
|
||
SUBRP display_alpha_table
|
||
|
||
PUSH a6,a7
|
||
|
||
sll 5,a9 ;x 32 bits
|
||
addi #palettes,a9
|
||
move *a9,a0,L
|
||
calla pal_getf
|
||
move a0,a9
|
||
|
||
#next_alpha
|
||
move *a8+,a0
|
||
jrn #finished
|
||
sll 5,a0 ;x 32 bits
|
||
addi alpha_table,a0
|
||
move *a0,a2,L ;* image
|
||
cmpi C_SAN,a2
|
||
jrnz #no
|
||
LOCKUP
|
||
#no
|
||
move *a8+,a0
|
||
movx a10,a1 ;x start pos
|
||
add a1,a0
|
||
sll 16,a0 ;x val [int,frac]
|
||
move *a8+,a1
|
||
sll 16,a1 ;y val [ing,frac]
|
||
add a10,a1 ;y start pos
|
||
andi [0ffffh,0],a1 ;clear fractional
|
||
movk 8,a3 ;z pos
|
||
movi DMAWNZ,a4 ;DMA flags
|
||
move a11,a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
|
||
PUSH a8,a11
|
||
calla BEGINOBJ2
|
||
move a9,*a8(OPAL),L ;Set palette & constant
|
||
PULL a8,a11
|
||
jruc #next_alpha
|
||
#finished
|
||
PULL a6,a7
|
||
rets
|
||
|
||
#palettes
|
||
; .long ORANGPAL,GREENPAL,GOLD,REDPAL
|
||
.long BLUE,BLUE,REDPAL,REDPAL
|
||
.long 0,0,0,0
|
||
.long SGMD8YEL,SGMD8VIO ;left & right city columns
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBR credits
|
||
|
||
move @gmqrtr,a0
|
||
cmpi 2,a0
|
||
jrz #skp
|
||
clr a0 ;y offset
|
||
calla create_credits
|
||
#skp
|
||
calla create_credit_timers
|
||
|
||
#credit_loop
|
||
calla update_credits
|
||
calla update_credit_timers
|
||
SLEEPK 1
|
||
jruc #credit_loop
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBR credits2
|
||
|
||
movi [7,0],a0 ;y offset
|
||
calla create_credits
|
||
|
||
#credit_loop
|
||
calla update_credits
|
||
SLEEPK 1
|
||
jruc #credit_loop
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBR credits3
|
||
|
||
clr a0 ;y offset
|
||
calla create_credits
|
||
|
||
#credit_loop
|
||
calla update_credits
|
||
SLEEPK 1
|
||
jruc #credit_loop
|
||
|
||
#*****************************************************************************
|
||
|
||
.asg 240<<16,CREDIT_Y
|
||
.asg 209<<16,CREDIT_X
|
||
|
||
SUBR create_credits
|
||
|
||
PUSH a0
|
||
movi CREDIT_Y-1,a1 ;y val
|
||
add a0,a1
|
||
movi CREDIT_X,a0 ;x val
|
||
movi font60,a2 ;* image
|
||
movi 20000-1,a3 ;z pos
|
||
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
move a8,@credit1_obj,L
|
||
|
||
PULL a0
|
||
PUSH a0
|
||
movi CREDIT_Y-1,a1 ;y val
|
||
add a0,a1
|
||
movi CREDIT_X+(6<<16),a0 ;x val
|
||
movi font60,a2 ;* image
|
||
movi 20000-1,a3 ;z pos
|
||
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
move a8,@credit2_obj,L
|
||
|
||
|
||
movi credit,a2 ;* image
|
||
movk ADJFREPL,a0
|
||
calla GET_ADJ
|
||
jrz #not_free
|
||
|
||
move @credit1_obj,a8,L
|
||
calla obj_off
|
||
move @credit2_obj,a8,L
|
||
calla obj_off
|
||
|
||
movi freeply,a2 ;* image
|
||
|
||
#not_free
|
||
PULL a0
|
||
movi CREDIT_Y-1,a1 ;y val
|
||
add a0,a1
|
||
movi CREDIT_X-(31<<16),a0 ;x val
|
||
movi 20000-1,a3 ;z pos
|
||
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
move a8,@credit3_obj,L
|
||
|
||
rets
|
||
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBRP update_credits
|
||
|
||
movk ADJFREPL,a0
|
||
calla GET_ADJ
|
||
jrz #not_free
|
||
|
||
;in free play
|
||
move @credit1_obj,a8,L
|
||
calla obj_off
|
||
move @credit2_obj,a8,L
|
||
calla obj_off
|
||
|
||
move @credit3_obj,a8,L
|
||
movi freeply,a0 ;* image
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
rets
|
||
|
||
#not_free
|
||
move @credit3_obj,a8,L
|
||
movi credit,a0 ;* image
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
|
||
calla CRED_P ;# credits returned in A0
|
||
calla BINBCD
|
||
PUSH a0
|
||
andi 0f0h,a0
|
||
jrnz #ok
|
||
move @credit1_obj,a8,L
|
||
calla obj_off
|
||
jruc #cont
|
||
#ok
|
||
;;; srl 4,a0 ;/16
|
||
;;; sll 5,a0 ;*32 bits
|
||
sll 1,a0 ;*32/16 = *2
|
||
addi #numbers,a0
|
||
move *a0,a1,L ;* image
|
||
move @credit1_obj,a8,L
|
||
calla obj_on
|
||
move a1,a0
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
#cont
|
||
|
||
PULL a0
|
||
andi 0fh,a0
|
||
sll 5,a0 ;*32 bits
|
||
addi #numbers,a0
|
||
move *a0,a1,L ;* image
|
||
move @credit2_obj,a8,L
|
||
calla obj_on
|
||
move a1,a0
|
||
move *a8(OCTRL),a1 ;DMA flags
|
||
calla obj_aniq ;change object image
|
||
|
||
rets
|
||
|
||
#numbers
|
||
.long font60,font61,font62,font63,font64
|
||
.long font65,font66,font67,font68,font69
|
||
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* create the 4 credits timers displayed in the player stats box
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBRP create_credit_timers
|
||
|
||
movk 1,a5 ;player number 2
|
||
calla create_cr_timer
|
||
movi credtime2_obj,a0 ;* obj
|
||
move a8,*a0,L
|
||
|
||
movk 2,a5 ;player number 3
|
||
calla create_cr_timer
|
||
movi credtime3_obj,a0 ;* obj
|
||
move a8,*a0,L
|
||
|
||
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrnz #2_plyrs
|
||
|
||
clr a5 ;player number 1
|
||
calla create_cr_timer
|
||
movi credtime1_obj,a0 ;* obj
|
||
move a8,*a0,L
|
||
|
||
movk 3,a5 ;player number 4
|
||
calla create_cr_timer
|
||
movi credtime4_obj,a0 ;* obj
|
||
move a8,*a0,L
|
||
|
||
#2_plyrs
|
||
|
||
.ref join_cyc
|
||
calla join_cyc
|
||
rets
|
||
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* INPUT: a5 = player number (0-3)
|
||
*-----------------------------------------------------------------------------
|
||
|
||
.asg 235<<16,CREDIT_Y
|
||
|
||
create_cr_timer
|
||
|
||
sll 5,a5 ;x 32 bits
|
||
movi #credit_balls,a2
|
||
movi #credit_positions,a0
|
||
move @TWOPLAYERS,a1 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2p
|
||
movi #credit_positions2,a0
|
||
#not_2p
|
||
add a5,a2
|
||
move *a2,a2,L
|
||
add a0,a5
|
||
move *a5,a5,L ;get start x pos
|
||
|
||
move a5,a0 ;x val
|
||
movi CREDIT_Y,a1 ;y val
|
||
; move @gmqrtr,a3
|
||
; cmpi 2,a3
|
||
; jrnz #skp
|
||
; movi CREDIT_Y+256*2,a1 ;y val
|
||
;#skp
|
||
movi 127,a3 ;z pos
|
||
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
|
||
rets
|
||
|
||
#credit_balls
|
||
.long t0000 ;player 1
|
||
.long t0000 ;player 2
|
||
.long tx000 ;player 3
|
||
.long tx000 ;player 4
|
||
|
||
#credit_positions
|
||
.long 56<<16 ;player 1
|
||
.long 145<<16 ;player 2
|
||
.long 251<<16 ;player 3
|
||
.long 339<<16 ;player 4
|
||
|
||
#credit_positions2
|
||
.long 0 ;player 1
|
||
.long 101<<16 ;player 2
|
||
.long 296<<16 ;player 3
|
||
.long 0 ;player 4
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* update the 4 credits timers displayed in the player stats box
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBRP update_credit_timers
|
||
|
||
movk 1,a10 ;player 2
|
||
movi credtime2_obj,a6 ;* start of obj vars
|
||
move @qtr_purchased+10h,a7
|
||
calla update_cr_timer
|
||
|
||
movk 2,a10 ;player 3
|
||
movi credtime3_obj,a6 ;* start of obj vars
|
||
move @qtr_purchased+20h,a7
|
||
calla update_cr_timer
|
||
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrnz #2_plyrs
|
||
|
||
clr a10 ;player 1
|
||
movi credtime1_obj,a6 ;* start of obj vars
|
||
move @qtr_purchased,a7
|
||
calla update_cr_timer
|
||
|
||
movk 3,a10 ;player 4
|
||
movi credtime4_obj,a6 ;* start of obj vars
|
||
move @qtr_purchased+30h,a7
|
||
calla update_cr_timer
|
||
|
||
#2_plyrs
|
||
rets
|
||
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* INPUT: a10 = player number (0-3)
|
||
* a6 = * start of obj vars
|
||
* a7 = # quarters credit
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBRP update_cr_timer
|
||
|
||
move a7,a7
|
||
jrnz #not_zip
|
||
|
||
movi txxxx,a0
|
||
jruc #setit
|
||
|
||
#not_zip
|
||
move @gmqrtr,a1
|
||
cmpi 4,a1
|
||
jrlt #ok
|
||
movi txxx1,a0
|
||
jruc #setit
|
||
|
||
#ok
|
||
sll 2,a1 ;x 4
|
||
add a7,a1
|
||
andi 15,a1
|
||
sll 5,a1 ;x 32 bits
|
||
addi tballs,a1
|
||
move *a1,a0,L ;* image
|
||
#setit
|
||
move *a6,a8,L ;image *
|
||
move *a8(OCTRL),a1
|
||
calla obj_aniq
|
||
rets
|
||
|
||
tballs
|
||
.long 0
|
||
.long t1000,t1100,t1110,t1111
|
||
.long tx100,tx110,tx111,txxxx
|
||
.long txx10,txx11,txxxx,txxxx
|
||
.long txxx1,txxxx,txxxx,txxxx
|
||
|
||
.long tx000,txx00,txxx0
|
||
.long tx100,tx110,tx111
|
||
.long txx10,txx11,txxx1
|
||
.long t0000
|
||
|
||
|
||
leds .long S_LED_0,S_LED_1,S_LED_2,S_LED_3,S_LED_4
|
||
.long S_LED_5,S_LED_6,S_LED_7,S_LED_8,S_LED_9
|
||
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* INPUT: a8 = * object
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBR obj_on
|
||
move *a8(OYPOS),a0
|
||
andni 400h,a0
|
||
move a0,*a8(OYPOS)
|
||
rets
|
||
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* INPUT: a8 = * object
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBR obj_off
|
||
move *a8(OYPOS),a0
|
||
ori 400h,a0
|
||
move a0,*a8(OYPOS)
|
||
rets
|
||
|
||
|
||
******************************************************************************
|
||
*
|
||
* INPUT: a10 = scroll increment << 16
|
||
*-----------------------------------------------------------------------------
|
||
*
|
||
* scrolls screen up or down 1 page (256 pixels)
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBR scroll_page
|
||
|
||
; clr a0
|
||
; clr a1
|
||
; movi 200,a2
|
||
; calla KOP_ALL
|
||
|
||
calla pal_clean
|
||
|
||
movk 1,a0
|
||
move a0,@page_scrolling ;scrolling
|
||
|
||
movi scroll_snd,a0
|
||
calla snd_play1
|
||
|
||
movi 256/SCROLL_SPEED,a9
|
||
|
||
#scroll_loop
|
||
SLEEPK 1
|
||
|
||
move @WORLDTLY,a0,L
|
||
add a10,a0 ;+/- SCROLL_SPEED
|
||
move a0,@WORLDTLY,L
|
||
|
||
calla BGND_UD1
|
||
|
||
dsj a9,#scroll_loop
|
||
|
||
SLEEPK 2
|
||
clr a0
|
||
move a0,@page_scrolling ;not scrolling
|
||
RETP
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* deletes background objects off bottom of screen
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBRP del_offscreen_bobjs
|
||
|
||
move @WORLDTLY,a8,L ;TOP LEFT Y SCREEN COORD (WORLD)
|
||
srl 16,a8
|
||
; addi 100,a8 ;254,a8
|
||
addi 254,a8
|
||
|
||
movi BAKLST,a10
|
||
jruc #start
|
||
#next_bobj
|
||
move *a10(OYPOS),a0
|
||
cmp a8,a0 ;a0-a8
|
||
jrlt #not_off
|
||
move a10,a0
|
||
calla DELBOBJ
|
||
move a9,a10 ;back to prev obj
|
||
#not_off
|
||
#start
|
||
move a10,a9 ;prev obj
|
||
move *a10,a10,L
|
||
jrnz #next_bobj
|
||
rets
|
||
|
||
|
||
#*****************************************************************************
|
||
|
||
|
||
SUBR monitor_fullgame
|
||
|
||
clr a0
|
||
move a0,@game_purchased ;
|
||
|
||
#loopit
|
||
clr a4
|
||
#next
|
||
move @PSTATUS,a0
|
||
btst a4,a0
|
||
jrz #no_player
|
||
|
||
move @game_purchased,a0
|
||
btst a4,a0
|
||
jrnz #purchased
|
||
|
||
|
||
|
||
;2/10/93
|
||
move a4,a1 ;plyr number
|
||
sll 4,a1 ;x 16 bits
|
||
addi qtr_purchased,a1
|
||
move *a1,a0
|
||
cmpi 4,a0
|
||
jrz #fullgm
|
||
|
||
|
||
|
||
|
||
|
||
movi ADJFULLG,a0
|
||
calla GET_ADJ
|
||
move a0,a1
|
||
|
||
|
||
move a4,a0
|
||
sll 5,a0 ;x 32 bits
|
||
addi #times,a0
|
||
move *a0,a0,L ;* player timer
|
||
move *a0,a0 ;player credits purchased
|
||
cmp a1,a0
|
||
jrlt #no_purchase
|
||
|
||
#fullgm
|
||
move a4,a0
|
||
movk 1,a1
|
||
sll a0,a1
|
||
move @game_purchased,a0 ;set purchased bit
|
||
or a1,a0 ;for player
|
||
move a0,@game_purchased
|
||
|
||
move a4,a1 ;plyr number
|
||
sll 4,a1 ;x 16 bits
|
||
addi qtr_purchased,a1
|
||
movk 4,a0
|
||
move a0,*a1 ;4 quarters purchased
|
||
|
||
move a4,a0
|
||
sll 5,a0
|
||
addi #pdta_t,a0
|
||
move *a0,a0,L
|
||
movi 3500,a1
|
||
move a1,*a0 ;Stuff 2500 into plyrs ply_time
|
||
|
||
|
||
move a4,a0
|
||
sll 5,a0 ;x 32 bits
|
||
addi #images,a0
|
||
|
||
|
||
|
||
move @TWOPLAYERS,a14 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2p1
|
||
addi 4*32,a0
|
||
#not_2p1
|
||
|
||
|
||
move *a0,a9,L ;* image
|
||
PUSH a4
|
||
sll 4,a4 ;x 16 bits
|
||
addi #plaque_xs,a4
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2p
|
||
addi 4*16,a4
|
||
#not_2p
|
||
move *a4,a10
|
||
sll 16,a10 ;x pos
|
||
CREATE0 fullgame_purchased
|
||
|
||
movi AUD_PURCHASED,a0 ;inc full games
|
||
calla AUD1 ;purchased audit
|
||
|
||
PULL a4
|
||
#no_player
|
||
#purchased
|
||
#no_purchase
|
||
inc a4
|
||
cmpi 4,a4
|
||
jrlt #next
|
||
|
||
SLEEPK 2
|
||
jruc #loopit
|
||
|
||
#images
|
||
.long FulGameorg,FulGamegrn
|
||
.long FulGamegld,FulGamered
|
||
|
||
.long FulGameorg,FulGameorg
|
||
.long FulGamered,FulGamered
|
||
|
||
#plaque_xs
|
||
.word 15,104,209,298
|
||
.word 0,101-42,296-42,0
|
||
|
||
#times
|
||
.long P1DATA+crds_paid
|
||
.long P2DATA+crds_paid
|
||
.long P3DATA+crds_paid
|
||
.long P4DATA+crds_paid
|
||
#pdta_t
|
||
.long P1DATA+ply_time
|
||
.long P2DATA+ply_time
|
||
.long P3DATA+ply_time
|
||
.long P4DATA+ply_time
|
||
|
||
#*****************************************************************************
|
||
.asg 212-14+1,FULLGAME_Y
|
||
SUBRP fullgame_purchased
|
||
SLEEPK 1
|
||
move @HALT,a0
|
||
jrnz fullgame_purchased
|
||
|
||
move a10,a0 ;x val
|
||
movi [FULLGAME_Y-(16*16),0],a1 ;y val
|
||
move a9,a2 ;* image
|
||
movi 30000,a3 ;z pos
|
||
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
movi [16,0],a7 ;y vel
|
||
calla BEGINOBJ2
|
||
|
||
movi 0808h,a0
|
||
move a0,*a8(OCONST)
|
||
|
||
#waitf
|
||
SLEEP 1
|
||
move *a8(OYPOS),a0
|
||
cmpi FULLGAME_Y,a0
|
||
jrlt #waitf
|
||
|
||
movi FULLGAME_Y,a0
|
||
move a0,*a8(OYPOS)
|
||
|
||
clr a0
|
||
move a0,*a8(OYVEL),L
|
||
|
||
SOUND1 fullgame_snd1
|
||
movk 3,a10
|
||
#again
|
||
calla const_on
|
||
SLEEPK 3
|
||
calla const_off
|
||
SLEEPK 3
|
||
dsj a10,#again
|
||
|
||
SLEEP 2*60
|
||
|
||
SOUND1 select_snd1
|
||
movk 3,a10
|
||
#again2
|
||
calla const_on
|
||
SLEEPK 3
|
||
calla const_off
|
||
SLEEPK 3
|
||
dsj a10,#again2
|
||
|
||
calla DELOBJA8
|
||
|
||
DIE
|
||
|
||
|
||
const_on
|
||
move *a8(OCTRL),a0
|
||
andni 01111b,a0
|
||
ori M_CONST,a0 ;Replace all with constant
|
||
move a0,*a8(OCTRL)
|
||
rets
|
||
|
||
const_off
|
||
move *a8(OCTRL),a0
|
||
andni 01111b,a0
|
||
ori M_WRNONZ,a0
|
||
move a0,*a8(OCTRL)
|
||
rets
|
||
|
||
#*****************************************************************************
|
||
;a9 = * image
|
||
;a10 = player number (0-3)
|
||
|
||
.asg 212-14+1,TOPTEN_Y
|
||
|
||
SUBRP topten_player
|
||
|
||
SLEEPK 1
|
||
move @HALT,a0
|
||
; jrnz fullgame_purchased
|
||
jrnz topten_player
|
||
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrz #not_2p
|
||
addk 4,a10
|
||
#not_2p
|
||
sll 4,a10 ;x 16
|
||
addi #topten_xs,a10
|
||
move *a10,a0 ;x val
|
||
sll 16,a0
|
||
movi [TOPTEN_Y,0],a1 ;y val
|
||
move a9,a2 ;* image
|
||
movi 30000-1,a3 ;z pos
|
||
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
calla BEGINOBJ2
|
||
|
||
movi 0808h,a0
|
||
move a0,*a8(OCONST)
|
||
|
||
SLEEPK 1
|
||
|
||
SOUND1 select_snd1
|
||
movk 3,a10
|
||
#again
|
||
calla const_on
|
||
SLEEPK 3
|
||
calla const_off
|
||
SLEEPK 3
|
||
dsj a10,#again
|
||
|
||
SLEEP 1*60
|
||
|
||
SOUND1 select_snd1
|
||
movk 3,a10
|
||
#again2
|
||
calla const_on
|
||
SLEEPK 3
|
||
calla const_off
|
||
SLEEPK 3
|
||
dsj a10,#again2
|
||
|
||
calla DELOBJA8
|
||
|
||
DIE
|
||
|
||
#topten_xs
|
||
.word 15,104,209,298
|
||
.word 0,101-42,296-42,0
|
||
|
||
|
||
#*****************************************************************************
|
||
|
||
SUBR monitor_buyins
|
||
|
||
move @PSTATUS,a10
|
||
#again
|
||
SLEEPK 1
|
||
move a10,a1
|
||
move @PSTATUS,a10
|
||
move a10,a0
|
||
xor a0,a1 ;bits changed
|
||
and a0,a1 ;down transitions only
|
||
jrz #again
|
||
jruc #again
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* sets which player is controlling each team
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
|
||
SUBR team_control
|
||
|
||
#again
|
||
move @team1_control,a0
|
||
jrn #no_control1
|
||
move @PSTATUS,a1
|
||
btst a0,a1
|
||
jrnz #team1_ok
|
||
#no_control1
|
||
move @PSTATUS,a0
|
||
btst 0,a0
|
||
jrz #no_player1
|
||
clr a0
|
||
move a0,@team1_control
|
||
jruc #team1_ok
|
||
#no_player1
|
||
move @PSTATUS,a0
|
||
btst 1,a0
|
||
jrz #no_player2
|
||
movk 1,a0
|
||
move a0,@team1_control
|
||
jruc #team1_ok
|
||
#no_player2
|
||
movi -1,a0
|
||
move a0,@team1_control
|
||
move a0,@team1
|
||
#team1_ok
|
||
|
||
|
||
move @team2_control,a0
|
||
jrn #no_control2
|
||
move @PSTATUS,a1
|
||
btst a0,a1
|
||
jrnz #team2_ok
|
||
#no_control2
|
||
move @PSTATUS,a0
|
||
btst 2,a0
|
||
jrz #no_player3
|
||
movk 2,a0
|
||
move a0,@team2_control
|
||
jruc #team2_ok
|
||
#no_player3
|
||
move @PSTATUS,a0
|
||
btst 3,a0
|
||
jrz #no_player4
|
||
movk 3,a0
|
||
move a0,@team2_control
|
||
jruc #team2_ok
|
||
#no_player4
|
||
movi -1,a0
|
||
move a0,@team2_control
|
||
move a0,@team2
|
||
#team2_ok
|
||
SLEEP 1
|
||
jruc #again
|
||
|
||
|
||
#*****************************************************************************
|
||
*
|
||
* find plate objects on team select screen for flashing
|
||
*
|
||
*-----------------------------------------------------------------------------
|
||
|
||
.asg 67,PLATE1Z
|
||
.asg 68,PLATE2Z
|
||
|
||
SUBRP find_plates
|
||
|
||
movi plate1_objs,a4 ;plate behind heads & logo
|
||
movi plate2_objs,a5 ;
|
||
|
||
movi BAKLST,a10
|
||
jruc #start
|
||
#next_bobj
|
||
move *a10(OZPOS),a0
|
||
cmpi PLATE1Z,a0
|
||
jreq #is_plate1
|
||
cmpi PLATE2Z,a0
|
||
jreq #is_plate2
|
||
#start
|
||
move *a10,a10,L
|
||
jrnz #next_bobj
|
||
|
||
rets
|
||
|
||
#is_plate1
|
||
move a10,*a4+,L
|
||
jruc #start
|
||
|
||
#is_plate2
|
||
move a10,*a5+,L
|
||
jruc #start
|
||
|
||
|
||
|
||
|
||
******************************************************************************
|
||
.asg 000,O1
|
||
.asg 084,O2
|
||
.asg 162,O3
|
||
.asg 233,O4
|
||
.asg 12,Y
|
||
.asg 96,C
|
||
.asg 151,C2
|
||
city_table_left
|
||
.word 2,2 ;width, size
|
||
;img, xoff, yoff
|
||
.word C2+0,O1,Y*0,C2+1,O2,Y*0 ;0-3
|
||
.word -1
|
||
|
||
; .word 2,2*7 ;width, size
|
||
; ;img, xoff, yoff
|
||
; .word C+14,O1,Y*0,C+21,O2,Y*0
|
||
; .word C+15,O1,Y*1,C+22,O2,Y*1
|
||
; .word C+16,O1,Y*2,C+23,O2,Y*2
|
||
; .word C+17,O1,Y*3,C+24,O2,Y*3
|
||
; .word C+18,O1,Y*4,C+25,O2,Y*4
|
||
; .word C+19,O1,Y*5,C+26,O2,Y*5
|
||
; .word C+20,O1,Y*6,-1,0,0
|
||
; .word -1
|
||
city_table_right
|
||
.word 2,2 ;width, size
|
||
; ;img, xoff, yoff
|
||
.word C2+2,O3,000,C2+03,O4,000
|
||
.word -1
|
||
|
||
; .word 2,2*7 ;width, size
|
||
; ;img, xoff, yoff
|
||
; .word C+0,O3,000,C+07,O4,000
|
||
; .word C+1,O3,Y*1,C+08,O4,Y*1
|
||
; .word C+2,O3,Y*2,C+09,O4,Y*2
|
||
; .word C+3,O3,Y*3,C+10,O4,Y*3
|
||
; .word C+4,O3,Y*4,C+11,O4,Y*4
|
||
; .word C+5,O3,Y*5,C+12,O4,Y*5
|
||
; .word C+6,O3,Y*6,C+13,O4,Y*6
|
||
; .word -1
|
||
city_table
|
||
.word 4,4*7 ;width, size
|
||
.word C+14,O1,Y*0,C+21,O2,Y*0,C+0,O3,000,C+07,O4,000 ;0-3
|
||
.word C+15,O1,Y*1,C+22,O2,Y*1,C+1,O3,Y*1,C+08,O4,Y*1 ;4-7
|
||
.word C+16,O1,Y*2,C+23,O2,Y*2,C+2,O3,Y*2,C+09,O4,Y*2 ;8-11
|
||
.word C+17,O1,Y*3,C+24,O2,Y*3,C+3,O3,Y*3,C+10,O4,Y*3 ;12-15
|
||
.word C+18,O1,Y*4,C+25,O2,Y*4,C+4,O3,Y*4,C+11,O4,Y*4 ;16-19
|
||
.word C+19,O1,Y*5,C+26,O2,Y*5,C+5,O3,Y*5,C+12,O4,Y*5 ;20-23
|
||
.word C+20,O1,Y*6,C+27,O2,Y*6,C+6,O3,Y*6,C+13,O4,Y*6 ;24-26
|
||
|
||
; .word C+20,O1,Y*6,-1,0,0, C+6,O3,Y*6,C+13,O4,Y*6 ;24-26
|
||
|
||
.word -1
|
||
|
||
|
||
******************************************************************************
|
||
.asg 21,X
|
||
.asg 23,Y ;22
|
||
name_table
|
||
.word 4,4*7 ;width, size
|
||
;img, xoff, yoff
|
||
.word 00,0,000, 01,X*1,000, 02,X*2,000, 03,X*3,000 ;abcd
|
||
.word 04,0,Y*1, 05,X*1,Y*1, 06,X*2,Y*1, 07,X*3,Y*1 ;efgh
|
||
.word 08,0+3,Y*2, 09,X*1,Y*2, 10,X*2,Y*2, 11,X*3,Y*2 ;ijkl
|
||
.word 12,0-2,Y*3, 13,X*1,Y*3, 14,X*2,Y*3, 15,X*3,Y*3 ;mnop
|
||
.word 16,0,Y*4, 17,X*1,Y*4, 18,X*2,Y*4, 19,X*3,Y*4 ;qrst
|
||
.word 20,0,Y*5, 21,X*1,Y*5, 22,X*2-3,Y*5, 23,X*3,Y*5 ;uvwx
|
||
.word 24,0,Y*6, 25,X*1,Y*6, 28,X*2-2,Y*6, 27,X*3,Y*6 ;yz <
|
||
.word -1
|
||
|
||
******************************************************************************
|
||
.asg 30,X
|
||
.asg 23,Y ;22
|
||
name_table2
|
||
.word 4,4*7 ;width, size
|
||
;img, xoff, yoff
|
||
.word 00,0,000, 01,X*1,000, 02,X*2,000, 03,X*3,000 ;abcd
|
||
.word 04,0,Y*1, 05,X*1,Y*1, 06,X*2,Y*1, 07,X*3,Y*1 ;efgh
|
||
.word 08,0+3,Y*2, 09,X*1,Y*2, 10,X*2,Y*2, 11,X*3,Y*2 ;ijkl
|
||
.word 12,0-2,Y*3, 13,X*1,Y*3, 14,X*2,Y*3, 15,X*3,Y*3 ;mnop
|
||
.word 16,0,Y*4, 17,X*1,Y*4, 18,X*2,Y*4, 19,X*3,Y*4 ;qrst
|
||
.word 20,0,Y*5, 21,X*1,Y*5, 22,X*2-3,Y*5, 23,X*3,Y*5 ;uvwx
|
||
.word 24,0,Y*6, 25,X*1,Y*6, 28,X*2-2,Y*6, 27,X*3,Y*6 ;yz <
|
||
.word -1
|
||
|
||
*****************************
|
||
.asg 49,X
|
||
.asg 27,Y ;23,Y
|
||
month_table
|
||
.word 2,2*6 ;width, size
|
||
;img, xoff, yoff
|
||
.word 48,0+4,0*Y, 49,X+2,0*Y ;jan,feb
|
||
.word 50,0,1*Y, 51,X,1*Y ;mar,apr
|
||
.word 52,0,2*Y, 53,X+2,2*Y ;may,jun
|
||
.word 54,0+6,3*Y, 55,X,3*Y ;jul,aug
|
||
.word 56,0+5,4*Y, 57,X+1,4*Y ;sep,oct
|
||
.word 58,0+3,5*Y, 59,X+1,5*Y ;nov,dec
|
||
.word -1
|
||
|
||
*****************************
|
||
; .asg 49+24,X
|
||
.asg 73,X
|
||
.asg 27,Y ;23,Y
|
||
month_table2
|
||
.word 2,2*6 ;width, size
|
||
;img, xoff, yoff
|
||
.word 48,0+4,0*Y, 49,X+2,0*Y ;jan,feb
|
||
.word 50,0,1*Y, 51,X,1*Y ;mar,apr
|
||
.word 52,0,2*Y, 53,X+2,2*Y ;may,jun
|
||
.word 54,0+6,3*Y, 55,X,3*Y ;jul,aug
|
||
.word 56,0+5,4*Y, 57,X+1,4*Y ;sep,oct
|
||
.word 58,0+3,5*Y, 59,X+1,5*Y ;nov,dec
|
||
.word -1
|
||
|
||
*****************************
|
||
.asg 22,X
|
||
.asg 22,Y
|
||
day_table
|
||
.word 4,4*7+3 ;width, size
|
||
;img, xoff, yoff
|
||
.word 64,0*X+4,0*Y, 65,1*X+3,0*Y, 66,2*X+3,0*Y, 67,3*X+2,0*Y ;1,2,3,4
|
||
.word 68,0*X+3,1*Y, 69,1*X+3,1*Y, 70,2*X+3,1*Y, 71,3*X+3,1*Y ;5,6,7,8
|
||
.word 72,0*X+3,2*Y, 73,1*X,2*Y, 74,2*X,2*Y, 75,3*X,2*Y ;9,10,11,12
|
||
.word 76,0*X,3*Y, 77,1*X,3*Y, 78,2*X,3*Y, 79,3*X,3*Y ;13,14,15,16
|
||
.word 80,0*X,4*Y, 81,1*X,4*Y, 82,2*X,4*Y, 83,3*X,4*Y ;17,18,19,20
|
||
.word 84,0*X,5*Y, 85,1*X,5*Y, 86,2*X,5*Y, 87,3*X,5*Y ;21,22,23,24
|
||
.word 88,0*X,6*Y, 89,1*X,6*Y, 90,2*X,6*Y, 91,3*X,6*Y ;25,26,27,28
|
||
.word 92,0*X,7*Y, 93,1*X,7*Y, 94,2*X,7*Y ;29,30,31
|
||
.word -1
|
||
|
||
*****************************
|
||
.asg 30,X
|
||
.asg 22,Y
|
||
day_table2
|
||
.word 4,4*7+3 ;width, size
|
||
;img, xoff, yoff
|
||
.word 64,0*X+4,0*Y, 65,1*X+3,0*Y, 66,2*X+3,0*Y, 67,3*X+2,0*Y ;1,2,3,4
|
||
.word 68,0*X+3,1*Y, 69,1*X+3,1*Y, 70,2*X+3,1*Y, 71,3*X+3,1*Y ;5,6,7,8
|
||
.word 72,0*X+3,2*Y, 73,1*X,2*Y, 74,2*X,2*Y, 75,3*X,2*Y ;9,10,11,12
|
||
.word 76,0*X,3*Y, 77,1*X,3*Y, 78,2*X,3*Y, 79,3*X,3*Y ;13,14,15,16
|
||
.word 80,0*X,4*Y, 81,1*X,4*Y, 82,2*X,4*Y, 83,3*X,4*Y ;17,18,19,20
|
||
.word 84,0*X,5*Y, 85,1*X,5*Y, 86,2*X,5*Y, 87,3*X,5*Y ;21,22,23,24
|
||
.word 88,0*X,6*Y, 89,1*X,6*Y, 90,2*X,6*Y, 91,3*X,6*Y ;25,26,27,28
|
||
.word 92,0*X,7*Y, 93,1*X,7*Y, 94,2*X,7*Y ;29,30,31
|
||
.word -1
|
||
|
||
*****************************
|
||
alpha_table
|
||
.long OSGEMD_A,OSGEMD_B,OSGEMD_C,OSGEMD_D,OSGEMD_E,OSGEMD_F,OSGEMD_G,OSGEMD_H ;0-7
|
||
.long OSGEMD_I,OSGEMD_J,OSGEMD_K,OSGEMD_L,OSGEMD_M,OSGEMD_N,OSGEMD_O,OSGEMD_P ;8-15
|
||
.long OSGEMD_Q,OSGEMD_R,OSGEMD_S,OSGEMD_T,OSGEMD_U,OSGEMD_V,OSGEMD_W,OSGEMD_X ;16-23
|
||
.long OSGEMD_Y,OSGEMD_Z,OSGEMD_EXP,OSGEMD_BAK,OSGEMD_SPC,OSGEMD_DEL,0,0 ;24-31
|
||
.long OSGEMD_END,OSGEMD_0,OSGEMD_1,OSGEMD_2,OSGEMD_3,OSGEMD_4,OSGEMD_5,OSGEMD_6 ;32-39
|
||
.long OSGEMD_7,OSGEMD_8,OSGEMD_9,0,0,0,0,0 ;40-47
|
||
.long MD_JAN,MD_FEB,MD_MAR,MD_APR,MD_MAY,MD_JUN,MD_JUL,MD_AUG ;48-55
|
||
.long MD_SEP,MD_OCT,MD_NOV,MD_DEC,0,0,0,0 ;56-63
|
||
|
||
.long OSGENM_1,OSGENM_2,OSGENM_3,OSGENM_4,OSGENM_5,OSGENM_6,OSGENM_7,OSGENM_8 ;64,71
|
||
.long OSGENM_9,OSGENM_10,OSGENM_11,OSGENM_12,OSGENM_13,OSGENM_14,OSGENM_15,OSGENM_16 ;72,79
|
||
.long OSGENM_17,OSGENM_18,OSGENM_19,OSGENM_20,OSGENM_21,OSGENM_22,OSGENM_23,OSGENM_24 ;80,87
|
||
.long OSGENM_25,OSGENM_26,OSGENM_27,OSGENM_28,OSGENM_29,OSGENM_30,OSGENM_31,0 ;88,95
|
||
|
||
.long C_ATL ;ATLANTA (96)
|
||
.long C_CHAR ;CHARLOTTE
|
||
.long C_CHIC ;CHICAGO
|
||
.long C_CLEV ;CLEVELAND
|
||
.long C_DET ;DETROIT
|
||
.long C_IND ;INDIANA
|
||
.long C_MILW ;MILWAUKEE
|
||
|
||
.long C_BOST ;BOSTON (103)
|
||
.long C_MIAMI ;MIAMI
|
||
.long C_NJ ;NEW JERSEY
|
||
.long C_NY ;NEW YORK
|
||
.long C_ORL ;ORLANDO
|
||
.long C_PHIL ;PHILADELPHIA
|
||
.long C_WASH ;WASHINGTON
|
||
|
||
.long C_GOLD ;GOLDEN STATE (110)
|
||
.long C_LAClips ;LOS ANGELES (CLIPPERS)
|
||
.long C_LALaks ;LOS ANGELES (LAKERS)
|
||
.long C_PHX ;PHOENIX
|
||
.long C_PORT ;PORTLAND
|
||
.long C_SEA ;SEATTLE
|
||
.long C_SAC ;SACRAMENTO
|
||
|
||
.long C_DAL ;DALLAS (117)
|
||
.long C_DEN ;DENVER
|
||
.long C_HOU ;HOUSTON
|
||
.long C_MINN ;MINNESOTA
|
||
.long C_SAN ;SAN ANTONIO
|
||
.long C_UTAH ;UTAH (122)
|
||
;Use MINN for size?
|
||
.long C_MINN ;MINNESOTA
|
||
; .long 0 ;123
|
||
|
||
|
||
;logos
|
||
.long T_HAWKS ; 0 ATLANTA (124)
|
||
.long T_CELTS ; 1 BOSTON
|
||
.long T_HORS ; 2 CHARLOTTE
|
||
.long T_BULLS ; 3 CHICAGO
|
||
.long T_CAVS ; 4 CLEVELAND
|
||
.long T_MAVS ; 5 DALLAS
|
||
.long T_NUGS ; 6 DENVER
|
||
.long T_PISS ; 7 DETROIT
|
||
.long T_WARS ; 8 GOLDEN STATE
|
||
.long T_ROCKS ; 9 HOUSTON
|
||
.long T_PACER ;10 INDIANA
|
||
.long T_CLIPS ;11 LOS ANGELES (CLIPPERS)
|
||
.long T_LAKS ;12 LOS ANGELES (LAKERS)
|
||
.long T_HEAT ;13 MIAMI
|
||
.long T_BUCKS ;14 MILWAUKEE
|
||
.long T_TWOLV ;15 MINNESOTA
|
||
.long T_NETS ;16 NEW JERSEY
|
||
.long T_KNIKS ;17 NEW YORK
|
||
.long T_MAGIC ;18 ORLANDO
|
||
.long T_76RS ;19 PHILADELPHIA
|
||
.long T_SUNS ;20 PHOENIX
|
||
.long T_BLAZ ;21 PORTLAND
|
||
.long T_KINGS ;22 SACRAMENTO
|
||
.long T_SPURS ;23 SAN ANTONIO
|
||
.long T_SONICS ;24 SEATTLE
|
||
.long T_JAZZ ;25 UTAH
|
||
.long T_BULTS ;26 WASHINGTON (150)
|
||
|
||
.long cities1 ;1st city column (151)
|
||
.long cities2
|
||
.long cities3
|
||
.long cities4
|
||
|
||
|
||
city_tbl
|
||
.def city_tbl
|
||
|
||
.long C_ATL ;ATLANTA (96)
|
||
.long C_BOST ;BOSTON (103)
|
||
.long C_CHAR ;CHARLOTTE
|
||
.long C_CHIC ;CHICAGO
|
||
.long C_CLEV ;CLEVELAND
|
||
.long C_DAL ;DALLAS (117)
|
||
.long C_DEN ;DENVER
|
||
.long C_DET ;DETROIT
|
||
.long C_GOLD ;GOLDEN STATE (110)
|
||
.long C_HOU ;HOUSTON
|
||
.long C_IND ;INDIANA
|
||
.long C_LAClips ;LOS ANGELES (CLIPPERS)
|
||
.long C_LALaks ;LOS ANGELES (LAKERS)
|
||
.long C_MIAMI ;MIAMI
|
||
.long C_MILW ;MILWAUKEE
|
||
.long C_MINN ;MINNESOTA
|
||
.long C_NJ ;NEW JERSEY
|
||
.long C_NY ;NEW YORK
|
||
.long C_ORL ;ORLANDO
|
||
.long C_PHIL ;PHILADELPHIA
|
||
.long C_PHX ;PHOENIX
|
||
.long C_PORT ;PORTLAND
|
||
.long C_SAC ;SACRAMENTO
|
||
.long C_SAN ;SAN ANTONIO
|
||
.long C_SEA ;SEATTLE
|
||
.long C_UTAH ;UTAH (122)
|
||
.long C_WASH ;WASHINGTON
|
||
.long C_DET ;DETROIT
|
||
|
||
fatal_tbl
|
||
.word 1 ;ATLANTA (96)
|
||
.word 1 ;BOSTON (103)
|
||
.word 1 ;CHARLOTTE
|
||
.word 0 ;CHICAGO
|
||
.word 1 ;CLEVELAND
|
||
.word 1 ;DALLAS (117)
|
||
.word 1 ;DENVER
|
||
.word 0 ;DETROIT
|
||
.word 1 ;GOLDEN STATE (110)
|
||
.word 0 ;HOUSTON
|
||
.word 1 ;INDIANA
|
||
.word 1 ;LOS ANGELES (CLIPPERS)
|
||
.word 0 ;LOS ANGELES (LAKERS)
|
||
.word 1 ;MIAMI
|
||
.word 0 ;MILWAUKEE
|
||
.word 1 ;MINNESOTA
|
||
.word 0 ;NEW JERSEY
|
||
.word 0 ;NEW YORK
|
||
.word 0 ;ORLANDO
|
||
.word 1 ;PHILADELPHIA
|
||
.word 1 ;PHOENIX
|
||
.word 0 ;PORTLAND
|
||
.word 0 ;SACRAMENTO
|
||
.word 1 ;SAN ANTONIO
|
||
.word 0 ;SEATTLE
|
||
.word 0 ;UTAH (122)
|
||
.word 1 ;WASHINGTON
|
||
|
||
logos
|
||
.long T_HAWKS ; 0 ATLANTA (124)
|
||
.long T_CELTS ; 1 BOSTON
|
||
.long T_HORS ; 2 CHARLOTTE
|
||
.long T_BULLS ; 3 CHICAGO
|
||
.long T_CAVS ; 4 CLEVELAND
|
||
.long T_MAVS ; 5 DALLAS
|
||
.long T_NUGS ; 6 DENVER
|
||
.long T_PISS ; 7 DETROIT
|
||
.long T_WARS ; 8 GOLDEN STATE
|
||
.long T_ROCKS ; 9 HOUSTON
|
||
.long T_PACER ;10 INDIANA
|
||
.long T_CLIPS ;11 LOS ANGELES (CLIPPERS)
|
||
.long T_LAKS ;12 LOS ANGELES (LAKERS)
|
||
.long T_HEAT ;13 MIAMI
|
||
.long T_BUCKS ;14 MILWAUKEE
|
||
.long T_TWOLV ;15 MINNESOTA
|
||
.long T_NETS ;16 NEW JERSEY
|
||
.long T_KNIKS ;17 NEW YORK
|
||
.long T_MAGIC ;18 ORLANDO
|
||
.long T_76RS ;19 PHILADELPHIA
|
||
.long T_SUNS ;20 PHOENIX
|
||
.long T_BLAZ ;21 PORTLAND
|
||
.long T_KINGS ;22 SACRAMENTO
|
||
.long T_SPURS ;23 SAN ANTONIO
|
||
.long T_SONICS ;24 SEATTLE
|
||
.long T_JAZZ ;25 UTAH
|
||
.long T_BULTS ;26 WASHINGTON (150)
|
||
.long TSMLOGO2 ;27 NBA JAM LOGO
|
||
|
||
******************************************************************************
|
||
|
||
name_sort
|
||
.long MANNING,AUGMON,WILLIS,BROWN,MCDAN,GAMBLE,JOHNSN_L,HAWKINS
|
||
.long MOURN,PIPPEN,ARMSTR,KUKOC,GRANT_HC,PRICE,DAUGHRTY
|
||
.long NANCE,JACK,MASH,MUTUMBO,LELLIS
|
||
.long ROGERS,THOMAS,DUMARS,ELLIOT,HUNTER,THARDAWAY
|
||
.long MULLIN,WEBBER,OLAJUWON,MAXWELL,HORRY,SMITH
|
||
.long MILLER,SEALY,SMITS,WILKINS,HARPER_R,ROBERTS
|
||
.long PEELER,DIVAC,CAMPBELL,WORTHY,RICE,SEIKALY,MINER
|
||
.long BAKER,EDWARDS,DAY,LOHAUS,LAETNER,PERSON,RIDER,COLEMAN,KANDERSON
|
||
.long CMORRIS,BENJAMIN,EWING,MASON,STARKS,OAKLEY,HARPER_D
|
||
.long AHARDAWAY,NANDERSON,SKILES,WEATH,BRAD
|
||
.long BARKLEY,MAJERLE,KJOHNSON,DREXLER,PORTER,CROBINSON
|
||
.long GRANT_HV,SIMM,HURL,RICH,TISDALE,WEBB,DROBINSON
|
||
.long RODMAN,DELLIS,KEMP,PAYTON,GILL,SCHREMPF,MALONE_K,STOCKTON,BENOIT
|
||
.long HORNACEK
|
||
.long GUGLI,ELLISON,CHEANEY
|
||
|
||
.long MALONE_K,KEMP,DROBINSON,BARKLEY,DREXLER,AHARDAWAY,EWING
|
||
.long KANDERSON,COLEMAN,NANDERSON,STOCKTON,KJOHNSON,GILL
|
||
.long RICH,BRAD,WEBB,DUMARS,STARKS,MUTUMBO,WILKINS
|
||
.long HARPER_R,RIDER,MILLER,JOHNSN_L,OLAJUWON,BAKER,ARMSTR,MAXWELL
|
||
.long MOURN,RICE,THARDAWAY,JACK,PIPPEN,MINER,THOMAS,WEBBER
|
||
.long MASH,WORTHY,MULLIN,MANNING
|
||
|
||
; .long SCORP,RAIDEN,REPT,SUBZ,HOSK
|
||
; .long OLIV,TURMELL,0
|
||
|
||
|
||
team_convert
|
||
.word _GOL,_DAL,_ATL,_BOS
|
||
.word _LAC,_DEN,_CHA,_MI
|
||
.word _LAL,_HOU,_CHI,_NJ
|
||
.word _PHX,_MIN,_CLE,_NY
|
||
.word _POR,_SAN,_DET,_ORL
|
||
.word _SEA,_UTA,_IND,_PHI
|
||
.word _SAC,_MK2,_MIL,_WAS
|
||
|
||
|
||
|
||
#*****************************************************************************
|
||
team_menus
|
||
.long #tm1
|
||
#tm1
|
||
.word 1 ;palette
|
||
.word 44,32+TEAMSEL_PAGE ;x,y start
|
||
.long city_table ;table
|
||
|
||
#*****************************************************************************
|
||
player1_menus
|
||
.long #p1m1
|
||
.long #p1m2
|
||
.long #p1m3
|
||
#p1m1
|
||
.word 0 ;palette
|
||
.word 0+16,30+NAMENT_PAGE-4 ;x,y start
|
||
.long name_table ;table
|
||
#p1m2
|
||
.word 0 ;palette
|
||
.word 0+9,24+NAMENT_PAGE ;x,y start
|
||
.long month_table
|
||
#p1m3
|
||
.word 0 ;palette
|
||
.word 0+10,30-12+NAMENT_PAGE ;x,y start
|
||
.long day_table
|
||
|
||
#************
|
||
player1k_menus
|
||
.long #p1m1k
|
||
.long #p1m2k
|
||
.long #p1m3k
|
||
#p1m1k
|
||
.word 0 ;palette
|
||
.word 0+16+36,30+NAMENT_PAGE-4 ;x,y start
|
||
.long name_table2 ;table
|
||
#p1m2k
|
||
.word 0 ;palette
|
||
.word 0+9+38,24+NAMENT_PAGE ;x,y start
|
||
.long month_table2
|
||
#p1m3k
|
||
.word 0 ;palette
|
||
.word 0+10+35,30-12+NAMENT_PAGE ;x,y start
|
||
.long day_table2
|
||
|
||
#************
|
||
player2_menus
|
||
.long #p2m1
|
||
.long #p2m2
|
||
.long #p2m3
|
||
#p2m1
|
||
.word 1 ;palette
|
||
.word 100+13,30+NAMENT_PAGE-4 ;x,y start
|
||
.long name_table ;table
|
||
#p2m2
|
||
.word 1 ;palette
|
||
.word 100+7,24+NAMENT_PAGE ;x,y start
|
||
.long month_table
|
||
#p2m3
|
||
.word 1 ;palette
|
||
.word 100+7,30-12+NAMENT_PAGE ;x,y start
|
||
.long day_table
|
||
|
||
*************
|
||
player3_menus
|
||
.long #p3m1
|
||
.long #p3m2
|
||
.long #p3m3
|
||
#p3m1
|
||
.word 2 ;palette
|
||
.word 200+10,30+NAMENT_PAGE-4 ;x,y start
|
||
.long name_table
|
||
#p3m2
|
||
.word 2 ;palette
|
||
.word 200+4,24+NAMENT_PAGE ;x,y start
|
||
.long month_table
|
||
#p3m3
|
||
.word 2 ;palette
|
||
.word 200+4,30-12+NAMENT_PAGE ;x,y start
|
||
.long day_table
|
||
|
||
*************
|
||
player2k_menus
|
||
.long #p2m1k
|
||
.long #p2m2k
|
||
.long #p2m3k
|
||
#p2m1k
|
||
.word 2 ;palette
|
||
.word 200+10+32,30+NAMENT_PAGE-4 ;x,y start
|
||
.long name_table2
|
||
#p2m2k
|
||
.word 2 ;palette
|
||
.word 200+4+36,24+NAMENT_PAGE ;x,y start
|
||
.long month_table2
|
||
#p2m3k
|
||
.word 2 ;palette
|
||
.word 200+4+34,30-12+NAMENT_PAGE ;x,y start
|
||
.long day_table2
|
||
|
||
*************
|
||
player4_menus
|
||
.long #p4m1
|
||
.long #p4m2
|
||
.long #p4m3
|
||
#p4m1
|
||
.word 3 ;palette
|
||
.word 300+6,30+NAMENT_PAGE-4 ;x,y start
|
||
.long name_table
|
||
#p4m2
|
||
.word 3 ;palette
|
||
.word 300+1,24+NAMENT_PAGE ;x,y start
|
||
.long month_table
|
||
#p4m3
|
||
.word 3 ;palette
|
||
.word 300+1,30-12+NAMENT_PAGE ;x,y start
|
||
.long day_table
|
||
|
||
|
||
name_entry_mod
|
||
.long teamselBMOD ;team selection map
|
||
.word -4,TEAMSEL_PAGE
|
||
.long selbackBMOD ;name entry map
|
||
.word 0,NAMENT_PAGE
|
||
.long namebox2BMOD ;stats box map
|
||
.word 9,207+YESNO_PAGE-14
|
||
.long yesnoBMOD ;yes/no select map
|
||
.word 0,YESNO_PAGE
|
||
.long 0
|
||
|
||
name_entry_kit_mod
|
||
.long teamselBMOD ;team selection map
|
||
.word -4,TEAMSEL_PAGE
|
||
.long selbackkBMOD ;name entry map
|
||
.word 0,NAMENT_PAGE
|
||
.long nameboxkBMOD ;stats box map
|
||
.word 9,207+YESNO_PAGE-14
|
||
.long yesnoBMOD ;yes/no select map
|
||
.word 0,YESNO_PAGE
|
||
.long 0
|
||
|
||
|
||
|
||
name_entry2_mod
|
||
.long teamselBMOD ;team selection map
|
||
.word -4,TEAMSEL_PAGE
|
||
.long yesnoBMOD ;yes/no select map
|
||
.word 0,NAMENT_PAGE
|
||
.long 0
|
||
|
||
******************************************************************************
|
||
|
||
|
||
#*****************************************************************************
|
||
* covers up vertical piece in namebox on selection screens etc...
|
||
*
|
||
|
||
SUBR create_bits
|
||
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrz #not2
|
||
|
||
PUSH a8,a10
|
||
|
||
movi [98,0],a0 ;x val
|
||
movi [197,0],a1 ;y val
|
||
movi OSGEMD_A,a2 ;* image
|
||
movi 150,a3 ;z pos
|
||
movi DMACAL|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
movi #nampal,b0
|
||
calla BEGINOBJP2
|
||
movi 4,a0
|
||
move a0,*a8(OSIZEX)
|
||
movk 2,a0
|
||
move a0,*a8(OSIZEY)
|
||
movi 0101h,a0
|
||
move a0,*a8(OCONST)
|
||
|
||
|
||
movi [292,0],a0 ;x val
|
||
movi [197,0],a1 ;y val
|
||
movi OSGEMD_A,a2 ;* image
|
||
movi 150,a3 ;z pos
|
||
movi DMACAL|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
movi #nampal,b0
|
||
calla BEGINOBJP2
|
||
movi 4,a0
|
||
move a0,*a8(OSIZEX)
|
||
movk 2,a0
|
||
move a0,*a8(OSIZEY)
|
||
movi 0202h,a0
|
||
move a0,*a8(OCONST)
|
||
|
||
PULL a8,a10
|
||
|
||
|
||
#not2
|
||
rets
|
||
|
||
|
||
SUBR create_bits2
|
||
|
||
callr create_bits
|
||
|
||
move @TWOPLAYERS,a0 ;0 = NO, 1 = YES 2 players
|
||
jrz #not2b
|
||
|
||
PUSH a8,a10
|
||
|
||
movi [99,0],a0 ;x val
|
||
movi [235,0],a1 ;y val
|
||
movi OSGEMD_A,a2 ;* image
|
||
movi 150,a3 ;z pos
|
||
movi DMACAL|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
movi #nampal,b0
|
||
calla BEGINOBJP2
|
||
movi 5,a0
|
||
move a0,*a8(OSIZEX)
|
||
movk 2,a0
|
||
move a0,*a8(OSIZEY)
|
||
movi 0202h,a0
|
||
move a0,*a8(OCONST)
|
||
|
||
|
||
movi [293,0],a0 ;x val
|
||
movi [235,0],a1 ;y val
|
||
movi OSGEMD_A,a2 ;* image
|
||
movi 150,a3 ;z pos
|
||
movi DMACAL|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
movi #nampal,b0
|
||
calla BEGINOBJP2
|
||
movi 5,a0
|
||
move a0,*a8(OSIZEX)
|
||
movk 2,a0
|
||
move a0,*a8(OSIZEY)
|
||
movi 0202h,a0
|
||
move a0,*a8(OCONST)
|
||
|
||
|
||
|
||
movi [98,0],a0 ;x val
|
||
movi [243,0],a1 ;y val
|
||
movi OSGEMD_A,a2 ;* image
|
||
movi 150,a3 ;z pos
|
||
movi DMACAL|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
movi #nampal,b0
|
||
calla BEGINOBJP2
|
||
movi 4,a0
|
||
move a0,*a8(OSIZEX)
|
||
movk 3,a0
|
||
move a0,*a8(OSIZEY)
|
||
movi 0303h,a0
|
||
move a0,*a8(OCONST)
|
||
|
||
|
||
movi [293,0],a0 ;x val
|
||
movi [243,0],a1 ;y val
|
||
movi OSGEMD_A,a2 ;* image
|
||
movi 150,a3 ;z pos
|
||
movi DMACAL|M_SCRNREL,a4 ;DMA flags
|
||
clr a5 ;object ID
|
||
clr a6 ;x vel
|
||
clr a7 ;y vel
|
||
movi #nampal,b0
|
||
calla BEGINOBJP2
|
||
movi 4,a0
|
||
move a0,*a8(OSIZEX)
|
||
movk 3,a0
|
||
move a0,*a8(OSIZEY)
|
||
movi 0303h,a0
|
||
move a0,*a8(OCONST)
|
||
|
||
|
||
|
||
PULL a8,a10
|
||
|
||
#not2b
|
||
rets
|
||
|
||
|
||
|
||
|
||
RGB .macro R,G,B
|
||
.word (:R:<<10) | (:G:<<5) | :B:
|
||
.endm
|
||
|
||
#nampal
|
||
.word 4 ;4 colours
|
||
|
||
RGB 0,0,0 ;background
|
||
|
||
RGB 2,3,12 ;dark
|
||
RGB 12,0,0 ;light
|
||
RGB 0,0,0 ;black
|
||
|
||
SUBR start_teams
|
||
|
||
clr a0
|
||
move a0,@exit_status
|
||
move a0,@force_selection
|
||
|
||
;Temp init
|
||
; movk 1,a0
|
||
; move a0,@team1
|
||
; movk 2,a0
|
||
; move a0,@team2
|
||
; clr a0
|
||
; move a0,@tm1set
|
||
; movk 1,a0
|
||
; move a0,@tm2set
|
||
; movi -1,a0
|
||
; move a0,@special_heads
|
||
; move a0,@special_heads+10h
|
||
; move a0,@special_heads+20h
|
||
; move a0,@special_heads+30h
|
||
; movk 1,a0
|
||
; move a0,@team1_control ;player selecting team 1
|
||
; movk 2,a0
|
||
; move a0,@gmqrtr
|
||
; movk 2,a0
|
||
; move a0,@team2_control ;player selecting team 2
|
||
; movk 15,a0
|
||
; move a0,@PSTATUS
|
||
;!
|
||
|
||
;Just in case someone bought in during game play, and teamx_control had not
|
||
;been set!
|
||
|
||
move @team1_control,a1
|
||
jrnn #ok
|
||
move @PSTATUS,a0
|
||
clr a2
|
||
btst 0,a0
|
||
jrnz #set
|
||
movk 1,a2
|
||
btst 1,a0
|
||
jrz #ok
|
||
#set move a2,@team1_control
|
||
#ok
|
||
move @team2_control,a1
|
||
jrnn #ok2
|
||
move @PSTATUS,a0
|
||
movk 2,a2
|
||
btst 2,a0
|
||
jrnz #set2
|
||
movk 3,a2
|
||
btst 3,a0
|
||
jrz #ok2
|
||
#set2 move a2,@team2_control
|
||
#ok2
|
||
|
||
move @team1_control,a0
|
||
jrnn #noscrambl
|
||
movk 5,a0
|
||
calla RNDRNG0
|
||
move @team1,a14
|
||
cmpi _DAL,a14
|
||
jrz #bigd
|
||
sll 4,a14
|
||
addi tm1set,a14
|
||
move a0,*a14
|
||
|
||
#bigd
|
||
clr a8
|
||
|
||
.ref cpu_subs
|
||
|
||
CREATE0 cpu_subs
|
||
|
||
#noscrambl
|
||
move @team2_control,a0
|
||
jrnn #noscrambl2
|
||
movk 5,a0
|
||
calla RNDRNG0
|
||
move @team2,a14
|
||
|
||
cmpi _DAL,a14
|
||
jrz #bigd1
|
||
|
||
sll 4,a14
|
||
addi tm2set,a14
|
||
move a0,*a14
|
||
|
||
#bigd1
|
||
movk 1,a8
|
||
|
||
CREATE0 cpu_subs
|
||
|
||
#noscrambl2
|
||
|
||
|
||
movk 2,a0
|
||
calla create_logos
|
||
movk 2,a0
|
||
calla create_player_heads
|
||
movk 1,a0
|
||
calla create_team_set
|
||
CREATE0 create_team_set_flsh
|
||
calla update_team_set
|
||
CREATE0 team1_cursor
|
||
CREATE0 team2_cursor
|
||
|
||
SLEEPK 2
|
||
|
||
calla update_logos
|
||
movk 1,a0
|
||
move a0,@fixbug
|
||
calla update_player_heads
|
||
|
||
movi SCROLL_SPEED<<16,a10
|
||
JSRP scroll_page
|
||
|
||
clr a0
|
||
move a0,@page_scrolling ;scrolling
|
||
|
||
calla find_plates ;find bgnd plate objects (for flashing)
|
||
calla delete_text
|
||
|
||
movk 1,a0
|
||
move a0,@in_team_select
|
||
|
||
calla del_offscreen_bobjs
|
||
calla create_player_names
|
||
calla update_player_names
|
||
|
||
movi [256,0],a0
|
||
calla create_credits
|
||
calla update_credits
|
||
|
||
movi DMAWNZ,a0
|
||
movi OBJLST,a1
|
||
jruc so20
|
||
so10 move a0,*a1(OFLAGS)
|
||
so20 move *a1,a1,L
|
||
jrnz so10
|
||
|
||
movi CYCPID,a0
|
||
calla KIL1C
|
||
|
||
;MJT
|
||
calla create_bits
|
||
|
||
JSRP subs_in
|
||
|
||
.ref setup_speech
|
||
calla setup_speech
|
||
|
||
.ref set_names
|
||
calla set_names
|
||
|
||
RETP
|
||
|
||
.end
|
||
|