       
;********************* maped3.asm *******************;
				include 	label
				include		label_1
				include		../join/work.def
;--------------------------------------------------------
				ext			OAM2,MSB2,HDMADAT10,YAKI_NO,SELECTDAT1,HDMADAT11
				ext			PTADAT,test_data,save_numb2
				ext			CG1_SET2,NMI_select
				ext			MAPCNT_SET,MENUDAT1,SELECTDAT2
				ext			S.L_PLACE2,FADEIN_SET,SUM_CHECK
				ext			HDMADAT21,HDMADAT31,HDMADAT41,BTTLE_SET
				ext			BATTLE_ERASE,BATTLE_SAVE,BATTLE_LOAD
;
				ext			KASOL_FLASH,NOW_DSP,HDMADAT51,Trigger_sound_1
;
				glb			hdma,loop78
;
				glb			INI_SET1,BUFF_SET1,Z_SET11
				glb			SC_SET1,OBJ_SET1,OAM_SET11,COWD_SET1
;
				glb			TRG_set1,POSI_MOVE11,POSDSP_SET11,YAKDAT_SET1
				glb			ERASE_SET11,MODECHG_SET1,YAKUSCT_SET1,HOUKOU_SET1
				glb			YAKIDSP_SET1,S.LMODE_SET1,SAVE_SET1,MENU_SET1
				glb			SAVE_CHK1,LOAD_SET1,CLEAR_SET1,DAT_SET
;
				glb			NMI_SET1
dos_set			equ			90h
;---------------------------------------
		extend
;----------------------------------------
editer      sect    rel		
;-----------------------------------------------
			mem8
			idx8
;*****************************************;
;	NMI wari komi.			  ;
;*****************************************;
NMI_SET1		equ		$
;								(HDMA)
hdma	lda		#00000001b	;H_DMA pramater. 1address
		sta		DMA_2
;
		lda		#00100110b	;H_DMA Bbus.to2126h
		sta		DMB_2
;
		lda		#00000000b	;H_DMA Abus_l from 1000h
		sta		DMA_l2
;
		lda		#00010000b
		sta		DMA_h2
;
		lda		#00000000b
		sta		DMA_b2
;
		stz		4315h
		stz		4316h
		lda		#10h
		sta		4317h
;
		lda		#00000000b	;H_DMA pramater. 1address
		sta		DMA_3
;
		lda		#00000000b	;H_DMA Bbus.to2100h
		sta		DMB_3
;
		lda		#00000000b	;H_DMA Abus_l from 1100h
		sta		DMA_l3
;
		lda		#00010001b
		sta		DMA_h3
;
		lda		#00000000b
		sta		DMA_b3
;
		stz		4325h
		stz		4326h
		lda		#10h
		sta		4327h
;
;
		lda		#00000011b	;H_DMA pramater. 1address
		sta		DMA_4
;
		lda		#00001101b	;H_DMA Bbus.to210dh
		sta		DMB_4
;
		lda		#00000000b	;H_DMA Abus_l from 1200h
		sta		DMA_l4
;
		lda		#00010010b
		sta		DMA_h4
;
		lda		#00000000b
		sta		DMA_b4
;
		stz		4335h
		stz		4336h
		lda		#10h
		sta		4337h

;
		lda		#00000010b	;H_DMA pramater. 1address
		sta		DMA_5
;
		lda		#00011011b	;H_DMA Bbus.to211bh
		sta		DMB_5
;
		lda		#00000000b	;H_DMA Abus_l from 1300h
		sta		DMA_l5
;
		lda		#00010011b
		sta		DMA_h5
;
		lda		#00000000b
		sta		DMA_b5
;
		stz		4345h
		stz		4346h
		lda		#10h
		sta		4347h
;
;
		lda		#00000010b	;H_DMA pramater. 1address
		sta		DMA_6
;
		lda		#00011110b	;H_DMA Bbus.to211eh
		sta		DMB_6
;
		lda		#00000000b	;H_DMA Abus_l from 1400h
		sta		DMA_l6
;
		lda		#00010100b
		sta		DMA_h6
;
		lda		#00000000b
		sta		DMA_b6
;
		stz		4355h
		stz		4356h
		lda		#10h
		sta		4357h
;
		lda		#00000001b	;H_DMA pramater. 1address
		sta		DMA_7
;
		lda		#00100110b	;H_DMA Bbus.to2126h
		sta		DMB_7
;
		lda		#00000000b	;H_DMA Abus_l from 1500h
		sta		DMA_l7
;
		lda		#00010101b
		sta		DMA_h7
;
		lda		#00000000b
		sta		DMA_b7
;
		stz		4365h
		stz		4366h
		lda		#10h
		sta		4367h
;

		lda		hdmsw;#00000000b	;H_DMA on.
		sta		Hdmaen
;-----------------------------------------------

;-------------------------------------------
;(KAKIKAE DMA)
;
kakikae		lda		yakiflg
			cmp		#01h
			bne		ERSEDMA	
;------------------------------
	        lda 	#00h
    	    sta    	VMAinc
;
setyki    	lda		bgaddl;#00000000b	;Vram adrr low.
		    sta	    VMAaddl
		    lda		bgaddh;#00000000b	;Vram adrr hi.
		    sta	    VMAaddh
;
			idx16
			mem8
			rep		#00010000b
;
			ldy		#0
	    	ldx		yakicnt				;character data.
loop12		lda		>7f0000h,x
			cmp		#0ffh
			bne		Set_Unit
;
			mem16
			rep		#00100000b
			tya
			inc		a
			clc
			adc		bgaddl
			sta		VMAaddl
			mem8
			sep		#00100000b
			jmp		No_set_unit
;
Set_Unit	lda     >7f0000h,x
			sta		VMAdatal
No_set_unit	inx
			iny
			stx		yakicnt
			cpy		witcnt		
			bne		loop12
;
			lda		dmacnt
			clc
			adc		#01h
			cmp		lthcnt
			beq		owari_8
			sta		dmacnt
;
			lda		bgaddl
			clc
			adc		#80h
			sta		bgaddl
;
			lda		bgaddh
			adc		#0
			sta		bgaddh
			jmp		setyki

owari_8		stz		yakiflg
			stz		yakicnt
			stz		dmacnt
			lda		bgadd
			sta		bgaddl
			lda		bgadd1
			sta		bgaddh 
;
			idx8
			mem8
			sep		#00010000b
;-------------------------------------------
;(ERASE_DMA)
;
ERSEDMA		equ		$
			lda		eraseflg
			cmp		#01h
			bne		sccset	
;------------------------------
	        lda 	#00h
    	    sta    	VMAinc
;
setyki1    	lda		bgaddl				;Vram adrr low.
		    sta	    VMAaddl
		    lda		bgaddh				;Vram adrr hi.
		    sta	    VMAaddh
;
			idx16
			mem8
			rep		#00010000b
;
			ldy		#0
	    	ldx		adress				;character data.
loop13		lda		>7f4000h,x
			sta		VMAdatal
			inx
			iny
			stx		adress
			cpy		witcnt		
			bne		loop13
;
			lda		dmacnt
			clc
			adc		#01h
			cmp		lthcnt
			beq		owari_9
			sta		dmacnt
;
			lda		bgaddl
			clc
			adc		#80h
			sta		bgaddl
			sta		adress
;
			lda		bgaddh
			adc		#0
			sta		bgaddh
			sta		adress+1
			jmp		setyki1

owari_9		stz		eraseflg
			stz		dmacnt
			lda		bgadd
			sta		adress
			sta		bgaddl
			lda		bgadd1
			sta		bgaddh 
			sta		adress+1
;
			idx8
			mem8
			sep		#00010000b
;-------------------------------------------
;(SCLLOR SET)
;
sccset;		lda		scch		;BG1 scroll set:low
	;		sta		BG1hofs
