﻿VsyncPatch

基本的な使用方法は、VsyncPatch rev6と同じです
使用方法の詳細は、rev6のreadmeを御覧下さい

■対応OS
確認済：Windows XP SP2 32bit版
非対応：NT系のAPIを使用しているため、95/98/Meは動作不可能
動作報告有：XP64bit、Vista32bit

■対応ゲーム
妖精大戦争 ver1.00a

■警告
本非公式パッチは、ゲームの内部動作を大幅に変更します
本パッチを当てると不具合がでるかもしれません
実行前にscore.dat等をバックアップすることを推奨します
また、十分に動作確認をした上でご使用ください
特に本パッチを使用した状態でリプレイを保存、公開される方はご注意ください
本パッチ適用時のリプレイに関しては、東方Projectスコアボードに投稿することはできません
リプレイをwebやuploder等で公開する場合は、VsyncPatchを使用していることを明記すると、
トラブルになりにくいかと思います
本パッチは非公式に作成したものです
公式に問い合わせないようにお願いします

■再配布
ご自由に再配布してくださってかまいません
ただし、zip内のファイルを変更・追加せず
そのままの状態で再配布をお願いします

■インストール
vpatch.exe、vpatch_th??.dll、vpatch.iniのファイルを
東方シリーズをインストールしたフォルダにコピーしてください
iniファイルは無くても一応動作します

妖精大戦争の場合はvpatch.exeとvpatch_th128.dllとvpatch.ini

※パッチの動作不良で、score.dat等がおかしくなる可能性もあるかもしれません
※念のためバックアップをとってからパッチを実行するようにしてください
※また、本ツール上からはゲームのversionをチェックしていないので、
※対応しているかどうか確認してください
※vpatch.exeは、vpatchという名のつくdllを同じフォルダ内で検索し、
※最初に見つかったdllをロードします
※したがって、同じフォルダ内に別のvpatch dllがあると、うまく起動できません
※東方シリーズをインストールしたフォルダには、
※対応しているdllのみを入れるようにしてください

■アンインストール
インストール時にコピーしたexeとdll及びiniファイルを削除してください


■iniファイル
[Option]
Vsync (デフォルト=0)
　-1の場合、custom.exeで設定した垂直同期(入力のレイテンシ)の設定で動作します
　この場合、フレームレート制御はvpatchでは制御せず、本家の動作のままです
　-1以外を指定した場合は、vpatch側でフレームレート制御を行います

　0を指定すると垂直同期をせずに、描画を行います

　1を指定すると独自の方法で垂直同期をとり、描画を行います
　Gameの速度(fps)は、モニタのリフレッシュレートと同じになります
　Vsync=1にしてもティアリング(ちらつき)が発生する場合は、
　LockBackBuffer=1 と D3DMultiThread=1 と ProcessPriority=2 を設定してみてください

　Vsync=1、LockBackBuffer=1 にしている場合は、CPUやビデオカードに高負荷がかかるシーンで、
　大幅なフレームレートの低下が起こることがあります
　フレームレートの低下が気になる場合は、Vsync=0、LockBackBuffer=0 にしてみてください


D3DMultiThread (デフォルト=0)
　Direct3Dをマルチスレッドで動作させた場合に発生する不具合を無くすためのオプションです
　0の場合は、何もしません
　1の場合、IDirect3D9::CreateDevice() のBehaviorFlagsに、D3DCREATE_MULTITHREADEDを指定するようにします
　このフラグを指定すると、マルチスレッドでDirect3Dを使用する際に不正終了しなくなります
　stage切り替えのところでたまに不正終了したり、
　ロードがいつまでたっても終了せず、次のstageにいけなくなったりする現象が直るかもしれません
　また、まれにタイトル画面がバグったような画面になる現象も直るかもしれません
　1を指定することを強く推奨しますが、CPU負荷が増え、フレームレートが低下する環境があるかもしれません
　LockBackBuffer=1 にする場合は、マルチスレッドでの不具合を無くすために、
　できるだけ D3DMultiThread=1 を設定してください


