GBDK開発発掘記 / A079

Bankをまたぐ状態取得をやめた。rpg442→443の16分

同じoverflowでも、解決策はBank番号の移動だけではありませんでした。

22:44:09のrpg442はBank 0→1 overflowでfailed。約16分後のrpg443はsuccessです。

chest_state引数を消す

rpg442ではnon-banked callerがchest_stateを計算してrendererへ渡していました。rpg443では関数シグネチャから引数を削り、renderer側がWRAMのevent_flags[]を直接参照する形へ変更されています。

sourceコメントには、BANKED rendererからbank switchを伴うhelperを呼ばず、WRAM accessで状態を見る意図が残っています。成功ROM実体は未救出のため、画面ではなく実diffを記録します。

設計変更として読む

引数を一つ減らしただけ、と単純化せず、複数箇所の差分とbuild結果をセットで確認する。Bank境界をまたぐ依存を可視化することが、次のoverflowを早く見つける手がかりになります。

← Articlesへ戻る