DirectXの先祖にあたるWindows用ゲームグラフィックAPI「WinG」は現在のWindowsに組み込まれておらず、Vectorに上がっている「WinG 開発キット」からWING32.DLLを拾ってきてWindowsのDLL格納フォルダに入れないといけないのだが、
- Vectorがいつまでもこのファイルを置いてくれるか未知数
- WING32.DLL単体での配布は許可されていない
- 他で拾ってきたWING32.DLLが無害であるという保証ができない
- WING32.DLLはWindowsシステムフォルダに入っていないといけない(DLL側で格納場所をチェックしている)
- Windowsのシステムフォルダに直接コピーするのでセキュリティリスクがある、環境によってはコピーも弾かれる可能性がある
という色々と厄介な問題がある。
そこでこのDLLをWindowsの標準的(といってもこれ自体レガシーなものだが)な2D描画APIであるGDIに置き換えるDLLインジェクションを作成してみた。
Github - WinG32 DLL Injector with GDI32.dll (ここから上がっているWING32.DLLをダウンロード)
LinuxでWindowsアプリを動かす「Wine」のコードにWinGの描画関数があったのでほぼ借用(GPL)して作成。
本家WinGはWindowsシステムフォルダ(32bit OSでは\Windows\System32\、64bit OSでは\Windows\SysWOW64\)にコピーする必要があるが、このDLLはゲームと同じフォルダにコピーするだけで使えるという簡単な設計だ。
動作確認ができているWing32.DLL使用タイトルは以下の通り。
当初は需要ありそうな「WinMASL」が動かないという問題があったが、その後アップデートしてWinMASLも動作成功。
動作例「WinMASL」
動作例「大逆鱗」
動作例「シムタウン」
動作例「オルゴール サイキックディテクティヴシリーズ Vol4」
全てWindowsシステムフォルダに公式WING32.DLLを入れずに、今回のDLLをゲームフォルダにのみ入れただけで動かせている。
WinGとは話は逸れるが、データウエストさん、サイキック・ディテクティブ・シリーズをSteamで販売してくださいよ・・・
公式サイトからWindowsダウンロード版オルゴールだけ買ってはみたけど、銀行振込のみ・ダウンロードは入金確認から3日間のみ・この記事のように動作が保証できないDLLを自己責任で入れる必要あり・セーブデータもCドライブ直下に保存、とかいうとんでもない代物で今時売り物にならない代物ですよ・・・