waiei -blog-

その日の出来事を簡単に紹介する日記

蜃気楼バグ修正と新機能追加

2017-05-22-Mon-01:00
拍手レス
初めまして!ユリナと申します。
蜃気楼にあまりにも感動して、嬉しすぎてせめてメッセージだけでも残したくて…!!
私が繰り返し遊びたくなるくらい気に入っているゲームに限って、画面サイズが小さめに固定されてるのも多く、その点だけずーーっと不満だったフリゲがいくつかあったんです…。
ネサフしてこちら様を知り、さっそく蜃気楼を試してみたら…!!
好みの大きさにチョイスした画面で遊べる喜びだけでも嬉しすぎるのに、マウスでもキーボードでもどちらも遊べて最高ですし、
「速度優先」だと重さを感じずサクサク、
「画質優先」だと絵も十分綺麗になりますし、さらに固定の大きさのブラウザータイプのフリゲにも有効なんですね!!!
まじめに本当にすっごく嬉しいです。
それくらいずっと不満だったので;;
フルスクリーンor小サイズのどちらか極端じゃないってのもイイです><
少し古めの低スペぎみPCのせいか、フルスクリーンだと何かあってゲームがフリーズした場合、どのキーを押してもうんともすんとも言わなくなり、PCごと再起動しなくちゃならないのが嫌で、
大きい画面で遊びたいけどフルはちょっと…な、私みたいな(貧乏人の)ワガママの願いまで叶えてくれています。
マジで理想通りなんです♡♡
そしてこのような素晴らしいソフトを開発される作者様を尊敬します。
天才です。
今までも「画面を大きくできる」という海外の無料ソフトをDLしましたが、私がプレイしたいゲームには悉く全く使うことができず、
(中には枠側?だけ大きくなる場合もあるけど肝心のゲーム画面はそのまま)
「やっぱり無理なんだな…」と諦めていたんですよずっと。
いやー本当に嬉しくて!
もっと有名になってほしいくらいです。
無料なのがすごいです。
安全に使えています。
長々とすみません!ありがとうございました!ソフト関係がイイネ!
(ユリナさん)
はじめまして、とても長い感想をありがとうございます!
ここまで喜んでもらえて光栄です。
これからも蜃気楼をよろしくお願いします。

色々検討していただいてありがとうございました今後も愛用させていただきます(rizunさん)
こちらこそ、貴重な情報をありがとうございました。
極力軽く、使いやすくをモットーに作っていきますので
これからもよろしくお願いします。

はじめまして。蜃気楼を利用させていただいております。その蜃気楼について質問なのですが、フルスクリーンモードにて実行した際の表示位置センタリングは可能でしょうか?私の環境ではフルスクリーン時に拡大された画面が上または左に寄って表示されております。(Win7ProとWin10Homeにて確認)readmeを読み「DWMOldMode」を1に設定し、旧モードでの表示としたところセンタリングされるようにはなりましたが、新モードの綺麗さを知ってしまうと…調整方法がありましたらお教えいただければと思います。(eclipseさん)
はじめまして!情報ありがとうございます。
完全に表示座標の計算を間違っていましたので修正しましたが、
次期バージョンにはもうちょっと機能を入れたいので
1.26のベータ版として修正版を公開しました。
蜃気楼1.26ベータ
こちらで確認していただけますでしょうか。



こんにちは、A.Cです。
StepMania5.0専用テーマwaiei2を久しぶりに更新しました。
前バージョンはベータ版でしたが、またアルファ版に戻っています。
ちょっと予想以上に修正箇所が多いので…。
現在テスト的な機能としてリザルトのTwitter連携機能を実装しています。
まだUIとかは作っていないのでリザルト画面で↑を押すとすぐに作動するようになっています。
動作チェック情報が欲しいので是非ご利用ください!
StepMania5.0専用テーマ:waiei2

ちなみにこんな感じの画像が生成されます。



***

蜃気楼1.26のベータ版を公開しました。
フルスクリーン時でも疑似カーソルが使えるようになりました!
また、設定ファイルを加工することで、特定のアプリを特定の蜃気楼設定で起動させることもできるようになりました!
いわゆる関連付けですね!
現在、関連付けファイルの作成UIは作成していないので、直接ファイルをコピーして作成することになります。
詳しくは同梱のReadme.txtを参照してください。

蜃気楼の画質向上

2017-05-07-Sun-01:00
※5/7 AM9:00追記あり

こんにちは、A.Cです。
昨日も記事を更新したばかりですが、蜃気楼の拡大時画質向上に成功したので緊急でバージョンアップしました。