;
;			lda		scch+1		;BG1 scroll set:Hi
;			sta		BG1hofs
;
;			lda		sccv
;			sta		BG1vofs
;
;			lda		sccv+1
;			sta		BG1vofs
;-------------------------------------------
;(MATRIX)
;	lda		Mrx_al
;	sta		M7a		;Matrix_a low.
;	lda     Mrx_a
;	sta		M7a		;Matrix_a hi.
;
;	lda		Mrx_dl
;	sta     M7d		;Matrix_d low.
;	lda		Mrx_d
;	sta		M7d		;Matrix_d hi.
;
	lda		#0
	sta		M7b		;Matrix_b low.
	lda		#0
	sta		M7b		;Matrix_b hi.
;
	lda		#0
	sta		M7c		;Matrix_c low.
	lda		#0
	sta	  	M7c		;Matrix_c hi.
;
;-------------------------------------------
;(BALNKING SET)
			lda		blankck
			sta		Inidisp
;-------------------------------------------
;(BUTTON READ)
;
loop78		lda		4212h
			and		#01h		
			bne		loop78
;
			lda  	Joy1l 		;control 1
			sta		button
			lda		Joy1h
			sta		button+1
;
			lda	 	Joy2l		;control 2
			lda  	Joy2h
; 	
			lda  	Joy3l 
			lda		Joy3h
;
			lda  	Joy4l 
			lda		Joy4h
			rts
;


;---------------------------------------------------
;===================================================
;***************************************************
;			SUB ROUTINE
;***************************************************
;===================================================
;
;****************************************;
;			INICHIAL SET		   ;
;****************************************;
INI_SET1	equ		$
  			stz	OBJsel
			stz	OAMaddl
			stz	OAMaddh
			stz	BGmode
			stz	Mozaiku
 			stz	BG1sc
			stz	BG2sc
			stz	BG3sc
			stz	BG4sc
 			stz	BG12nba
			stz	BG34nba
;
			stz	BG1hofs
			stz	BG1hofs	
			stz	BG1vofs
			stz	BG1vofs
;
			stz	BG2hofs
			stz	BG2hofs
			stz	BG2vofs
			stz	BG2vofs
;
			stz	BG3hofs
			stz	BG3hofs
			stz	BG3vofs
			stz	BG3vofs
;
			stz	BG4hofs
			stz	BG4hofs
			stz	BG4vofs
			stz	BG4vofs
;
			lda	#80h
			sta	VMAinc
;
			stz	VMAaddl
			stz	VMAaddh
;
			lda	#11000000b
			sta	M7sel
;
			stz	M7a
			lda #01h
			sta	M7a
			stz	M7b
			stz	M7b
			stz	M7c
			stz	M7c
			stz	M7d
			lda #01h	
			sta M7d
			stz	M7x
			stz	M7x
			stz	M7y
			stz	M7y
;
   			stz	CGadd
;
			lda	#00000000b	
			sta	W12sel
;
			stz	W34sel
;
			lda	#10100000b
			sta	WOBJsel
;
			stz	Wh0
			stz	Wh1
			stz	Wh2
			stz	Wh3
			stz	WBGlog
			stz	WOBJlog
			stz	TM
			stz	TS
;
			lda	#00000000b
			sta	TMW
;
			lda	#00010000b
			sta	CGswsel
;
			lda	#10110111b
			sta	CGaddsub
;
			lda	#0e7h
			sta	Coldata
;
			stz	Setini
;
			lda	#00100001b
			sta	NMItimen
;
			lda	#0ffh
			sta	Wrio
;
			stz	Wrmpya
			stz	Wrmpyb
			stz	Wrdivl
			stz	Wrdivh
			stz	Wrdivb
			stz	Htimel
			stz	Htimeh
			lda	#80h
			sta	Vtimel
			stz	Vtimeh
			stz	Mdmaen
			stz	Hdmaen
			stz	Memsel
;
			lda	#10001111b
			sta	Inidisp
;
			lda	#00000111b
			sta	BGmode
;
			lda	#00000000b
			sta	BG1sc
;
 			lda	#00000000b
			sta	BG12nba
;
			lda	#00010001b
			sta	TM
;	
			lda	#00000000b	
			sta	VMAinc
;
			lda	#00000010b		;4000h
			sta	OBJsel
;		
			lda	#00000000b
			sta	Setini
;----------------------------------------
										;::(WORK INICHAL)
			ldx		#0
			lda		#0
loop_605	sta		180h,x
			inx
			cpx		#80h
			bne		loop_605
;
			lda		#00111110b
			sta		hdmsw
;
			lda     #06h
			sta		bgaddh
			sta		bgadd1
			sta		adress+1
			sta		bufadd+1
;
			lda		#10h
			sta		bgadd
			sta		bgaddl
			sta		adress
			sta		bufadd
;
			lda		#15h
			sta		trg_check
;
			lda		#01
			sta		Mrx_a
			sta		Mrx_d
;
			lda		#01
			sta		<dos_set
			stz		<dos_set+1
;--------------------------------
			idx16
			mem16
			rep		#00110000b
			lda		#0080h
    		sta		posdsp_x
;
			lda		#0060h
			sta		posdsp_y
			idx8
			mem8
			sep		#00110000b
			rts
;****************************************
;			ZERO SET	from 7f8000h
;****************************************
Z_SET11		equ		$
			idx16
			mem8
			rep		#00010000b
			ldx		#0
			lda		#0
loop_20		sta		>7f8000h,x
			inx
			cpx		#1400h
			bne		loop_20
			idx8
			mem8
			sep		#00010000b
;
			rts
;
;****************************************
;			BUFFER_SET to 7F4000h(SC data)
;****************************************
BUFF_SET1	equ		$
;
			idx16
			rep		#00010000b
			ldx		#0
loop_buff	lda		>7f0000h,x			
			sta		>7f4000h,x
			inx
			cpx		#4000h
			bne		loop_buff
;
			idx8
			mem8	
			sep		#00010000b
			rts
;----------------------------------
;*****************************************
;			SC TENSOU
;*****************************************
SC_SET1		equ		$
	        lda 	#00h
    	    sta    	VMAinc
; 
	    	lda		#00000000b	;Vram adrr low.
		    sta	    VMAaddl
		    lda		#00000000b	;Vram adrr hi.
		    sta	    VMAaddh
;
			idx16
			mem8
			rep		#00010000b
	    	ldx		#0				;character data.
loop1		lda		>7f4000h,x
			sta		VMAdatal
			inx
			cpx		#4000h		;4000? :no-->lopp1.
			bne		loop1
; 
			idx8		        ;8bit mode.
			mem8
			sep		#00010000b
			rts
;---------------------------------------------
;***************************************
;			OBJ CAHRACTER TENSOU
;***************************************
OBJ_SET1		equ		$
			lda		#80h
			sta		VMAinc
;

			lda		#00000000b		;Vram address set.
			sta		VMAaddl			;low.
			lda		#01000000b
			sta		VMAaddh			;hi.
;
			idx16					;16bit mode.
			mem16
			rep		#00110000b
;
			ldx		#0
loop10		lda		>99800h,x		;data tensou.
			sta		VMAdatal
			inx
			inx
			cpx		#1000h
			bne		loop10
;
			ldx		#0
loop11		lda		>9a800h,x		;data tensou.
			sta		VMAdatal
			inx
			inx
			cpx		#1000h
			bne		loop11
;
			idx8		        ;8bit mode.
			mem8
			sep		#00110000b
;
			rts
;
;***************************************
;			OAM SET
;***************************************
OAM_SET11		equ		$
			idx16
 			mem8
			rep		#00010000b
;  
			ldy		#000h
hhh			lda		#080h		 
			sta		oamdat,y
			iny
			cpy		#200h
			bne		hhh
;
			ldy		#00h
oam_loop	lda		#055h
			sta		msbdat,y
			iny
			cpy		#20h
			bne		oam_loop
;--------------------------------
			ldy		#00h
eee			lda		OAM2,y		
			cmp		#0ffh
			beq		msbset
			sta		oamdat,y
			iny
			jmp		eee
;--------------------------------
msbset		sep		#00010000b
 			mem8
			idx8

			ldy		#00h
