<MS-DOSゲームのトラブル対策>

  02/06/13


 ここでは代表的なDOSゲーム動作時の問題について解説する。しかしながら到底このスペースでは収まらないのでかなり限定的だし、内容もそれほど突っ込んで書いていないのは御了承願いたい。


1.Windows上のMS-DOSプロンプトで起動しない
2.MS-DOSモードでのサウンド
3.SVGAモード
4.ゲームの速度
5.3Dカード用パッチの問題
6.CD-ROMとマウスの動作
7.メモリの空き容量
8.NEC98製品
9.DOSのバージョン



1.Windows上のMS-DOSプロンプトで起動しない
 Windows上でフルスクリーンにしてやれば大概のゲームは動くし、動いてしまえばDOSに関するややこしい事柄に煩わされずに済む。ただし動かないゲームと言うのもある訳で、こういったゲームは純粋なMS-DOSにして再起動してやらなければならず(DOSモード)これにはいろいろと問題がある。しかし起動しない場合でも各種設定を変更する事で起動させられる可能性があるので、該当するEXEファイルのプロパティを開いて以下の点を試してみよう。

◎プログラムタブの中の詳細設定を選択し、その中の「MS-DOSプログラムにWINDOWSを検出させない」にチェックを入れる
◎メモリタブの各項目が全て自動になっているかをチェック
◎画面タブでは「全画面表示」にチェック。そして「高速ROMエミュレーション」のチェックを外す
◎その他タブ
  「スクリーンセーバーを使用」はOFF
  「マウスポインタを表示しない」をON
  「ほかのプログラムの優先度」を低い方へ
  「高速に貼り付け」をOFF

 これらは同時に全てやらなけらばならないのではなくて、いずれかが動作しない原因になっている可能性があるという意味であるので勘違いしないように。またWIN95時代にダメだった物が98だと動くと行ったケースはある(98の方が構造的に互換度が高い)。


2.MS-DOSモードでのサウンド
 どう設定してもWindowsのDOSプロンプトでは起動しないゲームと言うのが残念ながら存在する。メーカー側がハッキリと動かないと言っている物や、DOSゲーファンの間でダメだと認識されている物等は諦めるしか無い。主に90年台前半、つまりWIN95前にリリースされたゲームにこれは多い。特に有名なのはOriginのゲームで、これは同じ会社内で同様のプログラムテクニックを使っていた事によるのだろう。OirginとはUltimaシリーズで有名な所であり、この当時最高レベルのゲームをリリースしていた会社の一つである。それ故今でも遊べるゲームが多いのだが、Winとは両立出来ないという物が多く、遊びたいというプレイヤーには泣き所となっている。

 さてここからが問題となるのだが、別にこれらのゲームは起動しないという訳では無い。つまりMS−DOSモード、一度WINDOWSを終了させてDOS単体として起動させるモードを使えば動くのである(MS-DOSで立ち上がっているのだからDOSのゲームが動くのは当然だが)。では何が困るのかというと、確かに起動はするのだが音が一切出ないのである。
 これに関してはサウンドカードの仕組みについて触れないとならない。昔からあったISAバスというIFは今ではすっかり廃れてしまい、今やデバイスカードはPCIバスが主流となっている。サウンドカードもISAバスタイプからPCIタイプへと完全に移行が終わり、最早ISAバスタイプのカードをショップで見る事は無い。だがこのPCIバスというのには一つ欠点?があって、仕様上の問題からある種の割り込み(NMI)を掛けられないのである。ここでこの割り込みが何を意味するのかとかは説明を省くが、DOSで動かす場合にはサウンドカードに関してこの割り込みが使えないと音が鳴らせ無いのだ。WIN上で動いている時はDOS機能をエミュレーションしているのでこういった事は考えなくて良いのだが、WINが無くなって純粋なDOSとなるとこの問題が出て来てしまう。DOSだけで起動している場合、もちろんPCIバスを認識する事は出来る。だがサウンドカードに関しては認識は出来ても音が出せないのだ。これに関しての対処方法は以下の様になる。

A:ISAバス用のサウンドカードを差す
 当然これならば音は出る。ただし入手の問題、マシンにISAバスがあるのか、差した場合の既存のカードとのIRQの共存設定、また既存のシステムに組み込むとなると、サウンドカードが2枚差しになるだろうからハードウェアプロファイルでの設定も必要となってくる等ハードルはかなり高くなる。
