トップ 一覧 検索 ヘルプ PDF RSS ログイン

実機やX1エミュレータで再生するには

実機やX1エミュレータで再生するには

NRTDRVのドライバにはX1実機やX1エミュレータで動作する簡易演奏モニタが内蔵されており、IPL起動パッチや自作プログラムなどから呼び出すことができます。

同梱のIPL起動パッチは2種類あり、簡易演奏モニタを使うもの(IPLPATCH.BIN)と、OPM音色エディタを搭載しているもの(IPLOPMED.BIN)があります。これらはNRTDRV.EXEのメニューから選択可能です。

簡易演奏モニタ

音楽の再生中にジョイパッドのトリガー1を押すと、音楽の停止と再生をトグル動作で繰り返すようになっています。

また、トリガー2(もしくはNMIスイッチ)でテスト音を鳴らすことができます。

鍵盤表示に限り、o0cは休符と同等の扱いになりますので、表示されません(発音はされます)。

また、常に表示処理よりも演奏処理を優先しますので、演奏の負荷が高いときは描画を更新しません。

OPM音色エディタ

リアルタイムに音色パラメータを操作できる音色エディタです。

音色パラメータの変更は、現在編集中のチャンネルのみ即座に反映します。和音など複数のチャンネルに同じパラメータを設定したい場合は、数値入力時にリターンキーを2回押してください(1回で現在編集中のチャンネルへのパラメータ送信、2回で [SEND CH.] への送信)。

なお、WF/LFRQ/PMD/AMDはチャンネルA〜H、I〜Pでそれぞれ共通の値となります。

操作方法は下記の通りです。

カーソルキー (ジョイパッド左右)

パラメータを選択します。

[0]〜[9]キー / [+]/[-]キー (ジョイパッド上下)

パラメータを変更します。

数字キーでの入力時はリターンキーで決定(編集中のチャンネルへのパラメータ送信)、それ以外でキャンセルとなります。

[A]〜[P]キー

編集するチャンネルを選択します。

[SHIFT]+[A]〜[P]キー

複数チャンネルに音色を送信する際の対象チャンネルを選択します。

[CTRL]+[A]〜[P]キー [CTRL]+[1]〜[3]キー

再生およびミュートするチャンネルを選択します。

[CTRL]+[R]キー

再生およびミュートするチャンネルを反転させます。

リターンキー (トリガー1)

通常時は、現在編集中の全パラメータを複数のチャンネルに送信します。

数値入力中は、そのパラメータを現在編集中のチャンネルに送信します。

[S]キー (トリガー2)

現在編集中の音色を退避します。

[R]キー

退避しておいた音色を現在編集中のチャンネルに書き戻します。

スペースキー

曲データを停止/再生します。

[SHIFT]+スペースキー

曲データをフェードアウトさせます。

[CTRL]+[T]キー

テスト音を鳴らします。

編集中の音色は、曲データ側で音色が切り替えられると即座に上書きされてしまいます。

IコマンドI@コマンドIPコマンドIVコマンドを活用して回避する方法もありますが、定期的にSキーやトリガー2で退避させておけば不意の上書きにも対応しやすく便利です。

 シリアル接続で高速リモートブートする場合

この方法はX1実機専用です。X1エミュレータを使用する場合は、後述の方法でディスクイメージを作成してください。

必須環境

  • FDD付きX1turbo/Zシリーズ本体(turbo model10及びX1シリーズ不可)
  • Windows PC+シリアルポート(USBシリアル変換ケーブル可)
  • シリアルクロスケーブル(インターリンク用・D-Sub9ピン←→D-Sub25ピン)
  • 実機でturbo BASIC(CZ-8FB02)を起動できる環境
  • X1turbo用キーボード
  • X1turbo用モニタ(無くても可?)
  • 標準フォーマット済みの5インチ2Dフロッピーディスク

 X1とPCの接続には、25ピン側のRTSと9ピン側のCTSが接続されているケーブル(インターリンク用クロスケーブル)を使う必要があります。

 「インターリンク用」と明記されていないクロスケーブルでは、これらが結線されていないことも多く、その場合は正常に通信できません。

 詳しくは、HSSIO(後述)最新版のドキュメントに記載されている結線表をご参照ください。

準備

  1. クロスケーブルで、PCとX1turbo/X1turboZのシリアルポートを接続してください。
  2. X1センター様にて公開されている全二重高速シリアル通信モジュール+リモートブート環境「HSSIO」のアーカイブ(hssio_ver02a.zip)を入手してください。
  3. 上記アーカイブ内の "readme.txt" を読み、リモートブート用のIPL起動ディスクを作成してください。

