eng_offset	equ	0	; 各カップのオフセット
eng_yesno	equ	0	; OK ? 
eng_name	equ	0	; ベストラップ用 コース表示
;----------------------------------------------------------------------	
pos_BTtitle	equ	1058h	; BT title の表示
pos_VStitle	equ	1058h	; VS title の表示
pos_erasetitle	equ	0820h	; ERASE OK? の初期位置
pos_yesnotitle	equ	0828h	
;*********************************************************************
;
;	mario kart course select program
;
;*********************************************************************
		INCLUDE	../../SFX/RP5C77
		INCLUDE	../../SFX/RP5A22
		INCLUDE	../../DSP/D77C25
		INCLUDE	../../../kimura/join/work.def
		INCLUDE	../../../kimura/join/buffer.def
		INCLUDE	../DEF/object.def
;----------------------------------------------------------------------	
	ext	Trigger_sound_1
	ext	BGM_fade_out,sound_select,sound_set,sound_cancel
	GLB	Calc_cursor,Calc_cursor2,DMA_map
;- - - - - - - - - - - - - - - - - - - - - - - -
	GLB	C_SL_main,C_SL_init,C_SL_nmi
	GLB	Message_sprite
;----------------------------------------------------------------------	
 	EXT	Sprite_set
	EXT	Set_back_01,Set_back_02
;----------------------------------------------------------------------	
	EXT	Call_bank0
	EXT	Clear_sprite,Clear_buffer,Init_work
	EXT	WINDOW_INIT,WINDOW_CONTROL
	EXT	Init_meter,DMA_meter,DMA_meter_init
	EXT	Execute_VRAM
	EXT	param_screenA,param_screenB
	EXT	Repeat_trigger
	ext	Check_backupRAM,Erase_timeRAM
	ext	Check_replay
	ext	Trigger_sound_1
;----------------------------------------------------------------------	

word_work	EQU	1800H
;- - - - - - - - - - - - - - - -
word_battle	equ	1800h	; common
word_world	EQU	1800H	; common
word_course00	EQU	1880H
word_course10	EQU	1900H
word_course20	EQU	1980H
word_course30	EQU	1A00H
;- - - - - - - - - - - - - - - -
;;;		equ	1b00h		; laptime use
;- - - - - - - - - - - - - - - -
_next		EQU	0
_disp		EQU	2
_attr		EQU	4
_addr		EQU	6
_savedata	EQU	8
;- - - - - - - - - - - - - - - -
cursor_battle	equ	1d00h	; common
cursor_world	EQU	1D00H	; common
cursor_course1	EQU	1D02H
cursor_course2	EQU	1D04H
cursor_course3	EQU	1D06H
cursor_course4	EQU	1D08H
cursor_yesno	EQU	1D0AH
;;trans_map	EQU	1D0CH	; work.def で定義済
cursor_flag	EQU	1D0EH
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - 
cursor_number	EQU	1D10H
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - 
clear_course1	EQU	1D12H
clear_course2	EQU	1D14H
clear_course3	EQU	1D16H
clear_course4	EQU	1D18H
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - 
csel_process	EQU	1D20H
frame_work	EQU	1D22H
camera_test	EQU	1D24H
csel_mode	EQU	1D26H
world_lock	EQU	1D28H
csel_timer	EQU	1D2AH
csel_command	EQU	1D2CH
load_ONghost	EQU	1D2EH
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - 
		EXTEND
objdata	SECT	REL
		mem16
		idx16



;*********************************************************************
;	リプレイモードありなしチェック
;*********************************************************************
check_replay	
		lda	<game_status		; time attack mode ?
		cmp	#4
		bne	skip$
		lda	!game_mode_stock
		cmp	#2
		bne	skip$
		jsl	>Check_replay
		bcs	skip$
;;
		SEP	#00100000B
		MEM8
		lda	>keySRAM_world		; world pointer
		ASL	A
		ASL	A
		ASL	A
		adc	>keySRAM_map		; map pointer
		REP	#00100000B
		MEM16
		and	#00ffh
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		adc	#word_course00
		tax
		lda	#06h
		sta	<_savedata,x
;;
skip$		rts
;*********************************************************************
;	バッファ待避
;*********************************************************************
backup_replay	lda	!ghost_flag		; バッファ使用中？
		bpl	exit$
		lda	#1000h			; 待避セット ON !
		tsb	!ghost_flag
;- - - - -- - - - - - - - - - - - - - - - 
		ldx	#keycode_start
		ldy	#8000h			; 
		lda	#0C00h-1
		phb
		mvn	#keycode_start/65536,#7fh
		plb
exit$		rts
;- - - - -- - - - - - - - - - - - - - - - 
loadck_replay
		lda	#0E000H			; バックアップロード
		ora	!map_number
		sta	!ghost_flag+0
		lda	#0ffffh			; ゴーストカートセット
		sta	!g_kart_flag
exit$		rts

;*********************************************************************
;	コースセレクトの初期設定
;*********************************************************************
SEQ_select	dw	0ch,00h
;- - - - - - - - - - - - -
C_SL_init	PHB
		PHK
		PLB
;- - - 
		jsl	>Check_backupRAM

		stz	!record_mode	; モードリセット
		stz	!replay_flag	; リプレイリセット

		jsr	Check_battle
		lda	!SEQ_select,x
		sta	<SEQ_register
;- - - 
		ldx	#Clear_buffer	; バッファクリア
		jsl	>Call_bank0
		jsr	Init_work
	;;	stz	!best_flag	; ベストラップクリア
	;;	stz	!best_Voffset

		lda	#5
		sta	!best_number
;- - - - - - - - - - - - - - - - - - - 	; replay check
		jsr	backup_replay
		jsr	check_replay
;- - - - - - - - - - - - - - - - - - - 	; replay check
		lda	!map_pointer
		cmp	#05h
		bne	init$
		stz	!map_pointer
		stz	!world_number
		lda	#07
		sta	!map_number
init$ 

;- - - - - - - - - - - - - - - - - - - - - - - - - 
		jsl	>WINDOW_INIT	;ウィンドウの初期設定
		lda	#06H		; 初期セット
		sta	!window_index+0
		sta	!window_index+2
		lda	#00e0e0h	; 色加算データ初期セット
		sta	!red_color
		sta	!green_color
		sta	!blue_color
		jsl	>WINDOW_CONTROL	
;- - - - - - - - - - - - - - - - - - - - - - - - - 

		jsr	Init_meter	;メータセット

		ldx	#Clear_sprite	;ＯＡＭクリア
		jsl	>Call_bank0
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
; ＢＧ３をクリア
		LDA	#7FH		
		STA	!meter_bank+0
		STA	!meter_bank+2
		LDA	#clear_screen_A
		STA	!meter_address+0
		LDA	#clear_screen_B
		STA	!meter_address+2