B:SB−LINK付きのマザー&カードを使用する
 Creativeにしてもこれは困った問題であった。PCIにすれば転送速度のUPから高機能カードが作成出来るのに、DOSのゲームが動かなくなってしまうのでは最も需要の大きなゲーマーに購入してもらう事が出来ない。そこでどうしたかというとSB-LINKという規格を作ってしまい導入を呼びかけたのである。これはマザーボードとサウンドカードの両方にSBコネクタというのを設けてしまい、これを接続する事でPCIバスのカードでも別ルートで割り込みを掛けられる様にするという仕組みである。業界で圧倒的なシェアのCreativeならではのある意味強引な発想であるが、この規格は当然多くのマザーボードやカードに取り入れられた。
 よって98年位までのマザーであればこのコネクタを持っている事が多いし、同じく98年以前のサウンドカードならばこのコネクタを備えている可能性が高い。だが問題となるのはお分かりの通り、今となってはその頃の物を使っている人は少ないと言うことだ。よってもし当時のマザーやサウンドカードが残っているのならば、それで一台別に組んでしまうというのが理想的である。或いは当時のメーカー製のサウンドオンチップマザーでもこの機能は備えているはずなのでそれを入手するという手もある。
C:DOSのドライバを使う
 実は最初の段階では、各社ともPCIのサウンドカードでISAのエミュレーションをするという作業に取り組んでいた。これはDOSの起動時にPCIのカードをISAバスのカードに見せかける様なドライバプログラムをメモリに読み込んでしまい、これによってPCIカードでも純粋なDOS上で音が出せる様にすると言う事である。しかしながらこの再現性と言うのがあまり高くなく動いたり動かなかったりで、またPCIで無ければ転送速度的に無理という程のサウンドを持ったゲームも無かったので、ゲーマーは皆当時普通にISAのカードという事でほとんど使われなかった。その内に上で述べたSB−LINKというハードウェア的に完全互換にしてしまう規格が出来てしまったので、そのままこれは自然消滅といった感じになった。
 ただ唯一Creativeのみはこれに結構力を入れていて(SB−LINKを提唱したが実際の所自社では取り込むのに熱心では無かった)、他社製のカードのドライバが能力的に使えないのに対して、Creativeの物はかなりの再現性を持っていると評判であった。よってLive!を持っているのならばこの方法で再現するという方法はある(Live!にはSBコネクタは無い)。しかしこれには問題があって、
 *現在のLiveware3.0にはこのDOS版SB16エミュレーションドライバは組み込まれていない(もう時代的に必要ないだろうからという判断なのだろう)
 *組み込むのにはハードウェア&DOSの知識要
 *マザーボードとの相性で問題出る事あり。
ということで普通の方にはお勧め出来ない。どうしてもこれでやるという方には資料等をお渡しすることは出来るが、どうやるかまではこのページのレベルを越えた話になるので割愛させていただく。というか最新のマザー(チップセット)だと動くのかどうかという保証も無いし、BIOSをいじる事も有り得るので。もしもDOS時代にconfig.sysやautoexec.batをいじった事が無いという方にはかなり高度な内容となるだろう。

 ということで、もしもあなたがどうしても「DOSモードでしか動かないゲームで音を出したい」ということならば、一番確実なのはAの方法でISAバスのカードを手に入れて(秋葉のジャンク系ショップや中古ショップに行けばまだ売っている)一台余った機材等でマシンを作成してしまうのがお勧め。今あるマシンに差しても良いが、この場合WINのゲームをやるのに問題が出る。とにかくこれだと一番トラブる可能性が少ない。Bの方法でも良いが、どちらかというとマザーの方がサウンドカードよりも見付け難そうだ。それとSBコネクタ付きのPCIのサウンドカードも手に入れないとならない。


