懐かしのDOSゲームを復活させよう!VMware Player + FreeDOSでレトロPC環境を構築する方法
Warcraft、Wolfenstein、Doom 2、X-Wingなど、懐かしい名作ゲームをもう一度プレイしてみたくありませんか?16ビットソフトならではの256色の美しさを再び体験したいと思いませんか?悪くない話ですよね。
筆者はWindows XP SP2がリリースされた頃の古いオペレーティングシステムを見直すことにしました。あるWindowsマシンにアップデートを適用した後、大好きなゲームの一つであるCaesar IIIがプレイできなくなっていることに突然気づいたのです。さらに、その損失を埋め合わせるためにTransport Tycoon Deluxeを再インストールしようとしたところ、この楽しいゲームがWindows XPでは動作しないという不愉快な事実に直面しました。Windows 98の時代以来TTDをプレイしていなかったこともあり、お気に入りの2つのゲームを一気に失ったことで、深く考え込んでしまいました。
はじめに
何を試してもうまくいきませんでした。Windows XPで互換モードを使ってもダメ、こうした問題を解決するために設計された各種パッチも効果なし。そんなとき、「VMware Player」という素晴らしい製品に出会いました。VMware Playerは仮想化ソフトウェアで、既存のOS上でアプリケーションとしてさまざまなPC向けオペレーティングシステムを実行できます。これは使えますね。VMware Playerの詳細については「VMware Player - a great friend」という記事をご覧ください。
早速VMware Playerをダウンロードしてインストールし、手元にある古いOSのインストール作業を開始しました。幸運は2度訪れました。まず、Windows XP Pro SP2ホスト上の仮想マシンとしてWindows XP Home SP1を正常にインストールできました。そしてゲストOS内でCaesar IIIをインストールし、再びプレイできるようになったのです。やった!さらに、Transport Tycoon DeluxeのオープンソースクローンであるOpen TTDに出会い、Windows XP SP2上でネイティブにこの名作をプレイできるようになりました。
Windows XPの一般的なインストール方法、特にVMware PlayerのゲストOSとしてのインストール方法については、別記事を参照することをおすすめします。Caesar IIIでの成功体験の詳細やゲームレビュー、Open TTDのインストール・プレイ方法や個別のレビューも公開しています。そして筆者はさらに大胆になりました。Caesar IIIは1998年頃、Transport Tycoon Deluxeは1994年の作品です。さらに昔に遡ってみてはどうでしょう?そう、DOSです。
DOSのインストール方法
DOSとは何かを知らない方、興味がない方は、ここで読むのをやめても構いません。MS-DOSは80年代から90年代前半にかけて最も人気のあったデスクトップOSの一つですが、現在では長らくサポートされておらず、入手するのも難しくなっています。しかし心配はいりません。「100% MS-DOS互換OS」(公式サイトより)を謳う「FreeDOS」があるのです。
筆者はFreeDOSをDOSプラットフォームとして採用しました。どのマシンでもデュアルブートを組む余裕がなかったため、最も安価で高速かつ合理的なソリューションであるVMware Player上で試すことにしました。この方法なら、システムに永続的な変更や被害を与えることなく、途中のエラーを簡単にデバッグできます。基本的な手順については「Linux From Scratch」の記事を参照してください。
- VMware PlayerとQEMUのインストールと使い方
- .vmx仮想マシン設定ファイルの作成
- .vmxファイルを仮想CD(マウントした.iso)から起動するよう設定
- 仮想ハードディスクの作成
以下、DOS環境を構築する際に筆者が実際に行った基本手順を紹介します。
- 起動可能なFreeDOSの.isoイメージをダウンロードしました。
- 下記の.vmx設定ファイルを作成しました。コピーしてそのまま使えます。テキストエディタ(メモ帳など)で保存する際は、.txtではなく「すべてのファイル」形式で保存してください。
config.version = "8"
virtualHW.version = "3"
guestOS = "other"
displayName = "FreeDOS"
numvcpus = "1"
memsize = "64"
MemAllowAutoScaleDown = "FALSE"
MemTrimRate = "-1"
uuid.action = "create"
tools.remindInstall = "TRUE"
hints.hideAll = "TRUE"
tools.syncTime = "TRUE"
usb.present = "TRUE"
usb.generic.autoconnect = "FALSE"
serial0.present = "FALSE"
serial1.present = "FALSE"
parallel0.present = "FALSE"
# Sound settings
sound.present = "TRUE"
sound.virtualdev = "sb16"
logging = "TRUE"
log.fileName = "FreeDOS.log"
log.append = "TRUE"
log.keepOld = "1"
isolation.tools.hgfs.disable = "FALSE"
isolation.tools.dnd.disable = "TRUE"
isolation.tools.copy.enable = "TRUE"
isolation.tools.paste.enabled = "TRUE"
ethernet0.present = "TRUE"
ethernet0.virtualDev = "vlance"
ethernet0.connectionType = "nat"
ethernet0.addressType = "generated"
ethernet0.generatedAddress = "00:0c:29:80:9c:48"
ethernet0.generatedAddressOffset = "0"
floppy0.present = "TRUE"
floppy0.startConnected = "TRUE"
floppy0.autodetect = "TRUE"
ide1:0.present = "TRUE"
ide1:0.deviceType = "cdrom-raw"
ide1:0.startConnected = "TRUE"
ide1:0.fileName = "auto detect"
ide1:0.autodetect = "TRUE"
ide1:1.present = "TRUE"
ide1:1.fileName = "fdbootcd.iso"
ide1:1.deviceType = "cdrom-image"
ide1:1.mode = "persistent"
ide1:1.startConnected = "FALSE"
ide0:0.present = "TRUE"
ide0:0.fileName = "freedos.vmdk"
ide0:0.mode = "persistent"
ide0:0.startConnected = "TRUE"
ide0:0.writeThrough = "TRUE"
ide0:0.redo = ""
uuid.location = "56 4d 2e 31 1d 13 5d 4f-0d a6 5c b7 54 80 9c 48"
uuid.bios = "56 4d 2e 31 1d 13 5d 4f-0d a6 5c b7 54 80 9c 48"
仮想マシン設定ファイルの作成に役立つ便利なサイトとして「EasyVMX!」があります。インタラクティブなインターフェースで.vmx設定ファイルを生成でき、ダウンロードしてそのまま使えます。次にQEMUを使って仮想ハードディスクを作成しました。QEMUのディレクトリでコマンドラインから以下を入力し、500MBの小型ディスクを作成しています。
qemu-img.exe create -f vmdk freedos.vmdk 500M
すべてのファイルを1つのフォルダにまとめた後、VMware Playerを起動し、CD(.iso)からブートしてFreeDOSをインストールしました。インストール自体は非常に簡単で、画面の指示に従うだけで完了します。詳細なステップバイステップガイドの要望が多数届けば、追記を検討するかもしれません。
FreeDOSで嬉しい発見の一つがCD-ROMサポートでした。フロッピーディスクでの作業は気が重かったので、これは助かります。インストール完了後、再起動すると複数の起動オプションが表示されました。もちろん、全ドライバと最大メモリを備えたオプション1を選択しました。
ところが、うまくいきません。ほとんどのドライバが初期化に失敗。ハイメモリなし、マウスなし、CD-ROMなし。筆者は原因を突き止めるのに2〜3日を費やし、最終的にいくつかの重要な問題点にたどり着きました。
- 一部のファイルへのパスとファイル名が不正だった(fdauto.batファイル内)
- CD-ROMドライバが不良だった(fdconfig.sysファイル内)
システムファイルの修正
試行錯誤の全過程を延々と語るのは避け、結論だけ述べると、筆者はすべての問題を解決できました。元のfdconfig.sysとfdauto.batを書き換えて、正常に動作するドライバをロードし、正しいパスとファイル名を指定するようにしました。FreeDOS付属のCD-ROMドライバを、動作実績のあるaoatapi.sysドライバに置き換えました。さらに、CPUがフル稼働し続けるのを防ぐためdosidle.exeを導入しました(DOSはアイドル時にCPUを休ませない仕組みだからです)。
aoatapi.sysとdosidle.exeに関する法的な位置づけが不明なため、筆者はこれらのファイルをホストしたり、配布元へ直接リンクしたりすることはしません。入手先の品質についても保証しかねます。
そのため、最善のアドバイスとしては、検索エンジンで「aoatapi.sys」「dosidle.exe」を検索することをおすすめします。筆者は数分で信頼できるコピーを見つけられました。お好みの検索エンジンとキーワードでお探しください。
まず2つのファイルをフロッピーディスク経由で仮想マシンのハードディスクにコピーし、dosidle.exeを実行すると、CPUは再び正常な状態で動作するようになりました。以下に修正版のfdconfig.sysとfdauto.batを示します。
fdconfig.sys
SWITCHES=/F/N
COUNTRY=001,858,C:\FREEDOS\BIN\COUNTRY.SYS
SET LANG=EN
LASTDRIVE=Z
BUFFERS=20
FILES=40
DOS=HIGH,UMB
DOSDATA=UMB
SET DIRCMD=/OGN /4
MENUCOLOR=7,0
MENUDEFAULT=1,5
MENU 1 - Load FreeDOS, with maximum RAM free, using EMM386
MENU 2 - Load FreeDOS, including HIMEM XMS-memory driver
MENU 3 - Load FreeDOS without drivers
12?DEVICE=C:\FREEDOS\BIN\HIMEM.EXE
1?DEVICE=C:\FREEDOS\BIN\EMM386.EXE NOEMS X=TEST VDS
REM 1?DEVICEHIGH=C:\FREEDOS\BIN\ATAPICDD.SYS /D:FDCD0001
1?DEVICEHIGH=C:\AOATAPI.SYS /D:FDCD0001
fdauto.bat
@echo off
prompt $p$g
path C:\FREEDOS\BIN;C:\BATCHES
set HELPPATH=C:\FREEDOS\HELP
set LANG=US
set NLSPATH=C:\FREEDOS\NLS
IF not "%CONFIG%"=="1" goto noperuse
rem echo Load PERUSE scrolling driver?
rem lh c:\bin\peruse.exe
rem echo PERUSE loaded
:noperuse
IF "%CONFIG%"=="3" goto nomouse
lh c:\freedos\bin\ctmouse.exe /3 /V
:nomouse
if not exist CDRCACH$ goto normalcd
echo Activating cached CD-ROM drive now.
rem lh c:\freedos\bin\shsucdx.exe /D:CDRCACH$,N
lh c:\freedos\bin\shsucdx.com /D:CDRCACH$,N
goto nomorecd
rem the above goto avoids double SHSUCDX loading.
:nomorecd
rem if not exist CDROM001 goto nomorecd
if not exist fdcd0001 goto nomorecd
echo Activating uncached CD-ROM drive now.
rem lh c:\freedos\bin\shsucdx.exe /D:CDROM001,N
lh c:\freedos\bin\shsucdx.com /D:FDCD0001,N
:nomorecd
echo.
IF "%CONFIG%"=="3" goto noshare
rem LH c:\freedos\bin\share.exe /L:20 /F:2048
lh c:\freedos\bin\share.com /L:20 /F:2048
:noshare
IF "%CONFIG%"=="3" echo The environment contents are:
rem echo. displays an empty line...
IF "%CONFIG%"=="3" echo.
IF "%CONFIG%"=="3" echo goto nopause
echo.
echo Welcome to FreeDOS. Press enter to go on and see environment:
rem pause
rem :nopause
set
echo FreeDOS is now at your service :-)
echo.
CLS
C:\DOSIDLE.EXE
lh c:\freedos\bin\mouse.exe
上記のテキストをテキストエディタにコピー&ペーストして保存し(.bak拡張子・「すべてのファイル」形式を推奨)、フロッピー経由で仮想マシンのハードディスクにコピーしてください。元のfdconfig.sysとfdauto.batは必ずバックアップし、新規作成した.bakファイルをそれぞれ.sysと.batにリネームします。以下の点にご注意ください。
- 筆者はFreeDOSをC:\FREEDOSにインストールしています。
- aoatapi.sysとdosidle.exeはルートディレクトリ(C:\)に配置しています。
- 国と言語の設定は環境によって異なる場合があります。
- 既存の動作しないコマンド行は削除せず、コメントアウトして無効化しています。たとえばPERUSEやマウス関連の行は残していますが、有効化しても正しく動作しないため、コメント状態であれば影響はありません。CD-ROMやshareなども同様です。
- CD-ROMドライブのドライブ文字はN(N:、O:など)から割り当てる元の設定のままですが、競合がなければ自由に変更可能です。
ご自身のインストール環境に合わせて、fdconfig.sysとfdauto.bat内のファイルパスに必要な修正を加えてください。再起動すれば、OSは今度こそスムーズに動作するはずです。
正常に起動できれば、マウスが使用可能になり(edit fdauto.batなどと入力してマウスカーソルが表示されるか確認できます)、.vmx設定ファイルを使用していれば少なくとも1つのCD-ROMドライブが認識されているはずです。dosidle.exeも正常に機能します。基本的にはこれで完成です。動作するDOS環境の出来上がりです。
まとめ
次回の記事では、90年代初頭に私たちを育てた懐かしの名作ゲームを実際に動かせたのかどうかをお伝えする予定です。古いゲームはシリアルポートやパラレルポート(COM1、LPT1)へ直接アクセスする傾向があり、筆者の知る限り、最近のWindows OSはそれを嫌います。VMware Playerでも同様の現象を確認しました。これらのゲームが動かなくなった主因であるハードウェアアクセスの拒否が、仮想環境でも依然として障害になる可能性があります。それでも、試してみる価値はあります。
また、Open TTDと同じように、現代のPCユーザーが最新OS上でDoomやDuke Nukem 3Dといったゲームを楽しめるようにするプロジェクトがいくつも存在すると聞いています。これらの噂が事実かどうか確認し、随時お知らせする予定です。新しい情報や提案があれば、ぜひメールでお知らせください。クレジット付きで紹介いたします。
更新情報は「Reviving old games」セクション(Caesar IIIとOpen TTDも掲載)でご覧いただけます。これらの名作ゲームのレビューとスクリーンショットは、別カテゴリの「Computer games」でも公開しています。
それでは、また。
-
XenServer + XenCenter 徹底レビュー:ノートPCへの導入から仮想マシン管理まで
今回ご紹介する記事は、少し変わっていますが、きっと楽しんでお読みいただけるはずです。実は筆者は以前にもCitrix XenServerについて、インストールと設定方法を取り上げたことがあります。全体として操作は非常に簡単で、XenServerが類似の機能を持つ無料のXCPのベースとなっていることを考えれば、なおさらです。ただし、初期設定以上の部分にはあまり踏み込んではいませんでした。今回は、XenServerを改めてインストールする様子をお見せします。しかも、ベアメタル型ハイパーバイザー向けのハードウェアとしては決して標準的ではないノートPCへのインストールです。さらに、SSHを使ったコマンド
-
VirtualBox 4レビュー:新機能と変更点を徹底解説
先日、Oracle(旧Sun、さらにその前はinnotek)が、同社の仮想化ソフトウェアの看板製品であるVirtualBoxの新バージョンをリリースしました。この洗練されていて多用途な製品は私のお気に入りの一つなので、早速試してみることにしました。ただし、懸念がないわけではありません。OpenSolarisやOpenOfficeなど、他の製品の扱いを見る限り、Oracleは必ずしもオープンソースに優しいとは言えないからです。ブランド名に「open」という言葉を使わないことが、生き残りの鍵なのかもしれませんね。 さておき、VirtualBoxは無料で使える優れたデスクトップ向け仮想化ソフトウェア