;;
		JSL	>DMA_meter_init
;;
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
		LDX	#data_A
		JSL	>Execute_VRAM
		LDX	#data_B
		JSL	>Execute_VRAM
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
		STZ	!cursor_flag
		STZ	!cursor_yesno
		STZ	!cursor_world
		STZ	!cursor_course1
		STZ	!cursor_course2
		STZ	!cursor_course3
		STZ	!cursor_course4
		STZ	!trans_map
		STZ	!csel_process
		STZ	!csel_command
		STZ	!load_ONghost
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
;マップナンバーのセット
		jsr	Check_battle
		bne	skip$

		lda	!map_number
		cmp	#14h
		bcs	skip0$
		lda	#16h		;マップの初期
		sta	!map_number
skip0$		sec
		sbc	#14h
		tax
		lda	!name_battle,x
		and	#00ffh
		sta	!cursor_battle
		bra	exit$
;- - - - - - - - - - -
skip$
		jsr	Set_map_number

		lda	!world_number
		sta	cursor_world
		asl	a
		tax
		lda	!map_pointer
		sta	!cursor_course1,x
		inc	!csel_process
exit$
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
		JSL	>Init_word
		PLB
		RTL
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
data_A		DB	080H
		DW	5000H
		DW	1801H
		DL	MOJI_buffer
		DW	2000H
data_B		DB	080H
		DW	6000H
		DW	1801H
		DL	MOJI_buffer
		DW	2000H
;*********************************************************************
;	コースセレクトのメイン
;*********************************************************************
		EXT	Set_map_number,Set_ROM_to_buffer
		EXT	Set_changeBG
		EXT	Color_transport
		EXT	Call_back_scroll
		EXT	Set_BGmove,DMA_BGmove
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
C_SL_main	PHB
		PHK
		PLB
;- - - - - - - - - - - - - - - - - - - - - - - 
		SEP	#00100000B
		MEM8
		lda	!fade_data+1
		cmp	#0fh
		REP	#00100000B
		MEM16
		bne	C_SL_skip
;- - - - - - - - - - - - - - - - - - - - - - - 
		JSL	>Repeat_trigger		; リピートトリガ
;- - - - - - - - - - - - - - - - - - - - - - - 
C_SL_skip	lda	!csel_process
		asl	a
		ldx	!csel_mode
		jsr	(!csel_game,x)
		jsr	Move_back		;背景スクロール
		plb
		rtl
;- - - - - - - - - - - - - - - - - - - - - - - 
race_entry	tax
		jmp	(!csel_race,X)
battle_entry	tax
		jmp	(!csel_battle,X)
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
C_SL_exit	PLB
		RTL
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
csel_game	dw	race_entry,battle_entry
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
csel_race	DW	select_cup		; 0
		DW	select_course		; 1
		DW	map_read		; 2
		DW	set_buffer		; 3
		DW	vram_write_init		; 4
		DW	vram_write		; 5
		DW	map_yesno		; 6
		DW	no_use			; 7
		DW	erase_check1		; 8
		DW	erase_check2		; 9
		DW	erase_wait		; 10

		DW	disp_ghostcheck		; 11
		DW	wait_ghostcheck		; 12
		DW	map_yesno_2		; 13
		DW	no_use			; 14
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
csel_battle	dw	select_battle
		dw	battlemap_read
		dw	set_buffer
		dw	vram_write_init
		dw	vram_write
		dw	battle_yesno
		dw	no_use
;-------------------------------------------------------------------
; 		背景のスクロール
;-------------------------------------------------------------------
Move_back	LDX	#0
		LDA	!camera_test
		CLC
		ADC	#10H
		STA	!camera_test
		JSL	>Call_back_scroll
		JSL	>Set_BGmove
		LDX	#player_r0
		INC	<_situationXH,X

		lda	#80c0h			; カメラのむきをかえる！
		sta	<camera_control
		lda	#0000h
		sta	<camera_direction

		RTS
;-------------------------------------------------------------------
no_use		RTS



;*********************************************************************
;		バトルモード
;*********************************************************************
;-------------------------------------------------------------------
; 		マップのセレクト
;-------------------------------------------------------------------
select_battle
		jsl	>WINDOW_CONTROL
;- - - - - - - - - - - - - - - - - - - - - - - - 
		jsr	Reset_cursor
		jsr	Init_OBJ_B
		jsr	Set_battlename
		jsr	Init_OBJ_A
		jsr	Select_battlemap
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
		lda	!trigger_common		; マップ決定チエック
		and	#ST_button+B_button
		beq	skip$
;- - - - - - - - - - - - - - - - - - - - - - - - -
		jsl	>sound_set		
		inc	!csel_process
		lda	!cursor_battle		; アトリビュート
		ASL	A
		ASL	A
		ASL	A
		ASL	A				; の点滅
		adc	#word_battle
		tax
		lda	#02H
		sta	<_attr,X

		jsr	Battlemap_OK

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
skip$		jsr	Disp_title_BT
		jmp	Disp_battlemap
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Battlemap_OK	ldy	#4
		ldx	#word_battle
loop$		lda	<_attr,x
		bne	skip$
		lda	#08h
skip$		sta	<_attr,x
		txa
		clc
		adc	#10h
		tax
		dey
		bne	loop$
		rts
;-------------------------------------------------------------------
;		バトルマップの決定
;-------------------------------------------------------------------
map_battle
		db	16h,17h,14h,15h
;- - - - - - - - - - - -14h,15h,16h,17h  - - -
name_battle
		db	02h,03h,00h,01h
;- - - - - - - - - - - - - - - - - - - - - - - - - - -
battlemap_read	
		ldx	!csel_process
		ldy	!cursor_battle
		lda	!map_battle,y
		and	#00ffh
		cmp	!map_number
		sta	!map_number
		bne	skip$
		inx
		inx
		inx
		inx
		stx	!csel_process
		rts
skip$
		inx
		stx	!csel_process
;- - - - - - - - - - - - - - - -  - - - - - - - - 
		LDA	#8
		STA	!window_index+0
		STA	!window_index+2
		JSL	>WINDOW_CONTROL
		JSR	Init_OBJ_B
		JSR	Set_battlename
		RTS
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;		よろしですか　はい／いいえ
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
battle_yesno	JSR	Init_OBJ_B
		JSR	Cursor_yesno
		JSR	Disp_yesno
exit$		RTS
;*********************************************************************
;		レースモード
;*********************************************************************
erase_wait	
		JSR	Init_OBJ_A
		jsr	REC_test
		jsr	Set_name2
		dec	!csel_timer
		bne	exit$
		stz	!csel_process
exit$		rts
;- - - - - - - - - - - - - - - - - - - - - - - 