loop19		lda		MSB2,y
			sta		msbdat,y
			iny		
			cpy		#20h
			bne		loop19
;
			rts
;
;

;*********************************************
;			COLOR WIND SET & HDMA DATA SET
;*********************************************
COWD_SET1	equ		$
			ldx		#0
loop_8		lda		HDMADAT10,x
			sta		cwiddat,x
			inx
			cpx		#13h
			bne		loop_8
;
			ldx		#0
loop_9		lda		HDMADAT11,x
			sta		cwiddat1,x
			inx
			cpx		#07h
			bne		loop_9
;
			ldx		#0
loop_928	lda		HDMADAT21,x
			sta		cwiddat2,x
			inx
			cpx		#0bh
			bne		loop_928
;
			ldx		#0
loop_929	lda		HDMADAT31,x
			sta		cwiddat3,x
			inx
			cpx		#07h
			bne		loop_929
;
			ldx		#0
loop_919	lda		HDMADAT41,x
			sta		cwiddat4,x
			inx
			cpx		#07h
			bne		loop_919
;
			ldx		#0
loop_918	lda		HDMADAT51,x
			sta		cwiddat5,x
			inx
			cpx		#0ah
			bne		loop_918


			rts
		
;======================================================
;******************************************************
;			MAIN ROUTINE
;******************************************************
;======================================================
;
;
;**************************************
;			TRG_SET
;**************************************
TRG_set1	equ		$
		;
		lda		button			;button trger set.
		eor		bak_button
		and		button
		sta		trg_button
		lda		button
		sta		bak_button
;
;
		lda		button+1		;button1 trger set.
		eor		bak_button1
		and		button+1
		sta		trg_button1
		lda		button+1
		sta		bak_button1
		rts
;
;*****************************************
;			POSITION MOVE
;*****************************************
POSI_MOVE11	equ		$
			lda		modeflg
			cmp		#01
			beq     owari_15
;-------------------------------
			lda		zoom_flg		;zoom?:yes-->owari_15
			cmp		#01
			beq		owari_15
;--------------------------------
			lda		slectflg		;modeB?:yes-->owari_15
			cmp		#01h
			beq		owari_15
;
;=========================================
;(AUTO SWICH SET)
			lda		button+1		;tenkey check.
			and		#00001111b
			beq		zcnt			;push key? :no-->zcnt.
;--------------------------------
			lda		trgcnt			;push counter.
			beq		add			;0 ? :yes-->add1.
			clc
			adc		#01h
			cmp		trg_check
			beq		sub1			;12 ? :yes-->sub15.
			sta		trgcnt
owari_15	rts
;--------------------------------
setbtn		lda		button+1
			cmp		#02h
			beq		lftmov1
;
			cmp		#01h
			beq		ritmov1
;
			cmp		#08h
			beq		upmov1
;
			cmp		#04h
			beq		dwnmov
;
			cmp		#05
			beq		d_rit
;
			cmp		#06
			beq		d_lft
;
			cmp		#09
			beq		u_rit
;
			cmp		#0ah
			beq		u_lft
			rts
;--------------------------------
add			lda		trgcnt			;counter +1 set.
			clc
			adc		#01h
			sta		trgcnt
			jmp		setbtn
;
sub1		lda		#10h			;counter 10 set.
			sta		trgcnt
			jmp		setbtn
;
zcnt		stz		trgcnt			;counter zero set.
			stz		sclcnt
			lda		#14h
			sta		trg_check
			rts
;=========================================
;								(NANAME SCROLL SET)
d_rit		lda		button
			cmp		#40h
			bne		owari_15
;
			JSR		ritscll
			JSR		dwnscll
			rts
;
d_lft		lda		button
			cmp		#40h
			bne		owari_15
;
			JSR		dwnscll
			JSR		lftscll
			rts
;
u_rit		lda		button
			cmp		#40h
			bne		owari_15
;
			JSR		upscll
			JSR		ritscll
			rts
;
u_lft		lda		button
			cmp		#40h
			bne		owari_911
;
			JSR		upscll
			JSR		lftscll
owari_911	rts
;---------------------------------
lftmov1		jmp		lftmov
ritmov1		jmp		ritmov
upmov1		jmp		upmov
;---------------------------------
dwnmov		lda		button
			cmp		#40h
			beq		dwnscll0
;
			lda		oamdat+1		;Yposition up.
			clc
			adc		#08h
			cmp		#068h
			beq		dwnscll0
			sta		oamdat+1
;
			ldx		#91h
			lda		oamdat,x		;Yposition up.
			clc
			adc		#01h
			sta		oamdat,x
;
			lda		bgadd			;address set.
			clc
			adc		#80h
			sta		bgadd
			sta     bgaddl
			sta		adress
			sta		bufadd
;
			lda		bgadd1
			adc		#0
			sta		bgadd1
			sta     bgaddh
			sta		adress+1
			sta     bufadd+1
			jsr		posyadc			;kasoru position check.
			jmp		owari_1
dwnscll0	jmp		dwnscll1
;----------------------------------------
upmov		lda		button
			cmp		#40h
			beq		upscll1
;
			lda     oamdat+1		;Yposition down.
			sec
			sbc		#08h
			cmp		#28h
			beq		upscll1
			sta		oamdat+1
;
			ldx		#91h
			lda		oamdat,x		;Yposition up.
			sec
			sbc		#01h
			sta		oamdat,x
;
			lda		bgadd			;address set.
			sec
			sbc		#80h
			sta		bgadd
			sta     bgaddl
			sta		adress
			sta     bufadd
;
			lda		bgadd1
			sbc		#0
			sta		bgadd1
			sta     bgaddh
			sta     bufadd+1
			sta		adress+1
			jsr		posysbc			;kasoru position check.
			jmp     owari_1
;-----------------------------------------
dwnscll1    jmp     dwnscll2
upscll1		jmp		upscll2
;-----------------------------------------
;
ritmov		lda		button
			cmp		#40h
			beq		ritscll1
;
			lda		oamdat			;Xposition right.
			clc
			adc		#08h
			cmp		#0c8h
			beq		ritscll1
			sta		oamdat
;
			lda		oam_place2
			clc
			adc		#080h
			sta		oam_place2
;
			ldx		#90h
			lda		oamdat,x		;Yposition up.
			adc		#1
			sta		oamdat,x
;
			lda		bgadd			;address set.
			clc
			adc		#01h
			sta		bgadd
			sta     bgaddl
			sta		adress
			sta     bufadd
;
			lda		bgadd1
			adc		#0
			sta		bgadd1
			sta     bgaddh
			sta		adress+1
			sta     bufadd+1
			jsr		posxadc			;kasoru position check.
			jmp     owari_1
;----------------------------------------
dwnscll2	jmp		dwnscll3
upscll2     jmp     upscll
ritscll1    jmp     ritscll
;----------------------------------------
lftmov		lda		button
			cmp		#40h
			beq		lftscll1
;
			lda		oamdat			;Xposition left.
			sec
			sbc		#08h
			cmp		#38h
			beq		lftscll1
 			sta     oamdat
;
			lda		oam_place2
			sec
			sbc		#080h
			sta		oam_place2
;
			ldx		#90h
			lda		oamdat,x		;Yposition up.
			sbc		#1
			sta		oamdat,x
;
			lda		bgadd			;address set.
			sec
			sbc		#01h
			sta		bgadd
			sta     bgaddl
			sta		adress
			sta     bufadd
;
			lda		bgadd1
			sbc		#0
			sta		bgadd1
			sta     bgaddh
			sta		adress+1
			sta     bufadd+1
			jsr		posxsbc			;kasoru position check.
owari_1		rts			
;-----------------------------------------
dwnscll3	jmp		dwnscll
lftscll1	jmp		lftscll
;-----------------------------------------
;									;(SCLLOR SET)
dwnscll		idx16
			mem16
			rep		#00110000b
;
			lda		#014h			;auto swich counter.
			sta		trgcnt
