FC版『北斗の拳4』は、船に対して話しかけると全く関係ないセリフを喋るバグがある。

フィールド上での船との会話

これは、NPCシンボルリストから会話対象を探す際に船も対象となっているのが原因 (船はNPCインデックス 14 で、$0620-$062F で管理されている)。本作は船との会話は想定していないため、船に話しかけた際はNPC会話テーブル (PRG 9 $AA10) の範囲外を参照し、そこから取得したポインタ経由で会話スクリプトを実行することになる。

フィールド上で船に話しかけた場合はバハモンの村人のセリフを喋るだけだが、船に乗ったままムーンウォークバグを行うと他のマップにも船を持ち込むことができ、その状態で船に話しかけるとマップID $9A に応じて会話の内容が変化する(会話テーブルはマップごとに設定されているため)。

マップによっては会話スクリプトポインタが RAM 上に設定されることがあり、この場合不正なテキストスクリプトIDが実行されてバグったセリフを喋ることもある。たとえば、イベリアまたはデスロレンスに船を持ち込んで会話すると $90- から会話スクリプトが読み込まれ、会話タイミングにより様々なバグり方をする (NMI カウンタ $91 および後続の雑用変数の値に依存)。

もし、このバグを用いてテキストスクリプトID 0x00A0 を実行することができればエンディングフラグ $ED が 1 になり、直ちにエンディングが始まる。ただし、全マップについて調べたところ、会話スクリプトポインタを制御しやすい RAM 領域に設定できるケースは見つからなかった。筆者が試行錯誤した限り、最も有望そうなのはラフレンス ($6D- を会話スクリプトとして実行) で、これは七星光の残り時間タイマー $8D-$8E をテキストスクリプトIDとして利用できる可能性があるが、必要なイベントフラグを立てられないなどの問題があり、今のところエンディング直行は実現できていない。


2025-03-11 追記:

一応エンディング呼び出しは可能なことを確認 (submission, encode)。

ただし、このバグに関してはテキストスクリプトや頻出語の組み合わせが大量にあるため、徹底的に探索すればよりよい解が見つかるかもしれない。


2025-03-17 追記:

本作には船が増殖するバグもあるが、今のところ TAS における用途は見当たらない。一応詳細を記しておく。

ガルグを撃破するとフィールド上に船が出現するようになるが、この後ガルグタウンで船頭のタロウザに話しかけて外に出ると、フィールド上の船が 2 つに分裂する(座標は重なっている)。分裂した船はNPCインデックス 3 を持つ (通常の船のインデックスは 14)。

この重なった船に対して話しかけると分裂した船の方が優先して処理され、デルモンのセリフの一部を喋る (このセリフ自体は未使用テキストスクリプトID用のプレースホルダと思われる)。

フィールド上での分裂した船との会話

また、この重なった船に乗り込むと分裂した船の方に乗り込むことになる。ただし、この船から降りると船の分裂は解除される(本物の船に置き換わる)。ムーンウォークバグを用いて町などに入った場合も同様。

フィールド上に船が 2 つ存在する

分裂後の船を町などに持ち込む方法は見つかっていないので、これは現状では特に実用性はないと思われる。