WING32.DLL代用DLLを作成する

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をダウンロード)

LinuxWindowsアプリを動かす「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ドライブ直下に保存、とかいうとんでもない代物で今時売り物にならない代物ですよ・・・