N64本体にはPIFROMやPIF Boot ROMと呼ばれる起動時にカートリッジ等のプログラムより前に実行され初期化等をするプログラムがあります。
CEN64やLarper64など一部のエミュではこれをダンプしたファイルが必要なのですが、自前でダンプするにはヒントはあるものの簡単にできる方法が公開されていませんでした。
私も吸い出してみようと試みましたが、割り当てられている0xBFC00000からの領域は通常アクセスできないようになっているらしくゲームシャークで吸い出しできません。海外のフォーラムを探してみるも「VR4300 COP0の適切なウォッチレジスタ??を使用して、PIFROMの実行中に読み取られたアドレスにウォッチポイントを配置、ウォッチポイントによって呼び出されたコード内のブートコードで使用されていないRDRAMの一部にPIFROMをコピー???」というヒントがあるもののさっぱりでした…
PIF-NUSを引っぺがしてどうにかならないか試している様子
駄目かな? pic.twitter.com/6QCtQohQER
— Nekokabu (@Nekokabu) February 15, 2020
Twitterでつぶやいても情報はありませんでした。
Please tell me how to dump the PIFROM from N64?
— Nekokabu (@Nekokabu) January 7, 2015
先日なんとなく「PIFROM dump」等検索してみると、
「N64 PIF ROM dumper」なるものが公開されているではありませんか!!!!!!
作者はhcs64氏、Neon64やN64のサウンドフォーマットUSF等で有名です。2020-06-01頃には公開されていたようです。気が付かなかった…
一応EverDrive64 X7と64drive(HW1)でPIFROMを吸い出しできることを確認しました。また64driveはCICチップの関係で起動できませんでしたがEverDrive64 X7でPAL版(ヨーロッパ地域向け)N64本体でも確認済みです。
これを見越してPAL版の本体も用意しておいたんだよなぁ pic.twitter.com/uy2vlt7byy
— Nekokabu (@Nekokabu) July 22, 2022
N64 PIF ROM dumperを起動して下の画面になったらリセットボタンを押す。
「SAVING TO SRAM… OK」と出れば完了
もしED64等の画面に戻ってしまう場合はもう一度N64 PIF ROM dumperを起動する
保存された「pif_rom_dumper.srm」の0x0~0x7BFまでがPIFROMになりますが、エミュで使用する場合はPIFRAMを含む0x0~0x7FFまでの2048バイトをファイルに保存しておくといいようです。
CEN64やLarper64で動作することを確認しています。
なおPIFROMは正確なエミュレーションを行うにはあった方がいいですが、PIFROMがどんな動作をしているかは判明しており、動作をシミュレーションできるためProject64やmupen64plusなどほとんどのエミュでは必要ありません。必要な方、もの好きな方はやってみてください。