;
;************************************************************************
;*		CG. change check data					*
;************************************************************************
CCNGD0		EQU	$
		WORD	0FFFFH,00001H
CCNGD1		EQU	$
		WORD	0FFE0H,00020H
CCNGD2		EQU	$
		WORD	0FC00H,00400H
;
;
;************************************************************************
;*		CG. change				(CGCHNG)	*
;************************************************************************
CGCHDT		EQU	$		; CG. change check data
;			0		  1
;			0123456789ABCDEF  0123456789ABCDEF
		WORD	1111111111111111B,1111111111111111B; color -  0
		WORD	1111111111111110B,1111111111111111B;       -  1
		WORD	0111111111111111B,0111111111111111B;       -  2
		WORD	0111111111011111B,1111101111111111B;       -  3
		WORD	0111111101111111B,0111111101111111B;       -  4
		WORD	0111110111110111B,1110111110111111B;       -  5
		WORD	0111101111011111B,0111101111011111B;       -  6
		WORD	0111011110111011B,1101110111101111B;       -  7
;
		WORD	0111011101110111B,0111011101110111B;       -  8
		WORD	0110111011011101B,1011101101110111B;       -  9
		WORD	0110110110110111B,0110110110110111B;       -  A
		WORD	0101101101101101B,1011011011011011B;       -  B
		WORD	0101101101011011B,0101101101011011B;       -  C
		WORD	0101011010110110B,1010110101101011B;       -  D
		WORD	0101010101010101B,1010110101101011B;       -  E
		WORD	0101010101010101B,1010101010101011B;       -  F
;
;			0123456789ABCDEF  0123456789ABCDEF
		WORD	0101010101010101B,0101010101010101B;       - 10
		WORD	0010101001010101B,0101010101010101B;       - 11
		WORD	0010101001010101B,0010101001010101B;       - 12
		WORD	0010100101001010B,0101001010010101B;       - 13
		WORD	0010010100100101B,0010010100100101B;       - 14
		WORD	0010010010010010B,0100100100100101B;       - 15
		WORD	0001001001001001B,0001001001001001B;       - 16
		WORD	0001000100100010B,0100010010001001B;       - 17
;
		WORD	0001000100010001B,0001000100010001B;       - 18
		WORD	0000100001000100B,0010001000010001B;       - 19
		WORD	0000010000100001B,0000010000100001B;       - 1A
		WORD	0000001000001000B,0001000001000001B;       - 1B
;
		WORD	0000000100000001B,0000000100000001B;       - 1C
		WORD	0000000000100000B,0000010000000001B;       - 1D
		WORD	0000000000000001B,0000000000000001B;       - 1E
		WORD	0000000000000000B,0000000000000001B;       - 1F
;
;
;
;
CGCHNG		EQU	$
CGCNG0		EQU	$
		MEM8
		SEP	#00100000B	; memory 8bit mode
;
		LDA	<FCNT
		LSR	A
		BCC	CCNG40		; change ?
;					; no
		RTL
;
CGCNG1		EQU	$
CCNG40		EQU	$
		MEM16
		IDX16
		REP	#00110000B	; memory,index 16bit mode
;
		LDX	#CGCHDT
		LDA	>CCNGCT
		CMP	#00010H
		BCC	CCNG60		;
;					;
		INX
		INX
CCNG60		EQU	$
		STX	<DTBFWK		; (L),(H) set
;
		AND	#0000FH
		ASL	A
		TAX
		LDA	BITCD0,X
		STA	<WORKC		; (workc) <-- check data
;
		PHB
		PHK
		PLB			; (DBR) set
;
		LDA	>CCNGFG
		TAX
		LDA	CCNGD0,X
		STA	<WORK6
		LDA	CCNGD1,X
		STA	<WORK8
		LDA	CCNGD2,X
		STA	<WORKA		; (work6,8,A) <-- CG. check data
;
		LDX	#00040H		; (X) <-- CG. change start point
		JSR	CCNGY00		; CG. change
