検索
AND検索
OR検索
トップ
|
リロード
|
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
Top
/
PIF Boot ROM
PIF Boot ROM の編集
Last update on |
編集
|
複製
|
名前変更
|
差分
|
バックアップ
|
添付
Top
↑
N64エミュレーター
Project64
simple64
1964
Nemu64
UltraHLE 2064
Daedalus
Mupen64Plus
その他
↑
プラグイン
ビデオプラグイン
オーディオプラグイン
インプットプラグイン
RSPプラグイン
↑
動作確認リスト
動作確認リスト
↑
その他
質問箱
ツール
吸い出しミス
banned IP
最新の20件
2024-11-16
RSPプラグイン
ビデオプラグイン
2024-11-15
RecentDeleted
2024-11-07
ツール
2024-11-05
ares
Not64
2024-09-30
Project64
Project64 1.6 Plus
2024-09-22
N64エミュレーター
2024-09-16
Comments/不思議のダンジョン 風来のシレン2 鬼襲来!シレン城!
2024-09-05
FrontPage
2024-07-05
tmagicmushrooms
2024-04-07
Project64 Legacy
2024-01-12
質問箱
2023-03-06
N64Digital
2022-10-06
動作確認リスト
2022-09-14
m64p
MenuBar
simple64
2022-09-02
1964
Total:2636/Today:2
#norelated *PIF Boot ROMとは [#nd0aa7ea] &ref(pif-nus.jpg); #contents N64のメモリー領域の割り当ては下記一覧のようになっており 0x00000000 to 0x03EFFFFF RDRAM Memory 0x03F00000 to 0x03FFFFFF RDRAM Registers 0x04000000 to 0x040FFFFF SP Registers 0x04100000 to 0x041FFFFF DP Command Registers 0x04200000 to 0x042FFFFF DP Span Registers 0x04300000 to 0x043FFFFF MIPS Interface (MI) Registers 0x04400000 to 0x044FFFFF Video Interface (VI) Registers 0x04500000 to 0x045FFFFF Audio Interface (AI) Registers 0x04600000 to 0x046FFFFF Peripheral Interface (PI) Registers 0x04700000 to 0x047FFFFF RDRAM Interface (RI) Registers 0x04800000 to 0x048FFFFF Serial Interface (SI) Registers 0x04900000 to 0x04FFFFFF Unused 0x05000000 to 0x05FFFFFF Cartridge Domain 2 Address 1 0x06000000 to 0x07FFFFFF Cartridge Domain 1 Address 1 0x08000000 to 0x0FFFFFFF Cartridge Domain 2 Address 2 0x10000000 to 0x1FBFFFFF Cartridge Domain 1 Address 2 0x1FC00000 to 0x1FC007BF PIF Boot ROM 0x1FC007C0 to 0x1FC007FF PIF RAM 0x1FC00800 to 0x1FCFFFFF Reserved 0x1FD00000 to 0x7FFFFFFF Cartridge Domain 1 Address 3 0x80000000 to 0xFFFFFFFF External SysAD Device その中の、0x1FC00000〜0x1FC007BFまでの1984バイトの領域をPIF Boot ROMやPIF ROMなどと呼んでいる。 PIF ROMは、PIFがCPUでNMIを解放した後、データを送信し、0xBFC00000からコードの実行を開始します(32ビットモードではコールドリセット、ソフトリセット、およびNMI例外がこのアドレスにベクトル化されます)。基本的に、PIF ROMはn64を起動し、ROMに有効なブートコード(CIC)とチェックサムがあることを検証します(ROMの最初の0x1000バイト)。 80000300で、ブートストラップは起動時にPIF(Peripheral Interface)およびCICから返されたいくつかの値を80000300にコピーします。 IMEMおよびDMEMがクリアされる直前にPIF BootROMの一部はRSP IMEMで実行され、ゲームエントリポイントにジャンプし、80000300〜80000343までの状態フラグを生成します。 0x80000400(物理アドレス0x400) が、標準の起動場所です。すべてのR4xxxシリーズプロセッサは、例外ハンドラに最初の0x200のRAMを使用します。 物理メモリの最初の0x400には、割り込みベクターテーブル(および最初の0x180はプロセッサー例外ベクター)と構成パラメーターが含まれています。 「割り込みベクターテーブル」は、割り込みハンドラのリストを割り込み要求のリストに関連付けるデータ構造です。 簡単に言えば、割り込みと例外ハンドラの両方がプログラムの流れを変更します。 割り込みは、カートリッジの問題(周辺装置割込み)、Pre-nmi(リセットタイプ)などの外部イベントを処理します。 例外は、ゼロ除算など命令フォールトを処理します。 Nintendo 64の割り込みと例外について注意すべきことの1つは、R4300iアーキテクチャはそれらのハンドラーが本質的に1つであり、2つは一意のマスクを持っているだけなので、それらを区別しないことです。 しかし、このような状況以外の用途では、個々のハンドラを持っています。 それに加えて、CICチップはブートロケーション/エントリポイントを再配置することができます。 Nintendo 64 ROMで0x8(word長)に移動して、アドレスをコピーし、それをブレークポイント(行ブレーク)することで、コードセグメントの開始位置を見つけることができます。 そこにあるwordデータは、実際のゲームコードの開始点へのポインタです。 それ以前はすべてブートストラップ関連であり、ほとんどの場合、どのゲームでも同じです。 64DDを使用するゲームでは、参照用に元ディスクのディスクヘッダーのコピーを800001A0に保持します。 *吸い出し方 [#r41ea1f0] N64 PIFROMをダンプする http://nekokabu.s7.xrea.com/blog/2022/07/20220723214630-1658.html *ICチップの接続先 [#o1f33b2a] 適当 |ピン番号|接続先|h |1|カートリッジコネクタ19番ピン| |2|- (裏のC127左穴だけ)| |3|カートリッジコネクタ43番ピン| |4|- (裏のC127右穴だけ)| |5|カートリッジコネクタ18番ピン| |6|cpu-110pin 20| |7|カートリッジコネクタ45番ピン| |8|- (裏のR36の穴)| |9|RCP-5pin| |10|| |11|RCP-4pin| |12|RCP-2,8,12,16pinuii gnd?| |13|RCP-3pin| |14|| |15|U8-1pin| |16|1Pコン 真中| |17|-| |18|2Pコン 真中| |19|U8-10| |20|3Pコン 真中| |21|U8-13pin| |22|4Pコン 真中| |23|| |24|| |25|CUP-NUS 88pin| |26|-| |27|| |28|| *参考サイト [#d647ce4f] [http://en64.shoutwiki.com/wiki/N64_Memory N64 Memory - en64 wiki] [http://en64.shoutwiki.com/wiki/N64_Memory#Boot_Strap N64 Memory#Boot_Strap - en64 wiki] [http://en64.shoutwiki.com/wiki/SI_Registers_Detailed#PIF_Usage SI Registers Detailed#PIF_Usage - en64 wiki] [https://github.com/mikeryan/n64dev/blob/master/src/boot/pif.S n64dev/pif.S at master · mikeryan/n64dev · GitHub] [https://circuit-board.de/forum/index.php/Thread/24209-WIP-UltraPIF-Multi-Region-N64-PIF-Replacement/ (WIP) UltraPIF - Multi Region N64 PIF Replacement - Eure Projekte - Circuit-Board] [https://recon.cx/2015/slides/recon2015-19-mike-ryan-john-mcmaster-marshallh-Reversing-the-Nintendo-64-CIC.pdf UltraCIC: Reversing the Nintendo 64 Copy Protection Chip] [https://sites.google.com/site/consoleprotocols/home/techinfo/lowlevel/pif12 Console Protocols - PIF Stage 1 & 2]
タイムスタンプを変更しない
#norelated *PIF Boot ROMとは [#nd0aa7ea] &ref(pif-nus.jpg); #contents N64のメモリー領域の割り当ては下記一覧のようになっており 0x00000000 to 0x03EFFFFF RDRAM Memory 0x03F00000 to 0x03FFFFFF RDRAM Registers 0x04000000 to 0x040FFFFF SP Registers 0x04100000 to 0x041FFFFF DP Command Registers 0x04200000 to 0x042FFFFF DP Span Registers 0x04300000 to 0x043FFFFF MIPS Interface (MI) Registers 0x04400000 to 0x044FFFFF Video Interface (VI) Registers 0x04500000 to 0x045FFFFF Audio Interface (AI) Registers 0x04600000 to 0x046FFFFF Peripheral Interface (PI) Registers 0x04700000 to 0x047FFFFF RDRAM Interface (RI) Registers 0x04800000 to 0x048FFFFF Serial Interface (SI) Registers 0x04900000 to 0x04FFFFFF Unused 0x05000000 to 0x05FFFFFF Cartridge Domain 2 Address 1 0x06000000 to 0x07FFFFFF Cartridge Domain 1 Address 1 0x08000000 to 0x0FFFFFFF Cartridge Domain 2 Address 2 0x10000000 to 0x1FBFFFFF Cartridge Domain 1 Address 2 0x1FC00000 to 0x1FC007BF PIF Boot ROM 0x1FC007C0 to 0x1FC007FF PIF RAM 0x1FC00800 to 0x1FCFFFFF Reserved 0x1FD00000 to 0x7FFFFFFF Cartridge Domain 1 Address 3 0x80000000 to 0xFFFFFFFF External SysAD Device その中の、0x1FC00000〜0x1FC007BFまでの1984バイトの領域をPIF Boot ROMやPIF ROMなどと呼んでいる。 PIF ROMは、PIFがCPUでNMIを解放した後、データを送信し、0xBFC00000からコードの実行を開始します(32ビットモードではコールドリセット、ソフトリセット、およびNMI例外がこのアドレスにベクトル化されます)。基本的に、PIF ROMはn64を起動し、ROMに有効なブートコード(CIC)とチェックサムがあることを検証します(ROMの最初の0x1000バイト)。 80000300で、ブートストラップは起動時にPIF(Peripheral Interface)およびCICから返されたいくつかの値を80000300にコピーします。 IMEMおよびDMEMがクリアされる直前にPIF BootROMの一部はRSP IMEMで実行され、ゲームエントリポイントにジャンプし、80000300〜80000343までの状態フラグを生成します。 0x80000400(物理アドレス0x400) が、標準の起動場所です。すべてのR4xxxシリーズプロセッサは、例外ハンドラに最初の0x200のRAMを使用します。 物理メモリの最初の0x400には、割り込みベクターテーブル(および最初の0x180はプロセッサー例外ベクター)と構成パラメーターが含まれています。 「割り込みベクターテーブル」は、割り込みハンドラのリストを割り込み要求のリストに関連付けるデータ構造です。 簡単に言えば、割り込みと例外ハンドラの両方がプログラムの流れを変更します。 割り込みは、カートリッジの問題(周辺装置割込み)、Pre-nmi(リセットタイプ)などの外部イベントを処理します。 例外は、ゼロ除算など命令フォールトを処理します。 Nintendo 64の割り込みと例外について注意すべきことの1つは、R4300iアーキテクチャはそれらのハンドラーが本質的に1つであり、2つは一意のマスクを持っているだけなので、それらを区別しないことです。 しかし、このような状況以外の用途では、個々のハンドラを持っています。 それに加えて、CICチップはブートロケーション/エントリポイントを再配置することができます。 Nintendo 64 ROMで0x8(word長)に移動して、アドレスをコピーし、それをブレークポイント(行ブレーク)することで、コードセグメントの開始位置を見つけることができます。 そこにあるwordデータは、実際のゲームコードの開始点へのポインタです。 それ以前はすべてブートストラップ関連であり、ほとんどの場合、どのゲームでも同じです。 64DDを使用するゲームでは、参照用に元ディスクのディスクヘッダーのコピーを800001A0に保持します。 *吸い出し方 [#r41ea1f0] N64 PIFROMをダンプする http://nekokabu.s7.xrea.com/blog/2022/07/20220723214630-1658.html *ICチップの接続先 [#o1f33b2a] 適当 |ピン番号|接続先|h |1|カートリッジコネクタ19番ピン| |2|- (裏のC127左穴だけ)| |3|カートリッジコネクタ43番ピン| |4|- (裏のC127右穴だけ)| |5|カートリッジコネクタ18番ピン| |6|cpu-110pin 20| |7|カートリッジコネクタ45番ピン| |8|- (裏のR36の穴)| |9|RCP-5pin| |10|| |11|RCP-4pin| |12|RCP-2,8,12,16pinuii gnd?| |13|RCP-3pin| |14|| |15|U8-1pin| |16|1Pコン 真中| |17|-| |18|2Pコン 真中| |19|U8-10| |20|3Pコン 真中| |21|U8-13pin| |22|4Pコン 真中| |23|| |24|| |25|CUP-NUS 88pin| |26|-| |27|| |28|| *参考サイト [#d647ce4f] [http://en64.shoutwiki.com/wiki/N64_Memory N64 Memory - en64 wiki] [http://en64.shoutwiki.com/wiki/N64_Memory#Boot_Strap N64 Memory#Boot_Strap - en64 wiki] [http://en64.shoutwiki.com/wiki/SI_Registers_Detailed#PIF_Usage SI Registers Detailed#PIF_Usage - en64 wiki] [https://github.com/mikeryan/n64dev/blob/master/src/boot/pif.S n64dev/pif.S at master · mikeryan/n64dev · GitHub] [https://circuit-board.de/forum/index.php/Thread/24209-WIP-UltraPIF-Multi-Region-N64-PIF-Replacement/ (WIP) UltraPIF - Multi Region N64 PIF Replacement - Eure Projekte - Circuit-Board] [https://recon.cx/2015/slides/recon2015-19-mike-ryan-john-mcmaster-marshallh-Reversing-the-Nintendo-64-CIC.pdf UltraCIC: Reversing the Nintendo 64 Copy Protection Chip] [https://sites.google.com/site/consoleprotocols/home/techinfo/lowlevel/pif12 Console Protocols - PIF Stage 1 & 2]
テキスト整形のルールを表示する