前回の日記の訂正にかかる話です。
問題部分の調査
日記かいた後で、ほんまにそんなことある?と思いトレモ仕込んでいない状態で動かしてみたところ、真神足拳がサクサクでる。真神足拳どころか他の追加入力のある必殺技もサクサクでる。これはトレモスクリプトの中でなんかでやらかしちゃったなと思い、ブレイクポイントの仕込み外し、ウォッチポイントの仕込み外し、ロムパッチ外しと段階的にみていったところ、ロムパッチの一部を外したところで技が出やすくなりました。
該当部分は一発でBSを出したり、リバサ必殺技を出すためにいじっていたコマンド入力用のデータをいじるところで、これが悪さをしていました。
コマンド入力状態の表示
上記では省略しましたが、間にコマンド入力状態をみえるようにもしていました。
こんな感じになります。
1Pか2Pのいずれかを表示できるようにしました。
色について
入力が認識されたコマンドが赤表示、成立したのはオレンジにして、また入力猶予が切れたものは白色としています。
表示内容について
いきさつとしては、神足拳のコマンド入力を調べているところで、入力状態を保存&チェックに利用しているメモリ領域を見つけたので、そこを覗いていてコマンド入力の進み具合や、入力の猶予フレームをみえるようにしています。
実際の入力~メモリに展開されるまで2F遅れがあるのと、その時点での猶予表示になるため実際の入力猶予とずれがあります(たとえば実際の猶予が18Fのところ16Fで表示される)が、作り上どうしようもないのでそういう前提でみる必要があります。
追加技のコマンド成立状態の表示
あと、わかりにくいですが重要なところで、左上のキャラ状態確認用の数字を追加しました。細かくは後で記載していますが、必殺技の追加技やCAでコマンド入力を必要とする派生技の入力が成立した場合に設定されるデータをみえるようにもしました。
ロムパッチでダメだったところ
ロムパッチが悪さをしていたのが、追加入力の成立状態を保存するデータ部分に対してで、毎フレームごとにデータを消去してしまっていました。
だいぶ遠回りでしたが原因もつかめたので修正をして、トレモ適用状態でもちゃんと追加入力ができるように戻りました。問題を見つけられて&修正できてよかったです。
どこまで需要があって、利用されている人かどうかわかりませんが、トレモスクリプトを利用している人には迷惑をかけてしまったと思います。ごめんなさい。
神足拳、真・神足拳の仕組み
コマンド入力判定
今回わかったことと、前回の日記の訂正も含めて神足拳、真・神足拳の仕組みについて書いておきます。
神足拳コマンド入力判定のイメージは以下ののとおりとなります。
- →は17Fまで入力可。
- 次に18F以内にNと→を入力。→入力前は別方向の入力も可。
- 次に7F以内Aを入力。こちらも別の入力しても可。
真・神足拳コマンド入力判定のイメージは以下のとおりとなります。
- →は17Fまで入力可。
- 次に18F以内にNと→を入力。→入力前は別方向の入力も可。
- 次に18F以内にNと→を入力。→入力前は別方向の入力も可。
- 次に7F以内Aを入力。こちらも別の入力しても可。
2つのそれぞれコマンド入力は別で管理されており、並列で入力判定を行ったり、入力状態をメモリに保存しています。
神足拳と真・神足拳の処理
コマンド入力が個別に管理されていますが、処理自体はほぼ共通で、技の動作データも同じです。違うのは移動速度、攻撃判定の発生タイミングと回数となります。
処理の方は前半が共通、途中で真・神足拳のほうに分岐するといったつくりになっており、ここの分岐の条件が追加技のコマンド入力の成立状態のデータになります。
真・神足拳はコマンド成立後、発動できる状態であれば必殺技動作を行いますが、それとは別に追加技のコマンド入力の成立状態のデータをセットします。キャラ状態は関係なく、たとえばダウン中だったり、別の動作中であっても、コマンド成立さえしていればデータをセットします。
また、逆に神足拳はこのデータを消去します。
そのため、コマンドを高速にそれぞれ順番に入力した場合は以下のようになります。
- 真・神足拳→神足拳 … 神足拳になる
- 神足拳→真・神足拳 ... 真・神足拳になる
追加技のコマンド成立状態の判定処理前に、別のコマンド入力の成立によって、データが差し替わってしまった場合は、追加技やこのデータを使用した分岐が行われなくなるということになります。
他の追加入力技について
分岐については神足拳と一緒で、分岐技ごとにデータが異なっており、分岐元の技の特定のタイミングでチェックを行い、該当のデータが特定の値になっている場合にのみ分岐に進むといった動きになります。
ざっと調べてみて該当していたのは次の技です。ギース、双角、マリーの通常投げの派生も同じなのかもしれませんが、調べ切れていません。英数字はアドレスです。同じ派生元でも派生先の技ごとに異なる値でチェックしています。
- 残影拳 ... 03C976
- 爆裂拳 ... 03CE78
- 爆裂拳 ... 03CF4E
- 爆裂拳 ... 03CF5A
- 飛燕失脚CA ... 03DEA0
- 喝CA ... 03F980
- ボブ投げ ... 05CF4E
- ボブ投げ ... 05D936
- 電光石火の地 ... 040876
- 炎の種馬 ... 040944
- ストレートスライサー ... 041640
- バーチカルアロー ... 041598
- スピンフォール ... 0414F0
- ヤングダイブ ... 041824
- ダブルスナッチ ... 041D14
- ダブルクラッチ ... 041D14
- ダブルスパイダー ... 041D14
- 竜灯掌 ... 0438B2
- 神足拳(崇雷) ... 044D42
- 大ヘッドスピンアタック ... 0456AC
- ダンシングダイブ ... 045802
- ブレイクストーム ... 04585A
- ブレイクストーム ... 045864
- ブレイクストーム ... 04586E
- ブレイクストーム ... 045ABC
- ダックダンス ... 046240
- 空砂塵 ... 046ABA
- 飛翔脚 ... 046A24
- 三節棍中段打ち ... 0472F6
- 超太鼓腹打ち ... 048188
- ブレイジングサンバースト ... 049F42
- 超白龍 ... 04A5D8
- 閃里肘皇 ... 04A32C
- 閃里肘皇 ... 04A312
- メーデーメーデー ... 04AB0C
追加技の成立状態を消去する技までは調べ切れていませんが、ガチャると出にくいのがありそうなので、追加技は正確に落ち着いて素早く入れられるようにしないといけないな、というのがわかった感じです。
オマケ:同時押しについて
入力猶予については基本は今回みえる様にした通りになっていますが、レバーとボタンの同時押しだけどうも特殊で、処理までは追い切れていませんが次のような動きになっているみたいです。
同時押し時の判定
レバー+ボタンの同時押しをしても、入力の判定は1Fずつ、レバー、ボタンで評価される。そのため神足拳を→・N・→+Aの3Fで入力しても、→・N・→・Aの4Fで入力しても発動までの必要フレーム数は同じになる。
ボタン後のレバー入力猶予
レバー入力後にボタン入力となっているコマンドでは、ボタンを先に押してしまっても、そのあと3F以内にレバーを入力すれば正常に受けられる。
ただし前のレバー入力からの受付猶予内である必要がある。