KAKIKAE

; キャラクター転送

CHRTR
	LD	A,(NOWCG)
	AND	%11111100
	SRL	A
	SRL	A
	ADD	A,$02
	LD	($2100),A	; バンク切り替えセット

	LD	HL,$4000
	LD	A,(NOWCG)
	AND	%00000011
	SWAP	A
	ADD	A,H
	LD	H,A

;;;;;	LD	DE,$8000	; キャラクタ ＲＡＭ ($8000 - $97FF)
;;;;;	LD	BC,$1800	; 個数
	LD	DE,$8800	; キャラクタ ＲＡＭ ($8000 - $97FF)
	LD	BC,$1000	; 個数
	CALL	DATA_MOV	; キャラクタ 転送

; パレット転送
COLTR
	CALL	PL_CNG

; アトリビュート転送
SCRTR
	LD	A,(NOWCG)
	AND	%11111000
	SRL	A
	SRL	A
	SRL	A
	ADD	A,$07
	LD	($2100),A	; バンク切り替えセット

	LD	A,1
	LD	($FF4F),A
	CALL	V_RAMC

	LD	HL,$4000
	LD	A,(NOWCG)
	AND	%00000111
	SLA	A
	SLA	A
	SLA	A
	ADD	A,H
	LD	H,A

	CALL	KAKIKAE_SUB_AT

; スクリーン転送
	LD	A,(NOWCG)
	AND	%11111000
	SRL	A
	SRL	A
	SRL	A
	ADD	A,$07
	LD	($2100),A	; バンク切り替えセット

	LD	A,0
	LD	($FF4F),A
	CALL	V_RAMC

	LD	HL,$4000
	LD	A,(NOWCG)
	AND	%00000111
	SLA	A
	SLA	A
	SLA	A
	ADD	A,H
	LD	H,A

	CALL	KAKIKAE_SUB_SC
	RET

KAKIKAE_SUB_AT

	LD	BC,$0240
	LD	DE,$9800

KAKIKAE_SUB10_AT

	INC	HL
	LD	A,(HL)
	PUSH	BC
	LD	B,A
	LD	C,A
	SRL	B
	SRL	B
	LD	A,%00000111
	AND	B
	LD	B,A
	SRL	C
	LD	A,%01100000
	AND	C
	OR	B
	POP	BC
	LD	(DE),A

	INC	HL
	INC	DE
	DEC	BC

	LD	A,B
	OR	C

	JP	NZ,KAKIKAE_SUB10_AT

	RET

KAKIKAE_SUB_SC

	LD	BC,$0240
	LD	DE,$9800

KAKIKAE_SUB10_SC

	LD	A,(HL)
	LD	(DE),A

	INC	HL
	INC	HL
	INC	DE
	DEC	BC

	LD	A,B
	OR	C

	JP	NZ,KAKIKAE_SUB10_SC

	RET

;************************************
;*      パレット書き換えルーチン    *
;************************************
PL_CNG		; パレット書き換え
	LD	A,$06
	LD	($2100),A	; バンク切り替えセット

	LD	HL,$4000
	LD	A,(NOWCG)
	SRL	A
	PUSH	AF
	ADD	A,H
	LD	H,A
	POP	AF
	LD	A,$0
	RRA
	ADD	A,L		; 0 or 80
	LD	L,A

	LD	B,$20
	LD	A,$080
	LD	($ff68),A

PL_CNG100

	LD	A,(HLI)
	LD	($FF69),A
	LD	A,(HLI)
	LD	($FF69),A

	DEC	B
	JR	NZ,PL_CNG100

	RET
