※現在、TASツールの乱数処理にバグがあることが判明しています。多分 近日中に修正できると思いますが、今のところ乱数依存かつ0F目で乱数が消費される ステージはうまく扱えないので注意してください(これまでに私が制作したムービー については問題ありません)。
以前作ったコマ送りツールを発展させ、一応コマ送りと ステート機能を備えたTASツールができました。現在全ステージ制覇に向けて制作中 です(ただし、5-5などの穴掘り面は面倒な割に面白くなさそうなので省略する予定)。
0.2.0 でdesync問題がかなり改善され、ステートロードも高速化されました。
MinGWでビルドしています。MSVCでもビルドできるかもしれませんが未確認。DLL injectionのためにdllinjectを使用して います。
ダウンロード: tasryoko-0.2.3.tar.bz2
今のところかなり適当な作りです。desync防止のため、ゲームウィンドウへのキー 入力、マウス入力は無効となり、ウィンドウのアクティブ化もできなくなります (0.2.1 以降では Ctrl-H で一時的にアクティブ化を許可できます)。ゲームパッドが ない環境ではメニュー操作やメッセージ送りなどが面倒かもしれません。
今のところ、アイテム取得などでメッセージ表示が入るステージはうまく扱えま せん。
Windows XP SP3 (32bit)で動作確認しています。
※0.2.0 で偽DLL方式からDLL injection+IATパッチ方式に変更したため、 使い方が変わりました。exe書き換えは不要になったので、もし0.1を使っていた方が いたら ryoko_fight.exe をオリジナルのものに戻してください。
あらかじめ dllinject.exe, tasryoko.dll, tasryoko.bat を同じディレクトリに 置いておき、ryoko_fight.exe を起動後に tasryoko.bat を実行するとTASツールが 組み込まれます。
TASツールを組み込むと、ゲームウィンドウの他にもう1つのウィンドウが現れま す。キー入力は全てこのウィンドウに対して行います。
自機座標のアドレスはゲームを起動するたびに変わるので、アドレスサーチ機能 を付けています。おまけモードを起動し、一歩も動かずに Ctrl+P を押して設定ダイ アログを開き、searchボタンを押すとアドレスが取得されます(ごく稀に取得できな いことがあるかも)。
ゲーム開始直後に必ずおまけモードを起動し、自機座標アドレスサーチをかけて ください。これを行わないとステートロード時のdesync判定ができなくなります。
0.2.0 でdesync問題はかなり改善されましたが、まだごく稀にdesyncが発生しま す。ムービー及びステートには最終フレームでの自機座標などが記録されているので、 desync発生時はその旨報告するダイアログが出ます。
乱数などのアドレスは環境によって変わるかもしれないので、その場合はソース を修正するか、Ctrl+P で設定し直してください。
キー | 機能 |
---|---|
A | 左ボタントグル |
D | 右ボタントグル |
W | 上ボタントグル |
S | 下ボタントグル |
Z | 式神ボタントグル |
X | ジャンプボタントグル |
C | 御札ボタントグル |
Shift+ADWSZXC | 各ボタンを「離してから押す」。2Fダッシュに必要 |
\ | frame advance |
Pause | ポーズ |
Tab | ターボ(ムービー中は無効) |
Shift+Tab | ターボトグル(ムービー中は無効) |
Alt+P | ムービー再生 |
Alt+R | ムービー記録/追記 |
Alt+Q | ムービー停止 |
F1-F10 | ステートロード |
Shift+F1-F10 | ステートセーブ |
Ctrl+P | 各種設定(自機座標アドレスなど) |
Ctrl+H | キーボード/ウィンドウフックトグル |
式神に関するデータを表示するようにした(自機x座標アドレスを取得して おく必要がある)
*.rfr.st にフレーム別の追加ウェイトを記録できるようにした(UIにはま だ反映されていない)。BGMが途中で変化する面では、BGMの変わり目で追加ウェイ トを入れてやらないとdesyncする(面にもよるが、timeGetTime() が30回程度呼ば れるまで待てばいいようだ)。
Ctrl-H で一時的にキーボード/ウィンドウフックを無効化できるようにし た。*.rfr.sdt の内容が正しくないとゲーム側のリプレイ機能でムービー再生がう まくいかない現象への暫定的な対処。
偽DLL方式からDLL injection+IATパッチ方式へ変更。これにより、所属DLLを気 にせず任意のAPIをフックできるようになった(今のところ役に立っていないが)。 また、DLLのサイズが変わっても乱数などのアドレスが変化しなくなった。
timeGetTime() の呼び出し回数を基準としたウェイト処理を実装。これにより desyncが激減した。また、ステートロードが高速化した。
作った(偽DLL方式)
キーファイルはrfrファイルフォーマットとなっています(TASツールを組み込んで いない状態でもF8キーで再生可能)。また、*.rfr.st にdesync検出用データが格納さ れています。
なお、F8キーで再生する際は *.rfr.sdt ファイルも必要になります。これは同ス テージの他のムービーのものを流用できる場合もありますが、そうするとたまに再生 がうまくいかない(最終フレームで鳥居に入れない)ことがあるので、Ctrl-Hでウィン ドウのアクティブ化を許可し、F7キーで *.rfr.sdt を書き出させるのが確実です。
ステージ | キーファイル |
---|---|
1-1 | 00:08.64 |
1-3 | 00:08.32 |
1-4 | 00:13.52 |
2-1 | 00:14.11 |
2-5 | 00:06.48 |
2-7 | 00:09.16 |
3-4 | 00:08.41 |
3-5 | 00:03.85 |
4-3 | 00:08.72 |
4-5 | 00:08.78 |
4-6 | 00:13.48 |
6-3 | 00:15.98 |
9-2 | 00:22.30 |
速度に比例する抵抗がかかっています。以下は測定値から類推した加速度です(逆 アセンブルなどは行っていません)。
加速度 -0.3133*(速度)
加速度 0.94176 - 0.2152*(速度)
加速度 1.42164 - 0.2152*(速度)
加速度 0.70632 - 0.2152*(速度)
上下左右同時押しは特に意味がないようです(上下/左右同時押しは無入力状態と 同様に扱われる模様)。
式神は4つのモードを持ちます: