------------------------------------------------------------------------------
  X680x0 EMULATOR XM6 TypeG (version 3.31)
  Copyright (C) 2010-2019 GIMONS
------------------------------------------------------------------------------

□はじめに
  このアーカイブはＰＩ．氏作成のXM6(version 2.06)を改造して既存バグの修正、
  エミュレーション精度の向上、デバイスの追加、グラフィック、サウンド関係
  の機能強化を行ったものです。
  
  X68030対応についてはisakiさん作のxm6iからPMMU・FPUエミュレーションを
  マージさせていただきました。

  またcoさん作のXM6改から最新のWindrvXMホスト機能や各種インプットデバイス
  の処理改善コードを提供していただきました。

  このドキュメントはオリジナルのXM6.txtに説明してある内容に対してTypeG固有
  の内容のみ記述しています。オリジナルのドキュメントを合わせて参照ください。

  2015年春に念願だったＰＩ．氏にお会いすることができソースコードを含めて
  フィードバックさせていただきました。

□動作環境

  以下の動作環境で動作します。

  (1)プロセッサ
     x86,x86-64プロセッサで動作します。
     MMX拡張セットやCMOV命令は使用していません。

  (2)OS
     WindowsVista以降の32/64ビットモードで動作します。
     配布物の中にそれぞれの実行ファイルがあります。

     作者が動作確認しているのは下記のOSになります。
      Windows7 Professional 32ビット版
      Windows7 Professional 64ビット版

  (3)DirectX
     DirectX9を使用しています。
     具体的にはその内部コンポーネントのDirectSound(サウンド)、DirectInput
     (入力デバイス)、DirectGraphics(グラフィックス)を使っています。恐らく
     特別なランタイムのインストールは必要ないでしょう。

  (4)ランタイムライブラリ
    ATL/MFC/Visual C++ランタイムライブラリ(UNICODE版)を使います。
    再頒布パッケージ用のDLLを同梱してあります。

