M88

- PC-8801 series emulator -
Copyright (C) cisc 1998, 1999.


概要

M88 は,NEC の 8bit 時代の名機 PC-8801 のソフトウェアを Win32 環境で動作させる, エミュレータと呼ばれる種類のプログラムです.

PC-8801mkIISR 以降に搭載された機能を含む,88 の主要なハードウェアをソフトウェアのみで再現しています. このため少々 CPU パワーを費やしますが,88 とは縁も所縁もなさそうな環境(あ,Microsoft 繋がりか)で,昔懐かしい 88 のソフトを動かすことができるようになります.

ただし,M88 が再現するのは 88 のハードウェア機能だけです. このため,実際に 88 のソフトを動作させるためには実機から BIOS を取り出す必要があります.

M88 とこのドキュメントの最新版は M88 のぺーじ から入手できます.

また,動作報告,要望,感想などは M88 掲示板 へどうぞ.


著作権,免責規定等

M88 を使用する前に,確認してください.

使用上の注意

M88 を使う場合,通常の使用では PC-8801 シリーズの本体から直接転送した BIOS データが必要になります. M88 の使用者は NEC PC-8801 シリーズの本体を所有している必要があります. 実機を所有していない方が著作権者の許可なく BIOS データを入手・使用すると著作権法に抵触します.


動作環境

CPUIA-32 系 CPU
Pentium Pro 世代(Pentium-II/K6)以降の CPU を推奨します.
OSWindows 95/98 または Windows NT 4.0 (x86)
DirectX 3 以上必須.
VC 6.0 に対応したランタイムライブラリが必要になるかも.
キーボード(*1)日本語 106 キーボード または PC-98 用キーボード
88 本体PC-8801mkIISR 以降(PC-88VA系も可,PC-8801/mkII は不明)

(*1) 未対応のキーボードを使用する場合,キーと入力が対応しない可能性があります.


準備

BIOS の転送

まず,88 から BIOS イメージを転送します.

注意:88 の BIOS は著作物です.個人的な利用以外は,著作権法上,権利者の許可なく利用することはできません.

5 インチドライブを搭載した AT 互換機がある場合

M88 Tools for AT の中の READROM.EXE が使用できます(Win95 で動作確認).

まず,2D のブランクディスクを5インチドライブに入れ,
READROM M [drive]:
と実行し,読み出し用ディスクを作成します.

このディスクを 88 で起動し,Completed の文字とともにディスクランプが消灯するまで待ちます.

その後ディスクを5インチドライブに入れ,
READROM R [drive]:
と実行すれば,カレントディレクトリに ".ROM" という拡張子を持つ BIOS データが作成されます.

Windows 機と 88 が近くにある場合

Windows 機と 88 をシリアルケーブルで接続して BIOS データを転送することができます.

M88 Tools for Win を使用してください. 詳しい説明は付属のテキストにあります.

自力で読み出す人へ

88 の内部に詳しい方は自力で読み出すのも良いでしょう. 必要なデータとファイル名は以下の通りです.

ROM 種別アドレスファイル名
N88 BASIC ROM0000-7fffN88.ROM
N88 E0-ROM6000-7fffN88_0.ROM
N88 E1-ROM6000-7fffN88_1.ROM
N88 E2-ROM6000-7fffN88_2.ROM
N88 E3-ROM6000-7fffN88_3.ROM
N88 BASIC ROM0000-7fffN80.ROM
SUB ROM(FDD)0000-1fff(*1)DISK.ROM
漢字 ROM(128KB)KANJI1.ROM(*2)
第 2 水準(128KB)KANJI2.ROM(*3)
辞書 ROM(512KB)JISYO.ROM(*4)
N80 BASIC ROM0000-7fffN80_2.ROM(*5)

(*1) SR, FA 等,2D 専用機は 0000-07ff まで

(*2) M88 はテキストの表示に漢字 ROM の中の 1/4 倍角フォントを利用しているので, KANJI1.ROM がないと画面が正常に表示されません. 但しテキストフォントのファイルを自作すればそれで代用することも可能です(FONT.ROM 8 バイト * 256 文字).

(*3) MR, FH/MH 以降にしか実装されてませんが,それ以前の機種から読み出してもファイルは作成されます.但し中身に意味はありません.削除しても結構です.

(*4) MA, MA2, MC に実装されていますが,添付の日本語 DISK BASIC を使わない限り普通必要ありません.本当に必要な方のみどうぞ.

(*5) N80 Mode を使用する場合のみ必要です.PC-8001mk2 から吸い出すことが可能です.

起動には最低でも N88.ROM または PC88.ROM,そしてフォントファイルが必要です. その他のファイルが足りない場合,起動はしますが,正常な動作は期待できません. N80 mode のみ使用される場合で N88.ROM を持っていない場合は N80_2.ROM のコピーを N88.ROM という名前でおいてください.

おまけ: P88SR 用の PC88.ROM を使用する場合

