あーさん日記

https://akkera102.sakura.ne.jp/gbadev/ の中の人

GBA Dumper その2

f:id:akkera102:20170127205252p:plain
Arduino DUE + python pyserialで作りました。
ただ、実用性無視なので16MB吸い出すのに41分(!)かかります。
仕組みだけ知りたかったのでこれ以上はやらない予定です。



f:id:akkera102:20170127205300p:plain
今回はかなりの力業でした。
スロットピンとケーブルの接続に根気よく半田づけしたり、
何度隣のピンとくっ付けたことか。。悪夢の何物でもないです。


Dumper Shieldを素直に買えばよかったと後悔しています。
というか今、注文中なので届いたらもう1つ作ってみる予定です。
https://oshpark.com/profiles/shinyquagsire


部品の調達について。
実は、GBAのスロットには2種類あります。GBA版(ピン2列)とNDS版(ピン1列)です。
作りやすさでいえばNDS版一択。
aliexpress、(ちょっと高いですけど)アマゾンjpで購入できます。



マリ○カート、リ○ィエラ、ミスタード○ラーは確認済みです。
github

SLOT --- Arduino DUE
VDD      3.3v
PHI      -
/WR      2
/RD      3
/CS      4

AD0-AD15 22-37
A16-A23  38-45

/CS2     5
/REQ     -
GND      GND

参考リンク
http://douevenknow.us/post/68126856498/arduino-based-gba-rom-dumper-part-1
https://github.com/shinyquagsire23/GBA-GB-ROMDumper
https://robinwieschendorf.de/2016/04/gameboy-advance-rom-dumper-mit-arduino-uno/
https://github.com/RobinTheHood/GameboyAdvanceRomDumper


回路図やコードを参考にするのはいいのですけど、
UNOとMEGAで作るのは良くないと思っています。
理由は前回のログを参照願います。

GBA Dumper その1

f:id:akkera102:20170124000103p:plain
次はGBAです。blogのタイトルにもなっているですし
やらなきゃならないだろうと思いました。
SNESはネタがないので休眠中です。


吸出しは無事成功。
ただし、1点困ったことはArduino MEGA VCCの5vを使用しています。
GBAのカードリッジは3.3vで動作しています。実機で確認しました。


仮にVCC 3.3vでダンプすると、信号が安定せず、
大雑把に10バイト毎に取りこぼしが1個ぐらい出てきます。
再度やり直しても取りこぼし位置は同じです。


んー、参考元のページにも似たようなことが書いてあります。
そもそもArduino MEGAで接続している時点でアドレス出力は5V
対してデータ読み取りは3.3V?電圧が原因?


追記:
たまたまカードリッジが5V対応していて、吸い出せただけのような気がしてきました。
作るなら動作電圧3.3VのArduino Dueが正しい気がします。
ちょっと購入して作り直してみます。


追記2:
Arduino Dueで作り直してみたところ取りこぼしがなくなりました。
MEGAやUNOで作っちゃダメですね・・・こりゃ。

こーどねーむ「ホンコン」 with Arduino を作る

f:id:akkera102:20170119145133p:plain
SNES APU繋がりでちょっと作ってみました。


非常にわかりやすい回路図と、ソースコードだったので素人でも大丈夫でした。
こちらはArduino MEGAを使って部品数を少なくしています。


■部品
・2.54mmピッチカードエッジコネクタ(片側23ピン以上)
http://la04528673.shop-pro.jp/?pid=100749508

・エクステンション基盤
http://la04528673.shop-pro.jp/?pid=100750411

・スペーサー
http://akizukidenshi.com/catalog/g/gP-01861/

・ピンヘッダ
http://akizukidenshi.com/catalog/g/gC-00167/

・ケーブル
http://akizukidenshi.com/catalog/g/gP-03471/


この中で外せないものはやはりM.A.D.さんのエクステンション基板です。
ピンヘッダを半田するだけで済み、ケーブルをちまちま繋げることがなく
楽にできました。m(__)m
f:id:akkera102:20170119145223p:plain
f:id:akkera102:20170119145214p:plain
※基盤の真ん中にはピンヘッダを付けないようにしてください。
カードリッジと接触します。

■配線

Cardridge - MEGA

D0   - 2
D1   - 3
D2   - 4
D3   - 5
D4   - 6
D5   - 7
D6   - 8
D7   - 9

A0   - 22
A1   - 23
A2   - 24
A3   - 25
A4   - 26
A5   - 27
A6   - 28
A7   - 29
A8   - 30
A9   - 31
A10  - 32
A11  - 33
A12  - 34
A13  - 35
A14  - 36
A15  - 37
BA0  - 38
BA1  - 39
BA2  - 40
BA3  - 41
BA4  - 42
BA5  - 43
BA6  - 44
BA7  - 45

!OE  - 10
!CS  - 11
!WE  - 12
!RST - 13

Vcc1 - 5V
Vcc2 - 5V
GND1 - GND
GND2 - GND


■inoファイル
https://github.com/akkera102/snes_01_dump


■使い方
吸出しの実行はオリジナルのプログラム(WinHongKongArduino)を使いました。


■オリジナル版(たにやま氏 製作)
http://hongkongarduino.web.fc2.com/

SNES APU その3

f:id:akkera102:20170113153409p:plain
https://developer.mbed.org/users/akkera102/code/apuplay/

mbed版作りました。
raspberry pi b+に比べてノイズ少なく、
ピンの列が順番に並んでいるので作りやすいと思います。


ちなみにソースコードは(勉強の為)写経しつつ、相当書き換えました。
劣化移植と思ってください。演奏のみなら同じです。


ジャンパワイヤがちょっと特殊です。
f:id:akkera102:20170113153802p:plain
よくブレッドボードに使われるケーブル(左側)は取っ手部分が太い為、
APUのポートに並べると接触します。使えないのでご注意ください。

SNES APU その2

f:id:akkera102:20170108012805p:plain
再度作り直し・・・。raspberry pi b+ 有線LAN+SSH接続で動作できました。
ソースコードは修正しなくて大丈夫です。


追記:
CPU、SDカードの動作(負荷時)にノイズが乗っています。
スピーカーで聞く分にはいいですけどイヤホンだとキツめ。

SNES APU その1

ネタにしていいのか良くわからないのですけど、動作報告です。
raspberry pi b+でできました!・・・ただ、問題もありました。。
f:id:akkera102:20170105212007p:plain


timeoutが頻繁に起こります。
原因は無線LANアダプター(WN-G150UMK)を使って
tera term経由(SSH)で構築したせいです。自業自得。
おそらくAPUの電気消費量が半端なく、配給が追いつかないと思われます。


timeout_msをちょこちょこ変えつつコンパイルしていたら、
そこそこ動くようになりました。


最終的にPCとシリアル接続で落ち着いています。
イヤホンジャックは持っていないので秋月で注文中。
ようやくraspberry piの本来の使い方を見つけたような気がします。