if 0{
*コンフィグロード
	//もしシステムセーブデータがなければ標準設定
	dim systemdata,7
	exist "data\\systemdata"
	if strsize==-1{
		systemdata=5,5,0,1,0,1,1
	}else{
		bload "data\\systemdata",systemdata
	}
	//変数にロード
	bgm_UserSet=systemdata.0
	snd_UserSet=systemdata.1
	fps_UserSet=systemdata.2
	rKz_UserSet=systemdata.3
	pLK_UserSet=systemdata.4
	sLg_UserSet=systemdata.5
	opS_UserSet=systemdata.6
	//具体的な倍率に変換
	BGM音量倍率=0.01*(100-10*bgm_UserSet)
	効果音音量倍率=0.01*(100-10*snd_UserSet)
	FBAI=fps_UserSet*4+4
	if rKz_UserSet==0{//少なめ
		粒子数=65536
		konagire係数=0.25
		konagire係数整数=1
		α値=147.0/255.0
		UFO噴射konagire=32
	}
	if rKz_UserSet==1{//標準
		粒子数=65536*4//粒子数 (65536*4)//頂点数はこの2倍//65536*8
		konagire係数=1.0
		konagire係数整数=1
		α値=147.0/255.0
		UFO噴射konagire=128
	}
	if rKz_UserSet==2{//2倍
		粒子数=65536*8
		konagire係数=1.75
		konagire係数整数=2
		α値=147.0/1.7/255.0
		UFO噴射konagire=128
	}
	if rKz_UserSet==3{//4倍
		粒子数=65536*16
		konagire係数=3.4
		konagire係数整数=4
		α値=147.0/3.1/255.0
		UFO噴射konagire=128
	}
	if rKz_UserSet==4{//8倍
		粒子数=65536*32
		konagire係数=6.4
		konagire係数整数=8
		α値=147.0/5.5/255.0
		UFO噴射konagire=128
	}
	反復回数=(1<<pLK_UserSet)*16
	return
*オープニング
	//画像読み込み
	ds_load "data\\op\\c.mp3",0
	ds_vol 0,0
	color 0,0,0
	HGLCreateTexture1_texload OpeningTex,"data\\op\\op1.png",1//読み込み専用テクスチャにロード
	//特殊効果用画像なのでCLからもアクセスできるように
	buffer 1:picload "data\\op\\op2.png"
	mref i,66
	winx=ginfo(12)
	winy=ginfo(13)
	sdim dataarray4,winx*winy*4;データを変換するために必要な配列変数
	sdim dataarray3,winx*winy*3;データを変換するために必要な配列変数
	convRGBtoBGR i,dataarray3;意味上はBGR→RGBにしたいが、やってることは同じ
	convRGBtoRGBA dataarray3,dataarray4;これしないとHGLWriteTextureで扱える形式にならないので
	HGLCreateTexture2 OpeningTxp0,CLOpeningTxp0,winx,winy,GL_RGBA,GL_UNSIGNED_BYTE
	HGLCreateTexture2 OpeningTxp1,CLOpeningTxp1,winx,winy,GL_RGBA,GL_UNSIGNED_BYTE
	HGLCreateTexture2 OpeningTxp2,CLOpeningTxp2,winx,winy,GL_RGBA,GL_UNSIGNED_BYTE
	HGLWriteTexture OpeningTxp0,dataarray4,0,0,winx,winy,GL_RGBA,GL_UNSIGNED_BYTE;texidにデータを転送、このときdataarray4のサイズがしっかり合ってないと思わぬエラーになる

	//オープニング用openclセット
	HCLBuildProgram "data\\opening.cl",OpeningPGID
	HCLCreateKernel OpeningPGID,"idou",idou
	HCLCreateKernel OpeningPGID,"prezent",prezent

	view3D//オープニング用3D描画
	glDisable GL_DEPTH_TEST//ここで深度非適応が役に立ってくる
	glBlendFunc GL_SRC_ALPHA, GL_ONE//アルファチャンネル設定、加算合成
	
	//オープニング用openclバッファ作成
	kz=1400
	HCLCreateBuffer CLprxyz,kz*3*4//float
	HCLCreateBuffer CLspdprxyz,kz*3*4//float
	HCLCreateBuffer CLpart3,kz*4//float
	HCLCreateBuffer CLparti,kz*4//int
	HCLCreateBuffer CLpartr,kz*4//int
	HGLCreateBuffer GLmidpr  ,CLmidpr  ,kz*3*4*4//頂点3つ(x,y,z)*QUADの4頂点*sizeof(float)
	HGLCreateBuffer GLmidprUV,CLmidprUV,kz*2*4*4//頂点2つ(u,v)*QUADの4頂点*sizeof(float)
	HGLCreateBuffer GLmidprCo,CLmidprCo,kz*4*4*1//頂点4つ(r,g,b,a)*QUADの4頂点*sizeof(uchar)


	//オープニング用opencl転送前hsp側初期設定
	fdim partxyz,kz*3
	fdim part3,kz
	dim parti,kz
	dim partr,kz
	fdim partdxyz,kz*3
	
	fdim dmydata,kz*3:repeat kz*3:dmydata.cnt=float(1000000):loop
	//パーティクルパラメーター設定
	repeat kz
		parti.cnt=2*rnd(2)-1
		partr.cnt=rnd(101)-50
		partxyz.(cnt*3  )=float(0.09*rnd(20000)-900.0)
		partxyz.(cnt*3+1)=float((0.0031*rnd(30000)+230.0)*parti.cnt)
		partxyz.(cnt*3+2)=float(0.02*rnd(2000)-60.0)
		part3.cnt=float(1.0)
		if cnt<kz/3{
			partdxyz.(cnt*3  )=float(0.0024*rnd(10001)-12.0)
		}else{
			partdxyz.(cnt*3  )=float(0.0044*rnd(10001)-22.0)
		}
		partdxyz.(cnt*3+1)=float((0.0013*rnd(10001)-4.0)*parti.cnt)
		partdxyz.(cnt*3+2)=float(0.00129*rnd(10001)-6.9)
	loop
	//vramにパラメータ書き込み
	HCLWriteBuffer CLprxyz   ,dmydata ,varsize(dmydata )
	HCLWriteBuffer CLspdprxyz,dmydata ,varsize(dmydata )

	startb=0
	cpbt=kz/3
	//vramにパラメータ書き込み
	gosub*opsub1

	//カーネルセット
	HCLSetKrns idou,CLprxyz,CLspdprxyz,CLpart3,CLparti,CLpartr,CLmidpr,CLmidprUV,CLmidprCo//カーネルセット
	HCLSetKrns prezent,CLOpeningTxp0,CLOpeningTxp1,CLOpeningTxp2

	//カメラセット
	cax=190.00222
	caz=-1400.0
	cay=240.0

	タイムステップ=0.5*(FBAI/4)
	fd=1.0
	lpkz=300/(FBAI/4)

	ds_play 0
	ds_setp 0,44100*12
//描画開始
	gsel 0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    repeat lpkz//無限ループ
	    //カメラから
		caz+=3.54*タイムステップ*2.0
		cax-=1.1*タイムステップ*2.0
		cay-=0.8*タイムステップ*2.0
		HCLSetKernel idou,8,float(cax)
		HCLSetKernel idou,9,float(cay)
		HCLSetKernel idou,10,float(caz)
		HCLSetKernel idou,11,float(fd)
		HCLSetKernel idou,12,float(タイムステップ)
		
		HCLSetKernel prezent,3,float(3.2*cnt*FBAI/4+130.0)

		//OpenCLでパーティクル移動処理
		HCLEnqueueAcquireGLObjects CLmidpr//HGLCreateBufferから作ったメモリオブジェクトをカーネル関数で使う場合は以下の手順が必要。
		HCLEnqueueAcquireGLObjects CLmidprUV//HGLCreateBufferから作ったメモリオブジェクトをカーネル関数で使う場合は以下の手順が必要。
		HCLEnqueueAcquireGLObjects CLmidprCo//HGLCreateBufferから作ったメモリオブジェクトをカーネル関数で使う場合は以下の手順が必要。
		HCLDokrn1 idou,kz,0
		HCLWaitTask
		HCLEnqueueReleaseGLObjects CLmidpr//HCLEnqueueAcquireGLObjectsの対
		HCLEnqueueReleaseGLObjects CLmidprUV//HCLEnqueueAcquireGLObjectsの対
		HCLEnqueueReleaseGLObjects CLmidprCo//HCLEnqueueAcquireGLObjectsの対
		//OpenCLでピッピプレゼントのエフェクト
//		glBindTexture GL_TEXTURE_2D,OpeningTxp2
		HCLEnqueueAcquireGLObjects CLOpeningTxp0//HGLCreateBufferから作ったメモリオブジェクトをカーネル関数で使う場合は以下の手順が必要。
		HCLEnqueueAcquireGLObjects CLOpeningTxp1//HGLCreateBufferから作ったメモリオブジェクトをカーネル関数で使う場合は以下の手順が必要。
		HCLEnqueueAcquireGLObjects CLOpeningTxp2//HGLCreateBufferから作ったメモリオブジェクトをカーネル関数で使う場合は以下の手順が必要。
		HCLDokrn1_sub prezent,640*128,256
		HCLWaitTask
		HCLEnqueueReleaseGLObjects CLOpeningTxp0//HCLEnqueueAcquireGLObjectsの対
		HCLEnqueueReleaseGLObjects CLOpeningTxp1//HCLEnqueueAcquireGLObjectsの対
		HCLEnqueueReleaseGLObjects CLOpeningTxp2//HCLEnqueueAcquireGLObjectsの対


		//現在使いたいテクスチャをバインド
		glBindTexture GL_TEXTURE_2D,OpeningTex
		//背景初期化
	    glClearColor 0.0, 0.0, 0.0, 1.0
	    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); );深度バッファとrgbピクセルカーラーバッファをクリア
		//視点の設定
		glPushMatrix//gluLookAtで行列が変えられちゃう前に登録
		gluLookAt cax,cay,caz,0.0,0.0,0.0, 0.0,1.0,0.0//視点は円状に回る。注視点は常に0,0,0

	    // 図形の描画
		//glColor4d 1.0,1.0,1.0,1.0*fd
		// 頂点データ，テクスチャ座標の配列を有効にする 
		glEnableClientState GL_VERTEX_ARRAY
		glEnableClientState GL_TEXTURE_COORD_ARRAY
		glEnableClientState GL_COLOR_ARRAY
		// 頂点データ，テクスチャ座標の場所を指定する 
		glBindBuffer GL_ARRAY_BUFFER,GLmidpr
		glVertexPointer 3,GL_FLOAT,0,0//頂点データの場所を指定する。
		glBindBuffer GL_ARRAY_BUFFER,GLmidprUV
		glTexCoordPointer 2,GL_FLOAT,0,0//uvデータの場所を指定する。
		glBindBuffer GL_ARRAY_BUFFER,GLmidprCo
		glColorPointer 4,GL_UNSIGNED_BYTE,0,0// 色データ場所を指定する 
		// 頂点のインデックスを順番通りに使って図形を描く
		glDrawArrays GL_QUADS,0,4*kz//頂点を4*p_kzこ使います＝QUADSをkzこ表示します
		// 頂点データ，法線データ，テクスチャ座標の配列を無効にする 
		glDisableClientState GL_VERTEX_ARRAY//後片付け
		glDisableClientState GL_TEXTURE_COORD_ARRAY//後片付け
		glDisableClientState GL_COLOR_ARRAY//後片付け
		glBindBuffer GL_ARRAY_BUFFER,0//後片付け。バインド解除
	
		//テクスチャをアンバインド
		//glBindTexture GL_TEXTURE_2D,0


		//ピッピプレゼンツを描画
		glBindTexture GL_TEXTURE_2D,OpeningTxp1
		glBegin GL_QUADS
			GlColor4d 1.0,1.0,1.0,(0.1+0.002*cnt*FBAI/4)*fd
			glTexCoord2d 0.0, 1.0;テクスチャのUV指定
			glVertex3d 280.0,130.0,60.0
			glTexCoord2d 1.0, 1.0;テクスチャのUV指定
			glVertex3d -280.0,130.0,60.0
			glTexCoord2d 1.0, 0.0;テクスチャのUV指定
			glVertex3d -280.0,10.0,60.0
			glTexCoord2d 0.0, 0.0;テクスチャのUV指定
			glVertex3d 280.0,10.0,60.0
		glEnd
		
		glBindTexture GL_TEXTURE_2D,OpeningTxp2
		glBegin GL_QUADS
			GlColor4d 1.0,1.0,1.0,(0.001+0.001*cnt*FBAI/4)*fd
			glTexCoord2d 0.0, 1.0;テクスチャのUV指定
			glVertex3d 280.0,-130.0,60.0
			glTexCoord2d 1.0, 1.0;テクスチャのUV指定
			glVertex3d -280.0,-130.0,60.0
			glTexCoord2d 1.0, 0.0;テクスチャのUV指定
			glVertex3d -280.0,-10.0,60.0
			glTexCoord2d 0.0, 0.0;テクスチャのUV指定
			glVertex3d 280.0,-10.0,60.0
		glEnd
	
		glBindTexture GL_TEXTURE_2D,0
	//ここまで
	//ここからはフレーム分岐管理
		if cnt=200/(FBAI/4):タイムステップ*=0.5
		if cnt>(lpkz-60/(FBAI/4)){//フェードアウト
			fd=(1.0/(59.0/(FBAI/4)))*(lpkz-cnt-3)
			if fd<0.0:fd=0.0
		}
		if cnt<33:ds_vol 0,int(1.9*cnt*BGM音量倍率*2)

		glPopMatrix//glPushMatrixしたときの行列にもどす
		glFinish//描画実行
		SwapBuffers wglGetCurrentDC()//前画面に出す
		await 4*FBAI

		getkey key,27:if key:HCLbye:end
		cpbt=kz*3/4/lpkz+1
		if startb<kz-1:gosub*opsub1
	loop
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	//opengl後片付け
	GlColor4d 1.0,1.0,1.0,1.0
	glEnable GL_DEPTH_TEST
	glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
	view2D//2D描画
	GlColor4d 1.0,1.0,1.0,1.0
	glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
	glClearColor 0.0, 0.0, 0.0, 1.0
	glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
	glBindTexture GL_TEXTURE_2D,0

	//テクスチャ後片付け
	HGLReleaseTexture OpeningTex	:OpeningTex=0
	HGLReleaseTexture OpeningTxp0	:OpeningTxp0=0
	HGLReleaseTexture OpeningTxp1	:OpeningTxp1=0
	HGLReleaseTexture OpeningTxp2	:OpeningTxp2=0
	
	//clメモリ片付け
	HCLReleaseMemObject CLprxyz		:CLprxyz=0
	HCLReleaseMemObject CLspdprxyz	:CLspdprxyz=0
	HCLReleaseMemObject CLpart3		:CLpart3=0
	HCLReleaseMemObject CLparti		:CLparti=0
	HCLReleaseMemObject CLpartr		:CLpartr=0
	HGLReleaseBuffer GLmidpr		:GLmidpr=0
	HGLReleaseBuffer GLmidprUV		:GLmidprUV=0
	HGLReleaseBuffer GLmidprCo		:GLmidprCo=0
	sdim dataarray4,1;データを変換するために必要な配列変数
	sdim dataarray3,1;データを変換するために必要な配列変数
	kz=0
	sdim partxyz,1
	sdim part3,1
	sdim parti,1
	sdim partr,1
	sdim partdxyz,1
	sdim dmydata,1
	HCLReleaseKernel idou	:idou=0
	HCLReleaseKernel prezent:prezent=0
	HCLReleaseProgram OpeningPGID	:OpeningPGID=0
	
	repeat 32
		ds_vol 0,int(1.9*(32-cnt)*BGM音量倍率*2)
		await 38
	loop
	ds_stop 0
	return





