ブラッディウァリアーズ (FC) イルルヤンカシュからの聖石奪還イベントでクラッシュ
FC版『ブラッディウァリアーズ』では、中盤に訪れるジャムヴァット村でイルルヤンカシュから聖石を奪還するイベントがあるが、これにはスタックを破壊する不具合があり、クラッシュを引き起こすことができる (大抵はフリーズするか、もしくはリセットがかかるはず)。
方法は簡単で、単にここのイルルヤンカシュに何度も負けるだけでよい (味方を一部だけ出して負けてもよいし、全滅してもよい)。これを十数回行うと、歩いている最中にいきなり能力値画面が開いたりするようになり、最終的にはクラッシュする。
メモリを眺めていると、上記の作業を行っているうちにスタック領域 $0180-
が 2 バイトずつ破壊されていくのがわかる。これは、イルルヤンカシュ戦を発生させるコード $FBBF
において pla
命令を 2 回実行しており、スタックが 2 バイトアンダーフローしているのが原因と思われる。本作は複数のコルーチンが並行動作しており、それぞれ固有のスタック領域を持っているが、このようにスタックアンダーフローが起こると 2 つのコルーチンスタック領域が重なってしまうため、諸々の予期せぬ挙動が起こることになる。
これは理論上は TAS に応用可能かもしれないが、制御はかなり困難と思われる。なお、本作が暴走した場合は大抵どこかで kil
命令を実行してフリーズするか、もしくは brk
命令を実行してリセットがかかると考えられる (本作では RESET と IRQ のハンドラが共通なので)。
ちなみに、上記のコード $FBBF
はカルワリオ戦発生時にも呼ばれているが、この場合はスタックは壊れない。一枚絵が表示されるかどうかに依存するのではないかと推測しているが、今のところ詳細は未解析。