CopyNES のしくみ
Welcome! - retroUSBでUSB CopyNESを購入した。
CopyNESとは、NESのカートリッジをコピーする装置です。NESのCPUを取り外して、CopyNESの基板を取り付けることで、PCからNESをコントロールできるようになります。PCからNESを制御することで、カートリッジを読み出します。
動作原理はリモートデバッガと同じなので、リモートデバッガを勉強するのに良い素材だと思う。
CopyNESのしくみを理解するために、http://tripoint.org/kevtris/Projects/copynes/tech.htmlの内容を軽くまとめてみた。
CopyNESの動作概要
CopyNESのブート時の動作
- 電源起動時に、カートリッジのROMを無効にし、CopyNESのROMを読み込ませる。
- CopyNESのROMを1000-1FFF, 3000-3FFFにマップする。
- 割り込みベクタのジャンプ先を、CopyNESの領域に変更する。
- カートリッジのROMを通常の領域である8000-FFFFにマップする。
CopyNESのモード
- play mode 普通にゲームが動くモード
- copy mode パラレルポートからの指示を待つモード
CopyNESの部品
- 74157 A12-15のアドレス線セレクタ
- 74138 CopyNESのEEPROMと6522用のアドレスデコーダ
- 6522 6502用のUART通信チップ PCとの通信用
- 27C64 64kbit EEPROM (8Kバイト)
CopyNESのソフトウェア
- ホスト側のコードはQBASICで作成(その後Visual Cに移植)
- NES用のコードは6502アセンブラで作成
- プラグイン機能で各種マッパーに対応
- カートリッジから読み出したデータは.NESファイルとして保存する。
オプション
うーん、やっぱりコードを読まないと良くわからない部分が多い。理解するために、CopyNESをエミュレータで動かすというのも素敵な気がする。
USB CopyNESは、ファミコンに取り付けることを考えています。だけど、ファミコンにUSB CopyNESを取り付ける場合には、ファミコンをケースから出さないとだめだし、さらにリセットスイッチが干渉するので、外さないと基板が乗っからない。