GIGAMIX DM-SYSTEM2
BGMドライバ
Copyright (c) 1997 GIGAMIX, All rights reserved.

updated: Sep 25, 1997
sorry, this page is Japanese only.

● もくじ

  1. BGMドライバとは

  2. 対応済みBGMドライバ

  3. 現在開発中のBGMドライバ

  4. その他、対応が予定されているもの

  5. BGMドライバの作り方

-------------------------------------------------------------------------

● BGMドライバ

 1/60秒割り込みでBGMを演奏するルーチンです。

 BGMドライバも他のドライバと同様に変更可能ですが、DMシステム2対応ソフトの設定を変更する「ユーティリティーディスク」との整合性を保つため、「ユーティリティーディスク」内の付属ツールではBGMドライバを変更できません。対応ソフト個々でBGMドライバを変更してください。

-------------------------------------------------------------------------

● 対応済みBGMドライバ

下線の引いてあるドライバ名をクリックすると.LZH形式のファイルを転送します。

MGSDRV (デフォルト)
BGM-MGS.LZH (5KB)
Ain.@アレスネットさんの提唱した音楽ドライバで、日本のMSX系パソコン通信で有名です。OPLL・PSG・SCCの計17音同時発声が可能で、強力なループ機能やカラオケ機能などがウリです。ゲームミュージックから歌謡曲まで、豊富なジャンル(のデータ)がMSX系ネットワークで出まわっています。

現在では作者のAin.氏に代わり、ギガミックスがMGSDRVのサポートを担当しています。


MuMAKA (M.K Soft)

アスキーののMSXマガジンが発売した「MuSICA」との互換BGMドライバであるMuMAKAのDMシステム2版です。OPLL、PSG、SCCの17音同時演奏が可能で、トランスポーズ機能等が追加されています。バグも結構ありましたが、そのエディタの快適さには定評が有ります。

その後Mマガは休刊、TAKERUでのASCII製ソフトのサポートも終了した為、現在、入手は非常に困難です。最近では「勤労シリーズ」と言うMuSICA上位互換のBGMドライバがMSX系パソコン通信で非公開で出回っているそうです。

MuMAKAはMuSICAの仕様に合わせ、M.K Softが製作したMuSICAの上位互換ドライバです。SYNTAXさんの「NVマガジン」「R-SYSTEM」等のソフトでMuMAKAが採用されています。


FM-BIOS
BGM-BIOS.LZH (3KB)
MSX-MUSICに密かに内蔵されているBGMの演奏ルーチンです。ただし上記のドライバはOPLL・PSG・SCCを駆使した音楽を演奏できることに対し、これはOPLLでの最低限の演奏しかできません。

FM-BIOSの利点はその「軽さ」です。他のBGMドライバは多くの機能を実現する為に割り込み処理に時間がかかりますが、FM-BIOSは最低限の演奏しかできないかわりに、割り込み処理にほとんど時間をかけません。とにもかくにもスピードが欲しいソフトに最適です。

ちなみに徳間書店「MSX-FAN」誌の付録ディスクでもこのBGM形式が採用されていました。

-------------------------------------------------------------------------

● 現在開発中のBGMドライバ

● その他、対応が予定されているもの

ネタ募集中(笑)

-------------------------------------------------------------------------

● BGMドライバの作り方

○ 本体(0400h〜21FFh:7.5KB)

+ 0〜+39ドライバ名称
+40EOFコード (1Ah)
+41ドライバ種別番号 (03h:BGMドライバ)
+42演奏データ形式 (0:MGSDRV 1:MuMAKA 2:FM-BIOS)※
+43〜+47未使用
+48〜コールエントリ

※対応するドライバがありましたらご連絡ください。順に番号を割り振らさせていただきます。

        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      BGMVOL  ;音量の設定
0442    JP      PSGCHN  ;PSGのチャンネルのON/OFF
0445    JP      BGMINT  ;1/60秒毎にコールされる、実際のBGMの演奏

○ エントリーアドレス

+48 BGMON(0430h) BGMの演奏準備とデータ形式のチェック

[in] HLBGMデータの開始アドレス
Aループ回数(0:無限) ※MGSDRVでは無効
[out] A演奏状態 (0:正常 NZ:BASICでのエラーコード)