3.SVGAモード
 まず基礎的な事から。PCの画面モードは開発当初からCGA、EGA、VGAといった順に改善されて来ており現在での標準はVGAである。このVGAというのは640*480*16色(4bit color),320*400*256色(8bit color)といったモードを持っており、御存知の通りWindowsの基本画面モードである。Windowsに対応したビデオカードは最低限このVGA規格を満たしていなければならない。そしてこれ以上の解像度や色数を使うモードを総称してSVGAと言い、当然ゲームに関してはこのモードを使う事が多くなる訳だ。
 このSVGAというのはそれぞれのカードごとに使い方がまちまちなので、共通した規格としてVESAというものが存在している。これは今で言えばDirect 3Dみたいな物だと考えてもらって良いだろう。つまりゲーム側では「VESA1.2以上に対応したSVGAカード要」とか仕様に書いてあり、これを動かすには同じくVESA1.2以上の規格を満たしたDOS用のビデオカードドライバ&カードが必要と言う意味である。

 では何が問題となるのか? Windows用のビデオカードは大抵はVESAに対応しており、そのバージョンは現在3.0にまで上がっているのだが、この規格は下位互換性が保証されていない。よって動作時にVESA1.2や2.0の規格を要求してくるゲームは動かない可能性があるのである。DOSゲームが流通していた頃であれば各ビデオメーカーもVESAへの対応を考慮していたのだが、今の時代になってはもう対応の必要無しということでその辺が考えられていないのである。
 一つ断っておくと別にゲームが動かない訳では無い。ただし640*480の解像度で動かすにはVESA2.0以上要となった場合、未対応ならばこれを動かすには解像度は320*200とかになってしまうゲームが多く、今の時代この解像度は正直辛い。特に高解像度の画像を一度見てしまっているとやる気が減少するだろう。また中にはVESA2.0以上で無いとゲームそのものが動かない物も存在するので注意が必要だ。おそらくはフライトシム系に多いと思うのだが。

 更にVESA1.0とかでOKのはずなのにビデオカードとの相性で動かないケースもあり、こればかりは対応のしようが無い。デモで確認出来ると良いのだが、デモではダメだが製品ならOKという場合も多く厄介。また当時のデモ版にはサイズを抑える為に高解像度モードが含まれていない事もあるので確認は難しい。一言付け加えておくと、VESAとの相性が悪い事で有名なカードがnVidiaの一連のカードであるのも問題点の一つか。なおこれとは逆にVESA2.0等に対応していない昔のカードをそれに対応させるDispray Doctorというソフトもあるのだが、ここでは割愛する。


4.ゲームの速度
 ゲームと言うのは必ず速度調整を考えてプログラムされている。もしもこれが無いと高速マシンでは自分や敵の動きが速くなってしまいゲームにならないという事が起きるからだ。つまり標準的なゲームスピードという物が規定されていて、それよりも速く動かせる場合でもWaitを入れて動作を遅らせているという事である。ところが昔のゲームをやろうとするとこの速度的な問題が発生してしまうケースがある。基本的に以下の3つ。

*当時考慮していたよりもはるかに速いマシンでプレイする場合。当時では想定していなかったレベルの速さということ。
*ゲーム本体では無くインストールといった別のプログラムにて、これらは普通速度など考慮していないので問題が出る可能性在り。実行すると
  Runtime Errorというのが出るのはこの可能性が高い。

*デモ等だと製品版と違いこういった調整プログラムが含まれていない場合がある

 こういったケースではゲームが動かなかったりとか、動くのだが速過ぎてゲームになら無いといった事が起きる。そこでどうするかというとWaitを入れて遅くするプログラムを使って速さをエミュレートするという方法を使う。昔はPC本体に速さを遅くするスイッチが付いていたりしたのだが、現在では見られないのでこの方法を使うしか無い。
 このプログラムで最も有名な物はMosloというソフトで、有料のソフト($20程度)なのだが過去のゲームをまとめたパック作品を買うと組み込まれている事もある。初代Moslo,Deluxeと来て今でもリリースされている有名なソフトだ。ただしそれぞれがその当時のマシンレベルを考慮して作成されている為、昔買ったゲームに付属して来た物を今のマシンに使おうとしても上手く動かないことが多いので注意(当時のCPUに合わせて作成しているので)。最新のバージョンを使わないとならない。 公式サイト
 実はこのMoslo、機能制限版であれば無料で使う事が出来る。しかし問題があって、現在(02/06)だとCPU速度が700MHzを越えるマシンでは使えないようなプロテクトが掛けられているので使えないという人も多いはずだ。また使える人でもかなり重要な機能が削除されているので使い勝手はあまり良くない。

 簡単にどのように使うのか説明すると、まずこれをC:\Windows\Commandの中に入れておいて、起動したいゲームのEXEのあるディレクトリに移動し、コマンドプロンプトから >moslo /20 game.exe という様に入力して起動する。/20というのは20%の速度で起動するという意味。起動ファイルのEXEは省略出来ない。
 もちろんどの程度の速度で起動するとちょうど良いのかとかは何回も試すしか無い(製品版はゲーム中に可変)。また遅くした場合ゲームそのものだけでは無く、メニューや起動までも遅くなるので問題が出ることもある(製品では修整できる)。

 なおこれでゲームがちゃんと動くかどうかは保証の限りでは無い。Mosloを使うと動かなくなるというケースも多いという事。


