winxp

Windows XPでIIDX INFINITASをした


アイキャッチ画像はXPのペイント相当の機能だけ使って描きました。

beatmania IIDX INFINITASをWindows XPで起動しました。ええ、起動しましたとも。まず最初に注意点幾つかを述べましょう。

  1. Windows XP時代のハードウェアでは動かない。少なくともVista初期あたりでないとCPUが対応していない。
  2. Windows XPで動かすにはダミーのdwmapi.dllが必要
  3. Microsoft Visual C++ 2005 SP1 再頒布可能パッケージのインストールが必要

1つ目は一番深刻な問題です。Windows XPが載っているPCといえばSocket 478のPentium 4です(私の中では)。そのCPUでは起動こそするものの、選曲した瞬間落ちます。拡張命令が足りていないんでしょう。Northwood世代のPentium 4にはSSE3がないので、仮にSSE3必須だと考えると次の世代のLGA775のPentium 4が最低限必要になりますね。

2つ目はそんなに難しくもないです。ただ、ダミーのdwmapi.dllでググってもバイナリは出てきません。多くの場合ソースコードが書いてあることでしょう。しかし、そのソースコードをコンパイルしてできたdllではINFINITASは動かないかもしれません。そこで、INFINITASが必要としている関数を宣言してコンパイルしたdwmapi.dllを使います。

3つ目はMicrosoftのサイトからダウンロードしてきてインストールするだけなので簡単ですね。新規インストールしたWindows XPには入っていないはずです。長く使い続けたものには入っているかもしれません。

まあこんな感じで一筋縄ではいかないところもあります。それにWindows XPはMicrosoftによるサポートが終了し、セキュリティパッチが配信されません。既知の脆弱性もそれなりに存在するので、注意が必要です。

1.Windows XPをインストールする

私の周りの普段使いのPCは全てWindows 10にアップグレードしてしまいました。XPが入っているのはNorthwood世代のPentium 4が載ったPCのみです。先述の通り、コイツでは動かないので他を頼るしかないです。グラフィックボードだけは最近のCPU内蔵にも劣らない性能を持っているのになぁ。というわけでメインマシンにWindows XPをインストールします。PCIe付いたPCではSP2以降必須なので、持ってない場合はnLiteで組み込む必要があるかも。

CPU Intel Core i7 3770K
RAM DDR3-1600 16GB(4GBx4)
Graphics NVIDIA GeForce GTX680 GDDR5 2GB

3年くらい前のゲーミングPCといった感じの構成。こいつのリムーバブルベイに挿したHDDにWindows XPをインストールしました。BIOS設定でSATAの設定をAHCIからIDEに変えて普通にインストールするだけ。XP時代のPCにインストールするよりも時間がかかった。面倒なのはドライバを入れるとき。ネットワークインターフェースもドライバ入れないと認識しないのでUSBメモリに落としてくる必要があったり。なぜかBluetooth 2.1のドングルは普通に認識してた。

グラフィックとかサウンドとかのドライバを入れ終わったら次は百数十個の更新プログラムのインストールと、念のためDirectXのランタイムをインストールします。インストール中は3Dピンボールでもして待ちましょう。てかプリインストールのインターネットゲームとかってまだ普通に遊べるのね。あ、Microsoft Visual C++ 2005 SP1 再頒布可能パッケージも入れよう。

2.INFINITASをインストールする

普通通りインストールすればOK。私はめんどくさいのでインストール後、アップデートすっとばして他のPCからコピーしてきたデータを上書きしました。

3.ダミーのdwmapi.dllを置く

これがないとファイルが見つかりませんでしたで起動しない。bm2dx.exeのあるディレクトリに置くだけ。System32とかに置いてもいいけど、極稀にdwmapi.dllの有無でWindowsのバージョンを判定するソフトがあるらしいのでやめた。

ダミーのdwmapi.dllを作る

//あえてバイナリは公開しない。Web上の情報を斜め読みしつつ作ったので何が起きても知りません。Win32APIとかよう知らんです。
//dwmapi.cpp
#include <Windows.h>
HRESULT DwmEnableMMCSS(BOOL fEnableMMCSS){
 return S_FALSE;
}
HRESULT DwmFlush(){
 return S_FALSE;
}

//dwmapi.def
LIBRARY "DWMAPI"

EXPORTS
DwmFlush
DwmEnableMMCSS

Visual Studioを使うまでもないので、開発者コマンドプロンプトでcl /LD dwmapi.cpp dwmapi.defといった具合にやっちゃうのがいいかと。

4.起動する

普通にランチャーから起動する!初期化に失敗しましたとかファイルが見つかりませんになった時は何かした足りてないので、エラーメッセージとかで検索する。

ヘタクソなのでWindows Vista以降より遅延が少ないかどうかはわからないです。ただ一つわかるのは音質がちょっと悪いことくらい。

感想

めんどくさい。てかWindows XP重くね?10より重たいんだけど。メモリ3.2GBくらいしか認識してないっていうのもあるんだろうけど、それにしても重くね?あとNVIDIAのドライバ変だね。映って、3D描画できればそれでよし、って感じなんだろうけど、なんでDVI接続のPCモニターがテレビとして認識されるんだ?HDTVとかそういうレベルじゃなくてS映像とかなんとか書いてあるんだけど。おかげで解像度はフルHDと昔主流だったスクエアのやつくらいしか選べないし、INFINITASまともに表示できなかったよ。てなわけでアナログで繋いだ。1920×1080ともなるとアナログだとちょっとぼやけたりするね。ケーブル細いやつ使ってるからかもしれんけど。

INFINITASの方はまあよくわからんかった。遅延がある状態に慣れてしまってFAST量産でスコア全然出ないわ。自作変換器がカンペキすぎてヤバイ。キーボードを超える低遅延。

コメントを残す

メールアドレスが公開されることはありません。