
	PAGE

;********************************************************
;*							*
;*		ウィンドウテスト初期設定		*
;*							*
;********************************************************

WIN_TEST_INIT
		CALL	LCDC_OFF

		BGCLR	$00,VBK_1		; BGアトリビュートセット
		BGSET	BGATRB1,VBK_1
		BGSET	BGATRB2,VBK_1

		LD	HL,$9862		; カラーパレット指定
		LD	DE,$0010
		LD	C,4
_00		LD	B,$10
		LD	A,0
_01		LD	(HLI),A
		INC	A
		AND	$07
		DEC	B
		JR	NZ,_01
		ADD	HL,DE
		DEC	C
		JR	NZ,_00

		LD	HL,$9C62
		LD	DE,$0010
		LD	C,4
_02		LD	B,$10
		LD	A,0
_03		LD	(HLI),A
		INC	A
		AND	$07
		DEC	B
		JR	NZ,_03
		ADD	HL,DE
		DEC	C
		JR	NZ,_02

		BGCLR	SPACE,VBK_0		; BG CHRコードセット
		BGSET	WINBG,VBK_0

		OBJCLR				; OBJ原簿セット
		MOV	WINOBJ,OBJRAM,40

		VECTOR	VBLK,WIN_TEST_VBLK_INT

		NEXT_MAIN	WIN_TEST

		LD	A,(LCDC_BUF)
		SET	LCDC_WIN_ON_BIT,A
		SET	LCDC_BG_SCREEN_BIT,A
		LD	(LCDC_BUF),A
		CALL	LCDC_ON

		RET


;********************************************************
;*							*
;*		ウィンドウテスト			*
;*							*
;********************************************************

WIN_TEST
		LD	A,(CNT1)
		BIT	A_KEY_BIT,A		; ウィンドウスクロール
		JR	Z,_10
		LD	A,(TRG1)

_10		LD	HL,WY_BUF
		BIT	D_KEY_BIT,A		; WY++
		JR	Z,_11
		INC	(HL)

_11		BIT	U_KEY_BIT,A		; WY--
		JR	Z,_12
		DEC	(HL)

_12		LD	HL,WX_BUF
		BIT	R_KEY_BIT,A		; WX++
		JR	Z,_13
		INC	(HL)

_13		BIT	L_KEY_BIT,A		; WX--
		JR	Z,_20
		DEC	(HL)

_20		LD	A,(TRG1)
		LD	B,A
		LD	A,(LCDC_BUF)

		BIT	SE_KEY_BIT,B		; ウィンドウ画面切替
		JR	Z,_30
		XOR	LCDC_WIN_SCREEN

_30		BIT	ST_KEY_BIT,B		; BGキャラクタエリア切替
		JR	Z,_40
		XOR	LCDC_BG_CHR

_40		BIT	B_KEY_BIT,B		; ウィンドウ ON/OFF
		JR	Z,_50
		XOR	LCDC_WIN_ON

_50		LD	(LCDC_BUF),A

;--------------------------------------------------------

		LD	A,(CNT1)
		CP	A_KEY | B_KEY
		RET	NZ

		LD	A,LCDC_START | LCDC_OBJ_ON | LCDC_BG_ON
		LD	(LCDC_BUF),A

		XOR	A
		LD	(SCY_BUF),A
		LD	(SCX_BUF),A

		NEXT_MAIN	SET_BG_TITLE
		RET


;********************************************************
;*							*
;*		ウィンドウテスト V-BLANK割り込み	*
;*							*
;********************************************************

WIN_WY_DSP_ADDR		=	$C002
WIN_WX_DSP_ADDR		=	$C00A
WIN_SCR_DSP_ADDR	=	$C016
WIN_CHR_DSP_ADDR	=	$C01E
WIN_ON_DSP_ADDR		=	$C026

WIN_TEST_VBLK_INT
		PUSH	AF
		PUSH	BC
		PUSH	DE
		PUSH	HL

		LD	BC,WIN_WY_DSP_ADDR	; WY表示
		LD	A,(WY)
		CALL	GET_NUM
		LD	A,(WIN_WY_DSP_ADDR +1)
		LD	(WIN_WY_DSP_ADDR +4),A
		XOR	A
		LD	(WIN_WY_DSP_ADDR +1),A

		LD	BC,WIN_WX_DSP_ADDR	; WX表示
		LD	A,(WX)
		CALL	GET_NUM
		LD	A,(WIN_WX_DSP_ADDR +1)
		LD	(WIN_WX_DSP_ADDR +4),A
		XOR	A
		LD	(WIN_WX_DSP_ADDR +1),A

		LD	HL,WIN_SCR_DSP_ADDR	; ウィンドウエリアを表示
		LD	A,(LCDC_BUF)
		BIT	LCDC_WIN_SCREEN_BIT,A
		JR	NZ,_10
		LD	A,FONT_8
		JR	_11
_10		LD	A,FONT_C
_11		LD	(HL),A

		LD	HL,WIN_CHR_DSP_ADDR	; BGキャラエリアを表示
		LD	A,(LCDC_BUF)
		BIT	LCDC_BG_CHR_BIT,A
		JR	NZ,_20
		LD	A,FONT_8
		JR	_21
_20		LD	A,FONT_0
_21		LD	(HL),A

		LD	HL,WIN_ON_DSP_ADDR	; ウィンドウ ON/OFFを表示
		LD	A,(LCDC_BUF)
		BIT	LCDC_WIN_ON_BIT,A
		JR	NZ,_30
		LD	A,FONT_R_HU
		JR	_31
_30		LD	A,FONT_R_N
_31		LD	(HL),A

;--------------------------------------------------------

		LD	A,(VBCOUNT)
		INC	A
		LD	(VBCOUNT),A

		LD	A,1
		LD	(VBLK_FLG),A		; VBLK_FLGセット

		POP	HL
		POP	DE
		POP	BC
		POP	AF

		RETI


;********************************************************

	END
