FM-PAC

FM-PACは、松下電器産業より1988年7月25日に発売された、MSXコンピュータ用の拡張カートリッジである。正式名称は「FM Pana Amusement Cartridge」。パナアミューズメントカートリッジと同様の一部のゲームなどに対応したバッテリーバックアップメモリ、並びにYM2413を搭載し、MSXに9重和音、もしくは6重和音 + ドラムセット5音の演奏機能と、対応ゲームに対するデータのセーブを実現する。希望小売価格は7800円。

1. 概要
-----

FM-PACは「FM Pana Amusement Cartridge」を省略した呼び方である。そのほか、「FM PAC」または「FM P.A.C.」と略される。使用に際してはMSX本体のRAMが32KB以上必要である。

カートリッジの形態で供給され、パナアミューズメントカートリッジ同様、8KBのSRAMを搭載しており、8つのセグメントに分けてゲームソフトなどのセーブデータを記録することが可能であり、パナアミューズメントカートリッジと異なり後述のパックコマンダーと称するユーティリティーが内蔵されており、単体で他のカートリッジを含むセーブデータの管理も可能となっている。

後述のMSX-MUSICに対応したハードウェアでもあり、標準ではPSGが3チャンネルと1ビットサウンドポートのみの出力しか持っていなかったMSXに、2オペレータ、モノフォニック、9和音または6和音＋リズム5和音の発声を拡張することも可能である。

縦210mm、幅108mm、厚さ17mmと、一般的なMSX用カートリッジに比べてやや背高のサイズとなっている。FM音源の出力は拡張スロットのSUNDIN端子に接続され、本体の音声出力に合成される。本体が持つ音源とのミキシングバランスはMSX規格側で定義されていない為、調整できるようカートリッジ上部のスライドスイッチによって三段階に切り替えることが可能となっている。

2. MSX-MUSIC
------------

MSXの標準拡張音源規格としてMSX2の策定時にMSX-AUDIOが定義されていたが、実際にMSXのオプション機器として製品化されたFS-CA1が34,800円と高価な上にほとんど普及しなかったため、低コスト版として開発された。 MSX-AUDIO規格と比べてFM音源チップが廉価なものになった他、PCM用のRAMなどを必要とせず、拡張ハードウェアとして発売されたFM-PACでは音声出力も拡張スロットの音声入力を使用するなど大幅にコストダウンされている。

音源チップとして「YM2413」、ソフトウェアとして「拡張BASIC」と「FM BIOS」で構成され、他のMSXの拡張ハードウェアと異なり拡張BIOSは提供されずスロットにFM BIOSをマッピングした上で直接エントリアドレスをコールする実装になっている。

拡張BASICはMSX-AUDIOのサブセットになっているが、音名が同じであってもMSX-MUSICではハードウェアプリセット音が多く含まれ、似た音は出力されるものの同じ音が発声されるわけではない。また、ハードウェアプリセット音に該当する音色はROM内にはMSX-AUDIOと同じパラメータがセットされているものの、拡張BASICで該当する音色を読みだそうとした場合にはIllegal function callが発生するようになっている。

後述のMML節にあるとおり、通常利用される平均律以外の音律を指定できることも、他の純正MMLや、音源ドライバには見られない特徴である。

