ピンくま日記

リアルバウト餓狼伝説2のトレモ実装と遊んだ感想とか書いていきます。 https://github.com/sanwabear/rbff2-training

ブレイクショットの実装ができました

ブレイクショットの実装ができました。前回触れた根性入力のアプローチはなくしました。

youtu.be

忘れないように経緯もろもろと一緒に書いておきます。

昔話になりますが、秋葉原にトライアミューズメントセンターというゲームセンターがあり、そこでリョウでCPUが遊べる改造された餓狼伝説スペシャルが稼働していました。家庭用でコマンド入力したり、デバッグだったり、その時一般的だった改造方法でリョウを使っても、CPUが必殺技に反応せずにそのまま食らってしまうので、CPU戦が全然おもしろくなかったんですが、そのトライで稼働していたガロスぺでは、CPUがちゃんと反応してゲームになっていました。

どうやっているんだろうと気になって数年過ごしていたところ、たまたまネットサーフィンしていてみつけた海外のショップで改造版のガロスぺが売っており、殻割りしてそこから変なサブボードが生えていたその見た目の怪しさに惹かれて買ってみたところ、そのガロスぺでは必殺技にちゃんとCPUが反応してくれました。やたっぜーつってロムライターで中身をちゅうちゅうして差分とって、それまでとかそのあとから中身をいじった自分用パッチをつくったり当時ちょこっと公開してみたりしていました。

そのパッチ作成のなかで、ガロスぺリョウの暫烈拳コマンドがC連打とかいう納得いかない仕様が気にいらなくて→←→+Cの必殺技コマンドへの修正もやったんですが、その時、調べて残していた情報をもとにしたら、同じ会社だし、同じ系列の作品だし、コマンドのデータの場所が見つけられるんじゃないか、見つかったらコマンドをAボタンで必殺技発動とかに切り替えれば、猶予2Fの帝王漏尽拳にもBS発動できるようになるんじゃないかと思って、資料を掘り返してデータの場所を探してみました。

ちなみにガロスぺのコマンドのデータの場所探しには、怪しい中華サイトだかに出ていた全キャラの必殺技を一律↓↘→+BCに置き換える改造方法の記事が役に立ちました。中華すげえなーとか、でもこいつらが発売後にすぐ割ったりするからアレなんやぞとか、そういう風に思いながら情報乞食だけしておりました。

で、ガロスぺのコマンドデータのパターンを参考にバイナリエディタでP1の中身を検索したところ、ちょっと違いはあるものの、それっぽいデータ個所を見つけて、デバッグでウォッチしてコマンド入力時にそこがちゃんと読まれているのを特定しました。

データの並び順はダッシュ等、一部起き上がり攻撃などのコマンドが最初にあって、次にテリーからアルフレッドのデータとなっていました。いくつかのコマンドはあるけど技が割り当てられていなかったりするデータも見受けられました。処理では毎フレームそのキャラが使えるコマンドデータと、入力を比較して、最後に優先度の高い技が選択されるみたいなしくみで動いているみたいです。ちゃんと追えていませんがデバッグで飛び飛びで流してみて、そのように見えました。

技発動のポイントと、そこに飛ばすための適切なアドレスがわかればよかったんですが、全然みつけられなかったので、それ以外の方法を試行錯誤してみた結果、根性入力アプローチしつつ、Aボタンだけみたいな最短コマンドで技発動できるようにすることにしました。

全キャラ共通のコマンドデータの中に、コマンドはあるけど使われてないデータに←→+Aというのがあって、たぶん避け攻撃なのかな?とか思いながら、ちょうどいいのでこのデータの場所を使ってBS対応必殺技を呼べるようにしてみました。こんな感じです。

  1. P1が読まれているRAMにパッチ当てをして、←→+AというコマンドをAのみにします。このコマンドで発動する技のIDは無視される値のままにしておきます。
  2. 毎フレーム事のスクリプトの処理で、ガードした時にブレイクショット対応技のIDを空きのメモリ領域に保存しつつ、Aボタンを入力したことにします。
  3. Aボタンが押されたことで動作する、コマンドの成立判定をしている処理に設定したブレイクポイントのなかで2で保存した技のIDが動作するようにレジスタを書き換えます。
  4. 後続の処理で3で書き換えたIDを元にした必殺技でブレイクショットが炸裂します。

これでガード後1Fめに必殺技入力が認識されてブレイクショットがでるようにできました。猶予2Fの帝王漏尽拳にも対応できます。

その後、動作確認して問題直しつつ、連続ガードから発動できるように回数設定をつけたりして、いったんの仕上げができた状態になりました。よかったです。

同じ仕組みでリバーサルもできそうなので、やりかた考えて、いいのが思いついたら組み込みたいと思います。