erase_check2
erase_check1
;- - - - - - - - - - - - - - - - - - - - - - - 
		LDY	#button_trigger+1
		LDA	#0101H
		LDX	#cursor_yesno
		JSR	Calc_cursor2
;- - - - - - - - - - - - - - - - - - - - - - - 
		lda	!button_trigger
		bit	#X_button
		bne	reset$
		bit	#B_button+ST_button
		beq	skip_1$
		lda	!cursor_yesno
		beq	clear$
reset$		stz	!csel_process	
		bra	skip_1$

clear$		jsl	>Erase_timeRAM		; タイムクリア
		bcs	skip_2$
		lda	#9
		sta	!csel_process
skip_2$		inc	!csel_process		; +10
		lda	#29H			; SE_ballon
		jsl	>Trigger_sound_1
		lda	#60
		sta	!csel_timer
skip_1$
;- - - - - - - - - - - - - - - - - - - - - - - 
		JSR	Init_OBJ_B
		LDA	#pos_erasetitle
		LDY	#erase_0
		LDX	#0
		JSR	Message_sprite
		LDA	#0890H			; message
		LDY	#yesno_1
		LDX	#0
		JSR	Message_sprite
;
		LDA	#0886H			; cursor
		LDX	!cursor_yesno
		BEQ	skip$
		LDA	#0886H+0020H+eng_yesno
skip$		LDY	#select_sign
		JSR	Sprite_set
;- - - - - - - - - - - - - - - - - - - - 
		JSR	Init_OBJ_A
		jsr	REC_test
		jmp	Set_name2
;- - - - - - - - - - - - - - - - - - - - - - - 








;- - - - - - - - - - - - - - - - - - - - - - - 






;*********************************************************************
;		ゴーストチェックディスプレイ
;*********************************************************************
disp_ghostcheck
	
		jsr	Init_OBJ_B		
;- - - - - - - - - - - - - - - - - - - - - - - - - - 
		LDY	#trigger_common+1
		LDA	#0101H
		LDX	#cursor_yesno
		JSR	Calc_cursor2
;- - - - - - - - - - - - - - - - - - - - - - - - - - 
		LDA	!trigger_common		; cansel
		BIT	#B_button+ST_button
		BEQ	exit$
;- - - - - - - - - - - - - - - - - - - - - - - - - - 
		lda	#30
		sta	!csel_timer
		inc	!csel_process
		lda	!cursor_yesno
		bne	reset$
entry$		dec	!load_ONghost		; FLAG ON
		lda	#20h
		jsl	>Trigger_sound_1
		bra	exit$
reset$		jsl	>sound_set
;- - - - - - - - - - - - - - - - - - - - - - - - - - 
exit$		jsr	Disp_yesghost
		jsr	Disp_grid
		jsr	Init_OBJ_A
		jsr	REC_test
		jmp	Set_name2
;----------------------------------------------------------------------
wait_ghostcheck	dec	!csel_timer
		bne	exit$
		inc	!csel_process
		stz	!cursor_yesno
exit$		rts
;*********************************************************************
;		レースモード
;*********************************************************************
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;		よろしですか　はい／いいえ
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

		ext	REC_test

map_yesno
		LDA	!map_pointer
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		STA	<0
		LDA	!world_number
		XBA
		LSR	A		; CLC
		ADC	#word_course00
		ADC	<0
		TAX
		LDA	<_savedata,x	; リプレイは,はいっている？
		BEQ	map_yesno_2

		lda	#11
		sta	!csel_process
		jmp	disp_ghostcheck

map_yesno_2
		JSR	Init_OBJ_B
		JSR	Cursor_yesno
		JSR	Disp_yesno
		JSR	Disp_grid

		lda	<game_status
		cmp	#4		; time attack ?
		bne	exit$

		lda	<button_status
		and	#(L_button+R_button+Y_button+A_button)
		cmp	#(L_button+R_button+Y_button+A_button)
		bne	skip$
					; time attack mode 
		jsl	>sound_set

		lda	#8
		sta	!csel_process
		lda	#1
		sta	!cursor_yesno

skip$		jsr	Init_OBJ_A
		jsr	REC_test
		jsr	Set_name2

exit$		RTS
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;		マップのキャラクタ転送イニシャル
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
vram_write_init	LDA	#8000H
		STA	!trans_map
		JSL	>WINDOW_CONTROL
		BRA	next_process
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;		マップのキャラクタ転送メイン
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
vram_write	JSL	>WINDOW_CONTROL
		LDA	!trans_map
		BNE	same_process
		LDA	#0AH
		STA	!window_index+0
		STA	!window_index+2
		BRA	next_process
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;		マップナンバーのセット
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
map_read
		LDA	#8
		STA	!window_index+0
		STA	!window_index+2
		JSL	>WINDOW_CONTROL
		JSR	Init_OBJ_B
		JSR	Set_name
;- - - - - - - - - - - - - - - - - - - - - -
		jsr	Set_map_number

next_process	INC	!csel_process
same_process	RTS
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;		マップいれかえバッファセット
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
set_buffer

		jsr	Set_ROM_to_buffer

		JSL	>Set_changeBG
		inc	!csel_process
		RTS
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;		カーソル コースセレクト
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
select_course	
		JSL	>WINDOW_CONTROL
		JSR	Init_OBJ_B
		JSR	Set_name
		JSR	Init_OBJ_A
		JSR	Set_course
		RTS
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;		カーソル カップセレクト
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
select_cup	
		STZ	!load_ONghost
		JSL	>WINDOW_CONTROL
		JSR	Ura_special		; 裏コマンド！
		JSR	Init_OBJ_B
		JSR	Set_name
		JSR	Init_OBJ_A
		JSR	Set_cup
		RTS
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;		新しいマップｎｏをチェック
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
samemap_check	LDY	#2
		LDA	!cursor_world
		CMP	!world_number
		BNE	skip$
		DEY
skip$		STA	!world_number
		ASL	A
		TAX
		LDA	!cursor_course1,X
		CMP	!map_pointer
		BNE	skip1$
		DEY
skip1$		STA	!map_pointer
		TYA
		RTS
;*********************************************************************
;	ＯＡＭ　初期設定
;*********************************************************************
Init_OBJ_A	JSR	param_screenA
		LDX	#200H
		BRA	init_obj_common
Init_OBJ_B	JSR	param_screenB
		LDX	#200H+220H
init_obj_common	STX	<sprite_count
		JMP	clear_oam
;####################################################################
;	各種ルーチン
;####################################################################
;
;*********************************************************************
;	カーソル／文字 フラッシング用 カラー書き換え
;*********************************************************************
		GLB	Frash_corsor
;- - - - - - - - - - - 
Frash_corsor
		LDA	!frame_work		; !! 
		CLC
		ADC	#0100H			; c-sel
		AND	#0F00H			; のみのwork
		STA	!frame_work
