未来神話ジャーヴァス (FC) 攻略/解析 - PRG-ROM

PRG 7

論理アドレス $C000-$FFFF にマップされる PRG バンク。

メモリマップ

アドレス内容
$C000タイトル画面の "CONTINUE" コマンドルーチン
$C020セーブデータへゲーム状態をセーブするルーチン
$C10Dセーブデータが存在することを示す magic 文字列 ("*INAGE*")
$C114セーブデータからゲーム状態をロードすることを試みるルーチン
$C17C
$C185
$C195
$C1DC指定した標準コントローラーの生入力を読み取るルーチン (拡張ポートは無視される)
$C195 下請け
$C1FD
$C23Eゲームシーンルーチン
$C2BBNMI ハンドラ
$C330NMI: 1P生入力更新ルーチン (拡張ポート対応)
$C34Fメインスレッド用の入力更新ルーチン (拡張ポート対応)
$C375メインスレッド用の1P生入力読み取りルーチン (拡張ポート対応)
$C34F 下請け
$C386指定したネームテーブルを指定した値で埋めるルーチン
バグ: 実際には対象ネームテーブルから PPU アドレス $3FFF までの全領域が埋められてしまう
$C39C2コン技 (入力シーケンス UUDDABAB によりスタート地点へ戻る) の処理
$C3D7PPU アドレスインクリメントを +1 に設定する
$C386 下請け
$C3E4$2006 (PPU_ADDR) に引数 $F0 の値 (u16le) を設定する
$C386 下請け
$C3EF(未使用ルーチン)
$C3F5ポーズ処理ルーチン
$C41C
$C434
$C44E
$C470全スプライトを非表示にする (スプライトバッファ全体を 248 で埋める) ルーチン
$C47B
TODO
$FE50RESET ハンドラ
$FE5D$8000-$BFFF の PRG バンクを切り替えるルーチン (バンクIDを引数 X で与える版)
バグ: PRG バンクID管理用変数 $0442 には X でなく A の値が書き込まれる
$FE6B$8000-$BFFF の PRG バンクを切り替えるルーチン (バンクIDを引数 A で与える版)
TODO
$FECC簡易的な自己テストルーチン (失敗した場合、無限ループする)
$FEFEIRQ ハンドラ (単に rti するだけ)
TODO
$FFFA割り込みベクタ