5.3Dカード用パッチの問題
 DOSのゲームにも3Dカードに対応している物が多数在り、これらはハードウェア的に実現されている。よってパッチは各カード専用に用意されており、現在のD3Dの様に各カードに共通の仕様とはなっていない。だから自分のカード用の物が無ければ諦めるしか無いという事になる。しかし対応していると言っても今その当時のカードを使っている人はほとんどいないだろうし、そうなると使える物は限られてくる。よって今だと一番可能性があるのがVoodooカード用の3dfx系パッチとなるだろうもしも該当するゲームにパッチがあるのならば当然使いたくなるはずだ。

 しかしこれにも問題があって、まず第一に3dfxの互換性という物がある。昔からのVoodooユーザーには御馴染みの話だが、初代のV1用に作られたパッチというのはV2以降のカードでは動かない物が結構多い。或はある種の特殊な設定をしてやらないと(Voodooの起動パラメータをいじる)ダメだとか。同様に、こちらの割合は前者よりもぐっと低いが、V2対応のパッチがV3以降では動作しないという事もある。
 次に昔のVoodooは単体の3D計算専用カードとして製作されていたので、これを考慮して作成された物は現在では動かない可能性がある。一応説明しておくと今のVoodooは一枚で全ての描画をこなす普通のカードだが、昔の物は基本的に他の2Dカードと混在させて使うカードだった。3D計算部分だけを受け持って、2D系の表示機能を持っていないという意味である。2D系の描画機能も持ったその1枚だけで使えるカードもその後出されたのであるが(Rush,Banshee)、これらのカードは相当機構的に(当時の)ノーマルな物とは異なっている。よって以前はVoodoo用のパッチと一体型Voodooカード用のパッチが分けて出されたりした。V3以降のカードはむしろこの一体型と近いので、よって普通の3dfx用パッチが動かない可能性があるのだ。
 
 最後にこれらのパッチがMS-DOSモードでないと動かないというケースがある。つまり通常モードであればWindwos上のフルスクリーンで起動するのだが、3Dカードパッチを使う場合は純粋なDOSでないと動かないというケース。これは上で述べた様に音が出なくなる可能性が高いので、音と画のどちらを取るかという問題になってくる。


6.CD-ROMとマウスの動作
 以下の問題はDOSモードでしか動かないゲームに関する事である。

 DOSモードでしか動かないゲームを起動した場合2つの問題が生じる。まずCD-ROMドライブが無いというエラーが出る事。そしてマウスがゲーム中に使えない事である。これは何故かというと「MS-DOSモードで再起動」という形で起動した場合、使われるConfig.sys,Autoexec.batの設定はWindowsで使われている物なので、これには両者のドライバ指定が入っていないからである。
 ではそこに組みこんでおけばいいのかというとそうではなく、これらはMS-DOS用ということでWindowsで使っている物とは違う16bitのドライバなので、組み込むだけ無駄であり、むしろWindowsの動作に悪影響を与える。よって起動時にこれらを組み込むconfig.sysとautoexec.batを作成しFDからこれで起動するか、そのプログラムのプロパティでMS-DOSモードでの起動時設定として記述しておかなければならない。

 しかしこれを組み込む方法はこういう事をやった事が無い人だと難しいかもしれない。WIN98ならば起動用FDに16bit版の汎用CD-ROMドライバは入っているが、この場合ATAPIならば簡単なのだがSCSIとかだとどうやるのかちょっと私もわからない。またマウスドライバは16bit用の物を別に用意しないとならない。


