cartreaderとは?
レトロゲームをプレイするには主に2つの方法があります。エミュレーター、最新コンソール機の移植版ですね。
最新コンソールの移植だと、費用以外ほぼ何の障壁もありません。メーカーが一生懸命移植してくれたものですから当然ですが、ものによっては画質も良くなっていたりします。
しかしその一方で、そもそも配信されていないゲームがあったり、有名なバグ技が塞がれていたりすることもよくある話。例えば、NINTENDO 64では、バグ技にスーパーマリオ64で走り幅跳びを使った通称「ケツワープ」なんかがありますが、現代機に移植されているのは、これが塞がれている「振動パック対応版」です。64にはあと付けでコントローラーに振動機能を付けられるパーツがあり、後で発売された、振動パック対応バージョンでは塞がれています。
別にRTAみたいにガチ勢ではないけど、1回くらい試してみたい…と思ったことはありませんか?
GitHub – sanni/cartreader: A shield for the Arduino Mega that can back up video game cartridges. – https://github.com/sanni/cartreader
そんな折、オープンソースのROM吸い出しマシン「cartreader」があることを知りました。自分で購入したゲーム機のROMや、ハードによってはセーブデータまで読み出せる機械です。昔プレイしたゲームを、現代に蘇らせてくれる貴重なマシンです。
売り物ではなく、基板を自分で発注しなければならず、部品集め・はんだ付けまで自分でしなければならないため、面倒に感じ、知った後作らないまま数年が過ぎてしまっていましたが、クラウドファンディングサイトで完成品のクラウドファンディングが行われているのを見かけ、自分も欲しいし、せっかくなら自作するかと一念発起して作ることにしました。
物事はやり始めるとあとに引けないものだなと最近実感しているので、とりあえずお金を出してものを発注してしまうことにしました。お金を無駄にはしたくないので(ケチ)、恐らく完成すると思います。
今回のゴールは
・cartreaderの基本対応機種(GB,GBC,GBA,N64,SFC)を吸い出せるようにする
です。追加のゴールとして
・FC(ファミコン)も吸い出せる
というのもあります。これは達成できるか微妙(SFC以上に独自チップを載せたカセットが多い、今まで使ったことがないPIC(かなり低レイヤなイメージ)を使う、そもそも基本は対象外)なので、できればラッキーくらいの気持ちで。
Step:1 パーツの発注
PCBの発注
PCBを発注します。WikのNeeded Partsに、必要なパーツ一覧があり、そこにメイン基板のデータであるcartreader.zipのデータへのリンクがあります。Wikiでは、JLCPCBが紹介されているので、私もそこに注文することにしました。
今回はファミコンのアダプタ基板であるfamicom_adapter.zipも発注しています。ファミコンは使えなくていいならメイン基板だけで構いません。
勝手に勘違いをしていたのですが、ダウンロードしたZipデータをそのままこのページにアップロードすればいいだけなので、何も難しいことはありません。
基板の色くらいは好きに変えると楽しいかもしれませんが、他に設定をいじる必要はなく、そのまま注文すればOKです。
最低注文数が5枚になっていて、私は1番安い配送方法を選んだので、メイン基板だけで総額549.29円でした。550円ほどで届けてくれるのは驚きですね…めちゃくちゃ安いです。
ファミコンのアダプタ基板も同じくらいの価格だったので、総額1,000円ほどでした。
Cartridge Slotの発注
使うにしても、カートリッジを付けるスロットが必要です。その辺の実機からむしり取っても良いですが、面倒くさいしスロットはAliExpressに売っているので、サクッと買ってしまいましょう。
分かれると面倒なので、多少値段は違うかもしれませんが同じストアから購入しています。
まずはSFC(スーパーファミコン)のスロット。
GB(ゲームボーイ)、GBA(ゲームボーイアドバンス)のスロット。
N64(ニンテンドー64)のスロット。
SEGA メガドライブのスロット。
私が買ったカートリッジはこれらです。
Arduino Mega 2560の発注
Arduino Mega 2560です。正規品はめちゃくちゃ高いので(6,000円近くする)、互換機で。ELEGOOが良いらしいがなかったので半分賭けですがこれにしました。使えているのでまぁ大丈夫だと思います。
Arduino Moduleの発注
0.96インチのOLEDディスプレイです。
※このディスプレイは、ピンヘッダが最初から、反対向きにはんだ付けされており、実際に使うときには一旦取り外してからつけなければいけません。この作業が難しく、熱を加えすぎてランドを剥がしてしまう可能性が高いので、ピンヘッダがはんだ付けされていない
こちらの「Blue no Soldering」のようなタイプがおすすめです。探しても既にはんだ付けされているものばかり出てくるので、なかなか選択肢はありませんが…
microSDカードスロットです。
I2Cのクロックジェネレーターです。オプションらしいですが一応。
ひとまず今回はここまでです。
LCSC(JLCPCBと経営企業が同一)は、GitHubにあるExcelのデータをぶち込めば自動で商品を選択できるのでかなり楽なのですが、送料が高いので、個人の規模ではなかなか手が出せません。国内を見ると、、秋月・マルツ・aitendoでは、全てのパーツが同じ場所で揃いません。
仕方ないので、バラバラでも買えるところを探してみます。
次回は電子部品類を発注します。
参考文献
冬休みの自由研究:cartreaderを作る https://zenn.dev/sasaplus1/scraps/121bb45b6ec08d#fnref1
こちらのサイトを大いに参考にさせて頂きました。ありがとうございます。