拙作のプログラムのうち、ウィンドウサイズを制御できるものとして「WindowModePatch」と「WindowResizer」の二つがあります。WindowModePatchは特別ページ、WindowResizerはソフトウェアの部屋で公開しています。この二つ、似ているようでやっていることは全然違います。というか前者が特殊すぎる動作をするのが何ともいえないところでしょうか。
ちなみにちょっと驚いたのがWindowResizerという名前のプログラムは調べてみると別のものがすぐに見つかったことです。名前かぶってる~。
ゲームのウィンドウサイズ変更について
WindowModePatchとWindowResizerですが、一応「ゲームのウィンドウサイズを変更する」ことはどちらでも可能です。ですが、基本的に「ゲームのウィンドウサイズを自分が指定したサイズで描画する」ことを目的とするのであれば前者を使う方が良いと思います。後者の場合は「ウィンドウサイズを後から変更する」機能が主となっていて、ゲーム本体に解像度調整機能があることを半分前提としています。
WindowResizerは「対象のウィンドウの位置を変更する」「ウィンドウサイズを動的に変更できるADVゲームなどで元の解像度に戻せない、もしくは1.5倍などきれいな倍率に手動であわせるのが困難であるため値を指定してウィンドウサイズを変更する」という機能として使うと良いと思います。普通のプログラム(メモ帳など)に対しても使えるツールです。なお最近のゲームであればウィンドウサイズを変更する他のツールでもできますが、WindowResizerでも他のウィンドウサイズ変更ツールでもだいたい拡大時にブロックのようなものが見えると思います。
WindowModePatchの最新版(Ver 0.51 Alpha)の機能について
こちらは「対象がゲームであることを前提として高度な解像度変換を行う」ことができます。プログラムファイルに対してパッチ処理を行う(もしくはツールから起動させる)などかなり特別なことを行ったり、設定が複雑だったりするのも高度な処理を行うためのものです。現段階での機能を簡単に列挙すると
- ウィンドウで起動できるゲームに対してウィンドウサイズを指定できる(縮小でも可)。拡大・縮小時にはその状態が目立たないようにして表示できる
- フルスクリーンで起動できるゲームに対しても同様に解像度指定やレターボックス処理を行うことができる
- フルスクリーン状態でしか起動できないゲームに対して強制的にウィンドウ状態で起動させることができる
- ゲームの描画サイズが動かすマシンの最大解像度より大きい場合縮小機能と併用して画面の解像度をごまかすことでゲームを起動させることができる
- DirectXを使用して8bitの描画を行う場合、内部的に処理することで色が不安定になる状態を防ぐ(特にWindowsVista以降)
- DirectX9を使用している場合、アンチエイリアス処理を上から行うことでジャギーの発生を防ぐ
となります。一応汎用的ですので失敗することもかなりありますが、DirectXなどにこだわらずゲームの解像度を変更できる、というものです。ちなみにかなり古いゲームで使用されている描画形式を新しい描画形式+エミュレーションで上書きすることで拡大時の描画が良くなったりもします。隠し機能もあったりしますが。
どちらが使えるかはもの次第
WindowResizerに関してはたぶん他の人が公開しているウィンドウサイズ変更ツールと似たり寄ったりだと思います。WindowModePatchはかなり違いますが。
WindowModePatchは設定が複数あるのでただの設定の失敗なのか対応していないのかがわかりづらいのは確かです。いろいろと設定して試してみてください。その辺はこのblogにコメントをしていただいたり、WindowModePatchの紹介ページからサポート掲示板などに意見をいただければと思います。やっぱり設定に関して総合的なページでもあった方がいいのかな・・・。かなり裏ツールだけど。
そしてだいぶ完成度が上がってきたWindowModePatchは英語版のリソースでも作って英語に翻訳して公開したら楽しいのかも・・・。