第1章 概要
1.1 BGMドライバとは
1/60秒単位でBGM(Background Music)を演奏するマシン語のルーチン群です。
DMシステム2の環境下においてはBGMドライバも他のドライバと同様に差し替え可能ですが、DMシステム2対応ソフトの設定を変更する「ユーティリティーディスク」との整合性を保つため、「ユーティリティーディスク」内の付属ツールではBGMドライバを変更できません。対応ソフト個々でBGMドライバを変更してください。
updated:
1/60秒単位でBGM(Background Music)を演奏するマシン語のルーチン群です。
DMシステム2の環境下においてはBGMドライバも他のドライバと同様に差し替え可能ですが、DMシステム2対応ソフトの設定を変更する「ユーティリティーディスク」との整合性を保つため、「ユーティリティーディスク」内の付属ツールではBGMドライバを変更できません。対応ソフト個々でBGMドライバを変更してください。
この章ではDMシステム2で対応するドライバ及び、今後対応が予定されているドライバを紹介します。
下線の引いてあるドライバ名をクリックすると.LZH形式のファイルを転送します。
Ain.さんが開発したミュージックドライバです。OPLL・PSG・SCCの計17音同時発声が可能で、ゲームミュージックから歌謡曲まで豊富なジャンル(のデータ)が日本のMSX系パソコン通信ネットで多数公開されていました。
現在では当クラブがMGSDRVの保守サポートを担当しています。MGSDRVについて詳しくはこちら→ MGSDRVの配布サイト
MGSDRVはDMシステム2のBGMドライバのデフォルト設定となっています。
※DMシステム2版のMGSDRVは正式公開版からのサブセットとなります。カラオケ機能およびMGSARCによる圧縮データに対応しません。正式版をDMシステム2で利用することはできません。
M.K Softが開発したミュージックドライバで、アスキー刊「MSXマガジン」が発表したミュージックドライバ「MuSICA」とデータの上位互換性があります。OPLL・PSG・SCCの17音同時発声が可能で、トランスポーズ機能等が追加されています。エディタの快適さには定評が有り、今でも人気があるドライバの一つです。
Syntaxさんの「NVマガジン」「R-SYSTEM」等のソフトウェアでMuMAKAが採用されています。
※DMシステム2版のMuMAKAは正式公開版からのサブセットとなります。MuMAKAはM.K Softの著作物で、商利用にはM.K Softの許可が必要です。正式版をDMシステム2で利用することはできません。
MSX-MUSICのBIOSに内蔵されているBGM再生ルーチンです。
FM-BIOSの利点は処理の「軽さ」です。他のBGMドライバは多くの機能を実現する為に割り込み処理に時間を要しますが、FM-BIOSは最低限の演奏しかできないかわりに割り込み処理にほとんど時間をかけません。処理速度を確保したいケースで最適です。
当クラブによるリリース予定はありません。
詳しくは、ドライバについて の 第2章 ドライバのインストール方法 をご覧ください。
BGMドライバの利用領域は、0400h~21FFhの7.5K(7680)バイトです。
ヘッダは0400hから開始する全72バイトです。
先頭からのオフセット | バイト数 | 内訳 |
---|---|---|
+ 0~+39 | 40 | ドライバ名称(空白は20hで埋める) |
+40 | 1 | EOFコード (1Ah) |
+41 | 1 | ドライバ種別番号 (03h:BGMドライバ) |
+42 | 1 | 演奏データ形式 (0:MGSDRV 1:MuMAKA 2:FM-BIOS)※ |
+43~+47 | 5 | 未使用 |
+48~+50 | 3 | コールエントリ BGMON へのコール先(JP xxxxh) |
+51~+53 | 3 | コールエントリ BGMOFF へのコール先(JP xxxxh) |
+54~+56 | 3 | コールエントリ BGMPAU へのコール先(JP xxxxh) |
+57~+59 | 3 | コールエントリ BGMTMP へのコール先(JP xxxxh) |
+60~+62 | 3 | コールエントリ BGMTRS へのコール先(JP xxxxh) |
+63~+65 | 3 | コールエントリ BGMVOL へのコール先(JP xxxxh) |
+66~+68 | 3 | コールエントリ PSGCHN へのコール先(JP xxxxh) |
+69~+71 | 3 | コールエントリ BGMINT へのコール先(JP xxxxh) |
+72~ | - | ドライバ本体 |
※対応するドライバがありましたらご連絡ください。順に番号を割り振らさせていただきます。
ORG 0400h
0400 DEFM 'ドライバ名称を漢字20文字に収めます。 ' ;余白は20hで
0428 DEFB 1ah ;EOF
0429 DEFB 03h ;BGMドライバの意
042A DEFB 00h ;演奏データ形式
042B DEFS 5 ;未使用
0430 JP BGMON ;BGMの演奏準備とデータ形式のチェック
0433 JP BGMOFF ;BGMの演奏停止
0436 JP BGMPAU ;ポーズとその解除
0439 JP BGMTMP ;テンポの設定
043C JP BGMTRS ;トランスポーズの設定
043F JP BGMVOL ;音量の設定
0442 JP PSGCHN ;PSGのチャンネルのon/off
0445 JP BGMINT ;1/60秒毎にコールされる、実際のBGMの演奏
[in] | HL | BGMデータの開始アドレス |
---|---|---|
A | ループ回数(0:無限) ※MGSDRVでは無効 | |
[out] | A | 演奏状態 (0:正常 nz:BASICでのエラーコード) |
演奏の準備をします。
このエントリで、BGMドライバとBGMデータの形式が一致しているかどうかを調べてください。もしBGMデータの形式が一致しない場合は、Aレジスタに0以外の数値(エラー番号)を代入してからretしてください。
タイマーフックへの接続はシステム側で行われるため、ドライバ側が処理する必要はありません。DMシステム2はこのルーチンをコールした後、演奏ルーチン(後述)をタイマーフックへ接続します。
エラー番号はMSX-BASICのERR関数相当にしていただければ幸いです。ちなみに当クラブ製作のBGMドライバでは「13(Type Mismatch)」を設定しています。
エラー番号が返された場合は、DMシステム2はタイマーフックへの接続を行わずにテキストの実行を中断します。
[in] | なし |
---|---|
[out] | なし |
演奏を終了します。
このエントリで、BGM演奏を終了する為の処理のみを行ってください。(音源の初期化など)
タイマーフックの切り離しはシステム側で行われるため、ドライバ側が処理する必要はありません。DMシステム2は演奏ルーチンをタイマーフックから切り離した後、このルーチンをコールします。
[in] | なし |
---|---|
[out] | なし |
ポーズ状態を切り替えます。
演奏中ならポーズ、ポーズ中なら再開、というようにトグル式にします。
[in] | なし |
---|---|
[out] | なし |
テンポを設定します。が、BGMのテンポ変更はシステム側の内部処理で実現できてしまった為、このエントリーは今のところ使用していません。
今後新しいエントリーが必要になった時の為の予約としておきます。実際は即retするだけで構いません。
[in] | A | 8bitの2の補数(-128~127) |
---|---|---|
[out] | なし |
トランスポーズ(転調)を設定します。
トランスポーズ機能が無いドライバでは即retするだけで構いません。
[in] | A | マスターボリューム(0(小)~15(大)) |
---|---|---|
L | OPLLの音量相対値 (-15~15) | |
E | PSGの音量相対値 (-15~15) | |
C | SCCの音量相対値 (-15~15) | |
[out] | なし |
マスターボリュームと音源毎の音量バランスを設定します。
音量設定機能が無いドライバでは即retするだけで構いません。
[in] | L | b7~b3 | 未使用 |
---|---|---|---|
b2 | PSGチャンネルC(0:off 1:on) | ||
b1 | PSGチャンネルB(0:off 1:on) | ||
b0 | PSGチャンネルA(0:off 1:on) | ||
[out] | なし |
PSGの占有と開放を設定します。ビットが1の時BGMドライバが占拠します。
チャンネル設定機能が無いドライバでは即retするだけで構いません。
[in] | なし |
---|---|
[out] | なし |
BGMデータを演奏します。
DMシステム2はタイマー割り込み内からこのルーチンをコールします。
OPLLレジスタの書き換えには、DMシステム2のWRTOPLを推奨します。このエントリーはDMシステム2のインストール時に機種に適したルーチンへと書き換えられますので、安心して利用できます。
[in] | A | レジスタ番号 |
---|---|---|
E | データ | |
[out] | なし |
復帰後は常にEI状態となります。
DMシステム2のインストール時にSCCが接続されていれば自動的にオープンしますので、BGMドライバではオープン処理の必要がありません。OPLLとSCCの存在するスロットはDMシステム2のインフォメーションエリアに格納されています。
SLTOPL (4300h+16) | FM音源のあるスロット (255:なし) |
---|---|
SLTSCC (4300h+17) | SCC音源のあるスロット (255:なし) |