*opsub1
	if (startb+cpbt)>=kz:cpbt=kz-startb-1
	if cpbt>0{
		HCLWriteBuffer CLprxyz   ,partxyz ,cpbt*3*4	,startb*3*4	,startb*3*4
		HCLWriteBuffer CLspdprxyz,partdxyz,cpbt*3*4	,startb*3*4	,startb*3*4
		HCLWriteBuffer CLpart3   ,part3   ,cpbt*4	,startb*4	,startb*4
		HCLWriteBuffer CLparti   ,parti   ,cpbt*4	,startb*4	,startb*4
		HCLWriteBuffer CLpartr   ,partr   ,cpbt*4	,startb*4	,startb*4
	}
	startb+=cpbt
	return




*タイトル画面
	gsel 0
	ds_load "data\\sound\\0.mp3",0
	ds_loop 0
	ds_vol 0,int(BGM音量倍率*26*2)
	HGLCreateTexture1_texload ttex0,"data\\gr\\title.png"
	HGLCreateTexture1_texload whiteo,"data\\gr\\hadeout.png"
	color 255,255,255
	HGLCreateTexture1_texload config_tex,"data\\gr\\config.png",1
	//コマンド内容としてはGAME START、CONFIG、EXIT、EASY、NORMAL、HARD、BACK
	//今選択しているコマンド
	titley=0
	//タイトル内フレーム
	flm=0
	flm2=0//文字がちょっとずつ流れていくあれ
	flm3=0//決定時に少し間を置いてから次の画面へ移るためのフレーム管理
	flmskip=1//決定時は7になる
	//コマンドの画像の横の長さ
	dim comLenX,7
	comLenX=240,148,105,105,135,105,144
	//普通の透明抜きコピー
	glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
	//青の選択領域の中心点
	comAoCX=20+comLenX.0/2
	comAoCY=262
	comAoCX_After=20+comLenX.0/2
	comAoCY_After=262
	tmpComLenX=0
	tmpComLenX_After=comLenX
	rnd2x=rnd(2)
	rnd2y=rnd(2)
	rnd2z=rnd(2)
	dKeisu=0.0
	sdim tmpHiScore,128

	repeat -1
		//背景初期化
		await 33
		glClearColor 0.0, 0.0, 0.0, 1.0
		glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
		//バックグラウンド描画
		glColor4d 1.0,1.0,1.0,1.0
		pos 0,0
		HGLgcopy ttex0,0,0,768,512


		//下の青の事前計算
		if (flm\16==0){
			rnd2x=rnd(2)
			rnd2y=-rnd(2)
			rnd2z=rnd(2)
		}
		if titley<3{//左の0〜2のとき。GAME START〜EXITのこと
			comAoCX_After=20+comLenX.titley/2	+rnd2x
			comAoCY_After=262+64*titley			+rnd2y
			tmpComLenX_After=comLenX.titley		+rnd2z
		}else{//HARD選択画面
			comAoCX_After=320+comLenX.titley/2	+rnd2x
			comAoCY_After=250+60*(titley-3)		+rnd2y
			tmpComLenX_After=comLenX.titley		+rnd2z
		}
		if abs(comAoCX_After-comAoCX)<2:		comAoCX=comAoCX_After
		comAoCX+=(comAoCX_After-comAoCX)/2
		if abs(comAoCY_After-comAoCY)<2:		comAoCY=comAoCY_After
		comAoCY+=(comAoCY_After-comAoCY)/2
		if abs(tmpComLenX_After-tmpComLenX)<2:	tmpComLenX=tmpComLenX_After
		tmpComLenX+=(tmpComLenX_After-tmpComLenX)/2
		dKeisu=limitf((64.0-absf(comAoCY_After-comAoCY))/64.0,0.1,1.0)
		//下の青描画
		glColor4d 0.29,0.51,0.99,0.62+0.018*abs(flm\40-20)
		pos comAoCX,comAoCY
		HGLgrotate whiteo,0,0,64,64,0.0,int(dKeisu*tmpComLenX)+13,int(dKeisu*52)+5

		//GAME START//CONFIG//EXIT描画
		repeat 3
			if titley>=3:glColor4d 0.16,0.16,0.16,1.0:else:glColor4d 0.5,0.5,0.5,1.0
			if titley==cnt:glColor4d 1.0,1.0,1.0,1.0
			pos 20,240+64*cnt
			HGLgcopy score_tex,256,44*(2+cnt),256,44
		loop
		//EASY〜HARD＋BACKを描画
		if titley>=3{
		repeat 4
			glColor4d 0.5,0.5,0.5,1.0
			if (titley-3)==cnt:glColor4d 1.0,1.0,1.0,1.0
			pos 320,228+60*cnt
			HGLgcopy score_tex,256,44*(5+cnt),256,44
		loop
		}

		//スペースで決定：　　など
		glColor4d 1.0,1.0,1.0,1.0
		pos 30,480
		HGlgcopy config_tex,0,0,190,14
		//難易度を選んで下さいのところ
		pos 226,480
		HGlgcopy config_tex,0,14+titley*14,limit(14+flm2*14,14,380),14
		//ハイスコア表示
		if (titley>=3):if (titley<=5){
			tmpHiScore=strf("%08d",ハイスコア記録.(titley-3))
			pos 224,494
			HGLgcopy config_tex,190,0,65,14//「ハイスコア」
			repeat 8//「００００００００」
				pos 291+6*cnt,494
				HGLgcopy config_tex,(peek(tmpHiScore,cnt)-48)*12+255,0,12,14
			loop
		}

		//フェードアウト管理
		if flm3{
			glColor4d 1.0,1.0,1.0,limitf(1.0*flm3/42.0,0.0,1.0)
			pos WX*ipn*3/4,WY*ipn/2
			HGLgrotate fadeout,0,0,64,64,0.0,WX*ipn*3/2,WY*ipn
		}


		glFinish//描画実行
		SwapBuffers wglGetCurrentDC()//前画面に出す

		//キーで進む
		key=0
		if flmskip==1:stick key
		if key==2{
			ds_play 23
			flm2=0
			repeat 1
				if titley==0:titley=2:break
				if titley==1:titley=0:break
				if titley==2:titley=1:break
				if titley==3:titley=6:break
				if titley==4:titley=3:break
				if titley==5:titley=4:break
				if titley==6:titley=5:break
			loop
		}
		if key==8{
			ds_play 23
			flm2=0
			repeat 1
				if titley==0:titley=1:break
				if titley==1:titley=2:break
				if titley==2:titley=0:break
				if titley==3:titley=4:break
				if titley==4:titley=5:break
				if titley==5:titley=6:break
				if titley==6:titley=3:break
			loop
		}
		if key==128:goto*sthsr
		if key==16{//決定ボタンでの制御
			ds_play 27
			repeat 1
			if titley==0:titley=4:break//ゲームスタートで難易度選択画面へ
			if titley==1:flmskip=9:flm3=1:break//コンフィグ画面へ
			if titley==2:flmskip=9:flm3=1:break//EXIT
			if titley==3:flmskip=9:flm3=1:難易度=0:break
			if titley==4:flmskip=9:flm3=1:難易度=1:break
			if titley==5:flmskip=9:flm3=1:難易度=2:break
			if titley==6:titley=0:break//難易度選択からもどる
			loop
		}

		//フレーム管理
		flm+=flmskip
		flm2++
		if flm3:flm3++
		if flm3>42{//ある決定から少し時間がたったら
			if titley==1:exec "config.exe":goto*sthsr
			if titley==2:goto*sthsr
			if titley>=3:if titley<=5:break
		}
	loop


	//後片付け
	ds_stop 0
	if ttex0:HGLReleaseTexture ttex0	:ttex0=0
	if whiteo:HGLReleaseTexture whiteo	:whiteo=0
	if config_tex:HGLReleaseTexture config_tex	:config_tex=0
	flm=0
	return

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
*OPEDプロローグ
	HGLCreateTexture1_texload mes_tex2,"data\\gr\\message2.png"//メッセージボックス2
	glClearColor 0.0,0.0,0.0,1.0

	repeat -1
		//キーチェック
		getkey key,27:if key:goto*sthsr
		kwonkey=0
		getkey key,90:if key:kwonkey=1
		getkey key,88:if key:kwonkey=1:if kwflg1>2:kwflg1+=90
		//getkey key,32:if key:kwonkey=1

		//会話準備
		if (kwonkey)&(kwsyuryou){//最後まで喋ったら
			kwflg0++//次のメッセージへ
			kwflg1=0//次のメッセージに言ったら文字フレームは0から
			//次の会話文がなければ
			if OP会話文.kwflg0=="":break
		}

		//条件分岐。会話位置によって背景更新、顔グラ更新、音楽更新
		if kwflg1==0:gosub*kwflg0条件分岐
		if kwflg0==129:break//特殊処理。最後の最後

		//背景初期化
		glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		//背景描画
		if (kwflg0!=6)&(kwflg0!=12)&(kwflg0!=13)&(kwflg0!=115){
			pos 0,0
			glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA//普通の透明抜きコピー
			HGLgcopy opprtex0,0,0,WX*IPN+WX*IPN/2,WY*IPN
		}

		//条件分岐で背景の上に出す人物描画
		gosub*人物描画

		//会話メッセージボックス
		glColor4d 1.0,1.0,1.0,0.85
		pos 0,512-132
		HGLgcopy mes_tex2,0,0,WX*ipn+WX*ipn/2,132

		//会話顔グラ
		glColor4d 1.0,1.0,1.0,1.0
		pos 10,512-132+16
		tmp =OP会話状況.kwflg0\256
		tmpx=tmp\100
		tmpy=tmp/100
		HGLgcopy mesgr_tex,tmpx*100,tmpy*100,100,100

		//普通の会話
		tmp=OP会話状況.kwflg0/256//色情報
		glColor4d 0.0,0.0,0.0,1.0
		pos 128,512-132+12
		HGLmes2 OP会話文.kwflg0,(kwflg1/8),22,kwsyuryou,tmp
		//もし会話が終了していれば▼を点滅表示
		if (kwsyuryou)&((opflm\280)<140){
			pos 470+256,480
			HGLmes "▼",22
		}

		glColor4d 1.0,1.0,1.0,1.0
		glFinish
		SwapBuffers wglGetCurrentDC()
		await 4*FBAI
		opflm+=4
		kwflg1+=FBAI//メッセージの流れるフレーム
	loop



	//後片付け
	if mes_tex2:HGLReleaseTexture mes_tex2	:mes_tex2=0
	if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
	if prnm_tex0:HGLReleaseTexture prnm_tex0:prnm_tex0=0
	if hks_tex0:HGLReleaseTexture hks_tex0	:hks_tex0=0
	kwflg0=0
	kwflg1=0
	wait 50
	return