蜃気楼1.25

旧バージョン
1.24
※クリックして拡大

新バージョン
1.25
※クリックして拡大

Windows7の時は新バージョンと同様の画質で拡大していたのですが、
Windows8以降かなり画質が落ちていました。

で、Windows10のCreatorsUpdateから画質が復活したという情報を以前から耳にしていたのですが相変わらず蜃気楼の画質が低かったのでそんなことはないのではと思っていました。
ところが、DWMAPIのサムネイル機能のサンプルプログラムをいじっていたら特定条件下に限り画質が向上することがわかりました。

条件とは、 DwmUpdateThumbnailProperties 関数でDWM_THUMBNAIL_PROPERTIESのfSourceClientAreaOnlyをtrueにすることでした。

つまりどういうことなのという話ですが、このフラグを有効にすることで対象のウィンドウのクライアント領域(ウィンドウフレームやタイトルバーを除いた部分)のみを拡大対象にすることができます。
今までの蜃気楼は、ここのフラグをfalseに設定してウィンドウ全体を取得、タイトルバー等を表示しないように位置をずらして表示させていたために今回の画質向上の恩恵を受けられなかったみたいです。(何故ウインドウ全体なら低画質のままなのかは謎ですが)

何故そんな面倒なことをしていたのかというと、ここのフラグを有効にしてもウィンドウ全体が取得されていたためです。
まあ、実際は設定しているのに反映されないわけがないのですが、これはHSPで開発しているのが原因の一つでもあります。

通常であれば、DWM_THUMBNAIL_PROPERTIESのページに書かれている通り、fSourceClientAreaOnlyをtrueにするだけでいいのですが、HSPでは「fSourceClientAreaOnly」が定義されているわけがなく、自分で設定する必要があります。
DWM_THUMBNAIL_PROPERTIESの定義部分のソースは以下のようになっています。
#define DWM_TNP_RECTDESTINATION 0x00000001  
#define DWM_TNP_RECTSOURCE 0x00000002
#define DWM_TNP_OPACITY 0x00000004
#define DWM_TNP_VISIBLE 0x00000008
#define DWM_TNP_SOURCECLIENTAREAONLY 0x00000010
    dwFlags=DWM_TNP_RECTDESTINATION | DWM_TNP_RECTSOURCE | DWM_TNP_OPACITY | DWM_TNP_VISIBLE | DWM_TNP_SOURCECLIENTAREAONLY
    dim tnProperties,11
    lpoke tnProperties,  0, dwFlags
    lpoke tnProperties,  4, 0
    lpoke tnProperties,  8, 0
    lpoke tnProperties, 12, drawx
    lpoke tnProperties, 16, drawy
    lpoke tnProperties, 20, 0
    lpoke tnProperties, 24, 0
    lpoke tnProperties, 28, crect(2)
    lpoke tnProperties, 32, crect(3)
    poke  tnProperties, 36, 255
    poke  tnProperties, 37, 1       ;0なら不可視
    poke  tnProperties, 41, 1       ;1ならクライアント領域のみ

要するに構造体は連続したメモリにデータを入れたものになるのですが、最後の行に書かれている41バイト目のここが1の時にfSourceClientAreaOnlyがtrueとなります。さて、じゃあこの41バイト目というのはどこから出てくるのかという話ですが、DWM_THUMBNAIL_PROPERTIESのページに書かれている順に定義するので、それぞれの値サイズずつずらして代入していきます。




DWORD dwFlags;0バイト目から4バイト分
RECT rcDestination;4バイト目から4バイト分×4
RECT rcSource;20バイト目から4バイト分×4
BYTE opacity;36バイト目から1バイト分
BOOL fVisible;37バイト目から4バイト分
BOOL fSourceClientAreaOnly;41バイト目

はい、上の赤字部分、BOOL(trueかfalseか)なのに4バイトあります。今までここは1バイトだと思い込んでいたので38バイト目から1バイトを書き換えていたのですが反映されていなかったわけです。わかるかー

とにかくまあ、いろいろいじっていたら上記原因が解明できたので1.25に反映しました。

ちなみにですが、クライアント領域を取得した場合、Aeroの合成部分は黒色になります。
例えばエクスプローラーを拡大対象にした時がわかりやすいと思います。
1.25Aero

タイトルバーが黒くなっています。これはDWMによってウインドウを合成する前の状態を取得しているためなので、対応できません。仕様です。

1.24では合成後のウインドウを取得しているためしっかりと色が付きます。
1.24Aero