;- - - - - - - - - - - 
		ADC	#70FFH
		ldx	#0a0h
		jsr	set_palet		; palet 5  02
;
		ldx	#0c0h			
		lda	#7ff0h
		jsr	set_palet		; palet 6  04 
;
		ldx	#0e0h
		lda	#027fh
		jsr	set_palet		; palet 7  06
;
		ldx	#000h
	;;	lda	#4210h
		lda	#001fh
		jsr	set_palet		; palet 0  08

		lda	#0ffffh
		sta	!color_trans_flag

						; palet 2  0A
		RTL	

set_palet	
		sta	>color_buffer+100h+2,x
		sta	>color_buffer+100h+4,x
		lda	#0
		sta	>color_buffer+100h+6,x
		rts
;*********************************************************************
;	コースセレクトのＮＭＩ処理
;*********************************************************************
C_SL_nmi	PHB
		PHK
		PLB
	;;	LDA	<button_trigger-1
	;;	BMI	set$
	;;	LDA	!trans_map
	;;	BEQ	skip$
;- - - - - - -
		JSL	>Frash_corsor
		LDX	#Color_transport
		JSL	>Call_bank0
		JSL	>DMA_map
		JSL	>DMA_BGmove
		PLB
		RTL
;- - - - - - - - - - - - - - - - - - - - - - 
;*********************************************************************
;	コースセレクトのＮＭＩ処理
;*********************************************************************
DMA_map		LDA	!trans_map
		BEQ	exit$
		AND	#7FFFH
		TAX
		CPX	#10H
		BCS	special$
		SEP	#00100000B
		MEM8
		LSR	A
		LSR	A
		LSR	A
		STZ	!DMA_0+0	; 
		CLC
		ADC	#18H		; 18h or 19h
		STA	!DMA_0+1
;
		TXA
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		AND	#80H
		STA	!Screen_step
;
		STZ	!DMA_0+2
		TXA
		ASL	A
		ASL	A
		ASL	A
		STA	!DMA_0+3
		AND	#3FH			; start address
		STA	!Screen_address+1
		STZ	!Screen_address+0
;
		LDA	#7FH			; bank
		STA	!DMA_0+4
		LDY	#800H			; counter
		STY	!DMA_0+5
		LDA	#01			; dma start
		STA	!DMA_burst
;
		TXA				; next parameter
		INC	A
skip$		STA	!trans_map+0
		REP	#00100000B
		MEM16
exit$		RTL
;- - - - - - - - - - - - - - - - - - -
special$	PHB
		PHK
		PLB
		REP	#00100000B
		MEM16
		CPX	#10H
		BNE	sss$
		LDX	#back_char	;背景キャラクターのセット
		JSL	>Execute_VRAM
		BRA	incdata$
;- - - - - - - - - - - - - - - - - - - 
sss$		CPX	#11H
		BNE	sss2$
		LDX	#back_screen	;背景スクリーンのセット 1
		JSL	>Execute_VRAM
		BRA	incdata$
;- - - - - - - - - - - - - - - - - - - 
sss2$
		jsr	Set_back_02	;背景スクリーンのセット 2

;- - - - - - - - - - - - - - - - - - - 
incdata$	LDA	!trans_map	; 転送カウンタのセット
		INC	A
		CMP	#8013H
		BNE	skip2$
		LDA	#0
skip2$		STA	!trans_map+0
		PLB
		RTL
;- - - - - - - - - - - - - - - - - 
back_char	db	80H
		dw	7000h
		dw	1801h
		dl	7FC800h
		dw	800h
;- - - - - - - - - - - - - - - - - 
back_screen	db	80H
		dw	7800h
		dw	1801h
		dl	7FC000h
		dw	600h
;*********************************************************************
;	現在のコースネーム表示
;*********************************************************************


;*********************************************************************
;	コースセレクトの文字セット
;*********************************************************************
Set_course	JSR	Select_course
		BRA	common_set
;---------------------------------------------------------------------
Set_cup		
;- - - - - - - - - - - - - - - - - - - - - - - セレクトモード
		JSR	Select_world
		LDA	!trigger_common
		AND	#RT_button+B_button+ST_button
		BEQ	common_set
		JSL	>sound_set
		INC	!csel_process
;- - - - - - - - - - - - - - - - - - - - - - - コースネーム表示
common_set	JSR	Disp_title
		JSR	Disp_world
		JMP	Disp_course
;*********************************************************************
;	YES/NO セレクト（カーソル）
;*********************************************************************
Cursor_yesno	
		LDY	#trigger_common+1
		LDA	#0101H
		LDX	#cursor_yesno
		JSR	Calc_cursor2
;- - - - - - - - - - - - - - - - - - - - - - - - - - 
		LDA	!trigger_common		; cansel
		BIT	#X_button
		BNE	reset2$
		BIT	#B_button+ST_button
		BEQ	exit$
		LDA	!cursor_yesno
		BNE	reset1$
;- - - - - - - - - - - - - - - - - - - - - - - - - - 
next$						; ゲームスタート

;- - - - - - - - - - - - - - - - - - - - - - - -
; スタート時イニシャル
		jsr	Check_battle
		lda	!init_select,x
		sta	!race_init
		lda	!jump_select,x
		sta	<game_selecta
		LDA	#8F00H
		STA	<fade_control
		LDA	#0080H
		STA	!fade_speed
		JSL	>BGM_fade_out
		INC	!csel_process
;- - - - - - - - - - - - - - - - - - - - - - - -
		LDA	!ghost_flag		; マップがかわったら
		BPL	skip$			; ゴースト終了
		AND	#00ffh
		CMP	!map_number
		BEQ	skip$
		STZ	!ghost_flag		; バッファリセット
		STZ	!g_kart_flag		; ゴーストカート消滅
;- - - - - - - - - - - - - - - - - - - - - - - -
skip$		lda	!load_ONghost
		beq	sound$
		jsr	loadck_replay
		jsl	>sound_set
	;;	lda	#20h
	;;	jsl	>Trigger_sound_1
		rts
;- - - - - - - - - - - - - - - - - - - - - - - - - - 
reset2$		stz	!csel_process		;選択しなおし
		jsl	>sound_cancel
		rts	
;- - - - - - - - - - - - - - - - - - - - - - - - - - 
reset1$		stz	!csel_process		;選択しなおし
sound$		jsl	>sound_set
		rts
exit$		RTS
;- - - - - - - - - - - - - - - - - - - - - - - - - - 
init_select	dw	04h,0ah
jump_select	dw	0eh,02h
;*********************************************************************
;	コースネームの表示
;*********************************************************************

		