;
;// 03.06.12 //CCNG100		EQU	$
;// 03.06.12 //		LDA	>CGWORK+000H,X
;// 03.06.12 //		STA	<WORK4		; (WORK4) <-- change CG. data
;// 03.06.12 //;
;// 03.06.12 //		LDA	>CGRAM+000H,X
;// 03.06.12 //		AND	#0000000000011111B
;// 03.06.12 //		ASL	A
;// 03.06.12 //		ASL	A
;// 03.06.12 //		TAY			; (Y) <-- RED data
;// 03.06.12 //		LDA	(<DTBFWK),Y
;// 03.06.12 //		AND	<WORKC
;// 03.06.12 //		BNE	CCNG120		; CG. change ?
;// 03.06.12 //;					; yes
;// 03.06.12 //		LDA	<WORK4
;// 03.06.12 //;// 02.06.14 //		CLC
;// 03.06.12 //		ADC	<WORK6
;// 03.06.12 //		STA	<WORK4
;// 03.06.12 //CCNG120		EQU	$
;// 03.06.12 //		LDA	>CGRAM+000H,X
;// 03.06.12 //		AND	#0000001111100000B
;// 03.06.12 //		LSR	A
;// 03.06.12 //		LSR	A
;// 03.06.12 //		LSR	A
;// 03.06.12 //		TAY			; (Y) <-- GREEN data
;// 03.06.12 //		LDA	(<DTBFWK),Y
;// 03.06.12 //		AND	<WORKC
;// 03.06.12 //		BNE	CCNG140		; CG. change ?
;// 03.06.12 //;					; yes
;// 03.06.12 //		LDA	<WORK4
;// 03.06.12 //;// 02.06.14 //		CLC
;// 03.06.12 //		ADC	<WORK8
;// 03.06.12 //		STA	<WORK4
;// 03.06.12 //CCNG140		EQU	$
;// 03.06.12 //		LDA	>CGRAM+001H,X
;// 03.06.12 //		AND	#0000000001111100B
;// 03.06.12 //		TAY			; (Y) <-- BLUE data
;// 03.06.12 //		LDA	(<DTBFWK),Y
;// 03.06.12 //		AND	<WORKC
;// 03.06.12 //		BNE	CCNG160		; CG. change ?
;// 03.06.12 //;					; yes
;// 03.06.12 //		LDA	<WORK4
;// 03.06.12 //		CLC
;// 03.06.12 //		ADC	<WORKA
;// 03.06.12 //		STA	<WORK4
;// 03.06.12 //CCNG160		EQU	$
;// 03.06.12 //		LDA	<WORK4
;// 03.06.12 //		STA	>CGWORK+000H,X
;// 03.06.12 //		INX
;// 03.06.12 //		INX
;// 03.06.12 //		CPX	#001B0H
;// 03.06.12 //		BCC	CCNG100		; ken CG. ?
;// 03.06.12 //;					; no
;// 03.06.12 //		BNE	CCNG240
;// 03.06.12 //;
;// 03.06.12 //		TXA
;// 03.06.12 //		CLC
;// 03.06.12 //		ADC	#00010H
;// 03.06.12 //		TAX
;// 03.06.12 //CCNG240		EQU	$
;// 03.06.12 //		CPX	#001E0H
;// 03.06.12 //		BNE	CCNG100		; end ?
;// 03.06.12 //;					; yes
;
;
		LDA	>CGWORK+000H
		STA	<WORK4		; (WORK4) <-- change CG. data
;
		LDA	>CGRAM+000H
		AND	#0000000000011111B
		ASL	A
		ASL	A
		TAY			; (Y) <-- RED data
		LDA	(<DTBFWK),Y
		AND	<WORKC
		BNE	CCNG250		; CG. change ?
;					; yes
		LDA	<WORK4
;// 02.06.14 //		CLC
		ADC	<WORK6
		STA	<WORK4
CCNG250		EQU	$
		LDA	>CGRAM+000H
		AND	#0000001111100000B
		LSR	A
		LSR	A
		LSR	A
		TAY			; (Y) <-- GREEN data
		LDA	(<DTBFWK),Y
		AND	<WORKC
		BNE	CCNG260		; CG. change ?