HookDirectInput (デフォルト=0)
　0の場合は、何もしません
　1の場合、DirectInputの処理をvpatch側で処理するようにします
　0でパッドが反応しない場合、1にすると反応するようになるかもしれません
　また、方向キーの暴走等も直るかもしれません
　2つ以上のパッドに対応し、x,y軸以外の軸や、POV(ハットスイッチ)にも対応してあります



■妖精大戦争の不具合について

・プレイしたのとは異なるステージ・ルートとしてスコアが記録される
http://www26.atwiki.jp/touhoufuguaimatome/pages/186.html

1面クリア時に表示される選択肢のうち、「下の選択肢」を選ぶと、
ルートを記憶している変数(ルート情報)に対して、+1の処理が行われますが、
「最初から始める」で1面からGameをやり直すと、ルート情報を初期化しないため、
プレイしたのとは異なるルートとして認識されてしまいます

また、「下の選択肢」を選ぶ度に、ルート情報が+1され続けてしまうため、
何度も「最初から始める」をして「下の選択肢」を選択し続けると、
想定の範囲外の値がセットされることがあります
想定の範囲外の値がセットされた状態で、GameをAllクリアし、リプレイを保存しようとすると、
メモリアクセス違反で不正終了することがあるようです


ルートを記憶している変数の値(ルート情報)：0=A1, 1=A2, 2=B1, 3=B2, 4=C1, 5=C2, 6=EX

例えばAルートで開始し、1面クリア時にA2ルート(下の選択肢)を選択、2面以降で最初から始めるを2回行って、
その後3面全部をクリアすると、B2ルートをクリアした扱いにされます (ルート情報：0+1+1+1=3(B2))
エンディングも、B2のエンディングが流れます
クリア時にリプレイは保存可能ですが、リプレイを再生する時にファイルを選択するとgameがフリーズします

タイトル画面からStartし、難易度選択の次のルート選択画面で、
ルート決定時にルート情報が書き換えられます
※つまり、Gameをやり直す場合は、「最初から始める」ではなく、タイトルに戻れば不具合は発生しません
　ルート選択画面でAルートを選択 = ルート情報にA1(0)がセットされる
　ルート選択画面でBルートを選択 = ルート情報にB1(2)がセットされる
　ルート選択画面でCルートを選択 = ルート情報にC1(4)がセットされる

不具合が起こる条件は、A2,B2,C2ルートを、2面以上進めた状態で「最初から始める」を行う　です


・リプレイを再生すると金(ノーアイス勝利回数)に加算される
http://www26.atwiki.jp/touhoufuguaimatome/pages/190.html

実プレイ中か、リプレイ再生中かどうかに関わらず、ノーアイス撃破した場合
RESULT画面のノーアイス勝利回数が+1されるようです

回避方法は、スコアのバックアップを取って、再生後にリストアするか
金を取得しているリプレイを再生しない、等が考えられます



■version履歴
2010/09/06 rev th128-1
　・妖精大戦争に対応
　・妖精大戦争以外に対応したvpatchは同梱していません
　　rev6以前のver、又は、rev7test版をご使用ください
　・影響が大きそうな下記不具合を修正
　　・プレイしたのとは異なるステージ・ルートとしてスコアが記録される
　　・リプレイを再生すると金(ノーアイス勝利回数)に加算される
　　※ある程度は確認しましたが、修正しきれていない or 副作用が発生するかもしれません
　　※何か発見された場合は、連絡先よりご報告頂ければ助かります
　　※何か不具合が起こるかもしれないため、念のためscore.dat等のバックアップを推奨します


■作者
◆swmpLV/75E

■連絡先
バグ等の御報告はこちらからどうぞ
http://ux.getuploader.com/swmplv75e/inquire