;*********************************************************************
;	バトルマップネームの表示
;*********************************************************************
Set_battlename
;- - - - - - - - - - - - - - - - - - - ; mapnumber offset
		lda	!map_number
		sec
		sbc	#14h
		tax
		lda	!name_battle,x
		and	#00ffh
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		ADC	#word_battle
		TAX
		LDA	<_disp,X	; H position read
		AND	#000FFH		
		ORA	#00800H		; V position set
		LDY	<_addr,X
		LDX	#4		; attr	
		JMP	Message_sprite
;*********************************************************************
;	コースネームの表示
;*********************************************************************
; ベストラップ用のコースネーム表示
;- - - - - - - - -
Set_name2
		LDA	!map_pointer
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		STA	<0		
		LDA	!world_number
		XBA
		LSR	A			;CLC
		ADC	#word_course00
		ADC	<0
		TAX

	;;	LDA	<_disp,X	; H position read
	;;	AND	#00000H		
	;;	ORA	#00800H		; V position set

		lda	#01058h-eng_name
		LDY	<_addr,X
		LDX	#0		; attr	
		JMP	Message_sprite


Set_name
		LDA	!world_number
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		ADC	#word_world
		TAX

		LDA	<_disp,X	; H position read
		AND	#000FFH		
		ORA	#00800H		; V position set
		LDY	<_addr,X
		LDX	#4		; attr	
		JSR	Message_sprite
;
		LDA	!map_pointer
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		STA	<0		
		LDA	!world_number
		XBA
		LSR	A			;CLC
		ADC	#word_course00
		ADC	<0
		TAX
		LDA	<_disp,X	; H position read
		AND	#000FFH		
		ORA	#00800H		; V position set
		LDY	<_addr,X
		LDX	#4		; attr	
		JMP	Message_sprite
;*********************************************************************
;	はい　いいえ　の表示
;*********************************************************************
Disp_yesghost	LDA	#pos_yesnotitle-8
		LDX	#0
		LDY	#ghostcheck
		JSR	Message_sprite

		LDA	#1490H			; message
		LDY	#yesno_1
		LDX	#0
		JSR	Message_sprite
;
		LDA	#1486H			; cursor
		LDX	!cursor_yesno
		BEQ	skip$
		LDA	#1486H+0020H+eng_yesno
skip$		LDY	#select_sign
		JMP	Sprite_set

;*********************************************************************
;	はい　いいえ　の表示
;*********************************************************************
Disp_yesno	
		LDA	#pos_yesnotitle
		LDX	<game_status
		CPX	#4
		BNE	skip0$
		SEC
		SBC	#8
skip0$		LDY	#yesno_0
		LDX	#0
		JSR	Message_sprite


Common_yesno	LDA	#0890H			; message
		LDY	#yesno_1
		LDX	#0
		JSR	Message_sprite
;
		LDA	#0886H			; cursor
		LDX	!cursor_yesno
		BEQ	skip$
		LDA	#0886H+0020H+eng_yesno
skip$		LDY	#select_sign
		JMP	Sprite_set
;*********************************************************************
;	スターティンググリッド の表示
;*********************************************************************
Disp_grid	LDA	!cursor_world	; 
		ASL	A		;CLC
		TAX			; world 0,1,2,3
		LSR	A
		ORA	#0500h		; 5*world number
		STA	!4202h
		LDA	!cursor_course1,X  ; course 0,1,2,3,4
		CLC
		ADC	!Product
		ASL	A
		TAX
;
		STA	!cursor_number	= map_number
;
		LDY	#start_sign_1
		LDA	!start_sign_data,X
		XBA
		CMP	#8000H
		BCC	skip1$
		LDY	#start_sign_2
skip1$		XBA
		JMP	Sprite_set
;*********************************************************************
;	タイトルの表示
;*********************************************************************
Disp_title_BT	LDA	#pos_BTtitle
		BRA	skip_title
Disp_title	LDA	#pos_VStitle
skip_title	LDY	#name_title2
		LDX	#0
		JMP	Message_sprite
;*********************************************************************
;	ワールドの表示
;	バトルマップの表示
;*********************************************************************
Disp_battlemap
Disp_world
		LDX	#word_world
next1$		LDA	<_next,X	;	status check
		BEQ	exit1$		;
		LDY	<_addr,X	;	data address
		PHX			;>>
		LDA	<_attr,X	;	attribute
		PHA			;  >>
		LDA	<_disp,X	;	position X,Y
		PLX			;  <<
		JSR	Message_sprite	;
skip1$		PLA			;<<
		CLC
		ADC	#10H
		TAX
		BRA	next1$		
exit1$		RTS	
;*********************************************************************
;	コースの表示
;*********************************************************************
Disp_course
		LDA	!cursor_world
		XBA
		LSR	A		;CLC
		ADC	#word_course00
		TAX
;- - - - - - - - - - - - - - - - - - - - - - - 
next2$		LDA	<_next,X
		BEQ	exit2$
		LDY	<_addr,X	;	data address
		PHX			;>>
		LDA	<_attr,X	;	attribute
		PHA			;  >>
		LDA	<_disp,X	;	position X,Y
		PLX			;  <<
		JSR	Message_sprite	;
skip2$		PLA			;<<
		CLC
		ADC	#10H
		TAX
		BRA	next2$		
exit2$		RTS
;*********************************************************************
;	バトルコースセレクト
;*********************************************************************

ofs		equ	40h
pos_battle	db	20h+0eh*0
		db	20h+0eh*1
		db	20h+0eh*2
		db	20h+0eh*3
;- - - - - - - - - - - - - - - - - - - - - - - - - -
Select_battlemap
		LDY	#trigger_common+1
		LDA	#0300H
		LDX	#cursor_battle
		JSR	Calc_cursor2
		LDA	<0,X
		AND	#00FFH
		TAY
		LDA	!pos_battle,Y
		XBA
		AND	#0FF00H
		ORA	#00016H+ofs
		LDY	#select_sign
		JSR	Sprite_set
		RTS
;*********************************************************************
;		汎用ルーチン
;*********************************************************************
;- - - - - - - - - - - - - - - - - - - - - - - - - -
;カーソル位置のイニシャル
;- - - - - - - - - - - - - - - - - - - - - - - - - -
Reset_cursor	STZ	!cursor_course1		;カーソル位置
		STZ	!cursor_course2		
		STZ	!cursor_course3
		STZ	!cursor_course4
						
		STZ	!cursor_yesno		; はい にセット