;					; yes
		LDA	<WORK4
;// 02.06.14 //		CLC
		ADC	<WORK8
		STA	<WORK4
CCNG260		EQU	$
		LDA	>CGRAM+001H
		AND	#0000000001111100B
		TAY			; (Y) <-- BLUE data
		LDA	(<DTBFWK),Y
		AND	<WORKC
		BNE	CCNG270		; CG. change ?
;					; yes
		LDA	<WORK4
		CLC
		ADC	<WORKA
		STA	<WORK4
CCNG270		EQU	$
		LDA	<WORK4
		STA	>CGWORK+000H
;
;
		PLB			; (DBR) reset
;
		LDA	>CCNGFG
		BNE	CCNG390		; fade-out ?
;					; yes
		LDA	>CCNGCT
		INC	A
		STA	>CCNGCT
		CMP	>CCNGED
		BNE	CCNG380		; end ?
;					; yes
CCNG300		EQU	$
		LDA	>CCNGFG
		EOR	#00002H
		STA	>CCNGFG
		LDA	#00000H
		STA	>CCNGCT
;
		MEM8
		SEP	#00100000B	; memory 8bit mode
;
		INC	<JRSBPT		; CG. change end
CCNG380		EQU	$
		MEM8
		IDX8
		SEP	#00110000B	; memory,index 8bit mode
;
		INC	<CGVMAF		; CG. VMA flag on
		RTL
;
;
CCNG390		EQU	$
		LDA	>CCNGCT
		CMP	>CCNGED
		BEQ	CCNG300		; end ?
;					; no
		LDA	>CCNGCT
		DEC	A
		STA	>CCNGCT
;
		MEM8
		IDX8
		SEP	#00110000B	; memory,index 8bit mode
;
		INC	<CGVMAF		; CG. VMA flag on
		RTL
;
;
;
		MEM16
		IDX16
;************************************************************************
;*		CG. change sub.				(CCNGY00)	*
;************************************************************************
CCNGY00		EQU	$
		LDA	>CGWORK+000H,X
		STA	<WORK4		; (WORK4) <-- change CG. data
;
		LDA	>CGRAM+000H,X
		BEQ	CCNGY80		; CG. change ?
;					; yes
		AND	#0000000000011111B
		ASL	A
		ASL	A
		TAY			; (Y) <-- RED data
		LDA	(<DTBFWK),Y
		AND	<WORKC
		BNE	CCNGY20		; CG. change ?
;					; yes
		LDA	<WORK4
;// 02.06.14 //		CLC
		ADC	<WORK6
		STA	<WORK4
CCNGY20		EQU	$
		LDA	>CGRAM+000H,X
		AND	#0000001111100000B
		LSR	A
		LSR	A
		LSR	A
		TAY			; (Y) <-- GREEN data
		LDA	(<DTBFWK),Y
		AND	<WORKC
		BNE	CCNGY40		; CG. change ?
;					; yes
		LDA	<WORK4
;// 02.06.14 //		CLC
		ADC	<WORK8
		STA	<WORK4
CCNGY40		EQU	$
		LDA	>CGRAM+001H,X
		AND	#0000000001111100B
		TAY			; (Y) <-- BLUE data
		LDA	(<DTBFWK),Y
		AND	<WORKC
		BNE	CCNGY60		; CG. change ?
;					; yes
		LDA	<WORK4
		CLC
		ADC	<WORKA
		STA	<WORK4
CCNGY60		EQU	$
		LDA	<WORK4
		STA	>CGWORK+000H,X
CCNGY80		EQU	$
		INX
		INX
		CPX	#001B0H
		BCC	CCNGY00		; ken CG. ?
;					; no
		BNE	CCNGY90
;
		TXA
		CLC
		ADC	#00010H
		TAX
CCNGY90		EQU	$
		CPX	#001E0H
		BNE	CCNGY00		; end ?
;					; yes
		RTS
