	onbankgroup

;************************************************
;*	ＣＧＢ一枚絵表示 プログラム		*
;*			1998-6-9		*
;************************************************

;======	バンク０ ================================
;-----<	CHARS >----------------------------------
BANK0	GROUP	0
	EXTERN		scr_cnt
;================================================

	PUBALL

	ISDMG
;
BANK0	GROUP	0
;
	LIST

	LIB	hy_equ		; ＥＱＵＡＴＥ ファイル
	LIB	NINTENDO	; 登録 データ ファイル

	KANJI
;
;************************************************
;*	割り込み ＪＵＭＰ ＴＡＢＬＥ		*
;************************************************
;------- ＩＤジャンプ（ワード）  -------
	ORG	$00
	JP	IDJMP		; ＲＳＴ ０
;
;------- ＩＤジャンプ（ロング）  -------
	ORG	$08
	JP	IDJMP1		; ＲＳＴ １
;
;------- バンク越えジャンプ　　  -------
	ORG	$10
	JP	PBNKST		; ＲＳＴ ２
;
;------- ばんく越えジャンプＲＥＴ-------
	ORG	$18
	JP	PBNKRT		; ＲＳＴ ３
;
;------- Ｖ−ＢＬＡＮＫ 割り込み -------

	ORG	$40
	JP	V_BLANK
;
;------- ＬＣＤＣ ステータス 割り込み -------

	ORG	$48
	RETI
;
;------- ＴＩＭＥＲ 割り込み -------

	ORG	$50
	RETI
;
;------- ＳＩＯ 割り込み -------

	ORG	$58
	RETI
;
;------- ＫＥＹ入力 割り込み -------

	ORG	$60
	RETI

;************************************************
;*	プログラム スタート			*
;************************************************

	ORG	$150

RESET
	CALL	LCDC_OFF	; ＬＣＤＣ ストップ

	LD	L,$00
	LD	H,$00
	LD	A,$0A
	LD	(HL),A		; Ａ０００ＲＡＭ解放
;
	LD	SP,STACK	; スタック ロケーション 変更

	CALL	DMASET		; ＤＭＡ プログラムをＲＡＭに展開
;
	LD	A,$01
	LD	($2100),A	; バンク切り替えセット
	LD	HL,$4000	; キャラクタ データ
	LD	DE,$8800	; キャラクタ ＲＡＭ ($8000 - $97FF)
	LD	BC,$1000	; 個数 
	CALL	DATA_MOV	; キャラクタ 転送

	CALL	V_RAMC		; Ｖ−ＲＡＭ クリア

	LD	B,$A0		; ＯＢＪ ＲＡＭ クリア
	LD	A,00
	LD	HL,OBJRAM
OBJ_CLR_30
	LD	(HLI),A
	DEC	B
	JR	NZ,OBJ_CLR_30
;
	LD	A,$00
	LD	(NOWCG),A
	LD	A,scr_cnt	; 最大スクリーン枚数
	LD	(MAXCG),A
	LD	A,$00
	LD	(SLMODE),A
	LD	A,$00
	LD	(BLNKFG),A
;
	LD	A,$00
	LD	(SCX),A
	LD	A,$00
	LD	(SCY),A

	LD	A,%11100100	; パレット データ セット
	LD	(BGP),A
	LD	A,%11011000
	LD	(OBP0),A
	LD	(OBP1),A
;
	LD	A,01		; Ｖ−ＢＬＡＮＫ 割り込み 許可
	LD	(IE),A
	LD	(W_SEQ),A
;
	LD	A,%10000011	; ＯＢＪ ＢＧ ＯＮ ＬＣＤＣ スタート
	LD	(LCDC),A
;

	EI			; 割り込み イネーブル


;****************************************
;*       ＭＡＩＮ ＰＲＯＧＲＡＭ        *
;****************************************
MAIN
	CALL	CONT		; キー 入力

	LD	HL,FCNT
	INC	(HL)		; フレームカウンターＵＰ

	CALL	MAINSB		; メイン処理サブルーチン

	XOR	A
	LD	(VBLANK_F),A

	HALT			; システム クロック 停止 電力節約
MAIN10
	LD	A,(VBLANK_F)	; Ｖ−ＢＬＡＮＫ 待ち
	AND	A
	JR	Z,MAIN10

	JR	MAIN

;****************************************
;*      メイン処理サブルーチン          *
;****************************************
MAINSB
	LD	A,(SLMODE)
	RST	0
	DW	CHANGE_G	; 画像書き換え
	DW	KEY_CHK		; キー入力チェック

;
;********************************************
;*画像書き換え準備と書き換えルーチン呼び出し*
;********************************************
CHANGE_G

	CALL	LCDC_OFF	; ＬＣＤＣ ストップ

	CALL	KAKIKAE	;書き換えルーチン呼び出し

	LD	A,(SLMODE)
	INC	A
	LD	(SLMODE),A

;
	LD	A,01		; Ｖ−ＢＬＡＮＫ 割り込み 許可
	LD	(IE),A
	LD	(W_SEQ),A
;
	LD	A,%10000111	; ＯＢＪ ＢＧ ＯＮ ＬＣＤＣ スタート
	LD	(LCDC),A

	EI
;
	RET
;
;****************************************
;*      キーチェック                    *
;****************************************
KEY_CHK

	LD	A,(TRG1)	; キーデータ
	BIT	0,A		; Ａボタン
	CALL	NZ,INKEY_A

	LD	A,(TRG1)	; キーデータ
	BIT	1,A		; Ｂボタン
	CALL	NZ,INKEY_B

	RET


INKEY_A
	LD	A,$00
	LD	(SLMODE),A

	LD	A,(MAXCG)
	LD	B,A
	LD	A,(NOWCG)
	INC	A
	CP	B
	JR	NZ,INKEY_A10
	LD	A,0
INKEY_A10
	LD	(NOWCG),A
	RET

INKEY_B
	LD	A,$00
	LD	(SLMODE),A

	LD	A,(NOWCG)
	AND	A
	JR	NZ,INKEY_B10
	LD	A,(MAXCG)
INKEY_B10
	DEC	A
	LD	(NOWCG),A
	RET


;****************************************
;*       Ｖ−ＢＬＡＮＫ 割り込み        *
;****************************************
V_BLANK
	PUSH	AF
	PUSH	BC
	PUSH	DE
	PUSH	HL

	LD	A,(VBLANK_F)
	and	A
	JR	NZ,V_BLANK_END

	CALL	DMASUB		; ＤＭＡ 転送

	LD	A,1		; Ｖ−ＢＬＡＮＫ終了 フラグ セット
	LD	(VBLANK_F),A
;
V_BLANK_END
	POP	HL
	POP	DE
	POP	BC
	POP	AF

	RETI
;
;****************************************
;*       ＩＮＣＬＵＤＥ ＦＩＬＥ        *
;****************************************


	LIB	hy_sub		; サブルーチン ファイル（ライブラリ）
	LIB	hy_prog		; サブルーチン ファイル（プログラム）
	END

