調べてみるとMSXには意外とPCMが鳴らせそうな周辺機器が多いことが分かり、これもドライバ方式で差し替え可能なようにしました。
DMシステム2ではこのドライバがデフォルトでインストールされています。
このドライバはMSX2/2+ではご利用いただけません。
「とーくまん」はMSX2/2+ユーザーがPCMデータを作成できる唯一のハードウェアです。MSX2/2+ユーザーの方はぜひ入手してみてください。
それでもチープな音源で聴いてみたい方々へ贈るマニア向けアイテム。DMシステム2はこういう「遊び」も可能なのです。
割り込み処理が加わる分だけPCMの音質は下がります。またPCM再生中は割り込み処理以外の処理はできません。
このハードの解析資料を探しています。御存じの方はぜひギガミックスまで。
このハードの解析資料を探しています。御存じの方はぜひギガミックスまで。
DMシステム2ではBIOSと同等のコールエントリーを用意していますので、これらを利用すると便利です。
第1章 概要
1.1 PCMドライバとは
MSX turboR相当の8bit PCM音源を、MSX2/2+などのPCMを持たない機種で擬似的に再生するルーチンです。もちろんturboRでもこのドライバを利用することができます。
1.2 利用可能なPCMドライバ
下線の引いてあるドライバ名をクリックすると.LZH形式のファイルを転送します。
1.2.1 PSGPLAY (PSGで再生)
MSXすべての規格において内蔵されているPSG音源でPCMを発声します。実際には7.3bitでPCMを再現していますが、皆さんが予想するよりはるかに綺麗に聞こえるものと自負しております。
PSGPLAY (デフォルト)
PCM-PSG.LZH (4KB)
※ このドライバはKICHI@gulfさんのフリーウェア "PSGPLAY" を改変したものです。
1.2.2 PCM-TR (turboR内蔵PCMで再生)
MSX turboRに内蔵されたPCM音源を利用します。本来turboRならばこのドライバを利用すべきなのですが、MSX各規格で利用できるPSGPLAYの出来が良い為、お役御免になった悲しい過去を持つドライバです。どうしてもturboRのPCM音源を利用したいと思う方へ。
MSX turboR内蔵PCM
PCM-TR.LZH (2KB)
1.2.3 PCM-TKM (とーくまんで再生)
エミールソフトから発売中のPCMカートリッジ「とーくまん」の内蔵PCM音源を利用します。「とーくまん」の音質はturboRのPCM音源には劣るものの、なかなかのクオリティです。
とーくまん (エミールソフト)
PCM-TKM.LZH (2KB)
1.2.4 PCMSCC (SCCカートリッジで再生)
コナミのゲームカートリッジで採用されたSCC音源を利用します。PSGよりも綺麗な音質が得られます。「スナッチャー」「SDスナッチャー」付属のサウンドカートリッジを始め、SCCが搭載された各種ゲームカートリッジに対応します。
PCMSCC (各種SCCカートリッジ)
PCM-SCC.LZH (4KB)
※ このドライバはつじかわさんのフリーウェア "PCMSCC" を改変したものです。
1.2.5 PCM-1BIT (1bitサウンドポートで再生)
MSX各規格にデフォルトで内蔵されているもう一つの音源、それはキークリック音で有名な1bitサウンドポートです。このドライバはそんなチープな音源で強引にPCMを発声させます。なにしろ1bitですので、もう聴けたモンじゃありません。このドライバを組み込んでソフトを作成することは、はっきり言ってオススメしません。
1bit sound port
PCM-1BIT.LZH (3KB)
1.2.6 PCM-EI (PSGPLAYで割り込みを禁止しない)
PCMドライバはすべての割り込み処理を禁止してPCM再生だけにCPUパワーを使いますが、このドライバは割り込み処理を禁止しないドライバです。ひらたく言えば、BGMを演奏させたりしながら同時にPCM再生を行うドライバです。MSX2/2+から利用可能です。
割り込み処理をキャンセルしないPSGPLAY
PCM-EI.LZH (2KB)
1.3 今後開発予定のPCMドライバ
PCMドライバを作成することでDMシステム2で利用可能になるであろう、PCM関連ハードを紹介します。
新世SIZER (コナミ)
内蔵16bitD/A音源で発声、でも後差し!?
牌の魔術師 (コナミ)
内蔵8bitD/A音源で発声、でも後差し!?
第2章 PCMドライバの作り方
PCMドライバはギガミックスで用意したものの他、ユーザーが自由に作成することができます。もし何か面白いMSXハードやソフトが見つかったら、それをPCMドライバにしてみるのはいかがでしょうか。
2.1 仕様
PCMドライバはDMシステム2の2C00hから2FFFhの、計1KBの領域に格納します。ドライバは
の2部に分かれています。
2.2 ヘッダの作成
PCMドライバのヘッダの構造は次の通りです。
+ 0〜+39 ドライバ名称
+40 EOFコード (1Ahを代入)
+41 ドライバ種別番号 (01h:PCMドライバを代入)
+42〜+47 未使用
----------------
+48〜 コールエントリ
アセンブルリストによる例:
ORG 2C00h
2C00 DEFM 'ドライバ名称を漢字20文字に収めます。 ' ;余白は20hで
2C28 DEFB 1Ah ;EOF
2C29 DEFB 01h ;PCMドライバの意
2C2A DEFS 6 ;未使用
2C30 JP PCMPLY ;PCM再生
2.3 コールエントリーの作成
PCMドライバに用意するコールエントリーは一つだけです。
+48 PCMPLY (2C30h) PCM再生
PCMを再生するルーチンです。
[in] A b7 メモリ選択 (0:RAM 1:VRAM)
b6〜b2 未使用
b1〜b0 サンプリングレート (0〜3)
EHL 開始アドレス (EはVRAMのみ有効)
DBC データの長さ (DはVRAMのみ有効)
[out] 正常終了 Cy←0
異常終了 Cy←1
A←0 Device I/O error
A←NZ Break(強制中断)
サンプリングレートはソフト(ドライバ)で再現しなければなりません。ほとんどの場合、ウェイトによってサンプリングレートを作らなければならないでしょうから、できるだけturboRでのPCM再生に忠実な再現をお願いします。
0 15.75KHz
1 7.875KHz
2 5.25KHz
3 3.937KHz
2.4 ドライバ作成上の注意
PCMドライバの格納場所がページ0なので、BIOSへのアクセスはインタースロットコールでお願いします。
RDSLT (000CH)
WDSLT (0014H)
CALSLT (001CH)
ENASLT (0024H)