例によって「ダウンロード」ページにうpしてあります。1.1.4から起きるようになったデータグリッドをスクロールした時にちらつく問題の修正とちょっとした機能追加です。SRの開始アドレスを自動逆アセンブルした際にそのテーブルに見出し用の仮想文字列が付いていると逆アセンブルしたSR名にその文字列を付加するようにしました。今までは
$029548 戦闘行動_実行時SR_001D
としか表示されなかったものが
$029548 戦闘行動_実行時SR_001D (マホトラ)
のようにそのテーブルに存在する仮想文字列(複数ある場合は1番目のフィールド)が追加情報として表示されます。これにより、自動逆アセンブルされたSRの意味がわかりやすくなります。もちろんラベルとして仮想文字列用のテーブル(csv)を用意しないといけないですが、結果としてRomMap.xmlに手動で定義するSRの数が減るのでRomMap.xmlのサイズも減らせます。試しに戦闘行動の一部とフロア進入時初期化処理をこの機能を使い手動で定義していたSRを自動化したRomMap.xmlに差し替えてみました。RomMap.xml自体のサイズは30KBほど減り、代わりに新規で定義したフロアインデックスが7KBとなりました(戦闘行動は元からあるので追加はなし)。情報量は基本同じなのですが、アドレスリストはラベルをつけておくとテーブル上で見た時にどのアドレスが何の処理に対応しているかがパッとわかるのでこちらのほうがスマートでしょう。
想定されるデメリットとしては自動逆アセンブルするSRの数が増えるのでROM解釈時に時間が掛かる可能性がありますが、メモリ中のバイト配列をスキャンするだけなので現状でも平均して1SRにつき0.1msもかかっていないため、多少自動逆アセンブルするSRの数が増えても問題はないと思われます。
コメント