*kwflg0条件分岐
///////////////////////////OPプロローグの前半部分ここから////////////////////////////////////////////////////////////////
	//一番最初
	if kwflg0==0{
		//サウンドのほうのプロローグロード
		ds_load "data\\sound\\prrg.mp3",0:ds_loop 0:ds_vol 0,int(BGM音量倍率*100*2)
		//オープニングプロロr−グtex0。背景画像。地球の背景画像
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		HGLCreateTexture1_texload opprtex0,"data\\gr\\opprtex0.jpg"
		//プロ生１枚絵0
		color 0,255,0
		if prnm_tex0:HGLReleaseTexture prnm_tex0	:prnm_tex0=0
		HGLCreateTexture1_texload prnm_tex0,"data\\gr\\prnm0.png",1
	}

	//強いられてるんだ
	if kwflg0==5{
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		HGLCreateTexture1_texload opprtex0,"data\\gr\\opprtex1.png"//オープニングプロロr−グtex0。背景画像。強いられてるんだ
	}

	//フェードアウト100フレーム
	if kwflg0==6{
		repeat 400/FBAI
			//背景初期化
			glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			//背景描画
			pos 0,0
			glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA//普通の透明抜きコピー
			HGLgcopy opprtex0,0,0,WX*IPN+WX*IPN/2,WY*IPN
			glColor4d 1.0,1.0,1.0,0.01*(cnt*FBAI/4)
			pos WX*ipn*3/4,WY*ipn/2
			HGLgrotate fadeout,0,0,64,64,0.0,WX*ipn*3/2,WY*ipn
			glColor4d 1.0,1.0,1.0,1.0
			glFinish
			SwapBuffers wglGetCurrentDC()
			await 4*FBAI
		loop
	}

	//学校の廊下
	if kwflg0==7{
		//次の画像読み込み
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		wait 120
		//次の音楽読み込み
		ds_load "data\\sound\\gogonoosanpo.mp3",0:ds_loop 0:ds_vol 0,int(BGM音量倍率*100*2)
		HGLCreateTexture1_texload opprtex0,"data\\gr\\opprtex2.jpg"//学校の廊下
	}

	//フェードアウト100フレーム//研究所背景
	if kwflg0==12{
		repeat 400/FBAI
			//背景初期化
			glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			//背景描画
			pos 0,0
			glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA//普通の透明抜きコピー
			HGLgcopy opprtex0,0,0,WX*IPN+WX*IPN/2,WY*IPN
			glColor4d 1.0,1.0,1.0,0.01*(cnt*FBAI/4)
			pos WX*ipn*3/4,WY*ipn/2
			HGLgrotate fadeout,0,0,64,64,0.0,WX*ipn*3/2,WY*ipn
			glColor4d 1.0,1.0,1.0,1.0
			glFinish
			SwapBuffers wglGetCurrentDC()
			await 4*FBAI
		loop
		//次の画像読み込み
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		HGLCreateTexture1_texload opprtex0,"data\\gr\\opprtex3.jpg"//研究所背景
	}

	//パソコン画面、プrグレスバー
	if kwflg0==23{
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		HGLCreateTexture1_texload opprtex0,"data\\gr\\opprtex4.jpg"//パソコン画面、プrグレスバー
	}

	//研究所
	if kwflg0==28{
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		HGLCreateTexture1_texload opprtex0,"data\\gr\\opprtex3.jpg"//研究所
	}

	//音楽だけ変更  あとすこしwait
	if kwflg0==35{
		wait 200
		//次の音楽読み込み
		ds_load "data\\sound\\prrg2.mp3",0:ds_loop 0:ds_vol 0,int(BGM音量倍率*100*2)
		//博士１枚絵0
		color 0,255,0
		if hks_tex0:HGLReleaseTexture hks_tex0	:hks_tex0=0
		HGLCreateTexture1_texload hks_tex0,"data\\gr\\hks0.png",1
	}

	//真っ白+プロ生上向き
	if kwflg0==57{
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		HGLCreateTexture1_texload opprtex0,"data\\gr\\opprtex5.jpg"//真っ白+プロ生上向き
	}

	//宇宙船発射
	if kwflg0==59{
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		HGLCreateTexture1_texload opprtex0,"data\\gr\\opprtex6.png"//宇宙船発射
	}