演奏の準備をします。

このエントリで、BGMドライバとBGMデータの形式が一致しているかどうかを調べてください。もしBGMデータの形式が一致しない場合は、Aレジスタに0以外の数値(エラー番号)を代入してからretしてください。

エラー番号はMSX-BASICのerr関数相当にしていただければ幸いです。ちなみにGIGAMIX製作のBGMドライバでは、Type mismatchが出ます。

MGSDRV形式ではデータ先頭の "MGS"という文字列で判別しています。MuSICA(Musam)形式ではデータ先頭の1バイトが00h及び01hで判断しています。

タイマーフックへの接続はシステム側で行われるため、ドライバ側が処理する必要はありません。DMシステム2はこのルーチンをコールした後、演奏ルーチン(後述)をタイマーフックへ接続します。

エラー番号が返された場合は、DMシステム2はタイマーフックへの接続を行わずにテキストの実行を中断します。


+51 BGMOFF(0433h) BGMの演奏停止

[in] なし
[out] なし

演奏を終了します。

このエントリで、BGM演奏を終了する為の処理のみを行ってください。(音源の初期化など)

タイマーフックの切り離しはシステム側で行われるため、ドライバ側が処理する必要はありません。DMシステム2は演奏ルーチンをタイマーフックから切り離した後、このルーチンをコールします。


+54 BGMPAU(0436h) ポーズとその解除 ※トグルで切替

[in] なし
[out] なし

ポーズ状態を切り替えます。

演奏中ならポーズ、ポーズ中なら再開、というようにトグル式にします。


+57 BGMTMP(0439h) テンポの設定

[in] なし
[out] なし

テンポを設定します。が、BGMのテンポ変更はシステム側の内部処理で実現できてしまった為、このエントリーは今のところ使用していません。

今後新しいエントリーが必要になった時の為の予約としておきます。実際は即retするだけで構いません。


+60 BGMTRS(043Ch) トランスポーズの設定

[in] A8bitの2の補数(-128〜127)
[out] なし

トランスポーズ(転調)を設定します。
トランスポーズ機能が無いドライバでは即retするだけで構いません。


+63 BGMVOL(043Fh) 音量の設定

[in] Aマスターボリューム(0(小)〜15(大))
LOPLLの音量相対値 (-15〜15)
EPSGの音量相対値 (-15〜15)
CSCCの音量相対値 (-15〜15)
[out] なし

マスターボリュームと音源毎の音量バランスを設定します。
音量設定機能が無いドライバでは即retするだけで構いません。


+66 PSGCHN(0442h) PSGのチャンネルのON/OFF

[in] L b7〜b3未使用
b2PSGチャンネルC (0:OFF 1:ON)
b1PSGチャンネルB (0:OFF 1:ON)
b0PSGチャンネルA (0:OFF 1:ON)
[out] なし

PSGの占有と開放を設定します。ビットが1の時BGMドライバが占拠します。
チャンネル設定機能が無いドライバでは即retするだけで構いません。


+69 BGMINT(0445h) 1/60秒毎にコールされる、実際のBGMの演奏

[in] なし
[out] なし

BGMデータを演奏します。
DMシステム2はタイマー割り込み内からこのルーチンをコールします。


○ 注意

 OPLLレジスタの書き換えには、DMシステム2のWRTOPLを推奨します。このエントリーはDMシステム2のインストール時に機種に適したルーチンへと書き換えられますので、安心して利用できます。

WRTOPL (4028h) OPLLのレジスタに値を書き込む

[in] Aレジスタ番号
Eデータ
[out] なし

復帰後は常にEI状態となる。

 DMシステム2のインストール時にSCCが接続されていれば自動的にオープンしますので、BGMドライバではオープン処理の必要がありません。OPLLとSCCの存在するスロットはDMシステム2のインフォメーションエリアに格納されています。
SLTOPL (4300h+16)FM音源のあるスロット (255:なし)
SLTSCC (4300h+17)SCC音源のあるスロット (255:なし)
-------------------------------------------------------------------------
Copyright (c) 1997 GIGAMIX, All rights reserved.

Homepage designed by
Takashi KOBAYASHI (ban's design inc.)

※ 本ページを構成するすべてのデータの無断転載を禁じます