FM-7のF-BASIC V3.0のPLAY文はプログラムの実行自体が終わっても曲のデータが残っていれば音楽が鳴り続けます。このため、ゲームなどのBGMに使用する場合 ①途中で曲を停止できない ②曲のデータが切れたことを検出できないため、次の演奏を どこで始めたら良いのか判らない のような問題が生じます。 (FM77AVのF-BASIC3.3やTOWNSのF-BASIC386では曲を強制停止したり、曲が止まったかどうかを検出できるためこのような問題は発生しません) しかし、実はこれには解決策があることが判りました。 ◎曲を強制的に終わらせる: EXEC &HEC05 ◎曲のデータが残っているかどうかを検出する: PEEK(&H5C0) (値がゼロ以外なら演奏中ということにになります) <使用例> ①何かキーを押すと曲を強制停止 10 PLAY "L2CEGCEGCEGC" 20 WHILE INKEY$="":WEND 30 EXEC &HECO5 ②曲が演奏中か調べる 10 PLAY "L2CEGCEGCEGC" 20 WHILE INKEY$="":WEND 30 A=PEEK(&H5C0) 40 IF A<>0 THEN PRINT "エンソウチュウ":GOTO 20 50 PRINT "エンソウシュウリョウ" 演奏中でなければ次のMMLをPLAY文にかければ良いわけですね。 ・・・・これでこれからはFM-7用のゲームにガンガンBGMが付けられますね (せめてあと25年早く知りたかったです)。 |