///////////////////////////OPプロローグの前半部分ここまで////////////////////////////////////////////////////////////////
///////////////////////////ED幕引きの後半部分ここから////////////////////////////////////////////////////////////////
	//背景学校夕方、BGM流す
	if kwflg0==100{
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		HGLCreateTexture1_texload opprtex0,"data\\gr\\edmktex7.jpg"//学校夕方
		//BGM
		ds_load "data\\sound\\caramelkoubou.mp3",0:ds_loop 0:ds_vol 0,int(BGM音量倍率*84*2)
		//プロ生ちゃん人物画像１枚絵1。PRNMRGBA0X,PRNMRGBA0Y
		if prnm_tex0:HGLReleaseTexture prnm_tex0	:prnm_tex0=0
		dim data,PRNMRGBA0X*PRNMRGBA0Y
		bload "data\\gr\\prnm1RGBA",data
		HGLCreateTexture1 prnm_tex0,PRNMRGBA0X,PRNMRGBA0Y,GL_RGBA,GL_UNSIGNED_BYTE
		HGLWriteTexture prnm_tex0,data,0,0,PRNMRGBA0X,PRNMRGBA0Y,GL_RGBA,GL_UNSIGNED_BYTE
		sdim data,1
	}

	//背景街夕方
	if kwflg0==108{
		repeat 400/FBAI
			//背景初期化
			glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			//背景描画
			pos 0,0
			glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA//普通の透明抜きコピー
			HGLgcopy opprtex0,0,0,WX*IPN+WX*IPN/2,WY*IPN
			gosub*人物描画
			glColor4d 1.0,1.0,1.0,0.01*(cnt*FBAI/4)
			pos WX*ipn*3/4,WY*ipn/2
			HGLgrotate fadeout,0,0,64,64,0.0,WX*ipn*3/2,WY*ipn
			glColor4d 1.0,1.0,1.0,1.0
			glFinish
			SwapBuffers wglGetCurrentDC()
			await 4*FBAI
		loop
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		HGLCreateTexture1_texload opprtex0,"data\\gr\\edmktex8.jpg"//背景街夕方
		wait 60
	}

	//コンコンの前のフェードアウト
	if kwflg0==115{
		repeat 400/FBAI
			//背景初期化
			glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			//背景描画
			pos 0,0
			glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA//普通の透明抜きコピー
			HGLgcopy opprtex0,0,0,WX*IPN+WX*IPN/2,WY*IPN
			pos 340,512-PRNMRGBA0Y
			HGLgcopy prnm_tex0,0,0,PRNMRGBA0X,PRNMRGBA0Y
			glColor4d 1.0,1.0,1.0,0.01*(cnt*FBAI/4)
			pos WX*ipn*3/4,WY*ipn/2
			HGLgrotate fadeout,0,0,64,64,0.0,WX*ipn*3/2,WY*ipn
			glColor4d 1.0,1.0,1.0,1.0
			glFinish
			SwapBuffers wglGetCurrentDC()
			await 4*FBAI
		loop
	}

	//背景スパコン
	if kwflg0==116{
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		HGLCreateTexture1_texload opprtex0,"data\\gr\\edmktex9.jpg"//背景スパコン
		//博士１枚絵0
		color 0,255,0
		if hks_tex0:HGLReleaseTexture hks_tex0	:hks_tex0=0
		HGLCreateTexture1_texload hks_tex0,"data\\gr\\hks0.png",1
	}

	//背景バレンタインGPU
	if kwflg0==127{
		if opprtex0:HGLReleaseTexture opprtex0	:opprtex0=0
		HGLCreateTexture1_texload opprtex0,"data\\gr\\edmktex10.jpg"//バレンタインGPU
	}

	//背景バレンタインGPUフェードアウト
	if kwflg0==128{
		kwflg1=1000
		wait 160
		repeat 1600/FBAI
			//背景初期化
			glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			//背景描画
			pos 0,0
			glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA//普通の透明抜きコピー
			HGLgcopy opprtex0,0,0,WX*IPN+WX*IPN/2,WY*IPN
			//会話メッセージボックス
			glColor4d 1.0,1.0,1.0,0.85
			pos 0,512-132
			HGLgcopy mes_tex2,0,0,WX*ipn+WX*ipn/2,132
			//会話顔グラ
			glColor4d 1.0,1.0,1.0,1.0
			pos 10,512-132+16
			tmp =OP会話状況.kwflg0\256
			tmpx=tmp\100
			tmpy=tmp/100
			HGLgcopy mesgr_tex,tmpx*100,tmpy*100,100,100
			//普通の会話
			tmp=OP会話状況.kwflg0/256//色情報
			glColor4d 0.0,0.0,0.0,1.0
			pos 128,512-132+12
			HGLmes2 OP会話文.kwflg0,(kwflg1/8),22,kwsyuryou,tmp
			//フェードアウト
			glColor4d 1.0,1.0,1.0,0.01*(cnt*FBAI/16)
			pos WX*ipn*3/4,WY*ipn/2
			HGLgrotate fadeout,0,0,64,64,0.0,WX*ipn*3/2,WY*ipn
			//レンダリング
			glColor4d 1.0,1.0,1.0,1.0
			glFinish
			SwapBuffers wglGetCurrentDC()
			await 4*FBAI
			//音量下げる
			ds_vol 0,int(0.84*(100.0-0.5*(cnt*FBAI/8))*BGM音量倍率*2)
		loop
		kwflg0++
		
		//フェードアウト
		glColor4d 1.0,1.0,1.0,1.0
		pos WX*ipn*3/4,WY*ipn/2
		HGLgrotate fadeout,0,0,64,64,0.0,WX*ipn*3/2,WY*ipn
		//レンダリング
		glFinish
		SwapBuffers wglGetCurrentDC()
		await 4*FBAI
		wait 350
	}