□機能強化ポイント

  (1)グラフィック関係
    下記のある最終的に表示に関する各コンポーネントを強化しました。

    ・CRTC
      時分割処理の精度をラスター単位の処理に加えブロック単位(16ドット)も
      選択できるようにしました。768x512で256色をサポートするグラフィック
      ローダ等が動作します。
      
      これは走査線の中央で256色2面を切り替える処理のためラスター一括で
      合成するエミュレータでは実現できない機能です。

      ラスター割り込みタイミングの変更、グラフィック高速クリアやラスター
      コピーの動作を修正しました。インタレース処理も仕様上はサポートして
      いますが再現性に関しては未確認です。

      またXVI Compact以降(XVI Compact,X68030,X68030 Compact)に追加された
      VGA表示用の50MHzOSCを換装するオプションを追加しました。

    ・GVRAM
      グラフィック高速クリア処理を修正しました。

    ・SPRITE
      BGスクロールの1ラスター遅延やスプライトの3ラスター遅延反映を実装
      しました。各種シューティングゲームや「ぷよぷよ」などでその効果が
      分かります。

      その他にスクロールレジスタ等へのワードアクセスの挙動や未定義ビット
      の更新を修正しました。

      未定義ビットは何らかの隠し機能があるかもしれませんが未確認です。

    ・VC
      テキストパレットのバイトアクセスの挙動やvr1h,vr2hに対する遅延反映
      処理を実装してあります。

    ・RENDER
      以下に示す特殊モードに対応しました。但し実機調査で判明した分だけで
      あり正しい動作であるかはよく分かりません。かなり特殊な使い方をする
      アプリでもほとんど問題になることはなくなりました。

      ①半透明モード
      ②特殊プライオリティモード
      ③グラフィックのプレーン別スクロール(32色4面モードなど)
      ④スプライトコントローラのタイミングレジスタ特殊設定(推奨値以外）
      ⑤その他、データブック記載以外の使い方

    ・CZ-6XXDエミュレーション
      CRTCの各種タイミング設定に対するCZ-6XXDの動作特性を独自に調査して
      表示上のアスペクト比が実機と同様になるようにしています。またバック
      ポーチやフロントポーチのタイミングもサポートしており特殊な画面演出
      をしたアプリでもほぼ正常に再現できます。

      アスペクト比の再現においてはDirectGraphicsを利用してスムースな拡大
      縮小を行いながらホストPCの負荷を下げています。その他0.5/1.5/1.8/2.0/
      3.0/4.0倍等の拡大縮小も可能です。

      その他次のようなオプション機構があります。

      ①線形補間のon/off
      ②15,24,31kHzそれぞれの水平表示位置、水平表示幅調整
      ③PCの垂直同期周波数でCRTCを駆動しTypeGのVSYNCを同期させる機能
      ④1024x848等の超高解像度モードにおいてドットバイドット表示する機能

  (2)サウンド関係
    ・サウンドエンジン
      XM6ではFM音源のエミュレーションに実績あるfmgenを使用しています。
      加えてTypeGではx68ksound.dll由来のエンジンを内部に組み込んであります。
      更にx68sound.dllは外部DLL版もサポートしています。実行ファイルと同じ
      フォルダにあれば優先して使用します。

      その他にROMEOやGIMICを利用した外部FM音源モジュールを利用することが
      できますが作者は実機を持っていないため未確認です。

    ・MercuryUnit
      V3,5と満開製作所のMK-MU1Oをサポートします。
      各種マニュアル、データシート等を参考に実装してあります。
      一応それなりに再現できているようですが実機と挙動が異なるかもしれません。
      こちらもGIMICを利用した外部FM音源モジュールを利用することができます。

    ・ROMEO/GIMIC利用について
      ROMEOはpcidebug.dll、GIMICはc86ctl.dllを必要とします。
      c86ctl.dllの32及び64ビット版GIMICのHPからダウンロードできます。
      pcidebug.dllの64ビット版はhttp://pcidebug.yui.ne.jp/から手に入ります。

    ・サウンドシンセサイザ
      ADPCM/FM音源、MercuryUnitのPCM/FM音源の動作をグラフィカルに表示できる
      サウンドシンセサイザ機能を実装しました。オリジナルはXM7のものを参考に
      実装しました。また内蔵FM音源はシンセサイザ上からチャネル毎にミュート
      することが可能です。

  (3)XVI/XVI Compactモード
      V3.20からXVIおよびXVI Compactモードが選択できるようになりました。
      オプションから選択するためには下記のROMファイルが必要になります。
      この2機種は内蔵SCSIモデルです。

        XVIモデル
          IPLROMXV.DAT  (131072 バイト) … XVI の $FE0000..$FFFFFF
          SCSIINROM.DAT（8192バイト）   …  $FC0000-$FC1FFF

        XVI Compactモデル
          IPLROMCO.DAT  (131072 バイト) … Compact の $FE0000..$FFFFFF
          SCSIINROM.DAT（8192バイト）   …  $FC0000-$FC1FFF

  (4)X68030モード
    ・CPUコア
      StarScreamの68000/68010命令セットに加えて68020相当の命令を追加実装
      しました。PMMUに関する命令はxm6iのPMMUエミュレーションを組み込むこと
      で結果として68030相当のエミュレーションが可能になりました。

      その他インストラクションパイプ制御、インストラクションキャッシュ、
      データキャッシュを実装しています。

      バスエラー時のスタックフレームは必要分だけになっており不正確です。
      またトレースビットの実装も不十分ですが実用には問題ないでしょう。

      V3.30以降では68040と68060のエミュレーションをサポートします。MPUの
      換装を行うことで040Turboや060Turboのソフトウェアが利用できます。

      68040/68060の内蔵FPU命令はx87の命令セットを利用してエミュレーション
      します。FPU命令を多用しても比較的低負荷で動作します。

    ・マザーボードFPU(68882)
      浮動小数点プロセッサの命令セットおよび浮動小数点演算のが可能です。
      CPUコアを68030に設定しFPUを有効にした場合には浮動小数点演算命令を
      実行する際にCIR制御を自動で行いマザーボードFPUを利用します。この
      CIR経由の制御は実機同様CPU空間アクセスを介して利用することができ
      ます。演算処理はxm6iのものを改変し組み込んであります。

    ・拡張エリアセット
      拡張エリアセットによるスーパーバイザーモードでのメモリ保護機能を実装
      しました。

    ・拡張メモリ
      ローカルメモリやハイメモリと呼ばれる拡張メモリを実装しました。
      TS-6BE16、060Turbo互換から拡張方法を選択できます。xm6iオリジナルの
      拡張方法は実機として存在しないため廃止しました。

    ・各種ウェイト制御
      メインメモリ、各種ROM、周辺デバイスへのメモリウェイトを調整しました。
      68030のバスアクセスタイミングは複雑なので概ね合っている程度と考えて
      ください。またメインメモリに関してはクロック30MHz以上でスタティック
      カラムモードを解除してウェイトを入れるようにしています。

    ・必要なROMファイルについて
      X68030モードは下記のROMファイルが存在するかでチェックしています。

        IPLROM30.DAT  (131072 バイト) … X68030 の $FE0000..$FFFFFF
        ROM30.DAT     (131072 バイト) … X68030 の $FC0000..$FDFFFF

      IPLROM30.DATはシャープから無償公開されていますのでそちらを利用する
      ことができます。

      上記のROMファイルを実機からダンプするためにはdb.x等で該当するアドレス
      をファイルに出力して何らかの手段でWindows環境まで持ってきてください。

      因みにROM30.DATは紛らわしいですがIPLROM30.DATではなくROM30.DATという
      全く別のROMファイルです。このROMについてはX68030は所有していないけれ
      どSUPERやXVIをお持ちであるならば代替ROMを使うことができます。

      SCSIINROM.DAT（内蔵SCSIインターフェース $FC0000-$FC1FFF）をダンプして、
      サイズを8192バイトから131072バイトにパディングしてください。

      パディングにはddコマンド等で後ろに単純に0x00で埋めてサイズだけ合わせ
      て下さい。もちろんX68030の持つ機能が全て使える訳ではありません。

    ・拡張ROMについて
    　X68030はユーザーがIPLROMを拡張実装できるソケットが存在します。
    　ソケットに独自に拡張したIPLROMを挿してジャンパスイッチを切り替える
    　ことで標準のIPLROMの代わりに拡張ROMを利用することができます。
    　060Turboの改造ROMを拡張ROMとして利用するために実装しました。
      拡張ROMはIPLROM30S.DATとROM30S.DATというファイル名で配置して下さい。
      オプションメニューのX68030ページにある拡張ROM有効をオンにすると標準
      のIPLROM30.DATとROM30.DATよりも優先して拡張ROMを利用します。

      060TurboのROMの場合は下記のファイル名でダンプしてください。
        IPLROM30S.DAT  (131072 バイト) … X68030 の $FE0000..$FFFFFF
        ROM30S.DAT     (131072 バイト) … X68030 の $FC0000..$FDFFFF

  (5)機種毎のSRAM保存
    EXPERT,XVI,XVI Compact,X68030のそれぞれに対応したSRAMが保存されます。

    ・SRAMファイル名
      EXPERTモード      : SRAM.DAT
      XVIモード         : SRAMXVI.DAT
      XVI Compactモード : SRAMCMP.DAT
      X68030モード      : SRAM030.DAT

□その他のバグ修正と追加実装

  (1)VM関係
    ・MPU
      StarScream0.27aに換装して64ビットモードに対応できるようにしました。
      一部レジスタシフト等のバグ修正とオリジナルの拡張も組み込んであります。
      68030,68040,68060に対応するためのコードが追加してあります。

    ・MFP
      バスエラーの再現性向上とCPUとの動作タイミングの調整を修正しました。
        1.GPIPとその割り込みタイミングの微調整。
        2.IMR設定時の割り込みタイミングの変更。
        3.トランスミットステータスレジスタの再実装。
        4.CPU→MFPへのデータ引渡しのタイミング調整。
        5.イベントカウントモードの遅延発動。

      これらの修正はクレイジークライマー、アルカノイド、サイバリオンなどの
      アプリで不具合として表面します。一見描画系に関係ないように見えて実は
      割り込みやデータ受信のタイミングが影響していることは多々あるようです。

      V3.13L30からGPIPの信号線変化に対する割り込みタイミングを1命令遅延
      させました。これはMFPからの割込み発生直後にCPUコアを1命令割り込み
      検出なしで駆動させることで1命令の割込み検出遅延を再現させたものです。
      割込み処理構造の変更はこれで第四世代になりますが完成したとと思います。

    ・DMAC
      帯域限定転送制御とパック転送を新たに追加実装しました。バイトアクセス
      とワードアクセスでデバイスによっては動作が異なる場合にパック転送が
      実装されていないと不具合がでます。例えばテキストパレットアクセスなど。

    ・FDC
      主に状態遷移割り込み(READY信号変化の割り込み)を修正しました。割り込み
      を利用した制御を行うようなOS(NetBSD等)での不具合に対処したものです。

      シーク系コマンドや状態遷移後のにSENSE INTERRUPT STATUSコマンドのみを
      受け付ける仕様でしたが、実機では連続シーク等が可能であることが判明
      したためコマンド制限を解除しました。

      ReadDiagnosticコマンドを実機の仕様に近づけました。
      シーク直後にセトリング時間と推測されるウェイトを設けました。

    ・FDD
      2HCイメージのサポートの他にアンフォーマット時のセクタクリア処理を修正
      しました。

    ・FDI
      1.2MBファイル形式のサポート(拡張子2HC、2HC専用)

      FDX形式のサポート(拡張子FDX)
      FDX形式は拙作のFDX68(http://retropc.net/gimons/fdx68/index.html)が
      サポートするフロッピーディスクイメージです。プロテクトを含むダンプ
      イメージです。

    ・ADPCM
      アナログ回路エミュレーション（DCオフセット＋LPF）を追加しました。
      またXM6改由来のクロックアップ改造にも対応しています。

    ・OPM
      OPMのライトフラグの挙動とビジー中の書き込み無視動作を再現しています。
      波形合成エンジンはオリジナルが採用していたfmgen以外に内蔵版X68Sound
      が使用できます。これらの合成エンジンはCSMモードの改善を行っています。
      また外部DLLを用意することでDLL版のX68SoundやROMEO(pcidebug.dll)、
      GIMIC(c86ctrl.dll)を利用することができます。

    ・SCSI/SASI/SXSI/DISK
      オリジナルのソースをベースにしていますが機能配置を大きく見直すことで
      より実機に近い挙動をするように改修しました。特にSCSIはバスの状態を
      正確に再現できるよう修正を行いました。この改良でMINIXが起動できるよう
      になりました。

    ・SCC
      主にxm6iで修正されたコードを取り込みました。

    ・MIDI
      クリックカウンタやシーケンサ処理が仕様通りに実装されていなかっため
      追加実装しました。不必要な割り込みが発生することで MIDIが停止する
      不具合が修正されます。

      巨大なシステムエクスクルーシブの送信でバッファオーバーランするバグ
      を修正するとともにバッファ分割しながら間欠的に送信する機能強化を
      行いました。

    ・システムポート
      xm6iで修正されたコードを取り込んであります。アドレスと処理内容が
      かなり間違っていました。またバージョン情報の取得は先頭の$36('6')、
      メジャーバージョン、マイナーバージョンの後に$67('g')が帰ります。
      TypeGはメジャーバージョンが3系のXM6として偽装しています。
      またバージョン情報の取得（独自拡張ポート）はオプション指定で無効化
      できます。これは実装途中でsi.xが機種判定している処理を調査するため
      に拡張したものですが機能として残しておきました。

    ・RTC
      エミューレータ終了時にRTCの情報をRTC.DATという名前で保存します。
      タイマー設定等を起動時に復元することができます。合わせて電源オフ状態
      でもRTCは駆動されるようになっていますのでタイマー設定での電源オンを
      利用することができます。Winner2で使っているテストモードも実装して
      います。

    ・Nereid(USB除く)
      イーサネット/USB/拡張メモリ・バンクメモリ複合ボードであるNereidの
      イーサネットとバンクメモリを実装しています。イーサネットについては
      LANコントローラとしてRTL8019AS相当の機能をエミュレーションします。
      ホストPCにTAP-Windowsが必要です。TAPの設定やネットワークのブリッジ
      またはルーティングの設定を行う必要があります。もちろんX68000側に
      ドライバ等の導入が必要です。

    ・CGROM
      X68030モードの時にはCGROM.DATの代わりにCGROM30.DATというファイル名
      でCGROMデータを読み込みます。CGROM30.DATが無ければCGROM.DATという
      優先順位です。これはX68030のCGROMの内容が他の機種と異なるための措置
      です。xm6iの考え方を参考に拡張しました。

    ・CZ-6BF1(拡張RS233Cカード)
      SCCをベースに拡張RS232Cカードを4枚実装できるようにしました。

    ・CZ-6BP1(数値演算プロセッサーボード)
      拡張ボードタプのFPUを2枚実装できるようにしました。


  (2)ターボモード
    XM6の「VM全体をノーウェイト動作」をショートカットキーだけでON/OFFする
    機能です。ショートカットキーはCTRL+F12になります。最近PCでは速過ぎる
    ためVMの動作倍率をオプションから設定できるようにしています。

    一部の方々から以前のショートカットに戻して欲しいという要望を受けたので、
    あまり何も考えずにALT+F11から元のCTRL+F12に戻しました（ｗ

    個人的には推奨していませんがSHIFT+CTRL+F12でMPUのみノーウェイト動作を
    切り替えることができます。

  (3)エコモード
    MPUやVMのノーウェイト動作は非常に便利ですがMPUのSTOP命令を利用して
    割り込みトリガで待つようなOS（MPL OSやNetBSD等）ではコマンドプロンプト
    の待ち状態でもホストPCのCPUを使い続けます。そこでCPUがHALT状態にある
    場合には上記のMPU,VMのノーウェイト動作やターボモード動作を一時的にオフ
    にしてPCの負荷を下げます。

  (4)ジョイスティック
    ・ジョイキー
      JoyKeyという機能でキーボードの方向キー（上下左右）でスティックの方向、
      Z,X,A,Sでボタンの押下状態を再現します。

      [ツール]→[JoyKeyモード] でエミュレーションのON/OFFが可能です。

      但し[オプション]→[ジョイスティック]で割り当てデバイスに「JoyKey」
      を選択してどのデバイスに対してJoyKeyを有効にするか選択してください。

      またエミュレーションが有効な間はキーボードの上下左右、Z,X,A,Sの
      各キー入力を無視します。

    ・デバイスの割り当て拡張
      デバイスの各ボタンにはX68K上で認識されるジョイスティックの各ボタン
      を割り当てますが、X68Kのキーボードの各ボタンを割り当てる機能を拡張
      しています。応用としてターボモードのON/OFFなどを割り当てることが
      できます。

    ・ステートセーブ
      ショートカットキー（ALT+F1/F2）でクイックロード/セーブが可能です。
      xm6g.exeと同じディレクトリにSTATE.xm6というファイル名でステート
      ファイルが作成されます。

  (5)ホストスケジューラ
      RTCとキーボードをホスト側の時間を基準に速度調整することでVM高速
      モードを利用中でも正しく時刻が刻まれ、また無駄なキーリピートを抑制
      できます。オプションから切り替えが可能ですがデフォルトで有効になって
      います。xm6iで実装された機能を一部変更して組み込みました。

  (6)XM6改の改良をマージ
     最新版のWindrvXMをはじめとした色々な改良を取り込んでいます。
     WindrvXMの導入についてはXM6改のドキュメントを参照してください

  (7)ウィンドウ状態保存とリジューム機能の強化
     オプションのレジュームから「ウィンドウ状態の保存」を有効にすると
     メインウィンドウの位置復帰だけでなくストレッチ状態も復帰します。
     また全てのサブウィンドウについても終了時の位置とアイコン化状態を復帰
     するように拡張してあります。これはステートファイルのロード時にも作用
     します。

□Windowsメニュー

  以下にメニューの概略を示します。なお動作中はマウスモードがWindows側に
  ある時に限り、右クリックでメインメニューと同じメニューが開きます。

  説明の最後に★マークが付いたものはTypeGで拡張または変更したものです。

  ファイル(F)
    開く(O)               ステートデータをロードします。
    上書き保存(S)         ステートデータを上書きで保存します。
    名前をつけて保存(A)   ステートデータを別名で保存します。
    リセット(R)           仮想マシンをリセットします。
    インタラプト(I)       仮想マシンにNMI割り込みをかけます。
    電源スイッチ(P)       仮想マシンの電源スイッチをON/OFFします。
    クイックロード(L)     ステートデータをファイル指定なしでロードします。★
    クイックセーブ(Q)     ステートデータをファイル指定なしでセーブします。★
    終了(X)               XM6を終了します。

  メディア(M)
    フロッピーディスク0,1
      開く(O)             フロッピーディスクイメージを設定します。
      イジェクト(E)       フロッピーディスクイメージを取り外します。
      書き込み保護(W)     ライトプロテクトシールを操作します。
      強制イジェクト(F)   イジェクト禁止の場合に強制イジェクトします。
      誤挿入(I)           誤挿入をシミュレーションします。

    MOディスク
      開く(O)             MOディスクイメージを設定します。
      イジェクト(E)       MOディスクイメージを取り外します。
      書き込み保護(W)     ライトプロテクトタブを操作します。
      強制イジェクト(F)   イジェクト禁止の場合に強制イジェクトします。

    CD-ROM
      開く(O)             CD-ROMイメージを設定します。
      イジェクト(E)       CD-ROMイメージを取り外します。
      強制イジェクト(F)   イジェクト禁止の場合に強制イジェクトします。

  表示(V)
    システム(S)           システム情報を表示します。
    プロセッサ(P)         MPUまわりの情報を表示します。★
                          x68030モードではサブメニューからキャッシュ・MMUを
                          選択できます。
    デバイス(D)           各種デバイスの情報を表示します。★
                          サブメニューに次のサブウィンドウを追加しました。
                            システムポート
                            I/Oコントローラ
                            ADPCM
                            ジョイスティックインターフェース
                            まーきゅりーゆにっと
                            Nereid
                            拡張RS232C
    ビデオ(V)             ビデオRAMの情報を表示します。★
                          無効になっていたテキストメニューを復活させました。
    レンダラ(R)           表示合成用ワークメモリの情報を表示します。
    Win32(W)              Windows固有の情報を表示します。
    キャプション(C)       ウインドウ上部のタイトル部をon/offします。
    メニューバー(M)       ウインドウ上部のメニューをon/offします。
    ステータスバー(B)     ウインドウ下部のステータスバーをon/offします。
    最新の情報に更新(F)   すべてのウインドウを再描画します。
    ストレッチ(T)         0.5,1.0,1.5,1.8,2.0,3.0,4.0倍のを選択できます。★
    フルスクリーン(U)     スクリーン表示を全画面モードに切り替えます。

  デバッグ(D)
    実行(X)/停止(B)       仮想マシンの実行を開始/停止します。(トグル動作)★
    トレース(T)           1命令だけ実行します。
    リセット(R)           仮想マシンをリセットします。

  ツール(T)
    MPUクロック(C)        MPUクロックを変更します。★
    VM全体をノーウェイト動作(V) VMノーウェイトモードを有効にします。★
    MPUをノーウェイト動作(N)    MPUノーウェイトモードを有効にします。★
    マウスモード(M)       マウスエミュレーションの有効・無効を切り替えます。
    JoyKeyモード(J)       JoyKeyの有効・無効を切り替えます。★
    ソフトウェアキーボード(K)   ソフトウェアキーボードウィンドウを表示します。
    ソフトウェアリセット(R)     CTRL+OPT1+DELのキーストロークを送信します。★
    時刻アジャスト(T)     エミュレータ内の時計をWindows側を見て合わせます。
    SRAM消去(E)           SRAMの内容を強制的に0クリアします。★
    trap#0命令(I)         d0.bに任意値をセットして、trap#0を実行します。
    シンセサイザ(&S)
      内蔵音源(I)              内蔵音源のシンセサイザを表示します。★
      まーきゅりーゆにっと(&M) MercuryUnitのシンセサイザを表示します。★
    キャプチャ(&P)
      WAVキャプチャ(W)    再生サウンドをWAVファイルに記録します
      画面キャプチャ(S)   画面をPNGファイルにキャプチャします。★
    イメージ作成(&I)
      フロッピーの作成(F)   新しいフロッピーイメージを作成します。
      SASIディスクの作成(A) 新しいSASIハードディスクイメージを作成します。
      SCSIディスクの作成(H) 新しいSCSIハードディスクイメージを作成します。
      MOディスクの作成(D)   新しいSCSI光磁気ディスクイメージを作成します。
    オプション(O)         XM6の動作オプションを設定します。

  ウィンドウ(W)
    重ねて表示(C)         サブウィンドウを再配置します(カスケード)★  → 廃止
    並べて表示(T)         サブウィンドウを再配置します(タイル)★  → 廃止
    全てアイコン化(I)     サブウィンドウをすべて最小化します。
    アイコンの整列(A)     アイコン化されたサブウインドウを並べます。★  → 廃止
    全て隠す(H)           サブウィンドウをすべて非表示にします。
    全て復元(R)           アイコン化や非表示の前の状態に戻します。

  ヘルプ(H)
    英語モード(E)         画面リソースを英語版に差し替えます。★ → 停止
    バージョン情報(A)     XM6のバージョン情報を表示します。

□速度

  TypeGはオリジナルのXM6に比べて性能が劣化している訳ではありません。
  様々な機能強化と同時にチューニングを行うことで負荷が低くなっています。

  x68kは簡単にエミュレーションできるほどシンプルなマシンではありません。
  一部のアプリケーションでは期待するほどの速度はでないでしょう。

□開発環境

  開発ホスト:PC/AT互換機
      Intel(R) Core(TM)i5-4690S CPU @ 3.20GHz
      Roland CM-64,MT-32(前期),SC-55K

  ターゲット:
      X68000XVI Compact(MC68000 16MHz) + MIDIボード + Mach-2
      X68030(MC68030 33MHz) + FPU + 060Turbo + まーきゅりーゆにっとV4
      Roland CM-64,MT-32(前期),SC-55K

□著作権、および謝辞

  ベースとなったXM6はＰＩ．氏が作成されており著作権を所有しております。
  他の著作権に関する情報はオリジナルXM6のアーカイブに含まれるXM6.txtを参照
  してください。

  TypeG で機能強化した箇所についてはGIMONSが著作権を所有します。
  実験成果公開という性質上、私のHP以外での配布を認めておりません。

  FM音源の合成エンジンのX68Sound.dllはm_puusanさん作成のものを使っています。
  この部分の著作権は作者であるm_puusanさんに帰属します。

  一部のソースコード（サウンドエンジン強化）についてはnueさん、RuRuRuさん、
  Fu-さん,Yuiさんにコードを寄贈していただきました。

  実機風のADPCMのLFPはOhTamagoさんから寄贈されたコードを組み込みました。

  また同じくXM6及びTypeGをベースにマルチプラットホームでの動作サポートを
  進めているxm6iからマージしたソースコードの一部はisakiさん、Y.Sugahara
  さんが著作権を所有しております。

  WindrvXMの作者であるcoさんが開発したXM6改の各種改良をマージさせていただき
  ました。TypeGのノウハウを友情出演という形でフィードバックもしています。
  インプットデバイス系に大きな進化を得ることができました。これらのコードの
  一部はcoさんが著作権を所有しております。

  Makoto KamadaさんのXEiJ (X68000 Emulator in Java)に添付された各種テスト
  ツールおよびMPU命令の実装を参考にさせていただきました。特にMPUの各命令の
  動作をテストできるinstructiontest.xと浮動小数点演算命令のfputest.xで膨大
  なバグを検出することができました。vcntest.xやvcntest2.xからグラフィック
  の重ね合わせ処理の仕様について更なる研究が進むなど多大な影響を受けました。

  その他にもツイッターや某掲示板から貴重なフィードバックを頂いて大きく
  進化することができました。ここに感謝します。

□ソースコードについて
  一部の開発協力者の方々を除いて基本的にはソースコードを配布しておりません。
  かといってソースコードの提供に積極的でないという訳ではありません。一緒に
  開発や改造を行ってワイワイしようぜ！という奇特な方は一報下さい。

□ライセンスについて
  ・XM6 TypeGはフリーソフトです．
    当ソフトを利用して生じたあるいは生じると予測される損害について私および
    オリジナルのXM6作者は一切責任を負いません．

  ・その他のライセンス事項
    オリジナルのXM6の規定に従います。特に雑誌/書籍での紹介や付属CD-ROMに
    よる配布に関しての制約事項にご注意願います。

□連絡先
  twitter        https://twitter.com/kugimoto0715
  e-mail         gimons.developer.works@gmail.com
