ピンくま日記

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

FBArrでの処理順序

スクリプトを動作させるには2パターンあってエミュレータ本体であるFBArrからのコールバックか、スクリプト本体がスクリプト実行の途中にエミュレータ本体のゲーム進行をすすめるかのどちらかになります。

以下はFBArrで用意されている関数のうちのコールバック関数登録用の関数です。

  • emu.registerbefore(function func)
  • emu.registerafter(function func)
  • emu.registerstart(function func)
  • emu.registerexit(function func)
  • memory.registerread (address, [size,] func)
  • memory.registerwrite (address, [size,] func)
  • memory.registerexec (address, [size,] func)
  • savestate.registersave(function func)
  • savestate.registerload(function func)
  • gui.register(function func)
  • input.registerhotkey(int which, function func)

エミュレータ本体がわちゃわちゃ動いている途中にこれらで登録したコールバック関数が呼び出されて動くことになります。

今回、トレモでやりたいことはメモリ状態をみたり更新したりしてキャラの状態を確認したり、操作をしたいんですが、ゲームからのメモリ更新タイミングや、ゲームへの反映タイミングを1フレームのずれなくおこなおうとしたときにどれをどう使えばいいのかになります。

  1.  入力のフィルタはエミュレータ本体での入力確定後、ゲーム動作前に介在させたい。
  2. 出力のフィルタはエミュレータ本体の動作後、画面描画前に介在させたい。
  3. リアルタイム性が必要ない処理はどこでもいい。
  4. その他、初期化やゲームのメモリ状態がリセットされるのに合わせた処理を入れる。

これらをやろうとしたとき1は emu.registerbefore(function func) ですが入力が完了しているかどうかはソースみないとわかりません。2は gui.register(function func) が最適そうですが、後者は描画がスキップされると動作しません。

となった場合、エミュレータでゲームの動作直前や動作直後をコールバックで検知するのがいいのではないかと考えています。

ゲームのプログラムを追ったり、メモリやレジスタを読んでいけばいいのかもしれませんが、そのへんぜんぜんわからんので追うのは絶望的というかそんなにエネルギー費やせません。幸い、先達様がつくっている当たり判定表示用のスクリプトレジスタの変化をフックしてメモリ状態をチェックしていたりするので、その辺をヒントに進めるかもしれないなと考えています。

 

2019/5/25のトレモ進捗

フレーム回りの値の取り出し方を考え中です。

あとちょっと仕事がいそがしくなりそうなんで休憩しつつのんびり考ええてみます。

リプレイのところは登録したリプレイをランダムで再生するのも入れておきたいなとかちょいちょいじりたいところ。

2019/5/22のトレモ進捗

f:id:ym2610:20190522012155p:plain

フレーム表示修正

攻撃判定表示とくっつけて攻撃判定がでているフレーム数を表示できるようにしました。満足マンゾウ。

攻略サイトなど人様の情報だけに頼らない強い子になりたい。

 

ダッシュ一回転

ダッシュ中は前ジャンプしかできないのでダッシュ一回転がめっちゃ楽なのにいまさら気づきました。

ギースだと雷光投げと姿勢がひくくなるので使い分けなのかもしれませんが、ノーモーションで移動始められる雷光投げのほうがやっぱり便利そう。

ついでにラインA攻撃とラインB攻撃すかりから羅生門、真空投げが入ってようできてるなーとか関心したりしました。なんかいい連携でもあるのかどうなのかわかりませんが。

2019/5/20のトレモ進捗

ひきつづきちょいちょい進めています。

動作確認ついでにボブの持続重ねしらべてみました。

CCの2段目で+10Fとれるのと、ラインB攻撃で+3Fとれるのがわかってニヤニヤできました。タイミング厳しすぎてねらえません。

2019/5/19のトレモ進捗

ちょいちょい進めていっています。

動作確認時にボタン連打でキャラを選んでるせいでテリーをつかっていますが、なにしてもちょい不利になるばっかりで、このキャラをいったいどうしたかったのかモヤモヤします。

クラックシュートのダメージが高いか、空中ヒット時に浮かせになるとかでもうちょっと強かったらなーとか、バーンナックルも空中ヒット時にもっと浮いたらいいのになーとか、ファイヤーキックのリーチ長くするか硬直短くするかとか、もうちょっと触ったらモリっとゴリっと減るとかしてくれればなーとか、バックスピンキックは飛びにあたるくらいあればバーンナックルのかわりになるのになーとか。あとバックスピンキック空キャンファイヤーキックの移動がかっこいいけど猶予が短かったり硬直が長くて全然きもちよくならないのが惜しいなとか。もうちょっと尖った部分が残っていてほしかったです。