尚、FMPACの発売時期がMSX2とMSX2+の間で、MSX2+の規格と一緒に資料が出ていることからメーカーオプションとして発売されたものが規格として取り込まれたと認識されることが多いが、対応するソフトウェアのパッケージには当初より「MSX-MUSIC対応」と八分音符のロゴと共に書かれており、規格の定義の方が先で初期のソフトウェアであっても存在しなかったMSX-MUSIC内蔵の本体でもバグがない限りは正常に対応している。最大2本実装されるよう考慮された実装のMSX-AUDIOと異なり、MSX規格のI/Oポートに定義されたポートは1つ分であり、公式のドキュメントであるMSX Datapackの該当部では、MSX-MUSIC内蔵機器にFMPACを追加した時を例に、同一アドレスに複数の同一音源が接続されることで音量が二倍になることを挙げ、内蔵機器を検出の上、存在しない場合にカートリッジ側のI/Oポートを有効にするように明示している。また、商用アプリケーションについては直接制御を禁止し、FMBIOSを呼び出して制御することを要求している。内蔵機器と増設機器では識別子と電源投入時の初期状態が異なっており、前者は無条件にI/Oポートに接続されているが、後者は明示的に接続してやる必要がある。直接制御をおこなう場合は、内蔵機器を検索し、存在しなければ増設機器を検索し、存在した場合は該当スロットのフラグとなるアドレスを読み込んだ上でフラグを立てて書き込むという処理が必要となる。FMBIOSのINIOPLをコールした場合はFMBIOSを含む初期設定が行われるが、INIOPLを呼び出す場合該当スロットのページ1の状態が書き換わる為、メモリマップによっては注意が必要である。 初期状態では音源部は無効であるため後述のユーティリティーの利用も含め、バックアップメモリカートリッジとしてのFMPACの複数の接続、利用は問題はなく、ユーティリティーも各々を認識することができる。

このようにシステムとしては複数の音源をサポートしないものの、MSX-AUDIOとは別のリソースが割り振られているため共存は可能で、moonblasterなどのソフトウェアが同時使用をサポートしている他、 MSX CLUB GHQのdawn of timeなどのデモプログラムなどで、ステレオでの再生を実現している物などがある。

ドライバにあたるFM BIOSは、当時T&E SOFTに在籍していた前述の富田茂による設計とコーディングである。

1989年11月に発売された、『マイコンBASICマガジン』の別冊である『MSX/MSX2/MSX2+ ゲーム・ミュージック・プログラム大全集』では、多くの使用曲が収録された。

最初の商品化された実装であるFM-PACは爆発的なヒットを記録し、他機種のゲームをも含めたヒットチャートでベスト3入りを記録した上、パーソナルコンピュータ全般を取り扱う『マイコンBASICマガジン』誌上の音楽プログラム投稿コーナーへの投稿の8割がMSX-MUSIC用のデータで占められたとされ、また1989年5月から1990年4月までに実際に掲載された音楽プログラム61本のうち、15本がMSX-MUSICのものであった。。

本製品発売後、リリースされたMSX2用のアプリケーションにおいても多くのソフトウェアが対応した。MSX2+ではオプション扱いの規格であるが、MSX2+機で実際にMSX-MUSICを搭載しなかった機種は松下「FS-A1FX」などごく一部に限られており、事実上の標準搭載機能となっている。後に制定されたMSXturboRにて正式に標準仕様に含まれた。使用するにはMSX本体のRAMが32KiB以上必要である。

3. ハードウェアの直接制御による試み
-------------------

前述のようにMSX-MUSICのシステムは複数のYM2413が存在してもどれか一つを使用するよう定義されており、ソフトウェア的なサポートも存在しないが、MSXの拡張機器の実装として推奨されているメモリマップドI/Oの存在や、スロットの仕組み、並びにカートリッジ内音源の有効無効の選択が可能になっている仕様から独立制御が可能である。 音声出力がスロットの端子を経由する出力のみのFM-PAC以外は商品化がなかったため用途は限定されるものの、内蔵デバイスはI/Oポート、FMPACはデバイスの有効無効、スロットの切り替えとメモリマップドI/Oの併用によってハードウェアをダイレクトに制御することで最大10個のYM2413を制御する試みも存在している。

また、YM2413をDACとして利用する試みも、制御のシステムとしてMSX-MUSICのハードウェアを用いている。

4. パックコマンダー
-----------

本製品は、パナアミューズメントカートリッジの上位機種としての側面もあり、同製品に相当する一次電池によりバックアップされるSRAMが搭載されている。

