オープンソースで開発されているカートリッジリーダー(いわゆる「ダンパー」)であるCart Reader V3を作ってみました。
github.com
現在の最新版はV5ですが、注文する基板が一枚で済み、ビルドログも多くあるV3を今回作りました。
必要なもの
今回は
- スーパーファミコンの特殊チップ(SA1)搭載カートリッジを読み出すためのPICマイコン(snesCICを書き込む)
- NINTENDO64のコントローラ パックを読み/書きするためのコネクタ
は実装しませんでした。
実際に作られた方のビルドログを参考にして、部材を集めました。
各種カートリッジスロットはピン折れや曲がりがあるかもしれないので、少し多めに購入しました。
(実際に到着したものはピンの折れはありませんでしたが、結構曲がっていました)
digitalit.jp
digitalit.jp
zenn.dev
Arduino MegaのUSBコネクタはMicro-Bのものは取れやすいので、Type Bのものを使いました。
スーパーファミコンの特殊チップ(SA1)はPICマイコンのパターンの6と7をショートさせるとSA1を解除できるとの情報あったので、試してみることにしました。
blog.jllab.info
github.com
ソフトウェア
github.com
Arduino MegaにCartReaderのプログラムを書き込みます。(作成時点で最新のV8.3を使いました。)
ハードウェアのバージョンはV3を使うので、options.hの"HW3"のコメントアウトはずして有効にします。(行の先頭にある"//"を削除)
// Remove // in front of the line with your hardware version //#define HW5 //#define HW4 #define HW3 //#define HW2 //#define HW1 //#define SERIAL_MONITOR
N64カートリッジのEEPROMの読み書きにクロックジェネレーターを使用する場合は、"clockgen_installed"のコメントアウトはずして有効にします。
//****************************************** // N64 OPTIONS //****************************************** // Read N64 Eeprom with Adadruit clockgen, CLK1 switch needs to be switch to ON // add // and disable CLK1 switch if you don't have the clockgen installed or if you want to read a repros save #define clockgen_installed
micro SDカード
カートリッジのバックアップを保存するためのmicro SDカードをexFATでフォーマットして、"SD Card"のフォルダに入っているファイルをmicro SDカードのルートにコピーします。
組み立て
組み立てはWikiを参考に進めました。(作成手順の動画もあり、分かりやすいです。)
github.com
Arduino Megaに実装されているレギュレータとトランジスタの取り外しはヒートガンを持っていないのでうまく取り外しできるか不安でしたが、半田ごてをすこし高めの温度(350℃程度)にしてはんだ(鉛入り)を端子に盛りながら端子からの熱で部品を温めるとすんなり外れました。
micro SDカードスロットモジュールにはL字のピンヘッダが付いていたので、取り外してストレートのピンヘッダを付け直しました。
OLEDディスプレイモジュールとクロックジェネレータモジュールはピンヘッダが取り付けられてなかったので、ストレートのピンヘッダを取り付けました。
OLEDディスプレイとLEDの端子が接触しそうだったのでカプトンテープで絶縁しました。
3DプリンタでボトムプレートとmicroSDカードスロットのスペーサー等を印刷し、取り付けました。
github.com
動作確認
メガドライブのカートリッジはもっていないので、それ以外で動作することを確認しました。
特殊チップSA1はスーパーマリオRPGで確認し、snesCICを実装せずに読み取ることができました。
ただ、SA1が解除できなかったり、読み取れてもデータが壊れていたりしたので、安定性はありませんでした。
WikiではSA1の解除には使用する電源の品質やSA1への電源供給のタイミングについての記述があるので、少しコツが必要なのかもしれません。(PD対応の電源アダプタより、5V2Aの単一出力の電源アダプタのほうがうまくいきました。)
github.com