大した問題はないと思いますし、画質を落としてまで1.24表示にする必要はないと思いますが、settings.iniを編集することで1.24モードの表示に戻すことができます。詳しくはreadmeを参照してください。

追記:ちょっといじったら黒色問題は対応できたので1.251として更新しました。5/7の9:00以前にDLされた方はお手数ですが再DLをよろしくお願いします。

まあクライアント領域のみ取得とか言ってたのに実際は余計な部分まで取ってたりしたんでそのあたりどうやって消すかいろいろ試行錯誤しましたががが

蜃気楼・WSCの更新しかしてない

2017-05-06-Sat-19:00
拍手レス
拡大した後の非アクティブ時に、上のアクティブウィンドウまで拡大されてしまいます。また、画面左外に出るようにウィンドウを置くと左端が白くなる等表示がおかしくなります。前バージョンでの症状は私はGDIモードを使わなくてもなっていた為、環境のせいかもしれませんが、ちなみにwin7 64bitです。疑似カーソル素晴らしいですね、もう諦めてたゲームもこれで出来そうで凄く感謝しています(rizunさん)
遅くなってしまいすみません、情報ありがとうございます。
いただいたスクリーンショットを見た感じではやはりGDIモードになっているのが原因かなと思います。

<再現>
GDIモードで上に重ねたとき

これは、Aeroが有効な時と無効な時のウィンドウの管理の仕方が異なるのが原因で、Aeroが有効な時はウィンドウがそれぞれの情報を持っているため、ほかのウィンドウに重なった時でも全く影響が出ません。

Aeroが有効

ところが、Aeroが無効な状態(Win7以前のベーシックテーマやクラシックテーマ使用時)は全体でウィンドウの画面情報を共有しているため、上にほかのウィンドウが重なっているとその部分がそのまま取得されてしまいます。

Aeroが無効

一応、Aero使用時と同様に重なったウィンドウの影響を受けないようにすることも可能ですが、対象ウインドウに手を加える動作となるため、安定性が下がり、重くなります。

詳細はMSDNへ:デスクトップ ウィンドウ マネージャー

とまあ、そういうわけでGDIモードで使っている以上どうしようもない問題になりますので現状直すのは厳しいと思います。
また、GDIモードは定期的に対象ウィンドウの画面をキャプチャしているため非常に処理が重く、蜃気楼が期待している動作とならないため使用を推奨しません。申し訳ありません。

もう一つ、画面からはみ出してしまっている部分の描画がされない問題ですが、これは蜃気楼が縮小をサポートしていないのと理由が同じで、GDIモードではディスプレイからはみ出た部分が更新されません。また、DWMモードでもアプリによっては更新されないことがあります。DirectDrawを使用しているゲームを移動させたときなどにこう言った現象が発生します。

DDゲームを移動

この辺りもWindowsの仕様の話になってしまうのでこちらでの対応はかなり難しいと思います。
何かいい案が思いついたら対応しますが基本的にはこのままだと思います。ご了承ください。




こんにちは、A.Cです。
Webサイトを久しぶりにリニューアルしました!
ある程度横幅が大きいときは全体的に拡大して見やすくなるようにしたつもりです。
この辺りが使いづらいなーと思ったことがあれば言ってもらえれば対応できるかと思います。
ちなみに前回のリニューアルが2013年6月だったので3年半ぶりなんですねー。

さて、今回も相変わらず蜃気楼の話。

DPIスケーリングに対応しました!
DPIスケーリング
※クリックで拡大表示

左から
・DPIスケーリング対応(公開しているものと同等)
・Windows10 CreatorsUpdateから追加されたDPI非対応アプリの新しい描画方法
・従来のDPI非対応アプリ
です。全体的にきれいに描画されているのがわかるでしょうか。
せっかくの拡大表示ソフトなのに、肝心なソフトそのものが小さくて使いづらいといった現象から解放されます!

ちなみにWindows8.1以降は、ディスプレイごとにDPIの設定を変えることができるのですが、それにも対応しています。


モニタ別DPI
左が96dpi、右が120dpiです。

実はこれ、地味な更新だけど結構内部的に書き換えています。
そんなわけで使いやすさ重視にしていきたいと思いますので、
これからも蜃気楼をよろしくお願いします。

ちなみにWSC3もDPI対応など、蜃気楼と同様の修正をしています。
こちらはソースファイル込みなので気になる方はぜひいじってみてください。

それぞれのDLはこちらから。
蜃気楼 / WinSizeChanger3

ではでは、今回はこの辺りで。


東方新作の自機チルノじゃないですかやったー!
HOME