arduinogbdumpというやつを使うと、Arduino Microと64GBパックを接続したコントローラーブロスでゲームボーイカセットのROMとセーブデータを吸い出すことができます。
スーパーゲームボーイや64GBパックを分解して差し込み口を取り出して線を何十本も繋ぐということをしなくて済むので非常に手軽に吸い出しができます。
Ubuntu(Linux)の環境が必要になります。VirtualBox上でもOKでした。
ArduinoはATmega32U4が搭載されているもの(Leonardoとか)ならMicroでなくても使えるようですが、確認はしていません。Arduino Megaでもできるようです。
また、3.3Vが必要になるので3.3VピンがないArduinoの互換機などでは3.3Vを作るのにレギュレータがついた降圧モジュールが必要になるでしょう。多分 やってないから知らんけど
--- ⚡ ---
目次[非表示]
必要なもの
- Ubuntuが動くパソコン Virtualboxの仮想環境でもいい
- 64のコントローラーブロス
- 64GBパック
- ATmega32U4が搭載されているArduino
- (3.3VピンがないArduinoの場合) 3.3V降圧モジュール
- 線
- プルアップ抵抗(1KΩ)
手順
UbuntuにArduino IDEをインストール
Arduino IDEはArduinoの公式サイトからダウンロードする事もできますが、Snapストアにあるものを使ったほうが簡単そうです。
Install arduino on Linux | Snap Store
Arduinoとシリアル通信をする際にユーザーがdialoutのグループに所属していないと権限の関係でエラーになるのですが、Snapストアにあるほうをインストールした場合にはIDEの初回起動時にそこらへんをちゃんと処理してくれます。(IDE初回起動のあとはUbuntuを再起動してください)
もしそうならなかった場合はターミナルから
sudo usermod -a -G dialout $USER
と入れてUbuntuを再起動することで解決します。
arduinogbdumpのスケッチを書き込む
Arduinoをパソコンに接続します。
VirtualBoxを使っている場合は左下のUSBのアイコンを右クリックすると出てくるメニューからArduino Microを選べばゲストOS(Ubuntu)側にArduinoが接続されます。
githubからダウンロードしたarduinogbdumpのzipから /src/arduinogbdump/arduinogbdump.pde をArduino IDEで開いてArduino Microに書き込みます。特にエラーもなく普通にできるはずです。
配線する
次は64のコントローラーに配線します。いい感じにコネクタの穴にフィットする線を突っ込んでクリップ付きリード線でつなぐなりしてください。
コントローラーのコネクタは平らになっている部分を下として左からGND, DATA, VCCになっています。
- Arduinoの3.3VピンをコントローラーのVCCに
- Arduinoの2番ピンをDATAににつないで、プルアップ抵抗(1KΩ)もArduinoの3.3Vからつなぎます。
- ArduinoのGNDはGNDに
Fritzingで図にしてみました!
配線できればハード側の準備は完了!
communicatorのビルド
次は通信ソフトにあたるcommunicatorをビルドする必要があります。
githubからダウンロードしたarduinogbdumpのzipを展開して
ターミナルで /src/communicator/ に移動してから make と入れればビルドされるのですが、やろうとしてもmakeやらg++がないと言われてビルドできません。
sudo apt install g++ make
で必要なものをインストールします。そのあとmakeできるようになります。
make
makeするとcommunicatorがビルドされます。
実際に吸い出す
ビルドしたcommunicatorは
./communicator
で実行できます。実行するとusageが出るのでコレに従って使います。具体的には
./communicator /dev/ttyACM0 dump_rom rom.gb
で "rom.gb" というファイルとしてROMが吸い出されるはずです。
しかし、このまま実行してもいろんなエラーが発生しまくって全く話になりません。
ここからがミソ。
Arduino IDEでシリアルモニタを開いてボーレートから 115200 bps を選択してからシリアルモニタを閉じます。
すると理由はよくわかりませんが、communicatorがArduinoとちゃんと通信できるようになります!
ROMの容量にもよりますが、吸い出しにはまあまあ時間がかかります。
吸い出せたらROM Checker(Windows専用)でチェックサムを確認すると良いでしょう。
ROMチェッカー (ヘッダ情報 HEADER INFO NES/FDS/SMC/N64/GB/GBA/SMS/SMD/GG/PCE/MSX/WS/NGP)
チェックサムが一致しました。 と出ていれば吸い出しが正しく成功したことになります。
セーブデータの吸い出し
./communicator /dev/ttyACM0 dump_ram rom.sav
で "rom.sav" というファイルに吸い出されます。
吸い出したセーブデータをエミュレーターで確認したいなら mGBA が良いです。こちらもSnapストアからインストールできます。
Install mgba on Linux | Snap Store
ちゃんと実機と同じデータが吸い出せてました。
ポケモンじゃないゲームでも試してみた
ゲームボーイカラー専用ソフトでも問題なく吸い出せました。
0 件のコメント:
コメントを投稿