NRTDRV for PC-8801


img
X1 用のサウンドドライバとして公開されている NRTDRV を PC-8801 で動くように移植してみました。
88 + OPM 拡張ボードというかなりレアな環境で、聞き慣れた OPN サウンドとはひと味違う音が楽しめます。

注:こちらは HMB-20 響専用のドライバとなります。JMB-X1 は特設ページの NRTDRV88J をご利用ください。


■ NRTDRV を PC-8801 シリーズで動かす

NRTDRV は SHARP 製パソコン X1 シリーズで FM 音源 8ch * 2 + PSG 音源 3ch の最大 19ch を使って音楽を演奏する音源ドライバです。
詳しい概要および使用方法については本家サイトをご覧ください。
本件は NRTDRV for PC-8801 ということで、この NRTDRV を PC-88 シリーズで動かすことを目的とした移植版です。




NRTDRV for PC-8801 Series 20212108 版 (D88 イメージとソースコード)

この移植版で出来ることは、本家 NRTDRV の MML コンパイラで出力された NRD ファイル(曲データ)や X1 用ファイルセレクタ NRDSEL のディスクを
PC88 上で読み込んで演奏することです。純粋な演奏用ツールであり、本件だけで曲が作れるわけではありません。

対応機種は PC-8801 シリーズ、PC-88VA シリーズ、PC-98DO(+) です。
OPN/OPNA を搭載した FM 音源が使えることが最低条件なので、たとえば初代 PC-8801 の場合はサウンドボード I/II などの増設が必要です。
かなり重いので 8MHz 系機種を推奨します。

NRTDRV の特徴である OPM の利用については、HAL 研究所製 OPM 搭載拡張ボード HMB-20 響 が必要となります。
響は 1 枚しか刺せない(と思う)ので、扱える曲データは OPM 8ch + PSG 3ch が最大です。
VA 系や 98DO 系は PC88 の拡張音源ボードは使えないので、PSG のみでの利用となります。

PSG は本体内蔵、または拡張 FM 音源ボードから出ます。OPM とは別の出力になるので、適当にミックスする必要があります。

アナログ RGB が使える機種はデフォルトではアナログ(上掲スクリーンショット左)で起動しますが、シフトキーを押しながら起動すると
デジタル 8 色で起動します(同右)。

PC88 エミュレータで OPM 環境ありで実行するには、響をエミュレートする拡張モジュールが必要です。
M88 と PcgSound.m88 の組み合わせでテストしています。

PcgSound.m88 は 80mkII愛友会で公開されています。
素晴らしいエミュレータとモジュールを公開していただき感謝します。

JAVA 環境で動く 88エミュレータ j80 でも動作可能です。


◆ 操 作
PC88 全シリーズで使えることを目標にしたので、4MHz の機種でも動作はしますが、演奏中のキー操作が若干受付づらくなっています。


◆ 曲データの追加

最も簡単な方法は X1 用のセレクタである NRDSEL のディスクを本家コンパイラから作成することです。



必ず「2D」を選択してください。PC88 版のプレイヤーからは 2D メディアしかロードできません。
上記の画面の後、NRD ファイルを選択して NRDSEL2D.D88 を作成します。実ディスクに書き戻しても可。
このディスクを PC88 のドライブ 2 に入れると、そのまま読み込むことが出来ます。

なお、NRDSEL 作成の際には hudisk.exe というツールを NRTDRV.EXE と同じフォルダに配置する必要があります。



