Cartreader 魔改造!? Cartridge Reader Alterをつくったよ

⏰この記事は約 14 分で読めます

こんにちは、JLです。
今回は、“Cartreader 改” 正式名 “Cartridge Reader Alter” を作ってみたお話です。

追記(2022/01/23)

Cartridge Reader Alter 自作キット の販売を開始しました。

Cartreader ( Cartridge Reader ) って何?

Cartreaderは、sanni氏が中心となってGithubでオープンソースで開発が進められている”レトロゲームダンパー”。いわゆるレトロゲームのカートリッジ(ゲームカセット)からゲームデータ(ROM)やセーブデータを吸い出したりすることが出来るものです。

今回作るV3準拠のCartreaderは、Arduino Mega 2560(互換機でも可)をコアとして動作します。

GithubのWiki内にあるNeeded Partsを参考に基板を発注したり、部品を注文したりして手作りすることが出来ます。

Cartreader 改 ( Cartridge Reader Alter) とは?

基本的な動作はすべてArduinoに書き込むプログラムが制御していて、ゲームカセットが刺さる基板部分に関しては、そこの処理に準じていれば好きなようにカスタマイズできます。

例えば、デフォルトではSFC(SNES)、MD(Genesis)、NINTENDO64、GB(GBC/GBA)のスロットを取り付ける基板データが公開されていますが、MDのスロットをファミコン(NES)に置き換えて、任天堂専用機みたいなCartreaderを作ることも可能です。

もちろんArduinoへ書き込むプログラムを直接いじって、メニューや仕様を使いやすいように変更したり、ちょっとしたバグを修正したり、まだ未対応の機能を追加する…といったカスタマイズも可能です。

是非バグをみつけたり機能を追加したりした際は、sanni/cartreaderへpullしてみてください。

今回作ったCartreader 改 (Cartridge Reader Alter)は、自分用にハード面を魔改造したCartreaderという事になります😎

こんなかんじ

Cartreader 改 全体図

どのあたりが魔改造ポイントか、説明していこうと思います。

魔改造ポイント紹介

各ゲームの位置をシルクに追加

ここに刺さるよ!って感じです

LEDをロゴの裏に変更

ここのロゴが光ります!(後ほど)

コンデンサを取り付けしやすく変更

個人的に取り付けしにくかったので

N64 Controller…