///////////////////////////ED幕引きの後半部分ここまで////////////////////////////////////////////////////////////////
	return


//背景の上に出す人物描画
*人物描画
	//前半プロ生、右にでてくるやつ
	if (kwflg0>6)&(kwflg0!=12)&(kwflg0!=13)&(kwflg0<57)&((kwflg0<23)|(kwflg0>27)){
		pos 598,205
		HGLgrotate prnm_tex0,0,0,456,732,0.0,456/2,732/2
	}
	//前半博士、左にでてくるやつ
	if (kwflg0>=35)&(kwflg0<57){
		pos 170,216
		HGLgrotate hks_tex0,0,0,876,1280,0.0,int(0.34*876),int(0.34*1280)
	}


	//後半プロ生、右に出てくる奴その１
	if (kwflg0>=100)&(kwflg0<=114){
		pos 340,512-PRNMRGBA0Y
		HGLgcopy prnm_tex0,0,0,PRNMRGBA0X,PRNMRGBA0Y
	}
	//後半プロ生、右に出てくる奴その２
	if (kwflg0>=116)&(kwflg0<=126){
		pos 500,512-PRNMRGBA0Y
		HGLgcopy prnm_tex0,0,0,PRNMRGBA0X,PRNMRGBA0Y
	}
	//後半博士、左にでてくるやつ
	if (kwflg0>=116)&(kwflg0<=126){
		pos 180,210
		HGLgrotate hks_tex0,0,0,876,1280,0.0,int(0.27*876),int(0.27*1280)
	}
	return
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////