;
set_sccv	lda		sccv			;sccroll counter set.
			clc
			adc		#0008h
			cmp		#03a0h
			beq		owari_3
			sta		sccv
			stz		sclcnt
;
			ldx		#03
			lda		cwiddat2,x
			clc
			adc		#0008h
			sta		cwiddat2,x
;
;
			lda		bgadd			;address set.
			clc
			adc		#80h
			sta		bgadd
			sta		bgaddl
			sta		adress
			sta     bufadd
			jsr     posyadc			;kasoru position set.
;
			idx8
			mem8
			sep		#00110000b
;
			lda		oam_place
			clc
			adc		#0b0h
			sta		oam_place
;
;
			ldx		#91h
			lda		oamdat,x		;Yposition up.
			adc		#0
			sta		oamdat,x
;
			lda		button
			cmp		#40h
			bne		set_check
			lda		#15h
			sta		trg_check
			jmp		owari_3
set_check	lda		#1bh
			sta		trg_check
			rts
;			
owari_3		idx8
			mem8
			sep		#00110000b			
			rts
;-----------------------------------
upscll		idx16
			mem16
			rep		#00110000b
;
			lda		#014h			;auto swich counter.
			sta		trgcnt
;
			lda		sccv			;sccroll counter set.
			sec
			sbc		#0008h
			cmp		#0ffc8h
			beq		owari_4
			sta		sccv
			stz     sclcnt
;
			ldx		#03
			lda		cwiddat2,x
			sec
			sbc		#0008h
			sta		cwiddat2,x
;

			lda		bgadd			;address set.
			sec
			sbc		#80h
			sta		bgadd
			sta		bgaddl
			sta		adress
			sta     bufadd
			jsr     posysbc			;kasoru position set.
;
			idx8
			mem8
			sep		#00110000b
;
			lda		oam_place1
			sec
			sbc		#0b0h
			sta		oam_place1
;
			ldx		#91h
			lda		oamdat,x		;Yposition up.
			sbc		#0
			sta		oamdat,x
;
			lda		button
			cmp		#40h
			bne		set_check1
			lda		#15h
			sta		trg_check
			jmp		owari_4
set_check1	lda		#1bh
			sta		trg_check
			rts
;			
owari_4		idx8
			mem8
			sep		#00110000b
			rts

;------------------------------------
ritscll		idx8
			mem16
			rep		#00100000b
;
			lda		#014h			;auto swich counter
			sta		trgcnt
;
			lda		scch			;sccroll counter set.
			clc
			adc		#0008h
			cmp		#0340h
			beq		owari_5
			sta		scch
			stz     sclcnt
;
			ldx		#01
			lda		cwiddat2,x
			clc
			adc		#0008h
			sta		cwiddat2,x
;
			lda		bgadd			;address set.
			clc
			adc		#01h
			sta		bgadd
			sta		bgaddl
			sta		adress
			sta     bufadd
			jsr    	posxadc			;kasoru position set.
;
			idx8
			mem8
			sep		#00110000b
;
			lda		oam_place2
			clc
			adc		#0d0h
			sta		oam_place2
;
			ldx		#90h
			lda		oamdat,x		;Yposition up.
			adc		#1
			sta		oamdat,x
;		
			lda		button
			cmp		#40h
			bne		set_check2
			lda		#15h
			sta		trg_check
			jmp		owari_5
set_check2	lda		#1bh
			sta		trg_check
			rts
;			
owari_5		idx8
			mem8
			sep		#00100000b
			rts
;------------------------------------
lftscll		idx8
			mem16
			rep		#00100000b
;
			lda		#014h			;auto swich counter.
			sta		trgcnt
;
			lda		scch			;sccroll counter set.
			sec
			sbc		#0008h
			cmp		#0ffb8h
			beq		owari_6
			sta		scch
			stz     sclcnt
;
			ldx		#01
			lda		cwiddat2,x
			sec
			sbc		#0008h
			sta		cwiddat2,x
;
			lda		bgadd			;address set.
			sec
			sbc		#01h
			sta		bgadd
			sta		bgaddl
			sta		adress
			sta     bufadd
			jsr     posxsbc			;kasoru position set.
;
			idx8
			mem8
			sep		#00110000b
;
			lda		oam_place3
			sec
			sbc		#0d0h
			sta		oam_place3
;

			ldx		#90h
			lda		oamdat,x		;Yposition up.
			sbc		#1
			sta		oamdat,x
;
			lda		button
			cmp		#40h
			bne		set_check3
			lda		#15h
			sta		trg_check
			jmp		owari_6
set_check3	lda		#1bh
			sta		trg_check
;---------------------------------------		
			rts
;			
owari_6		idx8
  			mem8
			sep		#00100000b
			rts
;--------------------------------------------
;									(KASORU POSITION SET)
posyadc		equ		$
			idx8
			mem8
			sep		#00110000b
			lda		posdsp_y
			clc
			adc		#08h
			sta		posdsp_y
			lda		posdsp_y+1
			adc		#0
			sta		posdsp_y+1
			rts
;
;
posysbc		equ		$
			idx8
			mem8
			sep		#00110000b
			lda		posdsp_y
			sec
			sbc		#08h
			sta		posdsp_y
			lda		posdsp_y+1
			sbc		#0
			sta		posdsp_y+1
			rts
;;
posxadc		equ		$
			idx8
			mem8
			sep		#00110000b
			lda		posdsp_x
			clc
			adc		#08h
			sta		posdsp_x
			lda		posdsp_x+1
			adc		#0
			sta		posdsp_x+1;
			rts
;
posxsbc		equ		$
			idx8
			mem8
			sep		#00110000b
			lda		posdsp_x
			sec
			sbc		#08h
			sta		posdsp_x
			lda		posdsp_x+1
			sbc		#0
		  	sta		posdsp_x+1
			rts
;
;*****************************************
;			ERASE CHARACTER
;*****************************************
ERASE_SET11		equ		$
			lda		modeflg
			cmp		#01
			beq     owari_18
;-------------------------------
			lda		zoom_flg		;zoom?:yes-->owari_18
			cmp		#01
			beq		owari_18
;-------------------------------
			lda		slectflg		;modeB?:yes-->owari_18
			cmp		#01h
			beq		owari_18
;------------------------------------
			lda		trg_button1	;button push check.
			cmp		#40h
			bne		owari_18
;------------------------------------
			lda		#01h			;flag set.
			sta		eraseflg
;-----------------------------------
;			lda		map_number			;battle map check.
;			cmp		#14h
;			bne		set_nomal1
;			JSR		BATTLE_ERASE
;			rts
;-------------------------------

set_nomal1	jsr		BUFERS_SET
;
			lda		erasedat		;patern data set.
			and		#11000000b
			lsr		a
			lsr		a
			lsr		a
			lsr		a
			lsr     a
			tay
			lda		PTADAT,y
			sta		witcnt
			iny
			lda     PTADAT,y
			sta		lthcnt
;
			mem16
			rep		#00100000b
			lda		#2ah
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b
owari_18	rts
;
;*****************************************
;			POSITION DISPLAY
;*****************************************
POSDSP_SET11	equ		$				;(X POSITION)
			idx8
			mem8
			sep		#00110000b
;
			lda		modeflg
			cmp		#01
			beq     owari_18
;-----------------------------------
			lda		zoom_flg		;zoom?:yes-->owari_14
			cmp		#01
			beq		owari_18
;--------------------------------
			lda		slectflg		;modeB?:yes-->owari_14
			cmp		#01h
			beq		owari_18
;------------------------------------
			idx8
			mem16
			rep		#00100000b	
;
			ldx		#0012h
			lda		posdsp_x
			lsr		a
			lsr		a
			lsr		a
			and		#000fh
			mem8
			sep		#00100000b
			sta		oamdat,x
