;-------------------------------------------------------
TITLE "Shimoji Cross Wind Landing Ver.0.1"
DESCRIPTION "Shimoji-shima Cross Wind Landing Practice Ver.0.1 By SAKI(YOICHI SAKEMOTO)"
;Created by Saki 1999/4/15
;-------------------------------------------------------
; Startup **********************************************
APL_SOUND=1
ADV_KEYS CLEAR
ONEXP_CLEAR
; Declaring variables gp郆[U[ϐ̐錾**********************************
;DECLARE N1_Key, N2_Key, N3_Key, N4_Key, N5_Key
;DECLARE N6_Key, N7_Key, N8_Key, N9_Key, N0_Key
;DECLARE YES_Key, NO_Key, CHANGE_Key
DECLARE YES_Key, NO_Key, QUIT_Key			;L[Ɋւϐ
DECLARE PROCESS,COUNT,STATUS,CHDG,TOKUTEN,ALART,AMIN,MIN;ADVRg[Ɏgpϐ(1)
DECLARE NAV_RAD						;ADVRg[Ɏgpϐ(2)
; Set Key variables   L[ϐ̐ݒ**********************************
;N1_key = KV("1")        				̓RgsŎgpĂ܂B
;N2_key = KV("2")        
;N3_key = KV("3")        
;N4_key = KV("4")        
;N5_key = KV("5")        
;N6_key = KV("6")        
;N7_key = KV("7")        
;N8_key = KV("8")        
;N9_key = KV("9")        
;N0_key = KV("0") 
;CHANGE_Key = KV(SHIFT "c")
YES_Key    = KV(SHIFT "y")				;MINIMUMł̒/qɎgp
NO_Key     = KV(SHIFT "n")				;MINIMUMł̒/qɎgp
QUIT_Key   = KV(SHIFT "q")				;ADV̒fɎgp
;
; Add Key variables   L[ϐ̒ǉ******************************************
;ADV_KEYS ADD, N1_Key, N2_Key, N3_Key, N4_Key, N5_Key
;ADV_KEYS ADD, N6_Key, N7_Key, N8_Key, N9_Key, N0_Key
;ADV_KEYS ADD, YES_Key, NO_Key, QUIT_Key, CHANGE_Key
ADV_KEYS ADD, QUIT_Key,YES_Key, NO_Key
;
;Start 	ADṼX^[głB***********************************************
PLAY "JFLTCRW\PINPON"					;PINPON炵܂B
WAIT 1
PLAY "JFLTCRW\PINPON"					;x炵܂B
	SCROLL"*** Shimoji-shima Cross Wind Landing Practice Ver.0.1 By SAKI *****" ;^Cg̃XN[\
;INIT_SET
	WAIT 10						;ȂƃXN[ɉPRINT\܂B
	PRINT " Nav1́ASJE(117.1).OBS(169)ɃZbgB`FbNB"
	WAIT 3
	NAV1_FREQ = 117.1				;NAV1g̐ݒ
	VOR_1_OBS = 169 				;VOR1OBS̐ݒ
	HOUR = 10					;̐ݒ()
	MINUTE = 0					;̐ݒ()
	SECOND = 0					;̐ݒ(b)
	WAIT 3
	PRINT "^[^b` & S[̋͎擾ςB"
	WAIT 5
	PRINT "iuCgƃXg{ I`FbNB"
	WAIT 5
	PRINT "tbv𗣗ʒuɃZbgB"
	WAIT 5
	PRINT "                140xB15mbgB"
	WAIT 5
	weather "Adv Weather",24:00:00,-124:00:00,26:00:00,-126:00:00
	weather_char 200,5,0,0
	WINDS 1, 10, 5000, steady, 140, 15, 5
	SCROLL" OK BsBbc S[B"
;ADVRg[pϐւ̏lݒB**************************************
	PROCESS=10		;̕ϐADV̓Rg[܂B
	COUNT=0			;񐔂̃JEg܂B
        STATUS=0		;񐔂11xAbv悤䂵܂B
	TOKUTEN=100		;Ōɏo链_͂̓_猸_Ă܂B	
	ALART=1			;1000ft̃A[g11xł悤䂵܂B
	AMIN=1			;MINIMUMւ̐ڋߌx̕\11xo悤ɂ܂B
	MIN=1			;MINIMUM̕\11xo悤ɂ܂B
; 
MAIN: 	;C[`łB***********************************************
	ONKEY QUIT_Key   GOSUB quit	;C[`͍Ō̕GOTOMAINɃ[vĂ܂B
	ONCRASH GOSUB CRASH		;QUITCRASHCHK_SPEED̓[v̓ŕK`FbN
	GOSUB CHK_SPEED			;܂B
	IF PROCESS=10 THEN		;PROCESSl10̎V1Tu[`֕򂵂܂B
		GOSUB V1
	ELSEIF PROCESS=20 THEN		;PROCESSl20̎VRTu[`֕򂵂܂B
		GOSUB VR
	ELSEIF PROCESS=30 THEN		;PROCESSl30̎V2Tu[`֕򂵂܂B
		GOSUB V2
	ELSEIF PROCESS=40 THEN		;PROCESSl40̎GEAR_UPTu[`֕򂵂܂B
		GOSUB GEAR_UP
	ELSEIF PROCESS=50 THEN		;PROCESSl50̎TURN_HDG260Tu[`֕򂵂܂B
		GOSUB TURN_HDG260
	ELSEIF PROCESS=60 THEN		;PROCESSl60̎TURN_CHKTu[`֕򂵂܂B
		GOSUB TURN_CHK
	ELSEIF PROCESS=70 THEN		;PROCESSl70̎TURN_HDG350Tu[`֕򂵂܂B
		GOSUB TURN_HDG350
	ELSEIF PROCESS=80 THEN		;PROCESSl80̎TURN_CHKTu[`֕򂵂܂B
		GOSUB TURN_CHK
	ELSEIF PROCESS=90 THEN		;PROCESSl90̎ALT,HDG,DME̊e_CHKTu[`
		GOSUB ALT_CHECK		;֕򂵂܂B
		GOSUB HDG_CHECK
		GOSUB DME_CHECK
	ELSEIF PROCESS=100 THEN		;PROCESSl100̎TURN_HDG80Tu[`֕򂵂܂B
		GOSUB TURN_HDG80
	ELSEIF PROCESS=110 THEN		;PROCESSl110̎TURN_CHKTu[`֕򂵂܂B
		GOSUB TURN_CHK
	ELSEIF PROCESS=120 THEN		;PROCESSl120̎FINAL_TURN,CHK_1000Tu[`
		GOSUB FINAL_TURN	;򂵂܂B
		GOSUB CHK_1000
	ELSEIF PROCESS=125 THEN		;PROCESSl125̎CHK_1000,MINIMUMTu[`
		GOSUB CHK_1000		;򂵂܂B
		GOSUB MINIMUM	
	ELSEIF PROCESS=130 THEN		;PROCESSl130̎CALL_500Tu[`֕򂵂܂B
		GOSUB CALL_500
	ELSEIF PROCESS=140 THEN		;PROCESSl140̎CALL_200Tu[`֕򂵂܂B
		GOSUB CALL_200
	ELSEIF PROCESS=150 THEN		;PROCESSl150̎CALL_100Tu[`֕򂵂܂B
		GOSUB CALL_100
	ELSEIF PROCESS=160 THEN		;PROCESSl160̎CALL_50Tu[`֕򂵂܂B
		GOSUB CALL_50
	ELSEIF PROCESS=170 THEN		;PROCESSl170̎CALL_30Tu[`֕򂵂܂B
		GOSUB CALL_30
	ELSEIF PROCESS=180 THEN		;PROCESSl180̎CALL_20Tu[`֕򂵂܂B
		GOSUB CALL_20
	ELSEIF PROCESS=190 THEN		;PROCESSl190̎CALL_10Tu[`֕򂵂܂B
		GOSUB CALL_10	
	ELSEIF PROCESS=200 THEN		;PROCESSl200̎COUNT_SETTu[`֕򂵂܂B
		GOSUB COUNT_SET
	ELSEIF PROCESS=210 THEN		;PROCESSl210̎SET_TAKEOFFTu[`֕򂵂܂B
		GOSUB SET_TAKEOFF	
	ELSEIF PROCESS=220 THEN		;PROCESSl220̎TAXITu[`֕򂵂܂B
		GOSUB TAXI
	ELSEIF PROCESS=230 THEN		;PROCESSl230̎GO_AROUNDTu[`֕򂵂܂B
		GOSUB GO_AROUND	
	ENDIF				;IF̏I
 	GOTO MAIN			;MAIN֖̓߂܂B
	END				;vȌIłA̓qbg܂B
CHK_SPEED: 		;***Xs[h`FbNTu[`***
	IF VELOCITY_INDICATED > 260 THEN	;260ktȏɂȂƈȉ̕\_܂B
		PRINT "Xs[hᔽB6000ftȉł250kt̑xB"
		TOKUTEN=TOKUTEN-5
		WAIT 3
	ENDIF
	RETURN
V1:			;***V1`FbNTu[`***
	WHILE VELOCITY_INDICATED < 130		;130KtȏȂƃ[vłV1\܂B
		WAIT 1				;܂PROCESSi߂܂B
	ENDWHILE
	PRINT_TIME 2
	PRINT "                        V1" 
	PROCESS=20
	RETURN
VR:			;***VR`FbNTu[`***
	WHILE VELOCITY_INDICATED < 145		;145KtȏȂƃ[vłVR\܂B
		WAIT 1				;܂PROCESSi߂܂B
	ENDWHILE
	PRINT_TIME 2
	PRINT "                        VR" 
	PROCESS=30
	RETURN
V2:			;***V2`FbNTu[`***
	WHILE VELOCITY_INDICATED < 155		;155KtȏȂƃ[vłV2\܂B
		WAIT 1				;܂PROCESSi߂܂B
	ENDWHILE
	PRINT_TIME 2
	PRINT "                        V2" 
	PROCESS=40
	RETURN
GEAR_UP:		;***POSITIVE CLIMB`FbNTu[`***
	WHILE PLANE_ALT < (50/3.28)		;50ftȏȂƃ[vłPRINT\܂B
        	WAIT 1				;܂PROCESSi߂܂B
	ENDWHILE
	PRINT "         Positive Climb. " 
	PROCESS=50
	RETURN
	WAIT 10
TURN_HDG260:		;***260xւ̐jHύXTu[`***
	;n400ftŃMAオĂ邩`FbN܂BオĂȂΌ_B
	;PRINT\܂B
	;x500ftŐwo܂B̑A񐧌n̕ϐɏlZbg܂B
	WHILE PLANE_ALT < (500/3.28)		
		IF PLANE_ALT >= (GROUND_ALTitude + 400)/3.28 & GEAR_CONTROL = 1 THEN
			PRINT "MAオĂȂBMA`FbN!"
			TOKUTEN=TOKUTEN-5
			WAIT 3
		ENDIF
	ENDWHILE
	PRINT "         NXEBhO HDG 260"
	NAV1_FREQ = 117.1				;NAV1g̐ݒ
	PROCESS=60
  	STATUS=1
	ALART=1
	AMIN=1
	MIN=1
	CHDG=260				;TURN_CHKׂ̈HDGݒłB
	RETURN
TURN_CHK:		;***񎞂̃`FbNTu[`***
	;񒆂30xoNsĂ邩`FbN܂BoN󂢂ƌxA_܂B
	;I_ŐjH}5xȓłȂƌxA_܂B
	;I_ŐjH}10xȓł΁APROCESSɐi߂܂BB
	WAIT 5
	WHILE (Plane_Heading < (CHDG-15) & Plane_Heading > (CHDG-75))
		IF PLANE_BANK > -25 THEN
			PRINT "oN󂢂B񒆂30xoNێB"
			TOKUTEN=TOKUTEN-5
			WAIT 5
		ENDIF 
	ENDWHILE
	WAIT 5
	IF (Plane_Heading > (CHDG-10) & Plane_Heading < (CHDG+10) & PLANE_BANK > -5) THEN
		PROCESS=PROCESS+10
		IF (Plane_Heading < (CHDG-5) or Plane_Heading > (CHDG+5) ) THEN
			PRINT "wbfBOĂ邼B ĨwfBÓA",CHDG,"xB"
 			TOKUTEN=TOKUTEN-5
			WAIT 3
		ENDIF
	ENDIF	
	RETURN
TURN_HDG350:		;***350xւ̐jHύXTu[`***
	;jH255xA265xł350xւ̐woPROCESSi߂܂B
	;260xւ̐jHύXIASJE4.1nmȏłΌPOꂽ̂Ƃ
	;P𒆎~܂B
	WHILE (Plane_Heading < 265 & Plane_Heading > 255)
        	IF PLANE_BANK > -5 THEN
			IF VOR_1_DME > 4.0  THEN
				PRINT "g[jO悩oĂ܂BPIB"
				GOSUB QUIT
			ELSE 
				PRINT "                        _EEChOB HDG 350"
			ENDIF
		ENDIF
	ENDWHILE
   	PROCESS=80
	CHDG=350				;TURN_CHKׂ̈HDGݒłB
	RETURN
ALT_CHECK:		;***x2000ftێ`FbNTu[`***
	;x2000ft}100ftOƌx_܂B
       	IF (PLANE_ALT > (2100/3.28) or PLANE_ALT < (1900/3.28))
		PRINT "xOĂ邼Bx2000ێB"
		TOKUTEN=TOKUTEN-5
		WAIT 3
	ENDIF
	RETURN
HDG_CHECK:		;***jH350ێ`FbNTu[`***
	;jH350x}5xOƌx_܂B
       	IF (Plane_Heading < 345 or Plane_Heading > 355) THEN
		PRINT "jHOĂ邼BjH350ێB"
		TOKUTEN=TOKUTEN-5
		WAIT 3
	ENDIF
	RETURN
DME_CHECK:		;***DME`FbNTu[`***
	;SJE5nmȏłΐẅׁAPROCESSi߂܂B
	IF VOR_1_DME > 5.0  THEN
		PROCESS=100
	ENDIF
	RETURN
TURN_HDG80: 		;***80xւ̐jHύXwTu[`***
	PRINT "                        x[XO HDG 080"
	PROCESS=110
	CHDG=80					;TURN_CHKׂ̈HDGݒłB
	RETURN
FINAL_TURN:		;***t@CiOւ̐jHύXwTu[`***
	;I̐jH80x}5x̎wo܂B
	IF Plane_Heading > 075 & Plane_Heading < 085 & PLANE_BANK > -5 THEN
		PRINT_TIME 5
	   	PRINT "         t@CiOɓ낤B̌ILSAv[`B"
		NAV1_FREQ = 111.5		;NAV1gISBɃZbg
		WAIT 5
		IF COUNT=1 THEN
				weather "Adv Weather",24:00:00,-124:00:00,26:00:00,-126:00:00
				weather_char 200,5,0,0
				WINDS 1, 10, 5000, steady, 110, 15, 5
				PRINT "         ς110xB15mbg"
				WAIT 5
		ELSEIF COUNT=2 THEN
				weather "Adv Weather",24:00:00,-124:00:00,26:00:00,-126:00:00
				weather_char 200,5,0,0
				WINDS 1, 10, 5000, steady, 80, 15, 5
				PRINT "         ς80xB15mbg"
				WAIT 5
		ENDIF
		PROCESS=125
	ENDIF
	RETURN
CHK_1000:		;***x1000ft`FbNTu[`***
	;x1000ftȉɂȂɈ񂾂A[炵ʕ\܂B
	IF PLANE_ALT < (1000/3.28) & ALART=1 THEN
		PRINT_TIME 5
		PRINT"                  1000"
		PLAY"-altalrt"
		ALART=0
	ENDIF
        RETURN
MINIMUM:		;***MINIMUM`FbNTu[`***
	;700ftMINIMUMւ̐ڋߒӂ̕\x܂B
	;600ftMINIMUMƒsIAeXPROCESSԍZbg܂B
	IF PLANE_ALT < (700/3.28) & AMIN=1 THEN
		PRINT"          Approaching to MINIMUM"
		AMIN=0
	ENDIF
        WHILE PLANE_ALT < (600/3.28) & MIN=1
		PRINT"   MINIMUM  fBO:SHIFT+Y S[AEh:SHIFT+N"
		WAIT 0,KEYPRESS
		IF KEY=YES_Key THEN
			PRINT"         OK fBOB"
			PROCESS=130
			MIN=0
		ELSEIF KEY=NO_Key THEN
			PRINT"         OK S[AEhBS[AEhhȌfB"
			PROCESS=230
			MIN=0         
		ENDIF
	ENDWHILE
	RETURN
CALL_500:		;***x500ft`FbNTu[`***
	;x500ftȉɂȂɌx𗬂ʕ\܂B
	;MAłĂȂɂ͌x_܂B
	WHILE PLANE_ALT > ((500+40)/3.28)
		WAIT 1
	ENDWHILE
	PRINT "500"
	PLAY "-500"
	IF GEAR_CONTROL = 0 THEN
		PRINT "MAoYĂ邼B"
		PLAY"-GEAR"
		TOKUTEN=TOKUTEN-5
		WAIT 3
	ENDIF
	PROCESS=140
	RETURN
CALL_200:		;***x200ft`FbNTu[`***
	;x200ftȉɂȂɌx𗬂ʕ\܂B
 	WHILE PLANE_ALT > ((200+40)/3.28)
        	WAIT 1
	ENDWHILE
	PRINT "200"
	PLAY "-200"
	PROCESS=150
	RETURN
CALL_100:		;***x100ft`FbNTu[`***
	;x100ftȉɂȂɌx𗬂ʕ\܂B
	WHILE PLANE_ALT > ((100+40)/3.28)
        	WAIT 1
	ENDWHILE
	PRINT "100"
	PLAY "-100"
	PROCESS=160
	RETURN
CALL_50:		;***x50ft`FbNTu[`***
	;x50ftȉɂȂɌx𗬂ʕ\܂B
	WHILE PLANE_ALT > ((50+40)/3.28)
        	WAIT 1
	ENDWHILE
	PRINT_TIME 1
	PRINT "50"
	PLAY "-50"
	PROCESS=170
	RETURN
CALL_30:		;***x30ft`FbNTu[`***
	;x30ftȉɂȂɌx𗬂ʕ\܂B
	WHILE PLANE_ALT > ((30+40)/3.28)
        	WAIT 1
	ENDWHILE
	PRINT_TIME 1
	PRINT "30"
	PLAY "-30"
	PROCESS=180
	RETURN
CALL_20:		;***x20ft`FbNTu[`***
	;x20ftȉɂȂɉʕ\܂B
	WHILE PLANE_ALT > ((20+40)/3.28)
        	WAIT 1
	ENDWHILE
	PRINT_TIME 1
	PRINT "20"
	PROCESS=190
	RETURN
CALL_10:		;***x10ft`FbNTu[`***
	;x10ftȉɂȂɌx𗬂ʕ\܂B
	WHILE PLANE_ALT > ((10+40)/3.28)
        	WAIT 1
	ENDWHILE
	PRINT_TIME 1
	PRINT "10"
	PLAY "-10"
	PROCESS=200
	RETURN
COUNT_SET:		;***`FbNTu[`***
	;nyю`FbNAQڂ܂ł͗A3ڂTAXIPROCESSi߂܂B
	IF ((PLANE_ALT<((0+40)/3.28)) & (STATUS = 1) & (COUNT < 2)) THEN    
		COUNT=COUNT+1
		PROCESS=210
		STATUS=0
		ELSEIF  COUNT = 2 THEN
	  		PROCESS=220
	ENDIF
	RETURN
SET_TAKEOFF:		;***wTu[`***
	;HŔs@̑x120ktȉɂȂAwo܂B
	IF (PLANE_ALT < ((0+40)/3.28) & VELOCITY_INDICATED < 120) THEN
		PRINT "SET TAKE OFF THRUST & FLAPS"
		PROCESS=10
	ENDIF
	RETURN
TAXI:			;***TAXIwTu[`***
	;Hőx40ktȉɂȂTAXI̎woǍœ_\܂B
	WHILE VELOCITY_INDICATED > 40
        	WAIT 1
	ENDWHILE
	PRINT "Turn Left at T2. TAXI TO SPOT 5"
	WAIT 5
	PRINT_TIME 15
	PRINT "̂Ȃ̓_ ",TOKUTEN,"_łB"
	WAIT 10
        ADV_KEYS CLEAR	 
	END
	RETURN
GO_AROUND:		;***S[AEhTu[`***
	;260xւ̐jHύX_ւ̊pxvZ\܂B
	;Radial֐͂ꏊs@܂ł̃WAȂ̂ŁAs@̕ʂɕϊ
	;ľܓ̏AoĂ܂B
	;܂A}CiXɂȂ360xăvX̐Ƃĕ\܂B
	;x600ft}100ftOꂽ͕\A_܂B̃`FbN͈xłB
	;jHύX_0.5nmȓɂȂɐẅׁAPROCESSi߂܂B
	PRINT_TIME 10
	NAV_RAD=INT(Radial (24:48.04, -125:09.21)-180+0.5)
	IF NAV_RAD < 0 THEN
		NAV_RAD=NAV_RAD+360
	ENDIF
	PRINT "HDG ",NAV_RAD,"ɌBx600ێB"
	WAIT 5
	PRINT "MAAbvB"	
	WAIT 20
	NAV_RAD=INT(Radial (24:48.04, -125:09.21)-180+0.5)
	IF NAV_RAD < 0 THEN
		NAV_RAD=NAV_RAD+360
	ENDIF
	PRINT "HDG ",NAV_RAD,"ɌBx600ێB"
	IF (PLANE_ALT > (650/3.28) or PLANE_ALT < (550/3.28))
		PRINT "x600ftێB"
		TOKUTEN=TOKUTEN-5
	ENDIF
	WHILE Ground_Distance (24:48.04, -125:09.21) > 0.5 
		WAIT 1
	ENDWHILE
	PROCESS=50
	RETURN
CRASH:			;***NVTu[`***
	ADV_KEYS CLEAR
	END
	RETURN
QUIT:			;***fTu[`***
        PLAY "JFLTCRW\PIN"
        WAIT 1
        ADV_KEYS CLEAR
        END
        RETURN 