コントローラー…(後ほど紹介します

…と、大体こんな感じです。

機能の追加というよりは、組み立てをしやすくした感じですね。

材料はこちら

まずは電子部品から。小さいパーツが多いので取り扱いに気を付けましょう。すぐどっか行きます。

(このほかピンヘッダが必要になります)

次にモジュール類。Cartreaderでは「OLEDモジュール(液晶)」「microSDモジュール(SD読み書き)」「クロックジェネレータモジュール」を接続する箇所があります。

双方AliExpressを利用して購入しましたが、同等のモジュールであれば入手経路は自由です。

microSDモジュール

クロックジェネレータに関しては、Adafruitが出している「Si5351A Clock Generator Breakout Board – 8KHz to 160MHz(Product ID: 2045)」をコピーした商品が安価に販売されていますが、中にはクロックが安定しなかったり、そもそも動作しないようなハズレな商品、いわゆる粗悪品があるようです。

一応、私が実際に複数個購入して、動作が安定しているところの商品を貼っておきますが、心配であればAdafruitのもの購入するのが確実かもしれません。

そして、 ゲームのカートリッジスロットも必要になります。基本仕様では「スーパーファミコン」「メガドライブ」「NINTENDO64」「ゲームボーイ(カラー/アドバンス)」のスロットを用意します。

もし、吸い出す予定がないゲーム機があれば、「取り付けない」という選択もアリかもしれません。

スーパーファミコンは、2.5mmピッチのもので、左右に固定の耳が出ていないものを選択しましょう。

メガドライブは、左右に飛び出ている箇所があるので、一部のはんだ箇所に干渉する場合があります。その際は、折ったり切断して使いましょう。

NINTENDO64は、普通に検索すると2.54mmピッチのスロットコネクタが出てきたりします。正しく安定的に吸い出すには、2.5mmのものを利用する必要があります。購入の際には注意しましょう。

ゲームボーイ(カラー/アドバンス) は、表面実装の部品になります。取り付けの際はブリッジしてしまわないように気を付けましょう。

snesCICをつくる

スーパーファミコンの特殊チップ(SA1)の吸出しに、 snesCICが必要になります。

メモ

…と「必要になる」と言っていますが、現状、必要ではないのかもしれません


というのも、こちらでsanni氏が実験・実証している通り、 snesCICの取り付けパターンの6と7をショートさせると、snesCICを使う場合よりもSA1をアンロックできるようです。

現状はこのような実装で問題なく特殊チップの吸出しもいけるみたいです。簡単ですね。

なので、この「snesCICをつくる」という項目自体、飛ばしてしまって構わないのですが、JLが実際にsnesCICを使わないパターンでの動作検証をしていないので、作業ログとして残してあります。

snesCICは、PIC 12F629にPICkitなどを利用して書き込む必要があります。

PICKitで書き込む際には、SOIC8アダプタも併せて利用しましょう。

PICkit3(クローン)とSOIC8

SOIC8アダプタの位置ですが、緑の大きいソケットの3Mの刻印を上として、上から11番目に1番ピンが刺さっていればOKです。

◽◽◽

PICに書き込むデータも用意しておきましょう。

こちらのページのCodeボタンから、Download ZIPを選択して、ZIPをダウンロードします。

ZIPを展開したら cicフォルダの中にある snescic-lock-resync.hex がPICに書き込むファイルになります。

◽◽◽

書き込みを行うためのソフトウェアもインストールしておく必要があります。

こちらのサイトから、MPLAB X IDEをダウンロードしてインストールしましょう。

◽◽◽

諸々の準備が終わったら、MPLAB X IPEを起動しましょう。

起動したら、ToolでPICkit3が表示・認識していることを確認してください。

問題なければ、FamilyでMid-Range 8-bit MCUs (PIC10/12/16/MCP)を選択。
その下の、DeviceでPIC12F629を選択して、Applyを押します。

次に、 MPLAB X IPEをAdvanced Modeに切り替えます。上のメニューのSettings から Advanced Mode を選択。
パスワード欄に microchip と入力し、Log onを押すと、メニューが増えます。

この状態で、増えたメニューのPowerから Voltage optionsのPower target circuit from PICkit3 のチェック✅を入れます。

準備ができたので、Toolの右のConnectボタンを押してみましょう。警告が出ます。🥺
3.3Vのデバイスに5Vのデバイス指定すると壊れるよ!っていう注意なので、今回は問題ないのでOKを押します。

すると下のステータスバーで赤文字でこんなこと言われます。

PICkit 3 is trying to supply 5.000000 volts from the USB port, but the target VDD is measured to be 4.625000 volts. This could be due to the USB port power capabilities or the target circuitry affecting the measured VDD.

書き込み電圧が足りないという表示です。因みにこれは、正規のPICkit3でも発生します。

対応としては PICkit3 本体を分解して、特定の抵抗をショートさせる必要がありますが、とりあえず、メニューのPowerからVoltage Levelを5.0から4.75もしくは4.625ぐらいに下げてあげるとエラーも出ずに接続できるようになります。

Hex File の右の Browseを押して、先ほどダウンロードした snescic-lock-resync.hex を選択します。

ここまで出来たら、Programボタンを押すと、PICへの書き込みが開始します。

Programming/Verify complete
****-**-** **:**:** +0900 – Programming complete

このような表示になったらPICへの書き込みは完了です。

Happy making. 🔧🔨😊

それでは作っていきましょう!

取り付けは、背が低い順などで、やりやすい場所から取り付けていけばOKです。

私はとりあえず右上のあたりから攻めていきます。

AMS1117の取り付け
タンタルコンデンサの取り付け

タンタルコンデンサは極性(+-の向き)があります。
画像のように+側にライン(色が濃いほう)が来るようにしたらOKです。

抵抗の取り付け

抵抗に極性はないので、向きは自由に取り付けてOKです。

snesCICの取り付け

前述のとおり、 snesCICは必ずしも必要ではなくなっています。
簡単なほうで対応してしまって問題ないかと思います。

セラミックコンデンサ の取り付け

セラミックコンデンサも極性は特にないので、向きはどちらでも大丈夫です。

変更要素 ロゴ裏のチップLEDの実装

そして残りの抵抗なども付けたら、 Cartreader 改 の変更要素、チップLEDの実装です。

この向きで取り付けます

ちょうどロゴの裏側の位置になります。
LEDの光を表に出すため、採光するようにソルダーレジストを空けてあります。

このチップLEDがちょっと特殊で、普通は発光面が上にくるのですが、下に向いています。

SunLEDXZMDKCBDDG45S-9という商品です。データシートはこちらになります。

自作キーボードなどにも使う方が多いようですね。

変更要素 コンデンサを取り付けしやすく変更

ここに取り付けます

完全にこれは私自身が取り付けするときに「ウーン…」ってなってたので変更したところです。

こんな感じに取り付け出来ます

完成まで早送り

とりあえず、残りのピンヘッダやカートリッジコネクタなどを接続していきます。

GBスロットを取り付けたり…
クロックジェネレータのコネクタを取り付けたり…

あ、そうそう。ピンのはんだ付けなどについては、横から見た時に富士山みたいに見えると、ハンダが過不足なくいい感じだと思います。プロの技師ではないので、正しい事ではないのかもしれませんが…

こんな感じです

だいたい完成!?

だいたいOK

ほぼ全てのパーツの取り付けが完了しました。

そういえば、microSDカードスロットは、普通に買うとこんな感じに曲がったものが届きます。

曲がりピン

このままだと接続に難があるので、ペンチ等で曲げてもいいのですが、金属疲労による耐久度や接触不良の不安感があるので、特注でストレートのものを小ロット入手しました。

まっすぐの安心感

というわけで、あとは本体にクロックジェネレータとこのmicroSDカードスロットを取り付けて…

おっと

😮

変更要素 N64コントローラポートの追加

チラチラと見えていたこれです

もともとの仕様では、延長ケーブルを切って、中のケーブルを3本皮膜を剥いて、パッドにはんだ付けする感じでした。

ケーブルが生えるため見栄えがあまりよくなかったり、ちょっと微妙なポイントだったため、今回このコネクタを採用しました。

aliexpress等で、N64のコネクタを探すと、検索に引っかかってくるコイツです。
どうやらcartreader V4でも使われているらしい。

N64コントローラポート取り付け

完成

…というわけで、すべての取り付けが完了しました。はんだごての電源を忘れずに切りましょう。

それでは、Arduinoを接続して動作テストをしていこうと思います。

起動問題なし!

そして…

変更要素 LEDをロゴの裏に変更

ロゴLED問題なし!
何色が好きですか?
可愛い感じになりましたね

LEDの裏側からの採光処理がうまくいってよかったです。

行わなかった作業が…

本来、 Cartreader V3の作成では、「Arduinoからパーツを2つ除去する」「ArduinoとCartreaderをケーブルで接続する」といった工程があります。

Arduinoからパーツを2つ除去する に関しては、Arduinoを壊してしまうリスクなどがありました。
また、 ArduinoとCartreaderをケーブルで接続する に関しては、パターンやパーツを剥離させてしまう事故などが起こり得ました。

今回、その工程がなかった理由は…

CARTREADER
USB Type-C

次回、

\Cartreader専用Arduino互換機/

USB Type-C搭載 Cartreaduino Mega 2560 をつくってみた!

2 COMMENTS

p0

魔改造っぷり、感服しました!
電解コンデンサの取付や、microSDモジュールのピン、N64ケーブルは確かに取って付けたような感じで不安でした。
sanni氏アイコンのLEDもかわいい!
次回記事楽しみにしています。

返信する
JL

ありがとうございます
のんびり更新ですが色々作っていこうと思います☺

返信する

JL へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です