KANJI1.ROM がない場合漢字表示が豆腐になりますが,とりあえず起動できるようになります. また,KANJI1.ROM が無い場合,テキストフォントファイル FONT.ROM が必要になりますが, これには P88SR が自動生成したフォントファイル PC88.FNT が使用できます. FONT.ROM という名前に変えて置いてください.

KAJA 氏のサイトにある GETK というツールで, 98 に搭載されている漢字 ROM から KANJIx.ROM を作成することができます.

リズム音

YM2608(OPNA)に搭載されているリズム音源は,LSI 内部の ROM に入っている ADPCM サンプルを鳴らすものです.そのため,M88 でリズム音を鳴らしたい場合は,実機から録音するなり,似たような楽器から録音するなりしてリズム音のサンプルを用意する必要があります.

44.1KHz, モノラル, 16bit PCM の wav ファイルのみ使用できます. wav ファイルの読み込み部分は,超手抜きな実装なので,ヘッダーに余計なものがあると正常に読みこめません. サンプルのファイル名は下記の通りにしてください. ひとつでも欠けているとリズム音は鳴りません.

音色ファイル名
バスドラム2608_BD.WAV
スネアドラム2608_SD.WAV
トップシンバル2608_TOP.WAV
ハイハット2608_HH.WAV
タムタム2608_TOM.WAV
リムショット2608_RIM.WAV


起動

読み出した ROM ファイル全てと,必要ならフォントファイル,リズム音を M88.EXE と同じディレクトリ(起動時ディレクトリ)におき,M88.EXE を実行してください.


メニュー

Control メニュー

Reset
リセットします.
V1/V1S/V2/N Mode
起動モードを変えてリセットします.VA 系の ROM では N-BASIC は使用できません.
Configure
動作に関する設定を行います.
Exit
M88 を終了します.

Disk メニュー

Drive 1/2
ドライブにディスクイメージをセットします.
キャンセルなどダイアログに何も指定しなかった場合,ドライブはディスク無し状態になります.
Change both drive
双方のドライブからディスクをアンロードしてからディスクイメージを開きます.

Tool メニュー

Show status
画面の下部に,ステータスバーとディスクアクセスランプを表示します.
Capture
現在表示されている画面の内容を 16 色 BMP として保存します.

Debug メニュー

選べない項目があるかもしれませんが,気にしないでください.
Show FDC Status
ステータスバーが表示されている場合,ディスクのアクセス状況などを表示します.

設定

CPU の設定

動作周波数
88 のクロック周波数を設定します. 割り込みの頻度は変化しないので,音楽などは正常に再生されます(ソフトにもよりますが).
全力駆動
全力でエミュレートします. 88 のクロック周波数は実行する命令や,他の処理の負担等に応じて変化します. このオプションをつけると,音楽のテンポなどが少し狂うかもしれません.
速度調整を省略する
ウェイトを省略するので,全体的に動作が速くなります. だるいイベントなどを飛ばしたいときなどにどうぞ.
Sub CPU を常に駆動する
M88 は,Sub 側が Main 側からの交信を待っている状態では, Sub 側の CPU を停止し,省力化を図りますが,互換性は低下します. このオプションをつけると Sub 側 CPU を常に動作させるので, 互換性が高くなります.
ウェイト
実機相当のウェイトをかけます. 一部ソフトで,ウェイトを掛けると起動しないものがあるようです.

画面の設定

画面更新頻度
画面を何フレームごとに更新するかを設定します.
PCG を使用
PCG-8100 互換のフォント変更機能を有効にします. PCG-8100 の音は実装していません.
15KHz モニターモード
CRTC に関する設定,VRTC 割り込みの周期などを 15KHz 相当の設定にします. PC-8001 用のソフトなど,24KHz モードで動作させると表示がおかしくなる場合に有効です.
ディジタルパレットモード
ディジタル RGB モニタで表示する時のようなディジタルカラーで画面を表示します.
全画面時 640x480 にする
95 等では,全画面切り替え時は,可能な場合,解像度 640x400 で表示しますが, このオプションをつけると常に解像度を 640x480 で表示するようになります. 全画面表示の時,妙に伸びた画像になると思った方は試してみてください.
描画の優先度を下げる
画面の書き換えが激しいソフトを使う場合, CPU パワーが不足しているとエミュレーション自体が遅くなります. このオプションを付けると,画面の描画を飛ばしてでもエミュレーションの速度を保とうと努力します.
偶数ラインを表示する
当時のディスプレイの表示のように,グラフィック画面のラインごとに空白を入れます.

音の設定

