ピンくま日記

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

キャラ選択画面を無理やり実現しました

バチョルアーカイブズみたいなトレモでキャラ選んだらCPU選択時でも、真ん中のボス列が抜けないのを再現するためにプログラムのハックでやろうとがんばってみましたが、PS2版のなかみをチュウチュウしてみてみても大してデータは変わらず。メモリの中見てみようかなーと思いましたが忙しくてPS2をゲーム部屋からとって来たり、BIOSチュウチュウするのができていなかったりで進捗でなさすぎな状態が続いていました。

まえにメモリの中をみていたとき、キャラ選択のアイコンとかが並んでいる領域をみつけていて、そのなかにCURSORていう文字に見えるデータが並んでいる部分があったのを思い出しました。ちょこちょこいじってみるとここでキャラクター選択のカーソルとか位置とかを管理しているみたいだったので、こいつのカーソル表示をCPUに差し替えて、1Pのプレイヤー選択の瞬間に対戦用の選択状態に切り替えてやれば再現できるんじゃないかとやってみました。

youtu.be

あと一息のところが詰め切れませんでした。どうせ対戦画面では2Pで操作できるようにするので、カーソル表示をCPUに差し替えるのはやめて、1P選択時に対戦モードになる動きだけをのこしました。

youtu.be

動画だとわからないですが、全部1P側で操作しています。お便利な感じにできました。モヤモヤしていた機能が実現できてよかったです。中身はかなり力技になりました。

進捗でません

ここ何ヶ月からの忙しさからちょっとだけ抜け出せそうです。トレモのほうは一週間ほど手を付けられていませんので進捗はありません。

今週末は家族イベントでまた別の忙しさがきそうでなんかもう二週間くらい仕事もなんもない感じの生活をしたいなとか思います。

改造がはかどらない

トレモ本体のほうは一通りやりたいことは盛り込めたので、あとはバトルアーカイブズみたいに、1P選択後のCPU選択でボスキャラ達が抜けないようにしたいなと改造ポイントを探っているところですが、全然はかどりません。どういじっていいのか皆目見当がつかない状態で困っています。

ここをみている人がいたら教えてほしいです。切実です。

真ん中の列をぴょこんとずらしているところをつぶせばとか考えていましたが、なんとなくのポイントはみつけたものの、そのまますっ飛ばすとゲームが進まなくなったりクラッシュしたりで全然だめです。バトルアーカイブズのトレモはいったいどうやって実現しているのか。

とりあえずPS2ソフト買って、PS2エミュ上で動かしてみたら何かわかるんじゃないかとか思いますが、ソフト買ってダンプして、BIOSもダンプしてそこからエミュレータ動かしてとかまた大変そうなので躊躇しております。ダンプに必要なモノも入手がむずかしそうだし。

f:id:ym2610:20200621224831p:plain

対戦画面のほうは一段落

 

 

当たり判定の表示その後

移植頑張ってた当たり判定表示がようやく終わりました。通常投げ、空中投げも無事表示できるようになりました。通常投げは1フレしか表示されないとか利用価値がなさそうだったので、投げ判定が表示されるときにエミュ本体のポーズをかけるようにするモードも増やしました。めんどくさいのが一つ片付いてよかったです。

動かしてみると相手が投げ可能なら常に処理が動いているみたいです。ジャンプ中とかライン移動しっぱにさせると投げのフックが反応しません。空中投げも相手が空中にいないと動かないっぽいです。ダウン投げと必殺投げは常に処理が動いていて、とくに前者は↓Cでチロチロなげ枠が表示されます。

メニュー回りもつくっていて、つぎおおきなのはレコーディング機能になります。

当たり判定の表示

当たり判定表示のスクリプトを素のMAMEのほうに移植を進めています。フックが使えないのは予定通りMAMEデバッガをつかって空いてそうなメモリに必要な値をぜんぶ書き込んで、フレーム更新時に読込むかたちでなんとかなりました。投げ判定だけすごくややこしいのでまだできていません。

がんばって進めていきます。

MAMEデバッガを調べる

当たり判定表示の移植はいったんあきらめて、デバッグDIPでの判定表示の色わけでお茶を濁そうとしましたが、当たり判定、くらい判定、接触判定でそれぞれ配色用のメモリアドレスがかぶっているものがあってそっち側も挫折しました。これでどうやって開発、検証していたのかとても気になります。

 

自動ガードなども移植していきたく、そうするとどうしても自分のやりかたではメモリ更新のフックをとらないといけなくって、フックの仕方がないか調べてみました。チートの設定でフックして更新みたいなのができるかを見てみましたが、それっぽいのは見つからず。そもそもチートコードのシンタックスなども明文化されているのを見つけるのにめちゃくちゃ苦労しました。いちおう書いてあるところを見つけたのと、スト2シリーズのチートコードを参考に読んでみましたがフックぽいのは無くて断念しました。

 

当たり判定表示の解析されている神様サイトを参考になんかないのかと記事を読んでいると、ウォーザードの投げ判定の読取にはデバッガ依存になってしまったというのを見つけてこれはぜひ参考にしたいとスクリプトの方を確認したところ、確かにデバッガのbpsetの構文を仕込んでね、みたいなのがありました。

MAMEのデバッガ用コンソールで構文つくって動かしてみると、確かにフックして、さらに特定番地を更新することができました。本家のMAMELuaエンジンにはデバッガ用のインターフェースも用意されているので、スクリプト起動時にウォッチポイントを設定して、疑似的にフックの処理を移植することができました。これで自動ガードのために必要な攻撃状態や飛び道具の発射状態の遷移を検知してガードする・しないの動きをとらせることができるようになりました。あとは入力をさせるやりかたを確認しないといけないです。デフォで入っている連射用のLuaスクリプトを参考にがんばってみようとおもいます。

 

あと、こうなると実装は大変そうですが、フックに依存する餓狼伝説シリーズの当たり判定表示のスクリプトもやればできそうな気がします。また時間とやる気のあるときにチャレンジしてみようとおもいます。

 

FBA-rrじゃないほうへ移植

素のMAMEのほうにスクリプトを移植中です。

もともと今のがごちゃごちゃになっているのの整理もやっています。

ただ問題があって、もともと持ってきている餓狼シリーズの当たり判定表示のスクリプトMAME-rrでも動かなくて、FBA-rr専用ですっていうのがつくられたかたの記事でも書かれていて、分からないなりに自分で頑張って移植をやってみましたがやっぱむりでした。もともとのスクリプトを作った人はまじ偉大だなー最高やなと思いつつ、当たり判定表示の移植はあきらめました。ゲーム本体の動作に負担がかかりますが、MAMEだとデバッグディップの判定表示で済ますしかなさそうです。