PC-8801MAエミュレータ XM8
eXcellent Multi-platform emulator type 8 by PI.
based on ePC-8801MA(TAKEDA Toshiya)

目次


はじめに

XM8はNEC製パーソナルコンピュータPC-8801MA(PC-8801mkIISR上位互換)のマルチプラットフォーム対応エミュレータです。

仮想マシン部は武田俊也氏のCommon Source Projectに含まれているePC-8801MAをベースに独自の改良を行ったものを使用し、ホストOSとのビデオ・オーディオ・入力インタフェースとしてSDLを使用しています。

バージョンアップ項目(version 1.61 → version 1.70)

[仮想マシン関連]

  • 描画系をePC-8801MA(2017/11/26版)と同等に差し替えた。(PC-8801mkIISR店頭デモ)
  • 拡張RAMで存在しないバンクを指定した場合のメモリマップを修正した。(ルーンワース 黒衣の貴公子)
  • DIP SWのデフォルト設定を80桁×20行から80桁×25行に変更した。(ザナドゥ)
  • 垂直表示区間・垂直同期区間の比率のみを変更した場合に音切れが発生する不具合を修正した。(サーク2)
  • INSキー、DELキー、BSキーの各キーを個別に押した場合の入力ポート値を修正した。
  • NモードのPCG-8100を正式サポートした。※クロック4MHzに設定すること
  • [ユーザインタフェース関連]

  • 日本語106キーボードの変換、無変換、右CtrlをPC88の変換、決定、全角にそれぞれ割り当てた。
  • Linux/AndroidでScaling Qualityチェックボックスを追加した。(デフォルトON)
  • Joystick to keyboardの割り当てマップでTABキーを選択可能にした。
  • Joystick test機能を追加した。
  • ファイルセレクタの開始位置を改良した。
  • ユーザーI/F、ソフトウェアキーボードのタップ操作性を改良した。
  • トップメニューから一階層以上入った状態でAlt+Enterを押すとXM8が異常終了する不具合を修正した。
  • 読み取り専用属性の付いたディスクイメージファイルであっても、ステータスバーに書き込み可能として表示する不具合を修正した。
  • DIP settingsでRestore default settingsを選択したときに、DIPの表示状態が変化しない不具合を修正した。
  • [Android関連]

  • Android 5.0(Lollipop)以降で外部SDカードへの書き込みに対応した。
  • 64bit版ネイティブライブラリを同梱し、32bit/64bit双方の動作環境に対応した。
  • Scaling Qualityのサポートに伴い、Scan lineのデフォルトをONに変更した。※version 1.61以前から移行した場合も変更されます
  • コンパイラ変更(gcc→clang)により性能が向上した。
  • 動作OS

    XM8は以下のOSで動作します。
    OSアーキテクチャバージョン
    Windowsx86 / x64Windows XP以降
    Linuxx86 / x64Linux kernel 2.6以降
    AndroidARMv7a / ARM64-v8a / x86 / x64Android 4.0以降

    ROM

    XM8を実行するには、PC-8801mkIISR以降のROMデータをファイル化したものが必要です。

    過去のPC-88エミュレータで標準となっている以下のセットを利用します。
    ファイル名内容
    N80.ROMN-BASIC ROM (*)
    N88.ROMN88-BASIC ROM (*)
    N88_0.ROMN88-BASIC 4th ROM (バンク0) (*)
    N88_1.ROMN88-BASIC 4th ROM (バンク1) (*)
    N88_2.ROMN88-BASIC 4th ROM (バンク2) (*)
    N88_3.ROMN88-BASIC 4th ROM (バンク3) (*)
    DISK.ROMディスクサブシステム ROM (*)
    KANJI1.ROM第一水準漢字 ROM
    KANJI2.ROM第二水準漢字 ROM (オプション)
    JISYO.ROM辞書 ROM (オプション)
    このうち上記で*が付いたものはPC88.ROMで代替可能です。両方存在した場合は上表のファイルが優先されます。

    この他、サウンドボードII相当のFM音源(OPNA:YM2608)を使用する場合、リズム音源WAVファイル(2608_*.WAV)6音が必要です。

    ダウンロード

    XM8 (version 1.70)
    ソースファイル、実行形式ファイルを含む全プラットフォーム対応の一式セットです。

    xm8_170.zipのダウンロード (6186595 bytes, retropc.net)


    スクリーンショット

    ルーンワース ジュークボックス
    RuneWorth JukeBox

    [解説]
    T&E SOFTとしてPC-88向け最後の作品となった大作ARPG「ルーンワース 黒衣の貴公子」のミュージックディスクです。音源ボードの種別(OPN/SBII)と演奏種別(ノンストップ/セレクション)を選ぶと、演奏と共にキャラクターがダンスを披露してくれます。

    SBII版はリズム音源が効果的に使われており、透明感のあるFM音源の音色と相まって素晴らしい出来になっています。この「ウェイデニッツ公国」の他、「URE-P」「サータルスの導き」「やすらぎ」などが私のお気に入りです。


    [名盤紹介] ポリスター「ALL SOUNDS OF RUNE WORTH」(1990年2月発売)
    ALL SOUNDS OF RUNE WORTH
    上記ジュークボックスのSBII版と同様の内容で、全35曲が収録されたサウンド・トラックCDです。以下、ライナーノーツに書かれた内藤時浩氏のコメントをそのまま記載します。


    みなさんは、ゲームミュージックについてどのような印象をお持ちでしょうか。ひと昔前なら、「たかがゲームミュージック」ですまされていたものが、現在ではちゃんとしたジャンルとして確立されるまでになってきましたよね。このCDを買ってくださったみなさんなら、最近のゲームミュージックの質の高さについては、十分お分かりになっていることと思います。うち(T&E)は、ゲームミュージックに対する比重をかなり高くおいています。ルーンワースからゲームミュージックを無くすと、ゲームの処理スピードが20%も速くなります。つまり、それだけ本格的な演奏を行っているのです。

    専用基板を使えるゲームセンターのアーケードマシンなどと違い、パソコンでは非常にいろいろな音源があります。音楽演奏をパソコンで行うためには、それら全ての音源に対応させなければいけません。ルーンワースでは、OPN、SBH(注:原文ママ)、OPLL、PSGという4つの音楽演奏用チップに対応させました。その数、35×4=140曲目。サウンドクリエーターたちには、それこそ大変な作業だったと思います。この場をお借りして、彼らに感謝の言葉を述べたいと思います。

    うちのサウンドクリエーターたちは、作曲依頼をすると私にイメージを求めてきます。「死んでまった」の作曲依頼では、私は彼らにこう説明しました。「XXサスペンス劇場のドラマの雰囲気で、仲間が惨殺された悔しさを表現して欲しい」……と。こんなおかしな作曲依頼で、よくこれだけの素晴らしい音楽ができてきたものだと、改めて感心します。

    1990年からは、さらに本格的な作曲活動ができる体制が整う予定です。「ゲームミュージックもT&E」と言われるよう頑張りますので、これからもよろしくお願いします。
    (株)T&E 開発部第一開発室室長 内藤時浩


    開発環境

    開発に使用しているハードウェアは以下の通りです。

    開発ホスト:
    Lenovo ThinkPad E560

    評価端末:
    SONY WALKMAN NW-F885 (Android 4.1)
    FUJITSU ARROWS M305/KA4 (Android 4.4.2)
    GPD XD (Android 4.4.4)
    Google Nexus 7 2013 (Android 6.0.1)
    HUAWEI MediaPad M3 Lite (Android 7.0)

    テスト用実機:
    PC-8801MA2

    参考文献

    ☆書籍

    タイトル著者出版社発行年
    「PC-8801mkIISR マシン語ゲームプログラミング」日高 徹小学館1985
    「マシン語マスターバイブル PC-8801シリーズ」日高 徹小学館1991

    その他

    FM-7エミュレータ XM7dash (トマさんへのリンク)

    XM7 V3.4L70/V2.9L70 ソースコード(508529 bytes, retropc.net)

    XM7 V3.4L77/V2.9L77 ソースコード(509631 bytes, retropc.net)

    XM7 V3.4L77a/V2.9L77a ソースコード(538518 bytes, retropc.net)

    X680x0エミュレータ XM6 TypeG (GIMONSさんへのリンク)

    X68000/X68030エミュレータ XM6i (isakiさんへのリンク)

    XM6 version 2.06 ソースコード(752426 bytes, retropc.net)
    ※XM6 version 2.06は多数の不具合がある古いソースコードです。その前提で利用ください。
    GIMONS氏によるXM6 TypeGはXM6 v2.05/2.06をベースに不具合を修正し新機能を追加したバージョンです。このソースコードを希望される方はTwitterで連絡ください。

    XM6ユーティリティ version 2.06 (121181 bytes. retropc.net)
    ※フォントROM(CGROM.TMP)の合成、SCSI ROM(SCSIINROM.DATまたはSCSIEXROM.DATの合成)、その他が行えます

    ソーサリアン~内部解析からわかったこと~(2015年改訂版)


    Twitter xm6_original