Download : カセットずらし対応版NesterJ(nesterjz.zip)
※オリジナルソースコードはScrew氏作『NesterJ』が元となっています。
https://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 世界初”カセットずらし”をエミュレートしてみる (閉鎖)
https://www.playoffline.com/fc/slide/index.html
・Famicom / Pegasus cartridge connector pinout
https://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に教えてくださいませませ。