;
			mem16
			rep		#00100000b
			ldx		#0eh
			lda		posdsp_x
			lsr		a
			lsr		a
			lsr		a
			and		#00f0h
			lsr     a
			lsr		a
			lsr		a
			lsr     a
			mem8
			sep		#00100000b

			sta		oamdat,x
			mem16
			rep		#00100000b

			ldx		#0ah
			lda		posdsp_x
			lsr		a
			lsr		a
			lsr     a
			and		#0f00h
			mem8
			sep		#00100000b

			sta		oamdat,x
			mem16
			rep		#00100000b

;--------------------------------
bbb		ldx		#22h			;(Y POSITION)
			lda		posdsp_y
			lsr		a
			lsr		a
			lsr     a
			and     #000fh
			mem8
			sep		#00100000b
			sta		oamdat,x
			mem16
			rep		#00100000b
;
			ldx		#1eh
			lda		posdsp_y
			lsr		a
			lsr		a
			lsr     a
			and     #00f0h
			lsr     a
			lsr		a
			lsr		a
			lsr     a
			mem8
			sep		#00100000b
			sta		oamdat,x
			mem16
			rep		#00100000b
;
			ldx		#1ah
			lda		posdsp_y
			and		#0f00h
			mem8
			sep		#00100000b

			sta		oamdat,x

;-------------------------------------
			idx16
			rep		#00010000b
			ldx		#12eh			;position display set.
			lda		posdsp_x
			and     #00001111b
			sta		oamdat,x
;
			ldx		#12ah
			lda		posdsp_x
			and		#11110000b
			lsr     a
			lsr		a
			lsr		a
			lsr     a
			sta		oamdat,x
;
			ldx		#126h
			lda		posdsp_x+1
			and		#00001111b
			sta		oamdat,x
;--------------------------------
			ldx		#13eh			;(Y POSITION)
			lda		posdsp_y		;position display set.
			and		#00001111b
			sta		oamdat,x
;;
			ldx		#13ah
			lda		posdsp_y
			and		#11110000b
			and     #11110000b
			lsr     a
			lsr		a
			lsr		a
			lsr     a
			sta		oamdat,x
;
			ldx		#136h
			lda		posdsp_y+1
			and		#00001111b
			sta		oamdat,x
;
			idx8
			sep		#00010000b
owari_14	rts
;;
;*****************************************
;			YAKUMONO DATA SET
;*****************************************
YAKDAT_SET1	equ		$
			lda		modeflg
			cmp		#01
			beq     owari_7
;-------------------------------
			lda		zoom_flg		;zoom?:yes-->owari_7
			cmp		#01
			beq		owari_7
;--------------------------------
			lda		slectflg		;modeB?:yes-->oeari_7
			cmp		#01h
			beq		owari_7
;------------------------------------
			lda		trg_button1	;button check.
			cmp		#80h
			bne		owari_7
;------------------------------------
			lda		#01h			;flag set.
			sta		yakiflg
;------------------------------------
DAT_SET		equ		$
;-------------------------------
;			lda		map_number			;battle map check.
;			cmp		#14h
;			bne		set_nomal
;			JSR		BTTLE_SET
;			rts
;-------------------------------
set_nomal	idx16
			mem16
			rep		#00110000b
			
			ldx		#0				;character data set.
;
			lda		#0000
			lda		yakidat		;(QUES,KINO,NIKO,FLW)
			and		#00111111b
;
Set_Buffer	asl		a
			tay
			lda		YAKI_NO,y
			tay
			mem8
			sep		#00100000b
loop_5		lda		!0,y
			sta		>7f0000h,x
			iny
			inx
			cpx		#0020h
			bne		loop_5
			idx8
			sep		#00010000b
;
;---------------------------------------------
									;(PATERN SET)
ptaset		lda		yakidat		;patern data set.
			and		#11000000b
			lsr		a
			lsr		a
			lsr		a
			lsr		a
			lsr     a
			tay
			lda		PTADAT,y
			sta		witcnt
			iny
			lda     PTADAT,y
			sta		lthcnt
;
			lda		modeflg
			cmp		#01
			beq		owari_7
;----------------------------------

			jsr		BUFF1_SET		
;
			mem16
			rep		#00100000b
			lda		#2bh
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b
	
owari_7		rts
;---------------------------------------------
;
;Water_Set	equ		$				;(WATER)
;			lda		#073h			;character data set.
;linset		sta		>7f0000h,x	
;			inx
;			cpx		#04
;			bne		linset
;			jmp		ptaset
;
;================================================
;************************************************
;			MODE B SET
;************************************************
;================================================
;
;
;*****************************************
;			MODE CHANGE SET
;*****************************************
MODECHG_SET1	equ		$
			lda		modeflg
			cmp		#01
			beq     owari_12
;-------------------------------
			lda		zoom_flg		;zoom?:yes-->owari_12
			cmp		#01
			beq		owari_12
;--------------------------------
			lda		trg_button1
			cmp		#20h
			bne		owari_12
;--------------------------------
			lda		slectflg		;flag check.
			cmp		#01h
			beq		flgzro
;
			lda		#01h			;flag set.
			sta		slectflg
;
			stz		CGswsel		
;
			ldx		#05				;message display set.
			lda		#05
			sta		msbdat,x
			lda		#0
loop_049	inx
			sta		msbdat,x
			cpx		#08
			bne		loop_049
;
			ldx		#0
			lda		#01
			sta		msbdat,x
			mem16
			rep		#00100000b
			lda		#24h
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b
owari_12	rts
;--------------------------------
flgzro		stz		slectflg		;flag set.
;
			lda		#10h
			sta		CGswsel
;
			ldx		#05				;erase message set.
			lda		#55h
loop_048	sta		msbdat,x
			inx	
			cpx		#09
			bne		loop_048
;
			ldx		#0
			stz		msbdat,x

;			jmp		owari_12
			mem16
			rep		#00100000b
			lda		#24h
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b
owari_0081	rts
;
;*****************************************
;			YAKUMONO SELECT SET
;*****************************************
YAKUSCT_SET1	equ		$
			lda		modeflg
			cmp		#01
			beq     owari_0081
;-------------------------------
			lda		zoom_flg		;zoom?:yes-->owari_13
			cmp		#01
			beq		owari_0081
;--------------------------------
			lda		slectflg		;modeB?:yes-->owari_13
			cmp		#01h
			bne		owari_0081
;------------------------------------
;=========================================
;(AUTO SWICH SET)
			lda		button+1		;tenkey check.
			and		#00001100b
			beq		zcnt11			;push key? :no-->zcnt.
;--------------------------------
			lda		trgcnt			;push counter.
			beq		add11			;0 ? :yes-->add1.
			clc
			adc		#01h
			cmp		#11h
			beq		sub11			;12 ? :yes-->sub15.
			sta		trgcnt
			rts
;--------------------------------
setbtn11	lda		button+1
			cmp		#08h
			beq		yakisbc
;
			cmp		#04h
			beq		yakiadd1
			rts
;--------------------------------
add11		lda		trgcnt			;counter +1 set.
			clc
			adc		#01h
			sta		trgcnt
			jmp		setbtn11
;
sub11		lda		#08h			;counter 10 set.
			sta		trgcnt
			jmp		setbtn11
;
zcnt11		stz		trgcnt			;counter zero set.
			rts
yakiadd1	jmp		yakiadd
;=========================================
yakisbc		lda		yakidat		;character select.
			sec
			sbc		#04h
;
			and		#00111100b
			cmp		#03ch
			beq		coin_set6
;
			cmp		#14h
			beq     jump_set
;
			cmp		#18h
			beq		jump_set1
;
			cmp		#1ch			;kabe
			beq		coin_set
;
			cmp		#20h			;kabe
			beq		coin_set1
			cmp		#24h			;kabe
			beq		coin_set2
			cmp		#28h			;kabe
			beq		coin_set3
			cmp		#2ch			;kabe
			beq		coin_set4
			cmp		#30h			;kabe
			beq		coin_set5
			cmp		#34h
			beq		coin_set6
;
			lda		yakidat
			and     #00011100b
			sec
			sbc		#04h			
			sta		yakidat
			jmp		owari_13
;----------------------------
;
jump_set	lda		#54h
			sta		yakidat
			jmp     owari_13
