
	PAGE

;********************************************************
;*							*
;*		タイトル画面表示			*
;*							*
;********************************************************

SET_BG_TITLE
		CALL	LCDC_OFF

		PLTSET	DEMO_PLT,BCPS		; BGカラーパレットセット

		CHRSET	CHR_DATA,VBK_0		; キャラクタデータセット

		BGCLR	$07,VBK_1		; BG アトリビュートセット
		BGSET	TITLEATRB,VBK_1

		BGCLR	SPACE,VBK_0		; BG CHRコードセット
		BGSET	TITLEBG,VBK_0

		OBJCLR

		LD	DE,SELECT_CURSOR_INIT_DATA
		CALL	CURSOR_INIT

		XOR	A
		LD	(SCY_BUF),A
		LD	(SCX_BUF),A
		LD	(LYC),A

		LD	(NR52),A		; ALL SOUND OFF
		LD	(VBCOUNT),A
		LD	(R0),A			; スクリーンライン表示フラグ記録用

		LD	A,WY_MIN		; ウィンドウ初期値セット
		LD	(WY_BUF),A
		LD	(WY),A
		LD	A,WX_MIN
		LD	(WX_BUF),A
		LD	(WX),A

		VECTOR	VBLK,SELECT_TEST_VBLK_INT
		VECTOR	HBLK,HBLK_INT

		NEXT_MAIN	SELECT_TEST

		LD	A,LCDC_START | LCDC_OBJ_ON | LCDC_BG_ON
		LD	(LCDC_BUF),A
		CALL	LCDC_ON

		RET


;********************************************************
;*							*
;*		テスト選択				*
;*							*
;********************************************************

SELECT_TEST
		CALL	CURSOR_MOV

		LD	A,(CNT1)		; カラー選択モード
		CP	A_KEY | ST_KEY
		JR	NZ,_00
		NEXT_MAIN	COLOR_SELECT_INIT
		RET

_00		CALL	CHG_DEMO_PLT

		LD	A,(TRG1)
		BIT	SE_KEY_BIT,A
		JR	Z,_20
		LD	A,(R0)
		XOR	1
		LD	(R0),A
		BIT	0,A
		JR	NZ,_10
		NEXT_MAIN	SET_BG_TITLE
		RET
_10		CALL	LCDC_OFF		; スクリーンライン表示
		CALL	CHR_LINE
		CALL	LCDC_ON
		RET

_20		LD	A,(TRG1)
		BIT	ST_KEY_BIT,A
		RET	Z

		CALL	VBLK_WAIT
		PLTSET	MAIN_PLT,BCPS		; BGカラーパレットセット

		LD	A,(CURSOR_INDEX)
		LDE_ARRAY	TEST_TABLE
		XOR	A
		CALL	SET_MAIN_FUNC
		VECTOR	VBLK,VBLK_INT		; デフォルトV-BLANK割り込み
		RET

TEST_TABLE
		DW	BG_TEST_INIT
		DW	SIO_TEST_INIT
		DW	OBJ_TEST_INIT
		DW	TIMER_TEST_INIT
		DW	WIN_TEST_INIT
		DW	SOUND_TEST_INIT
		DW	DMA_TEST_INIT
		DW	KEY_TEST_INIT
		DW	LCD_TEST_INIT
		DW	DUMP_INIT
		DW	LCDCINT_TEST_INIT
		DW	CHG_CPU_SPEED


CHG_DEMO_PLT
		LD	A,(TRG1)
		LD	B,A
		LD	A,VBK_1
		LD	(VBK),A

		BIT	U_KEY_BIT,B
		JR	Z,_10
		LD	HL,$9800
		JR	_20
_10		BIT	D_KEY_BIT,B
		JR	Z,_11
		LD	HL,$9A20
		JR	_20
_11		BIT	L_KEY_BIT,B
		JR	Z,_12
		LD	HL,$9820
		JR	_30
_12		BIT	R_KEY_BIT,B
		JR	Z,_30
		LD	HL,$9833
		JR	_30

_20		LD	C,20
_21		LD	A,(HL)
		INC	A
		AND	$07
		LD	(HLI),A
		DEC	C
		JR	NZ,_21
		RET

_30		LD	C,16
		LD	DE,$0020
_31		LD	A,(HL)
		INC	A
		AND	$07
		LD	(HL),A
		ADD	HL,DE
		DEC	C
		JR	NZ,_31
		RET


;********************************************************
;*							*
;*		テスト選択 V-BLANK割り込み		*
;*							*
;********************************************************

KEY1_DSP_ADDR	=	$99F1

SELECT_TEST_VBLK_INT
		PUSH	AF
		PUSH	BC
		PUSH	DE
		PUSH	HL

		LD	HL,VBK
		LD	A,(HL)
		LD	(VBK_BUF),A
		RES	0,(HL)

		LD	BC,KEY1_DSP_ADDR
		LD	A,(KEY1)
		CALL	GET_NUM

		LD	A,(VBK_BUF)
		LD	(HL),A

		POP	HL
		POP	DE
		POP	BC
		POP	AF
		RETI


;********************************************************
;*							*
;*		カーソル座標データ			*
;*							*
;********************************************************

SELECT_CURSOR_INIT_DATA
		DB	6			; CURSOR_Y_MAX
		DB	2			; CURSOR_X_MAX
		DW	SELECT_CURSOR_XY_POS
		DB	$06			; CURSOR_CHR_No1
		DB	$07			; CURSOR_CHR_No2
		DB	$81			; CURSOR_ATRB
		DB	30			; CURSOR_TIMER_MAX

SELECT_CURSOR_Y_BASE	=	$38
SELECT_CURSOR_X_BASE	=	$1C

SELECT_CURSOR_XY_POS
		DB	SELECT_CURSOR_Y_BASE + $00, SELECT_CURSOR_X_BASE + $00
		DB	SELECT_CURSOR_Y_BASE + $00, SELECT_CURSOR_X_BASE + $40
		DB	SELECT_CURSOR_Y_BASE + $10, SELECT_CURSOR_X_BASE + $00
		DB	SELECT_CURSOR_Y_BASE + $10, SELECT_CURSOR_X_BASE + $40
		DB	SELECT_CURSOR_Y_BASE + $20, SELECT_CURSOR_X_BASE + $00
		DB	SELECT_CURSOR_Y_BASE + $20, SELECT_CURSOR_X_BASE + $40
		DB	SELECT_CURSOR_Y_BASE + $30, SELECT_CURSOR_X_BASE + $00
		DB	SELECT_CURSOR_Y_BASE + $30, SELECT_CURSOR_X_BASE + $40
		DB	SELECT_CURSOR_Y_BASE + $40, SELECT_CURSOR_X_BASE + $00
		DB	SELECT_CURSOR_Y_BASE + $40, SELECT_CURSOR_X_BASE + $40
		DB	SELECT_CURSOR_Y_BASE + $50, SELECT_CURSOR_X_BASE + $00
		DB	SELECT_CURSOR_Y_BASE + $50, SELECT_CURSOR_X_BASE + $40


;********************************************************

	END
