ファミコンカセットずらし検証 Ver.2013/08/16


Download : カセットずらし対応版NesterJ(nesterjz.zip)


※オリジナルソースコードはScrew氏作『NesterJ』が元となっています。
http://www.dcn.ne.jp/~otim2/nesterj/

カセットずらし対応版NesterJは、オリジナルのNesterJのVRAMアクセス制御に関する
"Nes_ppu.cpp"
"Nes_ppu.h"
に対して以下のルーチンを追加したものです。

1.キーボード(フルキー)の"2"キーを押すごとにカセットの右側を持ち上げてCHR-Dピンを1つずつ切断。

2.キーボード(フルキー)の"1"キーを押すごとにカセットの右側を戻してCHR-Dピンを1つずつ接続。

3.キーボード(フルキー)の"3"キーを押すと全ピンを接続。

4.これらのキーを押すごとにタイトルバーの内容を書き換えてピンの接続状況(cData)を表示。

5.cData:00FF(初期状態から"1"キーを1回)の時だけVRAM書き換えを無効化できる。

これらを組み合わせることで、カセットずらしの多くをエミュレータ上で再現できます。

解析にあたり以下のサイトを参考にしました。

・playoffline 世界初"カセットずらし"をエミュレートしてみる (閉鎖)
http://www.playoffline.com/fc/slide/index.html

・Famicom / Pegasus cartridge connector pinout
http://nesdev.icequake.net/fam_pinout.txt


カセットずらしの例

1.ドラゴンクエスト1
  フィールド上で適当な回数"2"を押して画面をバグらせて、モンスター出現と同時に"3"で全ピン接続すると、
  モンスターのステータスがバグった状態になる。
  ("cData:0013"までカセットをずらすと超強いパターンが多い?)。

2.ドラゴンボール3
  タイトル画面で"2"キーを一回押して(cData:0001)ゲームを開始し、最初のシーンで"3"で全ピンを接続。
  このまま進行するとニセ悟空との対戦シーンになる。
  ※カセットずらしの代名詞「いきなりエンディング」はエミュやFC互換機では再現できない。

3.マリオブラザーズ(初代)
  タイトル画面で"1"キーを押して(cData:00FF)でゲームを始めて"3"キーで全ピンを接続すると、
  タイトル画面のままゲームが始まる(足場判定が無いので落下し続けるしかない)。
  通常通りゲームを始めて、足場を叩くと同時に"1"キーを押してcData:00FFにすると、
  足場が膨らんだまま戻らなくなる(そこに触れるとマリオも敵も吹っ飛ぶ)。

4.妖怪道中記
  "1"キーを押してcData:00FFの状態でスクロールすると背景を処理できず、
  真っ暗な背景をロードすることになり、当たり判定の無い中を進むことが出来る。
  もしかすると本来突破できない壁を越えることも出来るかも?


他に「こんなカセットずらしが出来たよ!」という方はTwitterID : Imaha486に教えてくださいませませ。