ハードウェア的なバックアップメモリと、スロットにマッピングするための仕組みのみであった前身となる製品と異なり、本製品では「パックコマンダー」というデータ管理用ユーティリティソフトがROMに内蔵されており、BASIC上から「CALL FMPAC」と入力する事で、起動できた。 ユーティリティーを起動すると音源のテストとサンプルを兼ねたBGMが流れ、コピー、クリア、チェンジ、ファイルさくじょ、スロット、BGMのメニューが表示された。「スロット」のメニューのみ接続スロットとの対応を確認する機能のため、単体で接続された状態で実行する必要があるが、それ以外のメニューは電源投入時に接続されているPAC並びに、FMPAC、フロッピーディスクを対象としたデータのコピー、削除、移動などのマネジメントを行うことが可能になっている。取扱説明書、ユーティリティー内のメッセージはコマンドを呪文に準え、ゲームに模した独特の表現となっている。BGMは5曲選択できるものの、YM2413のみで構成された曲になっているため、音量バランスの基準にすることはできず、音を止めることも可能になっている。BGM1は松下電器産業発売・T&E SOFT開発によるMSX2用ゲームソフト「アシュギーネ 虚空の牙城」のステージ1、BGM2はオープニングデモの曲をFM音源アレンジしたものになっている。T&E SOFTのコンポーザーで、MBIOSの設計者である冨田茂によると、FM-PACサンプル曲のうち1曲は富田担当との事である。

5. BASICからのMSX-MUSICの使用
-----------------------

FM音源制御命令はCALL命令のセットとして拡張されている。以下に主な命令とその使用法を述べる。

基本仕様はMSX-AUDIOの記述に準拠し、内蔵音色などは異なるものの、音名、パラメータなどは、互換性を意識したつくりとなっている。

CALL MUSICFM音源BIOSを起動する。左端の値でFM9チャンネル、FM6チャンネル+リズム5チャンネルのモードを切り替える。上記の様に1とした場合はリズムモードとなり、PLAY #2命令の各チャンネルにFM音源1チャンネルを割り当てる。CALL MUSIC などとして、複数チャンネルを割り当てることもできる。第2パラメータの0はMSX-AUDIOの「CALL AUDIO」命令との表記上の互換性のために残されているものであり、MSX-MUSIC上では常に0を設定する。CALL VOICEFM音源の各チャンネルに音色を設定する。チップ内蔵の15の音色以外は自作音色扱いとなり、1セットしかない自作音色用レジスタを占有してしまうため、同時に1種類しか使用できない。BASICの各命令の実行と、音源の演奏は標準設定では同期しておらず、このコマンドは主に演奏開始前に使用され、曲中での音色変更には通常、MMLの@コマンドを用いる。CALL TEMPER音律を設定できる。CALL VOICE COPY音色データエリアと任意の配列変数間でデータをコピーする。データサイズは32バイト。MSX-BASICでは整数型が2バイトなので、dim tone% と定義されるのが一般的である。上記の例では音色番号63に配列変数tone%の内容をコピーしているが、逆の動作なども可能である。MSX-MUSICでは@0から@62まではプリセットの音色があり、慣例的に自作音色は63から使用されることが多かった。一般的には音色設定は以下のように行われる。DIM TONE%:FOR I=0 TO 15:READ A$:TONE% = VAL:NEXT DATA 0000,0000,0000,0000 DATA 0000,0000,0000,0000 DATA 0000,0000,0000,0000 DATA 0000,0000,0000,0000 CALL VOICE COPY

曲中で複数の音色を使用する時は、PLAY文の合間に CALL VOICE COPY 文を挟むことで行う。音色設定にはFM音源のパラメータを直接表記して上記の32バイト配列にコンバートする手法や、FM音源チップのレジスタに直接値を書き込むコマンドの「Yコマンド」をMML中に用いる手法もあった。前者の変換プログラムは比較的に複雑なものになる。後者では演奏中に臨機応変に音色を変化させることができる。PLAY #2, "C", "D", A$MMLに従い演奏を行う。従来の「PLAY」文が拡張されたものである。上記の右端の例の通り文字列変数も使用可能であり、むしろその方が一般的である。どの桁がFM/PSGのどのチャンネルを演奏するかは、CALL MUSICでの設定による。従来のPLAY文と違い、32分音符もある程度ズレなく演奏させることができる。標準設定では演奏はBASICの実行とは非同期に演奏される。なお、1度のPLAY分で流し込めるMMLの長さはMSX-BASICにより制限される。第1パラメータから順に、FM音源チャンネル、リズムチャンネル(0～1個）