;
jump_set1	lda		#98h
			sta		yakidat
			jmp     owari_13
;
;
;
coin_set	lda		#0dch
			sta		yakidat
			jmp		owari_13	
coin_set1	lda		#0e0h
			sta		yakidat
			jmp		owari_13	
coin_set2	lda		#0e4h
			sta		yakidat
			jmp		owari_13	
coin_set3	lda		#0e8h
			sta		yakidat
			jmp		owari_13	
coin_set4	lda		#0ech
			sta		yakidat
			jmp     owari_13
coin_set5	lda		#0f0h
			sta		yakidat
			jmp		owari_13	
coin_set6	lda		#74h
			sta		yakidat
			jmp		owari_13	
;----------------------------
yakiadd		lda		yakidat		;character select.
			clc
			adc		#04h
;
			and		#00111100b
			cmp		#14h
			beq		jump_set
;
			cmp		#18h
			beq		jump_set1
;
			cmp		#1ch
			beq		coin_set		
;
			cmp		#20h			;kabe
			beq		coin_set1
			cmp		#24h			;kabe
			beq		coin_set2
			cmp		#28h			;kabe
			beq		coin_set3
			cmp		#2ch			;kabe
			beq		coin_set4
			cmp		#30h			;kabe
			beq		coin_set5
			cmp		#34h
			beq		coin_set6
;
			cmp		#038h			;owari
			beq		z_set
;
			lda		yakidat
			and     #00011100b
			clc
			adc		#04h
			sta		yakidat
;
owari_13	mem16
			rep		#00100000b
			lda		#2ch
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b
			rts
;-----------------------------
z_set		lda		yakidat
			and		#00000011b		
			sta		yakidat
			jmp		owari_13
;-----------------------------
			
;*****************************************
;			HOUKOU SELECT SET
;*****************************************
HOUKOU_SET1	equ		$
			lda		modeflg
			cmp		#01
			beq     owari_130
;--------------------------------
			lda		slectflg		;modeB?:yes-->owari_13
			cmp		#01h
			bne		owari_130
;------------------------------------
;			lda		yakidat
;			and		#00011100b
;			cmp		#18h
;			beq		owari_130
;=========================================
;(AUTO SWICH SET)
			lda		button+1		;tenkey check.
			and		#00000011b
			beq		zcnt110			;push key? :no-->zcnt.
;--------------------------------
			lda		trgcnt5			;push counter.
			beq		add110			;0 ? :yes-->add1.
			clc
			adc		#01h
			cmp		#11h
			beq		sub110			;12 ? :yes-->sub15.
			sta		trgcnt5
			rts
;--------------------------------
setbtn110	mem16
			rep		#00100000b
			lda		#2ch
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b
	
			lda		button+1
			cmp		#01h
			beq		houkousbc
;
			cmp		#02h
			beq		houkouadc
			rts
;--------------------------------
add110		lda		trgcnt5			;counter +1 set.
			clc
			adc		#01h
			sta		trgcnt5
			jmp		setbtn110
;
sub110		lda		#08h			;counter 10 set.
			sta		trgcnt5
			jmp		setbtn110
;
zcnt110		stz		trgcnt5		;counter zero set.
			rts

;========================================	
houkousbc	lda		yakidat	;character select.
			and     #00000011b
			sec
			sbc		#01
;
			cmp		#0ffh
			beq		thr_set1
;
			lda     yakidat
			sec
			sbc		#01
			sta		yakidat
	
			jmp		owari_130
;----------------------------
houkouadc	lda		yakidat		;character select.
			and		#00000011b
			clc
			adc		#01
;
			cmp		#04
			beq		jump00
;
			lda     yakidat
			clc
			adc		#01
			sta		yakidat
owari_130	rts
;-------------------------------
jump00		lda     yakidat
			and		#11111100b
			sta		yakidat
			rts
;
thr_set1	lda		yakidat
			and		#11111100b
			clc
			adc		#00000011b
			sta		yakidat
			rts
;*****************************************
;			YAKUMONO SELECT DISPLAY
;*****************************************
YAKIDSP_SET1	equ		$
			lda		modeflg
			cmp		#01
			beq     owari_130
;-------------------------------
			lda		zoom_flg		;zoom?:yes-->owari_13
			cmp		#01
			beq		owari_130
;--------------------------------
			lda		slectflg		;modeB?:yes-->owari_13
			cmp		#01h
			bne		owari_130
;------------------------------------
			ldx		#26h			;character name display.
			lda		yakidat
			and		#00111100b
			lsr		a
			lsr		a
			asl     a
			asl		a
			asl		a
			tay
loop_7		lda		SELECTDAT1,y
			sta		oamdat,x
			inx
			inx
			inx
			inx
			iny
			cpx		#3ah
			bne		loop_7
;
			lda		yakidat
			and		#00000011b
			tay
			lda		SELECTDAT2,y
			sta		oamdat,x
			rts			
;
;===================================================
;***************************************************
;			LOAD SAVE MODE
;***************************************************
;===================================================
;
;*****************************************
;			SAVE LOAD MODE SET
;*****************************************
S.LMODE_SET1	equ		$
			lda		slectflg		;modeB?:yes-->owari_16
			cmp		#01h
			beq		owari_24
;-------------------------------
			lda		zoom_flg		;zoom?:yes-->owari_13
			cmp		#01
			beq		owari_24
;--------------------------------
			lda		trg_button
			cmp		#10h
			bne		owari_24
;--------------------------------------
			lda		modeflg
			cmp		#01
			beq		cansel
;--------------------------------------
			mem16
			rep		#00100000b
			lda		#24h
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b
;
			lda		#01
			sta		modeflg	
;
			ldx		#26h
			lda		s.l_set
			asl		a
			asl		a
			asl		a
			tay
loop_26		lda		MENUDAT1,y
			sta		oamdat,x
			inx
			inx
			inx
			inx
			iny
			cpx		#3eh
			bne		loop_26
;
			ldx		#34h
			lda		#90h
			sta		oamdat,x
			ldx		#38h
			lda		#98h
			sta		oamdat,x

;
owari_24	rts
;------------------------------------------
cansel		stz		modeflg
;
			mem16
			rep		#00100000b
			lda		#24h
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b
;
			ldx		#26h			;character name display.1
			lda		yakidat
			and		#00111100b
			asl		a
			tay
loop_24		lda		SELECTDAT1,y
			sta		oamdat,x
			inx
			inx
			inx
			inx
			iny
			cpx		#3eh
			bne		loop_24
;;
			ldx		#34h
			lda		#98h
			sta		oamdat,x
			ldx		#38h
			lda		#0a0h
			sta		oamdat,x

;
			ldx		#0ah			;yes no erase.
			lda		#55h
			sta		msbdat,x
			inx
			lda		#15h
			sta		msbdat,x
;
			stz		save_flg
			ldx		#0a3h
			lda		#24h
loop_0931	sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#0afh
			bne		loop_0931
;
			lda		#28h
loop_0831	sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#0bfh
			bne		loop_0831
;
			lda		#3eh
			sta		hdmsw
owari_252	rts			
;
;*****************************************
;			MENU SELECT SET
;*****************************************
MENU_SET1	equ		$
			lda		modeflg
			cmp		#01
			bne		owari_252
;----------------------------------
;=========================================
;(AUTO SWICH SET)
			lda		button+1		;tenkey check.
			and		#10001100b
			beq		zcnt12			;push key? :no-->zcnt.
;--------------------------------
			lda		trgcnt			;push counter.
			beq		add12			;0 ? :yes-->add1.
			clc
			adc		#01h
			cmp		#11h
			beq		sub12			;12 ? :yes-->sub15.
			sta		trgcnt
			rts
;--------------------------------
setbtn12	lda		button+1
			cmp		#08h
			beq		sbcmen
;
			cmp		#04h
			beq		adcmen
			rts
;--------------------------------
add12		lda		trgcnt			;counter +1 set.
			clc
			adc		#01h
			sta		trgcnt
			jmp		setbtn12