合成周波数
PCM 再生周波数と FM 音源の合成周波数を決めます. 周波数は高いほど音質が上がりますが,FM 音源の合成はかなり CPU 負担の高い処理なので覚悟してください(^^; M88 の FM 音源ユニットは 55 KHz 合成の時真価を発揮します. 55 KHz 未満の場合,一部音化けを起こす音色があります.
FM 音源 (44h)
FM 音源の種類を設定します. OPNA(サウンドボード2相当) は高い CPU 性能を要求します.
FM 音源 (a8h)
PC-8801-23 などの増設タイプの FM 音源を設定します.
PCM バッファ
音の遅延につながる DirectSound のバッファの大きさを設定します. Win95/98 では,100ms でも問題ないでしょう. 再生が途切れ途切れになる時は,大きくすることで解決できるかもしれません.
CMD SING を使う
PC-8801mkII 以降で搭載された CMD SING 機能の使用設定をします.

音量の設定

各音源の音量を設定します.約 1/2 dB 単位で調整できます.

DIP-SWの設定

ディップスイッチを設定します.

その他の設定

終了時のディレクトリを記憶
終了時のディスク選択時のディレクトリを記憶するようになります.
リセットおよび終了の際に確認を取る
このオプションを有効にすると,終了時,およびリセット操作をしたときに, 実行を確認するダイアログを開きます. F12 を何かの拍子で押してしまって悲しい気分にならないためのオプションです.
キーによるメニュー起動を抑制
GRPH(ALT) や F10 キーなどでメニューを起動しないようにします. これらのキーを使いたいときは指定する必要があります.
方向キーをテンキーに対応
方向キーを押したときに,同時にテンキーの8,4,6,2も押されるようにします. 指がテンキーではなく方向キーに最適化されてしまった場合などに有効です.
ジョイパッドを使う
Windows 機に接続されたジョイパッドを使えるようにします.
ジョイパッドのボタンを入れ替える
ボタン 1 と 2 を入れ替えます.
F12 を Reset とする
F12 をリセットキーとして使用するようにします. F12 を COPY キーを使いたい場合は無効にする必要があります.
マウスを使用
マウスを使えるようにします.ジョイパッド,およびメニュー抑制オプションとは排他使用となっています.

注意

全画面モードでは,ダイアログのヘルプ表示を使うと厄介なことになるようです.


起動時引数

起動時に,ディスクイメージのファイル名を与えると,起動時にそのディスクイメージを開きます.

また,複雑ですが,いくつかオプションもあります. src/win32/ui.cpp の ApplyCommandLine 関数の辺りを参照してください.


キーボード対応表

キーボードの種類は,「設定ダイアログ」の「環境」で変更できます.

106 日本語キーボードの場合

106 日本語キーボードにおける特別なキー配置は,以下の通りです.

88 キー対応するキー
StopF11
Reset/COPY(*1)F12
HelpEnd
カナScroll Lock
GRPHALT(*2)
テンキーの ","テンキーの"."(Num Lock off)
テンキーの "."テンキーの"."(Num Lock on)
無変換決定
変換変換キー
全画面モード切り替えALT+ENTER
F10(*2)F10
(*1):設定の『F12 を Reset とする』を無効にした時
(*2):キーでのメニュー起動抑制時

Windows 側の制限により,NUM LOCK on で使用すると SHIFT+テンキー入力の際に SHIFT が離れてしまうという現象が起こります. また.PC キー,テンキーの "=" は割り当てられるキーが無くなってしまったので 割り当てていません.

PC-98 用キーボードの場合

98 キーボードのキー配置は以下の通りです.

88 キー対応するキー
Reset/COPY(*1)VF2
StopVF5(又は VF1)
決定NFER
変換XFER
全画面モード切り替えGRPH+ENTER
GRPH(*2)GRPH
F10(*2)F10
(*1):設定の『F12 を Reset とする』を無効にした時
(*2):キーでのメニュー起動抑制時


注意

パレット制御の関係上,256 色環境では,バックグラウンドになると, 色がおかしくなることが多々あります.


ディスクイメージについて

現在,Blue_B 氏の PC-9801 用 88SR エミュレータ P88SR で使用できるディスクイメージに対応しています.

なお,昔 M88 Tools に同梱されていた READER を用いて作成されたディスクイメージに対して書き込みを行うと,自動的に P88SR 方式に変換されます.


今後の課題

開発予定があるものも,対応するつもりが無いものも... まだまたたくさん残ってます.


動作確認環境

作者は M88 が以下の環境の一部または全部において正常に動作することを確認しています. 環境は全て AT 互換機系です.

動作確認 BIOS


謝辞

FM 音源部の作成にあたって参考にさせていただいた FM Sound Generator の作者 佐藤達之氏, 旧版の M88 に N80 モードを追加された arearea 氏, また,掲示板や開発室等を通じて M88 の発展に寄与してくださった皆様, 貴重な資料や重要な情報を供給してくださった ISL の皆様, 悠黒氏,KAJA 氏,norimy 氏,午後T 氏, 開発のキッカケを与えてくれた某 CCS-BBS の方々, 皆様に心からの感謝をささげます.


連絡先

とりあえず以下の場所にお願いします.

cisc
E-mail: cisc@remus.dti.ne.jp
WWW: http://www.remus.dti.ne.jp/‾cisc/m88/