実行方法

  1. 準備時に作成したIPL起動ディスクを実機で起動し、ローダーを立ち上げます。
  2. コンパイラの設定で「コンパイル後にシリアル通信を行う」にチェックを入れ、使用するCOMポート番号を選択し、MMLをコンパイルします。
  3. システムと曲データが実機に転送され、演奏が始まります。
  4. 演奏中にMMLを再コンパイルするとローダーが自動的に再起動します。

一瞬だけ演奏画面が表示され、その直後にローダーが再起動してしまう場合は、シリアルクロスケーブルのRTSとCTSが正しく接続されていません。

インターリンク用クロスケーブルを使うか、コンパイラの設定で「コンパイル開始時に実機のローダーを再起動する」のチェックを外してください。

 ディスクイメージを作成する場合

下記の解説はNRTDRVに内蔵されている簡易演奏モニタを使用する場合です。

現在はNRDSELの使用を推奨しております。

MMLコンパイル時、NRTDRV.EXEと同じフォルダに "NRTDRV.Sys" というIPL起動用のファイルが保存されますので、HuDiskでD88形式のディスクイメージに書き込んでください。

具体的には、コマンドプロンプトで下記のように実行します。

> hudisk --format --type 2d [フォーマットするD88イメージ名]
> hudisk --add [フォーマット済みの] NRTDRV.Sys --ipl "NRTDRV"

あるいは、HuDisk.exe、NRTDRV.Sysを同じフォルダに置いて "D88MAKE.BAT" を実行するのが簡単かもしれません。BATファイルの最終行を環境に合わせて書き換えると、X1エミュレータ上で "NRTDRV.D88" を起動するところまで自動化できます。

実機で利用する場合は、以上の手順により作成したD88イメージを2Dディスクに書き戻して、IPLから起動してください。

 自力で処理する場合

MMLコンパイル時に保存されたZIPアーカイブ内のファイルを解凍して、個別に(ファイル単位で)利用することも可能です。その場合は、

  1. NRTDRV.BIN(ドライバ本体)を01800Hからロード
  2. NRDファイル(曲データ)を04000Hからロード
  3. 下記の各エントリを実行

という流れになります。

ドライバエントリ一覧

01800H (DRVINI)
ドライバ初期化。最初に必ず実行してください。
01803H (MPLAY)
再生。EI(割り込み許可)状態になり、任意のアドレスから演奏します(※1)。
01806H (MSTOP)
停止。演奏中の曲を停止します。EI状態になります。
01809H (MFADE)
フェードアウトします(※2)。
0180FH (MTEST)
テスト音を発音します(※3)。
01812H (MPLAYD)
再生。EI状態になり、04000Hから演奏します。
01815H (VINIT)
画面初期化。PCGの定義などを行います。
01818H (VMAIN)
簡易演奏モニタを1フレーム描画します。
0181BH (INVREG)
NRDSEL/OPM音色エディタ用の仮想OPMレジスタを無効にします。

※1 曲データはリロケータブルなので、自由なアドレスに配置できます。

ドライバのBGMADRワークに曲データのアドレスを入れてから、MPLAYをコールしてください。 アドレスの初期値は04000Hです。

※2 フェードアウトの最中にOPM音色選択が行われるとモジュレータのTLも反応します。 ご了承ください。

※3 このエントリをコールすると、次のテスト音が発音されます。 音量バランスの調整時などにご利用ください。

1. OPM#1→PSG→OPM#2の順で「ドレミファソラシド」

2. OPM#1「ドレ」→PSG「ミファ」→OPM#2「ソラ」→OPM#1「シド」

3. OPM#1「ド」→PSG「ミ」→OPM#2「ソ」の和音

4. OPM#1→PSG→OPM#2の順で「ド」を無限に繰り返す

実行後はBGMADRワークのアドレスがテスト音のものになりますので、通常の曲データを再び演奏させる場合はMPLAYDをコールするか、BGMADRワークを再設定してからMPLAYをコールする必要があります。

外部参照用ワークエリア

01831H (VER)
内部バージョン番号
    • 0=2016/10/28版まで
    • 1=2016/11/01版から
    • 2=2016/03/03版から

 これは、ドライバと曲データの不整合を防ぐためのバージョン番号です。

 仕様上は上記の通りですが、実際にバージョン番号が実装されているのは2016/12/03版からなので、それ以前のバージョンで上記のワークエリアを読んだ場合は0が返ります。

 また、2016/12/03版以前では演奏開始した時点で値が変化してしまうため、演奏開始前に値を取得しておく必要があります。