;
sub12		lda		#08h			;counter 10 set.
			sta		trgcnt
			jmp		setbtn12
;
zcnt12		stz		trgcnt			;counter zero set.
			rts
;=========================================
adcmen		lda		s.l_set
			clc
			adc		#01
			cmp		#05
			beq		zero
			sta		s.l_set
			jmp		dispset
;
sbcmen		lda		s.l_set
			sec
			sbc		#01
			cmp		#0ffh
			beq		two
			sta		s.l_set
			jmp		dispset
;
two			lda		#04
			sta		s.l_set
			jmp		dispset
;
zero		stz		s.l_set
;----------------------------------
dispset		ldx		#26h
			lda		s.l_set
			asl		a
			asl		a
			asl		a
			tay
loop_23		lda		MENUDAT1,y
			sta		oamdat,x
			inx
			inx
			inx
			inx
			iny
			cpx		#3eh
			bne		loop_23
			ldx		#34h
			lda		#90h
			sta		oamdat,x
			ldx		#38h
			lda		#98h
			sta		oamdat,x

;
;--------------------------------
yes_noset	stz		save_flg
;
			ldx		#0a3h			;save "no" display set.
			lda		#24h
loop_0932	sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#0afh
			bne		loop_0932
;
			lda		#28h
loop_0832	sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#0bfh
			bne		loop_0832
;
			lda		s.l_set		;display check.
			cmp		#01
			bcc		owari_25
;
			ldx		#0ah			;yes no erase.
			lda		#55h
			sta		msbdat,x
			inx
			lda		#15h
			sta		msbdat,x
;			
			lda		#3eh
			sta		hdmsw
;
			mem16
			rep		#00100000b
			lda		#2ch
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b

owari_25	rts
;
;****************************************
;			SAVE CHECK
;****************************************
SAVE_CHK1	equ		$
			lda		modeflg
			cmp		#01
			bne		owari_25
;----------------------------------
			lda		s.l_set
			cmp		#02
			bcs		owari_25
;----------------------------------
;
			ldx		#0ah			;"yes,no" display set.
			lda		#0
			sta		msbdat,x
			inx
			lda		#10h
			sta		msbdat,x
;
			lda		#7eh
			sta		hdmsw
;-----------------------------------
			lda		trg_button1
			and		#00000011b
			beq		owari_25
;---------------------------------
			lda		save_flg
			cmp		#01h
			beq		n_save
;----------------------------------
y_save		lda		#01				;(SAVE--> YES.)
			sta		save_flg
;
			ldx		#0a3h
			lda		#28h
loop_097	sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#0afh
			bne		loop_097
;
			lda		#24h
loop_082	sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#0bfh
			bne		loop_082
			mem16
			rep		#00100000b
			lda		#2ch
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b

			rts
;----------------------------------
n_save		stz		save_flg		;(SAVE--> NO.)
			ldx		#0a3h
			lda		#24h
loop_093	sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#0afh
			bne		loop_093
;
			lda		#28h
loop_083	sta		oamdat,x
			inx
			inx
			inx
			inx
			cpx		#0bfh
			bne		loop_083
;
			mem16
			rep		#00100000b
			lda		#2ch
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b

owari_345	rts

;*****************************************
;			SAVE SET
;*****************************************
SAVE_SET1	equ		$
			lda		modeflg
			cmp		#01
			bne		owari_345
;----------------------------------
			lda		s.l_set
			bne		owari_345
;----------------------------------
;
			lda		save_disp
			bne		save_now
;
			lda		trg_button1
			cmp		#80h
			bne		owari_345
;-------------------------------------
			lda		save_flg
			cmp		#0
			beq		owari_345
;--------------------------------------
			ldx		#03				;now save display set.
			lda		#0
			sta     msbdat,x
			inx
			lda		#0
loop_27		sta		msbdat,x
			inx
			lda		#50h
			sta     msbdat,x
;
			lda		#01
			sta		save_disp
			rts
;-----------------------------------
										;save address set
save_now	stz		save_disp		
;-------------------------------
;			lda		map_number			;battle map check.
;			cmp		#14h
;			bne		set_noma3
;			JSR		BATTLE_SAVE
;			rts
;-------------------------------
set_noma3	equ		$
			lda		map_number
			asl		a
			tax
;
			idx16
			mem16
			rep		#00110000b
;
			lda		save_numb2,x
			tax
			lda		!0,x
			sta		<addr
;
			mem8
			sep		#00100000b
;
			lda		!2,x
			sta		<addr+2
;
;-----------------------------------
			idx8						;address offset set.
			sep		#00010000b
			lda		#0;s.l_set
			asl		a
			tay
			mem16
			rep		#00100000b
			lda		S.L_PLACE2,y
			sta		s.l_bup
			mem8
			sep		#00100000b
;-----------------------------------			
			ldy		s.l_bup				;FF(end) set.
			ldx		#0
			lda		#0ffh
loop_30		sta		[<addr],y
			iny
			inx
			cpx		#080h
			bne		loop_30
;-----------------------------------
			ldy		s.l_bup
			ldx		#0
setdat		lda		>7f8000h,x
			cmp		#0
			beq		jmpdat	
;
			inx
			inx
			inx
			lda		>7f8000h,x
			sta		[<addr],y
			iny
;
			dex
			dex
loop_22		lda		>7f8000h,x
			sta		[<addr],y
			inx
			iny
;
			lda		savecnt
			inc		a
			sta		savecnt
			cmp		#02
			bne		loop_22
			inx
			cpx		#0a0h
			beq		owari_22
			stz		savecnt
			jmp		setdat
;
jmpdat		inx
			inx
			inx
			inx
			cpx		#0a0h
			beq		owari_22
			jmp		setdat

owari_22	stz     savecnt
			idx8
			sep		#00010000b
;----------------------------------
;			JSR     SUM_CHECK
;__________________________________
			ldx		#03					;display erase set.
			lda		#40h
loop_281	sta		msbdat,x
			lda		#55h
			inx
			cpx		#06
			bne		loop_281
;--------------------------------
			mem16
			rep		#00100000b
			lda		#2bh
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b
owari_30	rts
;
;***************************************
;		LOAD SET
;***************************************
LOAD_SET1	equ		$
			lda		modeflg
			cmp		#01
			bne		owari_30
;----------------------------------
			lda		s.l_set
			cmp		#02
			bne		owari_30
;----------------------------------
			ldx		#01
			lda		cwiddat1,x
			cmp		#8fh
			beq		vramset
;----------------------------------
			lda		trg_button1
			cmp		#80h
			bne		owari_30
;-----------------------------------
;
			lda		#10001111b		;blanking on.
			sta		blankck
			ldx		#01
			sta		cwiddat1,x
			ldx		#05
			sta		cwiddat1,x
			rts
;------------------------------------
vramset;		lda		map_number			;battle map check.
;			cmp		#14h
;			bne		set_noma5
;			JSR		BATTLE_LOAD
;			stz     fade_mode       ;fade in set.
;			rts
;------------------------------------
set_noma5	lda		map_number			;(BANK & ADDRESS SET)
			asl		a
			tax
;
			idx16
			mem16
			rep		#00110000b
;
			lda		save_numb2,x
			tax
			lda		!0,x
			sta		<addr
;
			mem8
			sep		#00100000b
;
			lda		!2,x
			sta		<addr+2
;
;-----------------------------------	
			idx8
			sep		#00010000b		
			lda		s.l_set
			sec
			sbc		#02
			asl		a
			tay
			mem16
			rep		#00100000b
			lda		S.L_PLACE2,y
			sta		s.l_bup
;-----------------------------------	
			lda		#00000h
			mem8
			sep		#00100000b
;
	        lda 	#00h			;(VRAM INICHAL SET)
    	    sta    	VMAinc
; 
	    	lda		#0		;Vram adrr low.
		    sta	    VMAaddl
		    lda		#0		;Vram adrr hi.
		    sta	    VMAaddh
;
			idx16
			rep		#00010000b
;
	    	ldx		#0000h				;character data.
