トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

解説/バイナリ比較でバグ修正

Last-modified: 2018-08-02 (木) 00:05:53 (1087d)

改造FEでどんなバグも数時間で直せるかもしれないデバッグ方法

改造feを作っていく時に、
過去ロムのバックアップをちゃんと取っていれば、
過去ロムとのバイナリ比較を使い、
原因はよくわからんがバグ修正できることがあります。

まず、今のバグありrom(ng rom)が壊れちゃうので必ずバックアップを取る

バックアップをとっている過去ロムから、
このバグがおきなくなるバージョンまで遡る。

起きないバージョンを見つけたらok romと命名。

ok romと、バグありng romの差分を
WinMargeU(バイナリ比較)とかで取る。

loop1:
ok romから、ng romに
適当に差分をコピーして当てていく。

動作確認。このバグが起きるのか?
Yes->バグが起きなくなるまで差分をコピーしていく loop1:に戻る
No

loop2:
バグが起きなくなったので、
次は、Undoをつかって、バグが起きるまで戻す

動作確認。このバグが起きるのか?
No->さらにUndoして、バグが起きるまで戻る loop2:に戻る
Yes

今undoしたところがバグを生み出している箇所だ!
アドレスと、バグらないok romのコードをメモる。
(救済コードと命名)


バックアップを取った一切手を入れていないng romに
救済コードを注入する。
(救済コードを入れ前にもバックアップ取って)

動作確認。このバグが起きるのか?
Yes->残念。救済コードが足りないらしい。このromとOK romを比較してloop1:からやり直そう。
No

バグを直した!
副作用がないか確認する

動作確認。副作用があるか?
Yes->残念。救済コードが過剰だったらしい。救済コードの周りのアドレスを含めてコピペしてみるか、
この方法を諦めて逆汗を交えながら根本解決をするしかない。
No

副作用なし。バグ修正完了。
やったぜ

こんな感じでやれば、プログラムとか一切関係無しに
だいたい数時間ぐらいあれば、
たいていのバグは直せます。