ファミコンカセット斜め差し「物理シミュレート式」NESエミュレータfamitilt (update260922)

 時は200X年、私は若気の至りでファミコンエミュレータNesterJを改造して「カセット斜め差し機能」を実装したことがあります。
(実は今も記事が残ってます https://i486.mods.jp/ichild/?page_id=81 )
 しかし、仕様書に従ってカセットのピン接続の値が入っている変数をマスクするだけなので、ファミコン実機のカセットずらしとはかなり挙動が異なりました。

 そして時を同じくして、私はニコニコ動画にも「ファミコンのカセットずらし検証動画『ドラゴンボール3悟空伝』」という動画をアップしており、こちらはファミコン互換機ではカセット斜め差しが正常動作しないけど、ファミコン実機はドラゴンボール3悟空伝でいきなりエンディング呼び出しワザが出来る、という内容でした。

 当時は「ファミコンの電気特性や物理的なものだからどうしようもない」と思考停止して諦めていましたが、Claudeの1週間で使える25%のパワーを投入した結果、電気的な仕様も考慮したカセット斜め差しNESエミュレータが出来ました!

・ダウンロードリンク
Download : famitilt_260922.zip

・実際に動作している様子

 画面の乱れ方や粒状感もファミコン実機さながらの雰囲気です。
 Claudeも「総当たりで探りました」みたいなメチャクチャなことを言っていたので、おそらくファミコン実機の斜め差しワザはほぼ再現できるのではないかなと。

・起動方法
famitilt.exeを実行して任意のファミコンROM(*.NES)を選択してください。
マニアな方はコマンドプロンプトで famitilt –help で詳細情報を得ることもできます。

・キー操作

<PCキーボード>  <ファミコン操作・その他>
キーボード上下左右 ゲームパッド上下左右
Z/Xキー A/Bボタン
エンターキー スタートボタン
右シフトキー セレクトボタン
W/Sキー ファミコンの左側(PRG)を持ち上げる。
普通は意味ない。
E/Dキー ファミコンの右側(CHR)を持ち上げる。
こっちが重要。
Qキー ファミコンの左側(PRG)をランダムで1ピン接触不良を起こす。
Aキー ファミコンの右側(CHR)をランダムで1ピン接触不良を起こす。
スペースキー ファミコンカセットを真っ直ぐに戻す。
Rキー リセットボタン
Pキー エミュレーションを一時停止・再生
CTRL+Rキー ピン接点も含む完全リセット
Lキー カセットの入れ替え
(NESROM選択)
ピンをクリック

任意のカセットの端子を1ピン接触不良させる(詳しくは同梱マニュアル参照)

F3キー

メモリエディタ起動

・おまけ
 トーテム尾崎もできました。

・更新履歴
Update 260919
 Qキー・Aキーで「ランダム1ピン接触不良を起こす」を追加。
 LキーでROM交換、CTRL+Rで完全リセットを実装。

Update 260920
 任意ピンをクリックして接触不良を起こせるようになりました。
 (左クリック完全断線。右クリック軽度断線調整)

Update 260921
 これまで起動しなかったいくつかのマッパーに対応しました。
 TABキーのスピードブーストを高速化しました。

Update 260922
 ※更新内容が激しく多いので詳しくは同梱の「日本語マニュアル」を参照。
 任意ピンを左クリックした時の接触不良をLv1(10万回に1回)~Lv5(10回に1回)~D(完全断線)に少しずつ悪化し、右クリックで清掃する仕様に。
 それに伴い、右クリックは「断線と清掃のトグル」にしました。
 F3キーでメモリエディタを起動できるようにしました。
 どこでもセーブ(SHIFT+1~9キーでセーブステート、単独1~9キーでロードステート)を実装し、さらにピンのコンディションも保持されるようにしました。つまり、ROMバージョンが同じであればカセット端子汚れバグを他の人と共有可能です。