日本版の64スマブラでCPUにランダム受け身をとらせることができた時の記録
ランダム受け身が実装されてる海外版の19XXのソースコードを見て
まずいらなそうな部分をクラッシュしない程度に削った
ソースコード中のROMアドレスやRAMアドレスがいちいち違うのを日本版用に修正した
アドレスはバイナリエディタの文字列検索で調べた
命令にアドレスが含まれてる(jump命令)と日本版と海外版で命令自体が違ってくるから、アドレスが含まれてない命令群を検索にかけると対応アドレスが見つかる
最後に気づいたのがRAMアドレスはゲームの場面場面で中身が逐一変わるということ
<使ったソフト>
msys2・・・19XXのビルド用、remixではいらない
Project64 Debugger・・・RAMのメモリデータと実行命令を見るため、dump機能でRAMのデータを出力できる(Project64 2.3、Bizhawk、Nemu64でもok?)
HxD・・・バイナリエディタ、ROMファイルの特定アドレスに飛んだり検索したり
LemAsm・・・ROMを逆アセンブルして命令を見るためのソフト
WinMerge・・・asmファイルの比較
<参考サイト>
https://github.com/jordanbarkley/19XX
19XXのコード
https://github.com/ARM9/bass
の/bass/doc/bass.html・・・asmファイルの文法のドキュメント