FT232Hを用いたN64吸出し機
ファミコンはKazzo、スーファミはHongKongArduinoとUSB接続の吸出し機が公開されていました。しかし、N64は自作向けの回路とソフトが存在せず、吸出しには入手が難しいPAR3を使ったパラレルポート経由の方法しかありませんでした。最近になってsanni氏の Nintendo cart readerが登場し、SDカードでの吸出しが可能になりました。しかし、ArduinoMegaを所有してないことと基盤の発注が面倒ということで、Nintendo cart readerを参考に、もっとシンプルなものを作ってみました。
リポジトリ: https://github.com/RGBA-CRT/FT232H-N64-Dumper
FT232HとMCP23S17を用いることで部品点数も少なく作れ、約400KB/sという高速な吸出しができます。
部品
- FT232H(AE-FT232HL) http://akizukidenshi.com/catalog/g/gK-06503/
- MCP23S17 http://akizukidenshi.com/catalog/g/gI-10644/
- 2SA1015
- LED2個
- 10KΩ、100Ωの抵抗
- 50pinカードエッジコネクタ
- EEPROMサポート回路 (2023/02/12追記、v1.0からの追加回路、省略可)
- 74HC74 (1/4の分周回路であれば何でもOK)
- 小信号用スイッチングダイオード 2個
- S_DATプルアップ抵抗 2.2KΩ
回路図
FT232HのACバスにアドレスバスの下位、MCP23S17のGPIOAに上位を担当させ、ADバスでコントロールピンを制御させるという比較的単純な回路です。
保護系やパスコンをどう入れればいいのかわからなかったのでつけていませんが、動作に問題がなかったのでそのままにしています。問題があればご指摘ください。
注意事項
- 回路図のセーブデータ保護回路はなくても動きまが、セーブデータが消えやすくなります。
- セーブデータ保護回路を省く場合は、N64のVCCに直接VCCをつなげます。
- セーブデータ保護回路はついていますが、セーブデータが消えることを覚悟のうえで使用してください。
- Windows側でソフトを立ち上げ、[INSERT CART AND PRESS ENTER]の表示が出るまでカートリッジは挿入しないでください。
- 吸出し中や、アクセスLEDが点灯中はカートリッジを抜かないでください。
- ESCキーで吸出し作業の中断ができます。
- AE-FT232HLのジャンパはすべてショートしてください。
- EEPROMの設定はこちらFT232H-EEPROM-config
画像 (※旧verのころの回路)
以上です。詳しくは Githubリポジトリで。
この記事を参考に回路図を真似て、素人なりに作ってみたのですが、
Rom Infomation の
[INSERT CART AND PRESS ENTER]
N64 ROM Infomation
Title :
GameID : NUS-
Version : 1.255
CRC1 : FFFFFFFF
CRC2 : FFFFFFFF
EntryPoint : FFFFFFFF
Compression : NO
[推定]ROM Size0x:00000000 -> 0MB
の表示で、なにもさしていない状態が出てしまい、うんともすんとも進まず吸出し自体をあきらめかけていたところ、
思い切って質問してみた次第であります。
こちらで使用しているN64のエッジコネクターの50ピンは
CR22-50D-2.54DSA(70)
https://www.hirose.com/product/jp/products/CR22/CR22-50D-2.54DSA%2870%29/
を使用しています。
実際に配線している図を参考にしたいのですが、
そちら写真を掲載、またはメールで頂くことは可能でしょうか?
お忙しいところ恐縮ですが、ご連絡をお待ちしています。
初めましてRGBA_CRTです。制作を試してくださりありがとうございます。
RomInfoからするとFT232Hからのデータがすべて0xFFになっており、まったくデータが読めていないようですね。
エッジコネクタについては、私も2.54 mmの物を使っていますので問題はないと思います。
まず、問題を切り分けるためにAD0~AD15のどれかに適当な銅線を使ってGNDを当ててみてください。
RomInfoが変化するとしたら、カートリッジ側が応答していません。セーブデータ保護回路や、RomInfo表示時にカセットに3.3Vが供給されているか確かめてみてください。
また、AD0~7では変化するのに、AD8~15は反応しない。MCP23S17のGPB3がRomInfo読み取り中でもHigh/Lowの変化がない。といった症状ではMCP23S17が動作していません。電源周りとSPIの接続が正しくない可能性があります。
また、回路図が間違っている可能性も考えられるので、FT232HやMCP23S17、N64コネクタのピンアサインを他サイトでも確認してみてください。もし間違っていればごめんなさい。教えていただければ直します。
MCP23S17のピンアサイン
http://ww1.microchip.com/downloads/jp/DeviceDoc/20001952C_JP.pdf
N64カートリッジスロットのピンアサイン
http://n64.icequake.net/mirror/www.crazynation.org/N64/
記事に基板の拡大画像を載せてみました。スパゲッティですが参考にしてみてください。
念のため、exeファイルの最新版も試してみてください。
https://github.com/RGBA-CRT/FT232H-N64-Dumper/raw/master/N64-Dump.exe
吸出し機が完成することを願っています。よろしくお願いします。
Yです。
ご連絡いただきありがとうございました。
なんとか配線をよく見て気づいた点がありまして、
MCP12S17のGBA0~7 と AD8~15の線、
FT232HのAC0~7 と AD0~7の線、
をそれぞれ一つの線でまとめていたのが原因でした。
別々の線で配線しなおしたら、見事ROMを読み込めました。
また、N64-Dump.exeは2016/9/6のもので吸い出せました。
保護回路部分は省略しました。いずれ今度上手く組んでみたいと考えています。
早々にご連絡いただきありがとうございました。
また素晴らしい記事に感謝しています。
何とか動作したようでよかったです。
回路図のバスの表現がわかりづらかったですね。すみません。
セーブデータ保護回路をつけない状態では、時のオカリナなどのSRAMを搭載したゲームのセーブが高い確率で消えるので注意してください。
また何かあればご質問ください。ありがとうございました。
先日こちらの記事を参考にセーブデータ保護回路有りで自作してみました。
無事手持ちのカセットのほとんどを吸い出しできました。
セーブデータについては64実機を準備するのが億劫で保護できているか確認は取れていませんが、おかげさまで快適な吸い出しが出来ています。
ありがとうございます
はじめまして。RGBA_CRTです。コメントありがとうございます。
うまく動いたようで良かったです。
セーブデータについては、SRAM採用のソフト(よく消える)が少ないことと、保護回路がついているのでおそらく大丈夫じゃないかと思います。
手持ちの殆どのソフトを無事に吸い出せました。
有難うございます。
しかし何故かマリオストーリーのみゲームを起動できませんでした。
project64では「不明なメモリアクション」とエラーが出てしまいます。
吸い出しソフトの画面にはこのように書かれています
N64 ROM Infomation
Title : MARIO STORY
GameID : NUS-NMQJ
Version : 1.0
CRC1 : 3BA7CDDC
CRC2 : 464E52A0
EntryPoint : 80125C00
Compression : NO
[推定]ROM Size0x:04000000 -> 64MB (some as header)
他のソフトはサイズが32Mbくらいまでですが、これだけ64Mbあります。
吸い出しが上手く行ってないのでしょうか?
宜しければご助言頂けると嬉しいです。m(_ _)m
ROM Checkerを使いサイズを320Mbit にリサイズしたら正常に読み込めるようになりました。
失礼致しました。
有難うございました。
ROM Checkerを使いサイズを320Mbitにリサイズしたら正常に読み込めるようになりました。
失礼致しました。
有難うございました。
こちらでも確認してみたところ、ROMサイズ推定機能にバグが見つかりました。修正後、マリオストーリーだけでなく電車でGoなど他のソフトも正常に吸い出せるようになりました。
情報ありがとうございました!
本記事を参照させて頂き、これから自作をしたいと考えております。
Githubを参照させて頂き、疑問に感じた点を質問させてください。
・Circuit v1.0 upgradeについて
下記変更を加えた理由を教えて頂けないでしょうか。
- Joybus CLKの接続先を変更 (edge connector pin 19)
- Joybus DATの接続先を変更 (edge connector pin 21)
Circuit v0.0では、EEPROM CLK Genが不要ですので、部品点数が減るメリットがあると思います。
Circuit v0.0の構成だと、どんな問題が発生しますでしょうか。
Circuit v1.0の修正がmustであれば、v1.0のように対応したいと思いますが、
wantであれば、v0.0の構成で進めたいです。
・参考までに、Circuit v1.0で使用されているEEPROM CLK Genの部品型番を教えて頂けないでしょうか。
記事投稿者のRGBA_CRTです。
作成のご検討&ご質問ありがとうございます。
すみません, 回路v1.0についてREADME, Wikiの記述が全体的に説明不足でした。(更新入れておきました。)
以下、回答になります。
> ・Circuit v1.0 upgradeについて
> 下記変更を加えた理由を教えて頂けないでしょうか。
> - Joybus CLKの接続先を変更 (edge connector pin 19)
> - Joybus DATの接続先を変更 (edge connector pin 21)
多数のゲームのセーブデータの保存に使われているEEPROMの吸い出しに対応するための変更になります。
回路を省略した場合、EEPROMの吸い出しができなくなります。SRAMと違い破損しやすくなることはありません。
ROM吸い出しのみが目的で、EEPROM対応が不要であれば回路は省略しても問題ありません。
もし省略する場合、WikiにEEPROM CLK Gen省略時の配線について記載しましたのでご覧ください。
https://github.com/RGBA-CRT/FT232H-N64-Dumper/wiki/Circuit-v1.0#eeprom-clk-gen
>・参考までに、Circuit v1.0で使用されているEEPROM CLK Genの部品型番を教えて頂けないでしょうか。
汎用ロジックICの7474、2回路Dフリップフロップです。私はTC74HC74APを使用しています。
早速のご回答ありがとうございます。
またgithubへのコメント追記ありがとうございます。
Circuit v1.0 upgradeの意図について理解できました。
より汎用性を高めた設計にしたこと、対応しない事の弊害も理解できました。
また、CLK Genの部品型番情報ありがとうございます。
部品の入手が出来れば、Circuit v1.0で作成を進めたいと思います。
連投失礼致します。Circuit v1.0回路図の配線について質問させてください。
MCP23S17 (GPA0~7) - N64 CART SLOT (AD8~15)間の配線について、
どのように接続すれば良いでしょうか。
例えば、GPA0(21pin)はN64 CART SLOTの何pin目と接続すれば良いでしょうか。
AE-FT232HL(AC0~7) - N64 CART SLOT(AD0~AD7)間についても同様に質問させて頂きたいです。
図がわかりにくくなっておりすみませんでした。
FT232HのAC[0:7]がAD[0:7],
MCP23S17のGPA[0:7]がAD[8:15] に対応します。
例えば、GPA0はAD8(pin16)と対応します。
バスの配線詳細を回路図に反映しましたので御覧ください。
先程回路図を更新しました。
ROM吸い出しの安定化のため、Joybus-UART-TXのダイオードを追加しています。
もしまだ部品購入前でしたら入れていただければと思います。(もしなくても大体のゲームは大丈夫だと思います。)
諸々の不備でご迷惑おかけしてしまいすみません。よろしくお願いいたします。
回路図の更新、誠にありがとうございます。
丁寧に記載頂きましたお陰で、配線について理解できました。
ダイオードの追加の件も了解しました。
部品調達に少し時間が掛かりそうですが、これから回路作成&動作確認を行う上で
気付いた内容があれば別途フィードバックさせて頂きたいと思います。
宜しくお願い致します。
Githubリポジトリで、masterリポジトリをCloneしたところ、exeファイルにTrojanウイルスが含まれているようでした。。。
報告ありがとうございます。
確かに、各種アンチウィルスソフトやGoogleDrive、Windows DefenderでTrojan:Win32/Wacatac.H!mlとして判定されるようです。
(Mさんの環境で出た検出名と一致していますか?)
参考、VirusTotalの結果(at commit f03cd1af):
https://www.virustotal.com/gui/file/443b03b9d0ba6f9d78191982946f203472dacaf5b9bb1546123feaeb65a10608
自分の環境でいろいろ調査したのですが問題はなさそうです。
昔から同人ソフトウェアは利用者が少ないためウィルスと誤検出されることが多く、最近は機械学習も取り入れているためより誤検出の確率が高くなっています。
Trojan:Win32/Wacatac.H!mlで検索するといろいろと事例が見つかります。
些細な違いで検出されたりされなかったりしますので、変更を入れたverで先ほど更新しましたので、再度Downloadしてお使いください。
それでも検出されるようなら例外に設定してください。
また、不安が強いようでしたらソースコードからビルドすることも可能です。手順がわからなければお聞きください。
確かに私が検出したのも"Trojan:Win32/Wacatac.H!ml"でした。
検出元もMicrosoft Defenderでしたので、認識一致していると思います。
修正版のソフトリリースありがとうございます。
修正後のものでは脅威の検出がなくなっている事を確認しましたので、こちらを使用させて頂きたいと考えております。
ご対応頂きありがとうございます。