;- - - - - - - - - - - - - - - - - - - - - - - - - -
		STZ	!_attr+word_world+00H	;点滅ストップ
		STZ	!_attr+word_world+10H	;(ワールド）
		STZ	!_attr+word_world+20H
		STZ	!_attr+word_world+30H
		STZ	!_attr+word_world+40H
;- - - - - - - - - - - - - - - - - - - - - - - - - -
		LDX	#word_course00		;点滅ストップ
		LDY	#8*4			;(コース）
loop$		LDA	<_savedata,x
		BNE	skip$
		LDA	#08h
skip$		STA	<_attr,X
		TXA
		CLC
		ADC	#10H
		TAX
		DEY	
		BNE	loop$
		STZ	!cursor_course4
		RTS
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 


;*********************************************************************
;	ワールドセレクト（カーソル）
;*********************************************************************
;
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pos_world	db	20h+0eh*0
		db	20h+0eh*1
		db	20h+0eh*2
		db	20h+0eh*3+4
;- - - - - - - - - - - - - - - - - - - - - - - - - -
Select_world
		JSR	Reset_cursor
;- - - - - - - - - - - - - - - - - - - - - - - - - -
;ワールドマップカーソルの移動
;- - - - - - - - - - - - - - - - - - - - - - - - - -
		LDY	#trigger_common+1
		LDA	!world_lock
		LDX	#cursor_world			
		JSR	Calc_cursor2
		LDA	<0,X
		AND	#00FFH
		TAY
		LDA	!pos_world,Y
		XBA
		AND	#0FF00H
		ORA	#0001eH-eng_offset
		LDY	#select_sign
		JSR	Sprite_set
exit$		RTS
;*********************************************************************
;	コースセレクト（カーソル）
;*********************************************************************
pos_course	db	20h+0eh*0
		db	20h+0eh*1
		db	20h+0eh*2
		db	20h+0eh*3
		db	20h+0eh*4
;- - - - - - - - - - - - - - - - - - - - - - - - - -
Select_course	
;
;- - - - - - - - - - - - - - - - - - - - - - - - - -
		LDA	#08H
		STA	!_attr+word_world+00H	; 減算モード
		STA	!_attr+word_world+10H	; (ワールド）
		STA	!_attr+word_world+20H
		STA	!_attr+word_world+30H
		STA	!_attr+word_world+40H
		LDX	#word_course00		;点滅ストップ
		LDY	#8*4			;(コース）
loop$		LDA	<_savedata,x
		BNE	skip$
		LDA	#00h
skip$		STA	<_attr,X
		TXA
		CLC
		ADC	#10H
		TAX
		DEY	
		BNE	loop$
;- - - - - - - - - - - - - - - - - - - - - - - - - -
		LDA	!cursor_world
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		ADC	#word_world
		TAX
		LDA	#02H
		STA	<_attr,X
;- - - - - - - - - - - - - - - - - - - - - - - - - -
		LDY	#trigger_common+1
		LDA	!cursor_world
		ASL	A			;CLC
		ADC	#cursor_course1
		TAX
;- - - - - - - - - - - - - - - - - - - - - - - - - -
		LDA	#0400H
		JSR	Calc_cursor2
;- - - - - - - - - - - - - - - - - - - - - - - - - -
		LDA	<0,X
		AND	#00FFH
		TAY
		LDA	!pos_course,Y
		XBA
		AND	#0FF00H
		ORA	#00076H
		TAX
;- - - - - - - - - - - - - - - - - - - - - - -
		LDA	!trigger_common+0	;決定チエック
		AND	#B_button+ST_button
		BEQ	over$
		
		JSL	>sound_set
		LDA	!cursor_world		;決定したとき
		XBA
		LSR	A			;CLC
		ADC	#word_course00
		STA	<0
		TYA				; 00,10,20,30,40
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		ADC	<0
		TAX
		LDA	#02H
		STA	<_attr,X		
		JSR	Select_OK
		INC	!csel_process
;- - - - - - - - - - - - - - - - - - - - - - -
		JSR	samemap_check
		BNE	exit$	
		LDA	#6			; process jump
		STA	!csel_process
		LDA	<game_status
		CMP	#4
		BNE	exit$
		PLA				; << del return
		RTS
;- - - - - - - - - - - - - - - - - - - - - - -
over$		TXA				; 決定しないとき
		LDY	#select_sign		; (カーソル表示）
		JSR	Sprite_set
;- - - - - - - - - - - - - - - - - - - - - - -
		LDA	!trigger_common		; キャンセルチェック
		AND	#LF_button+X_button
		BEQ	exit$
		JSL	>sound_cancel
		DEC	!csel_process
exit$		RTS


;- - - - - - - - - - - - - - - - - - - - - - - - - - -
;	コースセレクトのアトリビュートチェック
;- - - - - - - - - - - - - - - - - - - - - - - - - - -
Select_OK	LDX	#word_course00		; 
		LDY	#8*4			; (コース）
loop$		LDA	<_attr,x
		BNE	skip$
		LDA	#08h
skip$		STA	<_attr,X
		TXA
		CLC
		ADC	#10H
		TAX
		DEY	
		BNE	loop$
		RTS
;- - - - - - - - - - - - - - - - - - - - - - - - - - -



;*********************************************************************
;	ワールドポジションのイニシャル
;*********************************************************************
Init_position
		LDX	#player_r0
		LDA	#0FFC0H
		STA	<_situationXH,X
		STA	<_situationYH,X
		RTS

;*********************************************************************
;		バトルモードチェック
;*********************************************************************
Check_battle	ldx	#0
		lda	<game_status		;
		cmp	#06h			; battle code
		beq	exit$
		inx
		inx
exit$		rts
;*********************************************************************
;	メッセージブロックのイニシャル
;*********************************************************************
Init_word	PHB
		PHK
		PLB

		JSR	Init_position
		jsr	Check_battle
		beq	mount_battle
;- - - - - - - - - - - - - - - - - - - - - - -レース用マウント

		JSR	Check_special
		LDY	#DP_world_X	; クリアした！
		BCS	skip$
		LDY	#DP_world	; クリアしてない！
skip$		LDX	#word_world
		JSR	Mount_message

;- - - - - - - - - - - - - - - - - - - - キノコカップ
		LDX	#word_course00
		LDY	#DP_w0
		JSR	Mount_message
;- - - - - - - - - - - - - - - - - - - - フラワーカップ
		LDX	#word_course10
		LDY	#DP_w1
		JSR	Mount_message
;- - - - - - - - - - - - - - - - - - - - スターカップ
		LDX	#word_course20
		LDY	#DP_w2
		JSR	Mount_message
;- - - - - - - - - - - - - - - - - - - - スペシャルカップ
		LDY	#DP_w3
		LDX	#word_course30
		JSR	Mount_message
;- - - - - - - - - - - - - - - - - - - -
		stz	!csel_mode	;モードリセット	
		PLB
		RTL		
;- - - - - - - - - - - - - - - - - - - - - - -バトル用マウント
mount_battle
		LDX	#word_battle
		LDY	#DP_battle
		JSR	Mount_message

		lda	#2		
		sta	!csel_mode
;
		PLB
		RTL
;- - - - - - - - - - - - - - - - - - - - - - -
;*********************************************************************
;	スペシャルカップにいけるかどうか！
;*********************************************************************
Check_special	
		SEP	#00100001B
		MEM8
		ldx	#2
		lda	!special_command+1
		bmi	ok$
loop$		lda	>SRAM_race+0,x
		and	#03h		; 下位２ビットが１００ｃｃ
		dec	a
		bne	exit$
		dex
		bpl	loop$
ok$		REP	#00100000B
		MEM16			; SEC -> クリアしている！
		lda	#0300h
		bra	skip$
exit$		REP	#00100001B
		MEM16			; CLC -> クリアしてない！
		lda	#0200h
skip$		sta	!world_lock
		rts	
;- - - - - - - - - - - - - - - - - - - - - - -
;裏コマンド (スペシャルカップをだす！）
Ura_special	ldx	!csel_command
		SEP	#00100000B
		MEM8
		lda	<button_trigger+1
		bne	clear$
		lda	<button_trigger+0
		beq	skip$
		and	!command_data,x
		beq	clear$
		inx
		cpx	#9
		stx	!csel_command
		bne	skip$
;
;- - - - - - - - - - - - - - - - - - - - 
		lda	#80h		; コマンド成功！
		tsb	!special_command+1		
		REP	#00100000B
		MEM16
		LDY	#DP_world_X	; メッセージセット
		LDX	#word_world
		JSR	Mount_message
		lda	#0300h		; スペシャル解禁
		sta	!world_lock
		lda	#56h
		jsl	>Trigger_sound_1
		SEP	#00100000B
		MEM8
;- - - - - - - - - - - - - - - - - - - - 
;
clear$		stz	!csel_command	
skip$		REP	#00100000B
		MEM16
		rts
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
command_data	db	L_button,R_button,L_button,R_button
		db	L_button,L_button,R_button,R_button
		db	A_button
;*********************************************************************
;		汎用ルーチン
;*********************************************************************
wk0		EQU	0
wk1		EQU	2
wk2		EQU	4
wk3		EQU	6
;*********************************************************************
;	メッセージブロックのマウント
;*********************************************************************
;
;	<_disp,X .... 表示座標
;	<_addr,X .... メッセージのアドレス
;	<_next,X .... 0 .終了 1.継続
;	<_attr,X .... アトリビュート(色チェンジ用）
;
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Mount_message
loop$		LDA	!0,Y
		BEQ	exit$
		STA	<_disp,X
		LDA	!2,Y
		STA	<_addr,X
		LDA	<_savedata,X
		BEQ	skip$
		LDA	#06h			; セーブデータあり！
skip$		STA	<_attr,X
		LDA	#01H
		STA	<_next,X
		TXA
		CLC
		ADC	#10H
		TAX
		TYA
		ADC	#4
		TAY
		BRA	loop$
exit$		STZ	<_next,X
		RTS

;*********************************************************************
;		ＯＡＭのクリア
;*********************************************************************
clear_oam	LDA	#0E0H
		STA	<0,X
		TXY
		INY
		LDA	#200H-2
		PHB
		MVN	#dbank_00,#dbank_00
		PLB
		RTS
;**********************************************************************
;		メッセージスプライト	
;**********************************************************************
;	１行にメッセージを表示するルーチンです
;
;
;
;
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - 
;		LDA	#4040H
;		LDY	#data_message
;		ldx	attr
;		JSR	Message_sprite
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Message_sprite
		STX	<wk3		; attribute
					; Y= data point
		LDX	<sprite_count	; X= sprite count
		CLC
		ADC	<screen_obj_V	; A= position
		STA	<wk0
		SEP	#00100000B
		MEM8
		LDA	!0,Y
		STA	<wk2		; attribute
		INY
		JSR	line_message
		REP	#00100000B
		MEM16
		STX	<sprite_count
		RTS
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		mem8
special_message	PHY			;>>		
		SEC
		SBC	#0E0H
		REP	#00100000B
		MEM16
		PHA			;  >>
		AND	#00FFH
		ASL	A
		TAY
		LDA	!common_message,Y
		TAY
		PLA			;  <<
		SEP	#00100000B
		MEM8
		JSR	line_message
		PLY			;<<
		INY
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
line_message	LDA	!0,Y		; read data
		CMP	#0E0H
		BCC	entry$
		CMP	#0FFH
		BNE	special_message		
		RTS
;- - - - - - - - - - - - - - - - - - - - 
entry$		STA	<sprite_C,X
		CMP	#2CH		; 2CH 半分スペース
		BEQ	space_0$
		CMP	#2BH		; 2BH スペース
		BEQ	space_1$
		CMP	#2FH
		BEQ	tenten$
		CMP	#2EH
		BEQ	tenten$
;- - - - - - - - - - - - - - - - - - - - 
skip100$	LDA	<wk0
		STA	<sprite_H,X
		CLC
		ADC	#8
		STA	<wk0
		XBA
		STA	<sprite_V,X
nomal$		XBA
		LDA	<wk3
		EOR	<wk2
		STA	<sprite_A,X
		INY
		INX
		INX
		INX
		INX
		BRA	line_message
;- - - - - - - - - - - - - - - - - - - - -
		mem8
tenten$		LDA	<wk0
		SEC
		SBC	#6
		STA	<sprite_H,X
		XBA
		SEC
		SBC	#7
		STA	<sprite_V,X
		CLC
		ADC	#7
		BRA	nomal$
;- - - - - - - - - - - - - - - - - - - - -
space_1$	LDA	#8
		BRA	space_skip$
space_0$	LDA	#4
space_skip$	CLC
		ADC	<wk0		; 空白
		STA	<wk0
		INY
		BRA	line_message
		mem16
		idx16
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 




;**********************************************************************
;		カーソルの移動
;**********************************************************************
;----------------------------------------------------------------------
;		A = low(max_data) high(keypatern)
;		X = point register
;		Y = trigger data		
;
;		LDA	#0300H
;		LDX	#cursor_test
;		LDY	#button_trigger
;		JSR	Calc_cursor
;
;----------------------------------------------------------------------
cursor_check	DB	UP_button/256,DW_button/256
		DB	LF_button/256,RT_button/256
		DB	Y_button/256,B_button/256
;----------------------------------------------------------------------
Calc_cursor	STA	<wk0			; A data 
		STY	<wk1
cursor_entry	AND	#00FFH
		ASL	A
		TAY
		SEP	#00100000B
		MEM8
		LDA	(<wk1)			; (-)
		AND	!cursor_check+0,Y
		BEQ	skip$
		LDA	<0,X
		BEQ	skip$
		DEC	<0,X
		REP	#00100000B
		MEM16
		JSL	>sound_select
		SEP	#00100000B
		MEM8
skip$		LDA	(<wk1)			; (+)
		AND	!cursor_check+1,Y
		BEQ	exit$
		LDA	<0,X
		CMP	<wk0+1
		BCS	exit$
		INC	<0,X
		REP	#00100000B
		MEM16
		JSL	>sound_select
exit$		REP	#00100000B
		MEM16
		RTS
;----------------------------------------------------------------------
;	セレクトキー対応バージョン
;- - - - - - - - - - - - - - - - - - - 
Calc_cursor2	STA	<wk0
		STY	<wk1
		LDA	(<wk1)		; セレクトキーによる移動
		AND	#SL_button/256
		BEQ	next$
		SEP	#00100000B
		MEM8
		LDA	<0,x
		CMP	<wk0+1
		BCC	exit$
		LDA	#-1
exit$		INC	A
		STA	<0,x
		REP	#00100000B
		MEM16
		JSL	>sound_select
		RTS
next$		LDA	<wk0
		BRA	cursor_entry
;**********************************************************************
;		メッセージデータ
;**********************************************************************

;- - - - - - - - - - - - - - - - - - - - - -  course data - - - - - 

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
; コースセレクト
name_title2	db	29h
		db	2dh,18h,19h,1ah,2dh,1ch,1dh,1eh,1fh,2dh,0ffh
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

;- - - - - - - - - - - 
start_sign_data
		dw	39cfh	; マリオサーキット 1
		dw	352ch	; ドーナツへいやコース 1
		dw	3ad5h	; おばけだにコース 1
		dw	41ceh	; クッパじょうコース 1
		dw	2cc7h	; マリオサーキット 2

		dw	39c6h	; チョコレーとうコース 1
		dw	232ah	; おばけだにコース 2
		dw	3bcch	; ドーナツへいやコース 2
		dw	2724h	; クッパじょうコース 2
		dw	2c25h	; マリオサーキット 3

		dw	203ah	; ノコノコかいがんコース 1
		dw	4122h	; チョコレーとうコース 2
		dw	3536h	; バニラせつげんコース 1
		dw	24c6h	; クッパじょうコース 3
		dw	38cdh	; マリオサーキット 4

		dw	352dh	; ドーナツへいやコース 3
		dw	229dh	; ノコノコかいがんコース 2
		dw	232ah	; おばけだにコース 4
		dw	34c3h 	; バニラせつげんコース 1
		dw	2624h	; レインボーロード
;- - - - - - - - - - - 

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;		dw	画面ポジション,メッセージindex
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;
DP_battle	dw	2020H+ofs,battle_0	;バトル １
		dw	2e20H+ofs,battle_1	;バトル ２
		dw	3c20H+ofs,battle_2	;バトル ３
		dw	4a20H+ofs,battle_3	;バトル ４
		dw	0
;- - - - - - - - 
DP_world	dw	2028H-eng_offset,world_0
		dw	2e28H-eng_offset,world_1
		dw	3c28H-eng_offset,world_2,0
DP_world_X	dw	2028H-eng_offset,world_0
		dw	2e28H-eng_offset,world_1
		dw	3c28H-eng_offset,world_2
		dw	4e28H-eng_offset,world_3,0
;- - - - - - - - 
DP_w0		dw	2080H,course_00
		dw	2e80H,course_01
		dw	3c80H,course_02
		dw	4a80H,course_03
		dw	5880H,course_04
		dw	0
DP_w1		dw	2080H,course_10
		dw	2e80H,course_11
		dw	3c80H,course_12
		dw	4a80H,course_13
		dw	5880H,course_14
		dw	0
DP_w2		dw	2080H,course_20
		dw	2e80H,course_21
		dw	3c80H,course_22
		dw	4a80H,course_23
		dw	5880H,course_24
		dw	0
DP_w3		dw	2080H,course_30
		dw	2e80H,course_31
		dw	3c80H,course_32
		dw	4a80H,course_33
		dw	5880H,course_34
		dw	0
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
battle_0	db	29h,0ebh,01h,0ffh
battle_1	db	29h,0ebh,02h,0ffh
battle_2	db	29h,0ebh,03h,0ffh
battle_3	db	29h,0ebh,04h,0ffh
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
world_0		db	029h,0e0h,0ffh		; ワールドセレクト
world_1		db	029h,0e1h,0ffh
world_2		db	029h,0e2h,0ffh
world_3		db	029h,0e3h,0ffh
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
course_00	db	029h,0e4h,001h,0ffh	; キノコカップ
course_01	db	029h,0e6h,001h,0ffh
course_02	db	029h,0e5h,001h,0ffh
course_03	db	029h,0e7h,001h,0ffh
course_04	db	029h,0e4h,002h,0ffh
;- - - - - - - - - - - - - - - - - - - - - - - 
course_10	db	029h,0e9h,001h,0ffh	; フラワーカップ
course_11	db	029h,0e5h,002h,0ffh
course_12	db	029h,0e6h,002h,0ffh
course_13	db	029h,0e7h,002h,0ffh
course_14	db	029h,0e4h,003h,0ffh
;- - - - - - - - - - - - - - - - - - - - - - - 
course_20	db	029h,0eah,001h,0ffh	; スターカップ
course_21	db	029h,0e9h,002h,0ffh
course_22	db	029h,0e8h,001h,0ffh
course_23	db	029h,0e7h,003h,0ffh
course_24	db	029h,0e4h,004h,0ffh
;- - - - - - - - - - - - - - - - - - - - - - - 
course_30	db	029h,0e6h,003h,0ffh	; スペシャルカップ
course_31	db	029h,0eah,002h,0ffh
course_32	db	029h,0e5h,003h,0ffh
course_33	db	029h,0e8h,002h,0ffh
course_34	db	029h,0ech,0ffh
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
common_message	dw	w_0	; e0	キノコカップ
		dw	w_1	; e1 	フラワーカップ
		dw	w_2	; e2	スターカップ
		dw	w_3	; e3	スペシャルカップ
		dw	c_0	; e4	マリオサーキット
		dw	c_1	; e5	おばけだにコース
		dw	c_2	; e6	ドーナツへいやコース
		dw	c_3	; e7	クッパじょうコース
		dw	c_4	; e8	バニラせつげんコース
		dw	c_5	; e9	チョコレーとうコース
		dw	c_6	; ea	ノコノコかいがんコース
		dw	c_7	; eb	バトル
		dw	c_8	; ec	レインボー

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
select_sign	db	1,2BH		;カーソル
		dw	0000H
		db	0e5h,0
start_sign_1	db	2,2BH
		dw	0000H
		db	02bh,02ch
		db	0
start_sign_2	db	2,2BH+40H
		dw	0000H
		db	02ch,02bh
		db	0
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		include	select-j.src
;=====================================================================
		END
