悟空伝のカセットずらし技を考える

簡単にみただけでデバッガを動かしてはいない。推測ばかりなので信用しないこと。

yychr でキャラデータみたら Charcter ROM の 3/4 が Charcter Data, 1/4 がそれ以外だった。それ以外をぱっと見る感じ、 6502 の命令が入っていることはなく、冗長性の高いデータ群だと思われる。

  • 冗長性の高い画像ではないデータとなると、 nametable image, 進行上のスクリプト、文字列が候補となる。
  • 物理的にエッジコネクタを見ると, charcter ROM bank は正常に切り替わっているはずなので、 PPU data bus の接続、端から D4,D3,D5 辺りが接触不良で HIGH になっている可能性が高い。

そこまで推理すると、FF3 みたくスクリプトポインタがエンディング直行データを拾ってしまうと考えるのが無難な気がする。

Program ROM が限界の場合、 Charcter ROM へ画像以外の冗長性の高いデータを載せることは考えたことがある。その場合は CPU から直接アクセスできるわけでもないのでデータポート ($2007) から RAM にコピーする必要がある。冗長性が高いから、 0x800 byte だけの本体 RAM でやるのは不便なので、 0x2000 byte のカートリッジ内部の増設 RAM をバッファにするのが普通と思ってたんだが、この悟空伝は RAM を増設してない。 king of kings は RAM あるんだけどね。

ここまで書いて考えが整理できたのでちょっとやってみよう。