;*********************************************************************
;	mario kart << move camera >>
;					Programed by H.Yajima
;*********************************************************************
		INCLUDE	../../SFX/RP5C77
		INCLUDE	../../SFX/RP5A22
		INCLUDE	../../DSP/D77C25
		INCLUDE	../../../kimura/join/work.def
		INCLUDE	../../../kimura/join/buffer.def
		INCLUDE	../DEF/object.def
;----------------------------------------------------------------------
		GLB	Init_camera
		GLB	Ending_camera
		GLB	Stop_camera,Winner_camera,TV_camera
		EXT	Camera_Q,Limit_camera2
		EXT	Stop_kartsound
;----------------------------------------------------------------------
		COMN
work		DS	2
;----------------------------------------------------------------------
goalin_camera	EQU	camera_value+00
goalin_offset	EQU	camera_value+04
goalin_timer	EQU	camera_value+08
;----------------------------------------------------------------------
;		d16
;
;
;
;
;----------------------------------------------------------------------
		EXTEND
objdata	SECT	REL
		mem16
		idx16
;*********************************************************************
;		goal in camera
;*********************************************************************
Init_camera
		LDA	#1000H
		STA	!p1_index
		LDA	#1100H
		STA	!p2_index
		STZ	!goalin_camera+0
		STZ	!goalin_camera+2
		STZ	!goalin_offset+0
		STZ	!goalin_offset+2
		LDA	#0FFFFH
		STA	!TV_no
		STZ	!TV_wait
		STZ	!camera_FG+0
		STZ	!camera_FG+2
		RTS
;----------------------------------------------------------------------
;*********************************************************************
;		2 - 7  set camera 
;*********************************************************************
Stop_camera	LDX	<screen_register
;- - - - - - - - - - - - fedcba9876543210 - - - - - - - - - 
		LDA	#0011111111111111B
		AND	<camera_control,X
		STA	<camera_control,X
		JMP	Stop_kartsound	; エンジンカット
;*********************************************************************
;		1 set camera 
;*********************************************************************
Ending_camera
		LDX	<screen_register
		LDA	<camera_control,X	;
		ORA	#08000H
		AND	#080FFH
		STA	<camera_control,X
		LDA	#ON_comp
		STA	!_flag+player_r0
		STA	!_flag+player_r1
		clc
		lda	#0080h
		adc	<camera_direction,x
		sta	<camera_direction,x
		RTL

;*********************************************************************
;		1 set camera 
;*********************************************************************
Winner_camera
;- - - - - - - - - - - - - - - - - - - - - - - - -
;カメラをプレイヤーの回転と切り離す		
;- - - - - - - - - - - - - - - - - - - - - - - - -
		LDX	<screen_register
		LDA	<camera_control,X	;
		ORA	#08000H
		AND	#080FFH
		STA	<camera_control,X
;- - - - - - - - - - - - - - - - - - - - - - - - -
;カメラをプレイヤーの正面向きまで回す
;- - - - - - - - - - - - - - - - - - - - - - - - -
		LDY	<camera_index,X		;
		LDA	!kart_direction,y
		CLC
		ADC	!goalin_offset,X
		STA	<camera_direction,X
;- - - - - - - - - - - - - - - - - - - - - - - - -
;完了？
;- - - - - - - - - - - - - - - - - - - - - - - - -
		LDA	!goalin_offset,X
		CMP	#8000H
		BEQ	winner$
		CLC
		ADC	#0200H
		STA	!goalin_offset,X
		CLC
		BRA	exit$
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;完了
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
winner$		LDY	<player_index,X
		BMI	exit$

		lda	#4000h
		and	<kart_status,x
		sta	<kart_status,x

		LDA	!_sunder_timer,y
		BNE	winer_exit$
		LDA	<frame_counter
		AND	#011111B
		BEQ	winer_exit$
		TYA
		CLC
		ADC	<screen_register
		TAX
		LDA	#8000H
		ORA	<_kart_char_A,X
		STA	<_kart_char_A,X
winer_exit$	SEC
exit$		RTL
;
;*********************************************************************
;		ending set camera 
;*********************************************************************
TV_camera	RTL
;---------------------------------------------------------------------
		END