loop_31		lda		>7f4000h,x
			sta		VMAdatal
			inx
			cpx		#4000h					;4000? :no-->lopp1.
			bne		loop_31
;------------------------------------
			ldx		#0				;(7f8000H ZERO SET)
			lda		#0
loop_32		sta		>7f8000h,x
			inx
			cpx		#0a0h
			bne		loop_32
;-------------------------------------
			ldx		#0				;(from 70BANK to 7f8000H)
			ldy		s.l_bup
buff		lda		[<addr],y
			cmp		#0ffh
			beq		setvram
;	
			lda		#01
			sta		>7f8000h,x
			inx
			inx
			inx
			lda		[<addr],y
			sta		>7f8000h,x
			iny
			dex
			dex

;	
loop_34		lda		[<addr],y
			sta		>7f8000h,x
			iny
			inx
			lda		loadcnt
			inc		a
			sta     loadcnt
			cmp		#02
			bne		loop_34
			inx
			stz		loadcnt
			jmp		buff
;
;-------------------------------------
setvram		ldy		s.l_bup		;(VRAM SET)
			iny
			lda		[<addr],y
			cmp		#0ffh
			beq		owari_load		
			sta		vradd
			sta		vraddr

			iny
			lda     [<addr],y
			sta		vradd+1
			sta		vraddr+1
;
			dey
			dey		
			lda     [<addr],y
			sta		yakidat
			iny
			iny
			iny
			sty		s.l_bup
;
			jsr		DAT_SET
			idx16
			rep		#00010000b
;
setyki11   	lda		vraddr				;Vram adrr low.
		    sta	    VMAaddl
		    lda		vraddr+1			;Vram adrr hi.
		    sta	    VMAaddh
;
			ldy		#0
	    	ldx		yakicnt				;character data.
loop35		lda		>7f0000h,x
			cmp		#0ffh
			bne		Set_Unit_L
;
			mem16
			rep		#00100000b
			tya
			inc		a
			clc
			adc		vraddr
			sta		VMAaddl
			mem8
			sep		#00100000b
			jmp		No_unit_L
;
owari_load	jmp		owari_33
Set_Unit_L	sta		VMAdatal
No_unit_L	inx
			iny
			stx		yakicnt
			cpy		witcnt		
			bne		loop35
;
			lda		dmacnt
			clc
			adc		#01h
			cmp		lthcnt
			beq		owari_34
			sta		dmacnt
;
			lda		vraddr
			clc
			adc		#80h
			sta		vraddr
;
			lda		vraddr+1
			adc		#0
			sta		vraddr+1
			jmp		setyki11

owari_34	stz		yakiflg
			stz		yakicnt
			stz		dmacnt
			lda		vradd
			sta		vraddr
			lda		vradd+1
			sta		vraddr+1 
			jmp		setvram
;		
owari_33	stz		yakiflg
			stz		yakicnt
			stz		dmacnt
			stz     s.l_bup
			stz		yakidat
			lda		vradd
			sta		vraddr
			lda		vradd+1
			sta		vraddr+1 
		
			idx8		       		 ;8bit mode.
			mem8
			sep		#00010000b
;-------------------------------------
						
			lda		#0				;blanking off.
			sta		blankck
			ldx		#01
			sta		cwiddat1,x
			ldx		#05
			sta		cwiddat1,x

;
			stz		fade_mode		;fade in set.
			mem16
			rep		#00100000b
			lda		#2bh
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b
owari_39	rts
;
;*****************************************
;			CLEAR SET
;*****************************************
CLEAR_SET1	equ		$
			lda		modeflg
			cmp		#01
			bne		owari_39
;----------------------------------
			lda		s.l_set
			cmp		#04h
			bne		owari_39
;----------------------------------
			lda		blankck
			cmp		#8fh
			beq		vramset1
;----------------------------------
			lda		trg_button1
			cmp		#80h
			bne		owari_39
;-----------------------------------
			lda		#10001111b		;blanking on.
			sta		blankck;Inidisp
			ldx		#01
			sta		cwiddat1,x
			ldx		#05
			sta		cwiddat1,x
			rts
;
vramset1	lda		#00000001b
			sta		NMItimen
;-----------------------------------	
	        lda 	#00h			;(VRAM INICHAL SET)
    	    sta    	VMAinc
; 
	    	lda		#00000000b		;Vram adrr low.
		    sta	    VMAaddl
		    lda		#00000000b		;Vram adrr hi.
		    sta	    VMAaddh
;
			idx16
			mem8
			rep		#00010000b
	    	ldx		#0				;character data.
loop_37		lda		>7f4000h,x
			sta		VMAdatal
			inx
			cpx		#4000h			;4000? :no-->lopp1.
			bne		loop_37
;-------------------------------------
			idx8
			sep		#00010000b
;
	
			ldx		#0				;(7f8000H ZERO SET)
			lda		#0
loop_38		sta		>7f8000h,x
			inx
			cpx		#0a0h
			bne		loop_38
;-------------------------------------
			lda		#0		;blanking off.
			ldx		#01
			sta		cwiddat1,x
			ldx		#05
			sta		cwiddat1,x
			sta		blankck;Inidisp
;
			lda		#10000001b
			sta		NMItimen
;-----------------------------------	
			stz		fade_mode
			mem16
			rep		#00100000b
			lda		#2bh
			JSL		>Trigger_sound_1
			mem8
			sep		#00100000b

			rts			
;
;===================================================
;***********************************************
;			SUB*2 ROUTINE
;***********************************************
;===================================================
;
;*****************************************
;			1000h BUFFER SET INSERT DATA
;*****************************************
BUFF1_SET	equ		$
			idx8
			mem16
			rep		#00100000b
;----------------------------------
			ldx		#01h				;(SAME ADDRESS CHECK)
loop_39		lda		>7f8000h,x
			cmp		bgadd
			beq		owari_37			;same address?:yes-->owari_37
			inx
			inx
			inx
			inx
			cpx		#0a1h				;a1?:no-->loop_39
			bne		loop_39
;
			idx8
			mem8
			sep		#00100000b

;--------------------------------------
			ldx		#0					;(BG DATA SET TO 7f8000h)
flgck		lda		>7f8000h,x
			cmp		#0
			bne		adcx
;
			lda		#01
			sta		>7f8000h,x	
			inx
			lda		bgadd
			sta		>7f8000h,x
			inx
			lda		bgadd1
			sta		>7f8000h,x
			inx
yakiset1	lda		yakidat
			sta		>7f8000h,x
			rts
;
adcx		inx
			inx
			inx
			inx
			cpx		#0a0h
			beq		z_flg
			jmp		flgck
;
z_flg		stz		yakiflg
			rts		
;----------------------------------------
owari_37	idx8						;(BG CHANGE)
			mem8
			sep		#00110000b
;
			inx
			inx
			lda		>7f8000h,x
			cmp		yakidat
			beq		z_flg
			jmp		yakiset1
			rts
;*****************************************
;			ERASE DAT SET
;*****************************************
BUFERS_SET	equ		$
			idx8
			mem16
			rep		#00100000b
;---------------------------------
			ldx		#01h				;(SAME ADDRESS CHECK)
rechk		lda		>7f8000h,x
			cmp		bgadd
			beq		noset				;same address?:yes-->noset
			inx
			inx
			inx
			inx
			cpx		#0a1h
			beq		noers				;a1?:yes-->noers
			jmp		rechk		
;--------------------------------
noset		dex							;(ERASE BG SET)
			lda		#0
			sta		>7f8000h,x
			mem8
			sep		#00100000b
			inx
			inx
			inx
			lda		>7f8000h,x
			sta		erasedat
			dex
			lda		#0
			sta		>7f8000h,x
			inx
			sta     >7f8000h,x
owari_23	idx8
			mem8
			sep		#00100000b
			rts
;------------------------------------
noers   	mem8					;(NO ERASE SET)
			idx8
			sep		#00100000b
		    stz     eraseflg
			rts;jmp		owari_23
;
			END