hudisk.exe はこちら(https://github.com/BouKiCHi/HuDisk) にあります。
赤枠で囲ったところをクリックし、右の方の [Download] からダウンロードできます。


もう一つのやり方は手動で NRD ファイルを書き込む方法です。
この場合も hudisk.exe を使います。
本プレイヤーのディスク自体にも空き領域が 29 クラスタほどあり、最大で 29 ファイルまで書き込みが可能です。

> hudisk nrtdrv88.d88 SONGFILE.NRD -a  

コマンドプロンプトから上記のようにすると曲の追加ができます。

> hudisk nrtdrv88.d88 -l 

で書き込まれているファイルリストが参照できます。小文字のエルです。

X1 の Hu-BASIC のディスクは 1クラスタ = 1トラック となっていて、たとえ 1byte のファイルであっても 1 トラック(4096KB)を使用してしまいます。
これでは利用効率が悪いので、LZ4 で圧縮したファイルも読み込めるようにしました。
LZ4 はこちらから

> lz4 SONGFILE.nrd 

で、同名の拡張子 lz4 のデータができあがります。単に lz4.exe にドラッグ&ドロップでも可。
これを普通の曲データと同様にディスクに書き込むと、通常通りロード・再生が可能です。
ただし、lz4 ファイルが曲データなのかどうかの判別はしていないので、間違ったデータをロードしないようにしてください。


◆ その他

曲のリストやタイトルの表示などは本体内蔵の漢字 ROM を使って表示しますが、漢字 ROM 非搭載の機種の場合は
ディスクにあらかじめ書き込まれた漢字 フォントデータを使用して表示します。
そのため、起動ディスクを抜いてしまうとフォントが読み出せなくなります。曲データが多い場合はドライブ 2 の方で都合すると良いでしょう。

漢字フォントデータには東雲フォントを縦 10 ドットに圧縮したものを搭載しています。

ロードできる曲データサイズは本家 X1 版より数 KB 程度少ないです。

表示データのうち音色番号はかなり強引なやりかたで取得しているので、元データの音色番号とは異なります。

スペクトラムアナライザーと称している部分は、雰囲気だけを楽しむ偽スペアナとなっています。


■ メモ

重い。全機種対応とするために ALU やテキストマスクは使用せず拡張メモリも使っていません。
軽くするための機能を使わずに 8MHz 系推奨は本末転倒と言わざるを得ない。

メモリマップ

 $0000-$47FF mainprg メインプログラム+NRTDRV  
 $4800-      曲オブジェクト


サブ側

 $4000-$4FFF ディスクバッファ
 $5000-$5FFF ディレクトリバッファ
 $6000-$6FFF フォントキャッシュ
 $6100-$61FF FAT バッファ
 $7800-$7EFF disksub ディスクサブシステムプログラム  


ディスク使用状況

 trk.0  sec.1 - trk.0  sec.1 : IPL
 trk.0  sec.2 - trk.2  sec.7 : DISKSUB     : ディスク用サブシステムプログラム   
 trk.0  sec.15- trk.0  sec.15: Hu-BASIC FAT
 trk.1  sec.1 - trk.1  sec.16: Hu-BASIC DIR
 trk.2  sec.1 - trk.4  sec.2 : INIT        : 環境調査・画面・パレット設定
 trk.5  sec.1 - trk.9  sec.5 : MAINPRG     : メインプログラム+NRTDRV
 trk.10 sec.1 - trk.14 sec.16: 予備
 trk.15 sec.1 - trk.15 sec.10: shnm8x10r   : 半角フォントデータ
 trk.15 sec.11- trk.50 sec.9 : shnmk10     : 第一・第二水準フォントデータ
 trk.51 sec.1 - trk.79 sec.16: 空きクラスタ


・オリジナルの NRTDRV.ASM を改変して使用させていただきました。
・デザインは有名どころの模倣です。すみません。
・東雲フォント(http://openlab.ring.gr.jp/efont/shinonome/)を使用させていただきました。
・アセンブルは The Macro Assembler AS (http://john.ccac.rwth-aachen.de:8000/as/)で実行しました。


■ 更新履歴

2013.10.27 初版
 本家の ver.131013 に対応。返信待ちの間に PSGPCM を実装して MDX+PDX->PC88 をやってみたものの流石に音質が。満場一致でボツ。

2013.11.01 第2版
 テンポ遅れバグ修正。ご協力いただいた皆さんに感謝。
 CTC1 相当の RTCタイマ割り込みを極力 1/60 秒に収束するように多重割り込み化。キー入力周りのバグ修正。
 ささやかなプレイヤー画面を追加。白い。

2014.06.06 第3版
 本家 2014.05.15版に追従。
 ささやかなファイル選択画面を追加。色気づいた。

2014.11.07 第4版
 ディスク周りを少し変えた。
 ファイルシステムは「汎用ディスクルーチン」のものを多少弄ってある。主にメモリ配置や機能を削ってのダイエット等々。

2015.05.08 第5版
 本家 2015.04.21版に追従。

2016.12.26 第6版
 本家 2016.12.17版に追従。
 バージョンアップに伴い、過去の NRD ファイルがそのまま使えないので MML からの再コンパイルが必要。
 自己書き換えが増えてきて少し苦労した。RETI にしてある意味が良く分からない。

2017.03.03 第7版
 本家 2017.03.03版に追従。
 ドライバ(本家)の内部バージョン番号が 2 になっている。
 MML はそのままでも NRTDRV.EXE の出力する NRD ファイルが変わっているので、以前の NRD ファイルでは演奏がおかしくなることがある。

2018.11.21 第8版
 土気色のフルグラフィックプレイヤー化。ほぼ全機種対応。実機でのディスクフォントに不具合あり。
 NRTDRV.ASM をカスタマイズしたので演奏できない曲があるかも。

2019.04.04 第8a版
 ディスクフォントの不具合修正。

2021.12.08 第8b版
 微修正。JMB-X1 新設に伴いこのページに若干の追記。

▲ TOP