Cartreader(Cartridge Reader)用 クロックジェネレータ補正基板をつくった!

📰この記事はプロモーションを含みます

⏰この記事は約 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さんへ発注して作って試してみて頂けたらと思います。

それではまた次回、機会がございましたら、お読みいただければ幸いです~👋🏻

コメントを残す

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