*スタッフロール
	//自分
	if iti<1600000{
		staffflm=1.0*iti/1600000//0.0〜1.0へ変換
		staffflm=absf(staffflm-0.5)//0.5〜0.0〜0.5のV字へ変換
		staffflm=2.5-5.0*staffflm//0.0〜2.5〜0.0のヘの字へ変換
		staffflm=limitf(staffflm,0.0,1.0)
		tmp5_posx=150//pos x位置
		tmp5_posy=220//pos y位置
		strdata="プログラム	toropippi"
		p3=22//フォントサイズ
		//影付き文字にしたいので
		pos tmp5_posx+1,tmp5_posy
		glColor4d 1.0,1.0,1.0,0.21*staffflm
		HGLmes strdata,p3
		pos tmp5_posx,tmp5_posy+1
		glColor4d 1.0,1.0,1.0,0.155*staffflm
		HGLmes strdata,p3
		pos tmp5_posx+1,tmp5_posy+1
		glColor4d 1.0,1.0,1.0,0.155*staffflm
		HGLmes strdata,p3
		pos tmp5_posx+2,tmp5_posy+1
		glColor4d 1.0,1.0,1.0,0.11*staffflm
		HGLmes strdata,p3
		//一番手前の表示
		glColor4d 1.0,1.0,1.0,staffflm
		pos tmp5_posx,tmp5_posy
		HGLmes strdata,p3
	}

	//dedp
	if (iti>1650000)|(iti<2900000){
		staffflm=1.0*(iti-1650000)/1250000//0.0〜1.0へ変換
		staffflm=absf(staffflm-0.5)//0.5〜0.0〜0.5のV字へ変換
		staffflm=2.5-5.0*staffflm//0.0〜2.5〜0.0のヘの字へ変換
		staffflm=limitf(staffflm,0.0,1.0)
		tmp5_posx=165//pos x位置
		tmp5_posy=220//pos y位置
		strdata="グラフィック	dedp"
		p3=22//フォントサイズ
		//影付き文字にしたいので
		pos tmp5_posx+1,tmp5_posy
		glColor4d 1.0,1.0,1.0,0.21*staffflm
		HGLmes strdata,p3
		pos tmp5_posx,tmp5_posy+1
		glColor4d 1.0,1.0,1.0,0.155*staffflm
		HGLmes strdata,p3
		pos tmp5_posx+1,tmp5_posy+1
		glColor4d 1.0,1.0,1.0,0.155*staffflm
		HGLmes strdata,p3
		pos tmp5_posx+2,tmp5_posy+1
		glColor4d 1.0,1.0,1.0,0.11*staffflm
		HGLmes strdata,p3
		//一番手前の表示
		glColor4d 1.0,1.0,1.0,staffflm
		pos tmp5_posx,tmp5_posy
		HGLmes strdata,p3
	}
	return
