📰この記事はプロモーションを含みます
⏰この記事は約 9 分で読めます
こんにちは、JLです。
今回は、Cartreader(Cartridge Reader)用のクロックジェネレータ補正基板をつくってみたお話です。
吸い出し機である、Cartridge Readerで使用するものなので、Cartridge Reader Alterをつくってみたお話も、ぜひ読んでみてくださいね。
クロックジェネレータは何をしてるの?
さて、Cartreader(Cartridge Reader)に接続する「クロックジェネレータモジュール」。
そもそも一体何?というところですが、主に、SNES(SFC)の特殊チップを使用したカートリッジのロック解除と、Nintendo64のEEPROMの吸出しに使用します。
この「SNES(SFC)の特殊チップを使用したカートリッジのロック解除」が結構シビアで、吸い出しに失敗してしまったりするのですが、クロックジェネレータの周波数を規定値に近づけることで、成功率を上げることができます。
クロックジェネレータの補正?
クロックジェネレータのキャリブレーション(補正)方法ですが、CartreaderのWikiに記載されています。
Once the calibration function was loaded press one end of a jumper wire against SNES slot pin 43(A18/BA2) and the other end of the wire against one of the following pins and it should read those values:
- 3072000.00 Hz when connected to SNES slot pin 56(CIC Clock)
- 4000000.00 Hz when connected to SNES slot pin 1(EXT Clock)
- 1000000.00 Hz when connected to SNES slot pin 57(CPU Clock)
こんな感じなのですが…🤔ってなりますね。
要は、
・SNESの43番ピンと56番ピンを繋いだ時、3072000.00 Hz
・SNESの43番ピンと1番ピンを繋いだ時、4000000.00 Hz
・SNESの43番ピンと57番ピンを繋いだ時、1000000.00 Hz
になるように補正をするといいようです。
…しかし、実際にやってみようとすると「えっと~このピンは…40…41…?」という感じで、現在地が迷子になります😥
けっこう数えるのも大変なので、今回はこの補正作業を支援する基板をつくってみました。
PCBを発注
今回も、JLCPCBさんに発注しました。
👆🏻👆🏻👆🏻のリンクからの新規登録限定で54ドルのクーポンが貰えます。
また、TwitterでJLCPCB日本(@JLCPCB_Japan)をフォローしてDMを送ると、さらに$10のクーポンも貰えます。
安く楽しく簡単に基板が作れちゃうので、ぜひ試してみてくださいね!
SNES(SFC)のスロットで使用するので、今回の基板の厚みは、1.2mmに変更しました。
週末を挟んでいましたが、3日くらいで発送されました。
基 板 到 着
海を渡り、無事到着。
今回発注した基板はこんな感じです。
中央にスイッチを取り付け、切り替える感じになります。
部品紹介
というわけで、取り付けるスイッチはこちらになります。
切り替えポイントの位置で、周波数が確認できるようにシルクプリントしました。
それでは、サクッと取り付けていきましょう。
はんだ付け
基板にスイッチをはんだ付けします。今回は4点のみなので簡単ですが、斜めになってしまわないように気を付けながら取り付けました。
取り付けが完了したので、Cartreader(Cartridge Reader)で実際に確認していきましょう。
Cartreader(Cartridge Reader)の設定変更
Cartreader(Cartridge Reader)は、デフォルトだとクロックジェネレータのキャリブレーション機能がオフになっています。
そのため、スケッチを更新するのと同じような手順で、スケッチの一部を変更した上で、Arduinoに書き込む必要があります。
せっかくなので、まずは、Cartreader(Cartridge Reader)の最新バージョン(記事執筆時V10.2)をダウンロードしてきます。
ダウンロードしたら、Cart_Reader.inoを変更していきます。
まずはハードウェアバージョンを変更します。私の現環境がCartreader(Cartridge Reader)AlterなのでHW3に設定します。
#define HW3の前の // (コメントアウト)を外します。
//******************************************
// !!! CHOOSE HARDWARE VERSION !!!
//******************************************
// Remove // in front of the line with your hardware version
// #define HW5
// #define HW4
#define HW3
// #define HW2
// #define HW1
// #define SERIAL_MONITOR
そして、キャリブレーション機能を有効にしましょう。
#define clockgen_calibration の前の // (コメントアウト)を外します。
// Use calibration data from snes_clk.txt
#define clockgen_calibration
編集が終わったら、Cartreader(Cartridge Reader)Alterに接続しているCartreaduino 2560にスケッチを書き込みます。
実際にためしてみよう
というわけで、準備が整いました。
まずは、今回作成したキャリブレーション支援基板をCartreader(Cartridge Reader)AlterのSNES(SFC)スロットに挿します。
そして、Cartreader(Cartridge Reader)Alterの電源をいれ、メニューから
SNES/SFC (CLK0+1) → Calibrate Clock
と選択して、キャリブレーションに進みます。
1000000.00 Hzの状態での初期値はこんな感じでした。ふわふわと発振をし続けているため誤差はありますが、200Hzほどズレています。
それでは実際に操作して、キャリブレーションを試してみます。
操作方法はこんな感じです。
左ボタン(1回) : 補正値を減らす
右ボタン(1回) : 補正値を増やす
左ボタン(2回) : 補正値の増減単位を減らす (1000→100→10…)
右ボタン(2回) : 補正値の増減単位を増やす (10→100→1000→10000…)
ボタン長押し : 補正値を保存する
Correctionが現在の補正値、Adjustmentが増減単位です。
増減単位を増やすことで、右ボタンを1回押すだけで1000ずつ加算したり、逆に増減単位を減らすことで、10ずつ細かく調整したり…といったことが可能になります。
ポチポチしながら、数値を増やしたり減らしたりしながら、1000000.00 Hzの状態でうまく合ってきたら、スイッチを切り替えて3072000.00 Hzの様子を見て…と、いい感じの値になるように調整します。
補正完了!
補正値を222110にしたあたりで、大体の数値が合ったので調整を終わることにしました。
このあと実際にSFCのSA-1チップを搭載したゲーム(星のカービィ スーパーデラックス)を試してみましたが、問題なく吸い出しすることができました!
◽◽◽
というわけで、今回は、Cartreader(Cartridge Reader)用のクロックジェネレータ補正基板をつくってみたお話でした。
今回の基板データ(Gerber)に関して、準備が出来次第配布させていただきますので、もしよろしければ、実際にJLCPCBさんへ発注して作って試してみて頂けたらと思います。
それではまた次回、機会がございましたら、お読みいただければ幸いです~👋🏻