Chapter.24 BGMドライバの修正と MMLコンパイラ作成
[Chapter24 制作物]

今回は、BGMドライバを少し改良します。
加えて、MMLコンパイラ(これはPC上で動作)を作成します。

■BGMドライバの改良 その1 「相対アドレス指定」
ゲーム中に流れる BGM は、1曲だけではありません。
また、プログラムサイズも修正のたびに変化します。
このような状況で、「絶対アドレスを指定する」というデータ構造は、非常に使いにくいです。

テストデータのように、プログラム中にダイレクトに記述している分には、絶対アドレスでもさほど不便は
ありませんが、MMLコンパイラのように別途データを作成する場合に、アドレスが頻繁に変更されると、
その都度 MMLコンパイラにアドレス指示して、コンパイルし直すという手間が発生します。
めんどくさいです。

そう言った問題を解決するために、データ上のアドレス指定は、データの先頭を 0 とするアドレス指定に
変更します。



工事中



■BGMドライバの改良 その2 「エンベロープパラメータの精度向上」
chapter23 のBGMドライバでは、エンベロープパラメータの DR/SL や、SR の設定値は実質的にほとんど選べない状態でした。
というのも、0〜15 の 16段階しかない音量を、1/60秒間隔で 1単位でしか制御出来なかったので、たとえば SR に設定する減衰量
は、0 にして減衰させないか、1 で 15/60秒で無音になる設定を使うくらいしか選べません。
2以上にすると、7/60秒未満で減衰してしまって、ほとんど音が聞こえなくなってしまうためです。

そこで、メモリとしては 8bit 確保してあるので、音量の設定値としては上位 4bit を使い、下位4bit は小数部として扱うことで
微妙な減衰を指定できるように変更します。



工事中



■MMLコンパイラ
曲データになってくると、.dw や .db なんて打ち込んでいては大変ですし、曲のイメージも掴みにくい。
そこで、BASIC の PLAY文でもおなじみの MML を、曲データに変換する MMLコンパイルを用意してみました。

MMLコンパイラは、PC上で動作するアプリケーションです。
ANSI-C に準拠して記述していますので、MacOS や Linux を使ってる人は、gcc 等でコンパイルすることで利用できるはずです。
Windows の場合は、用意した mc.exe をそのまま使って貰えれば Ok です。

MMLコンパイラの仕組みについては、PCプログラムなので、割愛させていただきます。
ソースは chapter24.zip に含まれていますので、興味のある方は、ソースを解析してください (^_^;



工事中




[▲トップページへ]