//粒子で文字をバンバン頑張るところ
//運が良ければまだCPU負荷隠蔽の範囲内
	//edflg0//上段の文字管理
	//edflg1//下段の文字管理
*スタッフロール2
	//CPU負荷
	ofsetTmp=edFlm\2//512ドットのうち256ドットを埋めたい。このとき奇数ピクセルを埋めるか偶数ピクセルを埋めるかの変数
	tmp256=0

	//上段
	if debugMode==1:if edFlm==1000:edflg0=0:gosub*スタッフロール裏バッファクリアルーチン148:mes "ご視聴ありがとう"
	if edFlm==3000+1280*0	:edflg0=0:gosub*スタッフロール裏バッファクリアルーチン148:mes "Thank You For Playing"
	if edFlm==3000+1280*2	:edflg0=0:gosub*スタッフロール裏バッファクリアルーチン148:mes "デバッグ協力スペシャルサンクス ： G.Y   T.Y   O.Y   A.T   K.H   D.K"
	if edFlm==3000+1280*9	:edflg0=0:gosub*スタッフロール裏バッファクリアルーチン148:mes "お借りした素材   背景：「玉英(ザラスドットコム)」  「きまぐれアフター」"
	if edFlm==3000+1280*13	:edflg0=0:gosub*スタッフロール裏バッファクリアルーチン148:mes "「ここから 遠い どこか」   「誰そ彼亭」   「ゆんフリー写真素材集」"
	if edFlm==3000+1280*17	:edflg0=0:gosub*スタッフロール裏バッファクリアルーチン148:mes "「明宮村（ヴィントドルフ）」"


	//下段
	if debugMode==1:if edFlm==1000:edflg1=0:gosub*スタッフロール裏バッファクリアルーチン149:mes "        ございました"
	if edFlm==3000+1280*5	:edflg1=0:gosub*スタッフロール裏バッファクリアルーチン149:mes "グラフィック協力：「メカマスター(鋼鉄親子でゲーム漬け)」"
	if edFlm==3000+1280*14	:edflg1=0:gosub*スタッフロール裏バッファクリアルーチン149:mes "キャラクター素材(暮井 慧)：＠2011-2015 プログラミング生放送(プロ生)"
	if edFlm==3000+1280*18	:edflg1=0:gosub*スタッフロール裏バッファクリアルーチン149:mes "サウンド素材：「煉獄庭園」  「ザ・マッチメイカァズ」"
	if edFlm==3000+1280*21	:edflg1=0:gosub*スタッフロール裏バッファクリアルーチン149:mes "「甘茶の音楽工房」"
	if edFlm==3000+1280*26	:edflg1=0:gosub*スタッフロール裏バッファクリアルーチン149:mes "エンディングテーマ ： Z･E･R･O-RK.ver-  (煉獄庭園)"

	w=0//index
	if (konagire係数!=0.25){//そもそも粒子数が正常ならば
		gsel 148//上段の文字
		repeat 128
			pget limit(edflg0/5,0,1280-1),cnt/2//edflg0/2のところで速度調節
			if ginfo_r!=255{//文字の黒い部分
				//文字のところは粒子いれない
			}else{
				ryuusihspgawa3.w=float(504.0):w++//x座標
				ryuusihspgawa3.w=float(2.0*cnt+ofsetTmp):w++//y座標
				tmp256++
			}
		loop
		gsel 149//下段の文字
		repeat 128
			pget limit(edflg1/5,0,1280-1),cnt/2//edflg0/2のところで速度調節
			if ginfo_r!=255{//文字の黒い部分
				//文字のところは粒子いれない
			}else{
				ryuusihspgawa3.w=float(504.0):w++//x座標
				ryuusihspgawa3.w=float(256.0+2.0*cnt+ofsetTmp):w++//y座標
				tmp256++
			}
		loop
		gsel 0:w=0

	}else{//粒子数が少ない時は工夫する
		if (edFlm\2==0){//2フレームに1回
			gsel 148//上段の文字
			repeat 64
				pget limit(edflg0/5,0,1280-1),cnt//edflg0/2のところで速度調節
				if ginfo_r!=255{//文字の黒い部分
					//文字のところは粒子いれない
				}else{
					ryuusihspgawa3.w=float(504.0):w++//x座標
					ryuusihspgawa3.w=float(4.0*cnt+2.0*ofsetTmp):w++//y座標
					tmp256++
				}
			loop
			gsel 149//下段の文字
			repeat 64
				pget limit(edflg1/5,0,1280-1),cnt//edflg0/2のところで速度調節
				if ginfo_r!=255{//文字の黒い部分
					//文字のところは粒子いれない
				}else{
					ryuusihspgawa3.w=float(504.0):w++//x座標
					ryuusihspgawa3.w=float(256.0+4.0*cnt+2.0*ofsetTmp):w++//y座標
					tmp256++
				}
			loop
			gsel 0:w=0
		}
	}

	//粒子文字適応
	if tmp256!=0{
		StageRys2 RYS,RYc,ryuusihspgawa3,ryusiiro,tmp256,hktkais,0,粒子数,tmp256
		hktkais+=tmp256
		hktkais\=粒子数
	}
	//フレーム
	edFlm++
	edflg0++
	edflg1++
	return
*スタッフロール裏バッファクリアルーチン148
	gsel 148:color 255,255,255:boxf:color 0,0,0:pos 0,25:font msgothic,25,1
	return

*スタッフロール裏バッファクリアルーチン149
	gsel 149:color 255,255,255:boxf:color 0,0,0:pos 0,14:font msgothic,25,1
	return




}