CopyNES のしくみ

Welcome! - retroUSBでUSB CopyNESを購入した。
CopyNESとは、NESのカートリッジをコピーする装置です。NESのCPUを取り外して、CopyNESの基板を取り付けることで、PCからNESをコントロールできるようになります。PCからNESを制御することで、カートリッジを読み出します。
動作原理はリモートデバッガと同じなので、リモートデバッガを勉強するのに良い素材だと思う。

http://www.retrousb.com/products_pictures/usbcopynesbig.jpg
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ファイルとして保存する。

オプション

  • RAM Cart
    • 32K/8K
    • RAMにデータをダウンロードすることで、ゲームを実行可能
  • NSF Cart
    • 128K
    • RAMにNSFデータをダウンロードすることで、NSFが再生できる

うーん、やっぱりコードを読まないと良くわからない部分が多い。理解するために、CopyNESをエミュレータで動かすというのも素敵な気がする。


USB CopyNESは、ファミコンに取り付けることを考えています。だけど、ファミコンにUSB CopyNESを取り付ける場合には、ファミコンをケースから出さないとだめだし、さらにリセットスイッチが干渉するので、外さないと基板が乗っからない。