見事にWindowModePatch 0.57 Alphaの記事を保留したまま放置しすぎる、という間抜けな状態となってしまいました。仕方がないので0.58Alphaの記事で上書きしてしまいます。0.58 Alphaの機能自体は0.57 Alphaの更新後基本的な修正を行ったのですが、今回ちょっと大規模な修正を行いましたのでそれも合わせて0.58 Alphaとして公開します。
0.57の更新もついでに紹介
忘れていた0.57 Alphaの更新記事です。書かなかった理由は「あまりにもWindowModePatchの話題が連続しすぎたので一度話題を切らそうとして放置してみた」というところです。これしかないのか?といわれるのを防ぐためにblog上からフェードアウトするのを待っていたつもりだったのですが、MovieLayerPlayerの更新やらscryptの実装(紹介)やらでフェードアウトしたまま絶賛(?)放置中というわけでした・・・。
ちなみに更新した内容ですが、「仮想フルスクリーン状態の動作の改善」と「とあるゲーム用CD再生エミュレートDLLをプラグインとして扱えるようにした」となっています。前者はここ最近のゲームで意味を持ちますし、後者は特にかなり古いゲームでCD再生を行っているゲームに対しての音楽再生エミュレーションを目的としたものです。後者についてはがんばれば自分で実装できるのですが面倒なのでプラグインとして借りることができるようにしています。
0.58の更新は?
初めに目につくのは「明らかにサイズが下がっている」です。これについてはプログラム作成時Windows9x系での速度低下を防ぐ4kB境界オプションをすべてのDLLおよびパッチ動作プログラムで無効にした、というものです。(今更こんな表記はどうかと思いますが)WinNT系では領域を消耗するだけの無駄なオプションでしかないのでどうせなので切ってみました。結果は一目瞭然ですね。100KB前後減少しています。WinXP以降であれば動作速度に差はないので気にしなくてもいいものだったりします。
次の修正が「ダイアログが表示される場合対象のダイアログが応答しなくなるという問題の改善」です。どうもある特殊なダイアログの作り方をするとWindowsの内部処理に巻き込まれるパターンがあるようで、その場合に動作不良を起こす状態を修正しています。
最後は「WrapWindowを併用した場合のWindowsゲームでの動作の改善」です。特にWindows9x時代からシステムを作っているゲームメーカーだとどうもこの辺の処理に(こちらから見ると)特殊なやり方を使用しているものが多く描画の検知に失敗することが多かったのですが、これをWrapWindow使用時に限りチェック体制を強化する、という動作を行っています。WrapWindowを使用しない場合は0.57以前とさほど変わりませんが使用する場合はかなり動作率が向上するはずです。あくまで「古い(時代からゲームを作っているメーカーの)ゲーム」を対象とした変更です。なおWrapWindowを使用する場合は「(対象のゲームが)GDI描画+WrapWindow+Direct3DFrame描画(+FPS指定)」となるようにするといいです。
一応WindowModePatchのWikiは用意してあるが・・・
使い道が微妙だったりします。一応推奨オプションやら使い方やらを編集できるようにテンプレートを用意したまでは良かったのですが、たぶんWikiとして更新できるような人がこれを更新する可能性がかなり低いので宙ぶらりんになっています。ADVシステムに関するWikiも含んでいるので興味があるようでしたらコメントに書いていただければURLを公開します。
WindowModePatchの対応情報についてはDB+PHPによる登録/検索システムを作ろうとは思いましたがこちらも保留です。Wineのエミュレーション情報を登録する処理をまねて画面構成を考えているもので、さらにそれで登録した情報を私が個別にWikiに登録して、とも思ったのですが・・・。
これでおそらく「半数以上のADVゲーム」でWindowModePatchが使えるのでは?
フェルミ推定の要領で自分が対応を確認しているシステムを使っているゲームの本数を考えて推察した結果がこれです。まあコピープロテクトで実行ファイルを保護しているゲームに関してはそもそもどうしようもないですが、それでも各メーカーが使用している主要なADVエンジンについては対応ができている・・・という状態ではないかと思います。(個人的にいくつか試して動作を確認していますが都合上公表はしません。保証もできませんし・・・)
ただしADVゲーム外はほとんど調べていないので運も絡むとしか言いようがありません。しかもランタイム型(RPGツクールなど)の場合も失敗することが多いですし。ただしたまにランタイムのDLLまで巻き込んでパッチを行うと動くこともあるのが何ともいえないところですか。
というわけで、解像度が足りないゲームに関してはどんどん使ってみてください。逆にNotePCなどで画面が大きすぎるので縮小、というのも歓迎です。