7.メモリの空き容量
 以下の問題は基本的に95年以前のゲームでDOSモードでしか動かないゲームに関する事である。

 この問題は話すと非常に長くなるので(本当に長くなるというかこれだけで一冊の本になる位だ)要点だけ説明する。昔のDOSゲーマーにとって必要とされた能力の第一は、システムの設定をいじってメモリの空き容量を広げるということだった。
 MS-DOSというOSは作成されたのが1980年代初頭という事もあって、アクセス可能なメモリ空間が最大で1MBに制限されている。この空間の内640KBがユーザー領域で、残りがシステムということになる。よってゲームのプログラムをロードするにはこの640KBという空間(コンベンショナルメモリと言われる)にそれを入れなければならない。しかしながらこの空間にはMS-DOSのシステムそのものやデバイスドライバも入れなければならず、実際に使えるメモリは640KBよりも少なくなってしまう。これでは問題ありと言うことでUMB,HMA,EMS等様々な手法(規格)にてメモリ空間を拡張する方法が取られた。これによって1MB以上のメモリをアクセスする事が可能になったのである。

 では問題は何かと言うと、詳しい説明は省くがプログラムの中でどうしてもコンベンショナルメモリ空間に常駐していないとならない部分というのが存在し、それによって「コンベンショナルメモリに空きが何KB必要」というのがプログラムごとに記載されている。もしもこの空間が確保出来ないと何MBメモリを積んでいてもそのゲームは動かない。ここが500KBとかならばまあいいのだが、ゲームによっては更に高い数値を要求して来る物があり、そうなるとMS-DOSのシステム設定ファイルであるCONFIG.SYSとAUTOEXEC.BATをEDITしてメモリ空間を空けないとならなくなる。これは当時DOSのゲームをやっていなかった人に取ってはかなりわかりにくい部分だろう(ハードウェアやDOSのシステムそのものに密接した内容となるので)。これは本当にケースバイケースだったりするので到底ここでは解説しきれ無い。上で述べたUMB,EMS等の知識も必須となる。後は大抵そのゲーム自体に空ける為の方法が解説されているのでそれを参考にして自分で勉強してもらうしか無いだろう。

 なおDOSのプロンプトで動くゲームに関してはこの心配はほとんど無い。何故かと言うとWINDOWS上でエミュレーションされている為にデバイスドライバ等が必要無いのでメモリ空間が大きく空いているのが普通だからだ。この数値はDOSプロンプトからMEMと入れてやれば表示される。大抵は600KB近い数値が確保されているはず。ここが空いていない場合は無用なDOS用ドライバを読み込んでいる可能性が高くただ邪魔なだけである。ただし除去にはDOSの知識がいるのでここでは説明は省く。
 次に95,96年以降のゲームに関してはこの心配をする必要が無いケースが多い。何故かというとDOS/4GWというプログラムが普及したからである。これはMS-DOS上で32BITアクセスを可能にする拡張プログラムで、これを使えば空きメモリ空間をほとんど意識する必要が無い(400KB程度で動く物が多い)。これはライセンス料が安かったという事もあり広く普及して、非常に多くのゲームに同梱されている。よってこれがインストールしたディレクトリにあるのならばこの心配は無用だ。


8.NEC98製品
 NECというのは1987から1995年辺りまでの間、圧倒的なまでに日本のPC市場でTOPだった会社であり、その間日本独自のアーキテクチャを持ったマシンを生み出して来た。そのPC98シリーズはWindowsの普及によって独自性を失って来てはいるが、自社製品用にリリースされたPC98のソフト資産を守る為に構造が一般のPC互換機とは異なった面がある。その為に、最近は減りつつあるがWindows版ゲームでもNECのPCでの動作に関しての項目が以前は必ずゲームの動作環境欄に存在していた。
 これがDOSとなると更にまずい事になり、実はDOSレベルでの互換性はかなり問題がある。NECのDOSはMS-DOSとは言ってもMicrosoftのDOSとは異なった独自仕様のMS-DOSであり、この為ゲームの互換性は低くなってしまう。この辺資料が無いのでWindows上のDOSプロンプトでの互換性とかはどの程度なのか不明だが、MS-DOSモードとして動かした場合はほぼ動かないと言っていいだろう。洋ゲーユーザーならばNECのマシンは避けるべしというのが鉄則である。ただし一応書いておくと、日本のソフト会社が生み出したDOSゲームに関しては逆にPC98系マシンでないと動かない事になるが。


9.DOSのバージョンの問題
 これは相当特殊なケースだが、かなり昔のゲームをやる場合にバージョン違いではじかれる事がある。この場合Setverというプログラムがあって擬似的に任意のバージョンを返して誤魔化すのだが、これが通用しない場合はどうしようもなくなる。また現在のV7.1は昔の物とは厳密には内容が変わっているので微妙な互換の問題でプログラムが動かない可能性がある。こうなるとそのゲームの要求するバージョンのMS-DOSを入手するしか無いが、現在ではそれは困難だろう。


 目次