あーさん日記

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

GB Dumper その1

今回フラックスを初めて使ってみたのですけど驚きの性能です。
半田にはマストアイテムでした。
f:id:akkera102:20170216211011p:plain


GBA Dumper Shield
ユーザが作った基盤をOSH Park内で公開していて、
ほしい人は注文することができます。
ただピンが順番に並んでいないのであまりおすすめしないです。
1/21 注文
2/16 到着
3枚2033円
f:id:akkera102:20170216211007p:plain


NDS版スロットの場合、そのままだとカードリッジに入りません。
両端をカットしないといけないです。
そのあたりは3番目の資料を見てください。

Cardridge - Arduino MEGA

VCC  -  5V
CLK  -  GND
WR   -  2
RD   -  3
CS   -  4

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
D0   -  38
D1   -  39
D2   -  40
D3   -  41
D4   -  42
D5   -  43
D6   -  44
D7   -  45

RST  -  5V
VIN  -  GND(配線しなくてもいいけど念のため)
GND  -  GND


ソースコード
github
全てのロムには対応していないです。ご注意ください。


・資料
http://www.slideshare.net/__106__/arduinogameboydump
https://github.com/106-/gbdumper
https://www.insidegadgets.com/projects/gameboy-cart-shield/

TD4 製作 その1

回路図(ページ下部)
部品リスト


TD4は情報豊富で大助かりです。
ただ2017年にもなると部品の入手が難しくなってきているようです。
・74HC154 → 74HC138を2個並べる
・D9-1C → DN9-1Cを使う


できればオリジナルを尊重したいのですけれど
ROMの配線の多さにちょっと泣きたくなるというか・・・。
回路図を見るともじゃもじゃって感じで気後れします。


簡略化する方法として、ATiny2313で作るという素晴らしい代案を発見しました。
これは目から鱗でした。
CPUを創る TD4への道 TD4の代わりのROM部分を作る


そこでふと、ATmega328pでも行けるんじゃないかと思うに至り、
ちょうど単体起動の勉強もしたいと考えていたのでグッドタイミングです。
ROM側の方が高性能という何とも言えない場違い感がいいですね・・・。


まずは回路図を自分で起こすことからしようと思います。

近況報告

毎度のことですけどアンテナが低くて何をしたものか、
悩んでいる今日この頃です。テンションもかなり低ーいです。
ジャパリパークに行きたい。。
ちょっと思ったことをそのまま垂れ流してみたいと思います。


■Arduboy
ネタがなくて休眠中です。条件としては
・1,2週間で作って離脱できる内容
・リソースに重きをおかないこと
・ツール作り過多にならないこと
・ネタとして面白いもの
と、贅沢言ってて全然前に進めないんですよね。。
p/eceの中の方はブレなく、発表をしているのを見てると羨ましく思います。


FPGA
大昔のALTERA DE1(SOCでない旧式)を押し入れから引っ張り出してきました。
今週の前半で「FPGAスタータ・キットDE0で始めるVerilog HDL」を消化。
応用編の「FPGAスタータ・キットDE0 HDL応用回路集」を購入して、書籍で使う部品を注文する予定です。


■KiCAD
スイッチサイエンスさんにマイファースト基盤を発注。
内容はGB, GBAのエクステンション基盤です。練習で自分も作ってみました。


初めはわけがわからず、眠気に襲われましたけど、
全体の作業工程を頭で描けるようになってから理解が早かったです。
特に「トランジスタ技術 2016年 7月号」のDVD動画は当たりでした。
文章では得られない情報が入っています。ぶっちゃけ紙面については、文章少なく、
もっとスクリーンキャプチャ多めの方がいいんではないかと思いました。


Fusion PCBなど、基板を格安で注文できるという、
ここ数年の革命を実体験できたのは大きいと思います。


■自作カードリッジ
FPGA, KiCADに手を出しているおかげか、
自作カードリッジ制作が現実的な位置まで来たかもしれないです。
敷居は下がったものの、ほしいかといわれるといらないというか・・・。


次の駒を進めるとして、Alteraチップの単体起動とLチカかな。
ただArduinoチップの単体起動の方が魅力的なので、まずそちらをしたいなあと思う次第です。


■GB吸出し機
GBは、GBAカードリッジスロットのピンの数と同じなんですね。
GBA SPでGB動いていましたし、当たり前っちゃ当たり前ですけど。
資料は出そろっているのでそのうちにblog記事にしようと思います。


吸出し関連の情報を見ていると、昔はCOMかプリンタポート。
OSのドライバの技術は必須でしたし、なんとも敷居が高いように思います。
Arduinopythongithubなどの登場は大きいと感じました。


ただ日本では技術情報があまりなく。古いからか、飽きれられた?
もしかしてネタにしてはいけなかったり?
・・・地雷を踏んでしまったかとちょっと心配していたりします。


CPUの創りかた
配線数が異常なのは写真でわかるので尻込みしてしまうですよね。
書籍だけで満足していた身としてはKiCADで軽減できないかなーと思うのですけど。
10cm x 10cmじゃ収まらないかなあ・・・。お値段が怖い。


■chibi:bit
原因不明のbluetoothバグでそのまま休眠中。
結局のところgccオフライン環境なんて用意するのではなく、
PXTなどのブロックを組み合わせて遊ぶのがいいのではないかと思いました。

KiCad メモ

スイッチサイエンスPCB

■グローバルデザインルールの設定
ブラインド/ベリッドビアの禁止
マイクロビアの禁止
最小配線幅:0.2mm
最小ビア径:0.65mm
最小ビアドリル径:0.3mm
最小マイクロビア径、最小マイクロビアドリル径はデフォルト値(0.2, 0.1)


■ネットクラスの設定
クリアランス:0.2mm
配線幅:0.25mm
ビア径:0.65mm
ビアドリル:0.4mm
最小マイクロビア径、最小マイクロビアドリル径はデフォルト値(0.3, 0.1)


■ファイル名
ドリルデータ : pcb_name.TXT

ボトムレイヤの名前 : pcb_name.GBL
裏面のソルダレジスト : pcb_name.GBS
裏面のシルク : pcb_name.GBO


基板外形 : pcb_name.GKO

トップレイヤの名前 : pcb_name.GTL
表面のソルダレジスト : pcb_name.GTS
表面のシルク : pcb_name.GTO


※ファイル一覧があるフォルダをzipする


■発注
表面処理  : 鉛入り半田レベラー
レジスト色 : 緑
銅箔厚   : 1oz
層数    : 2
最大外形  : 最大10cm×10cm
基板枚数  : 5
基板の厚み : 1.6mm

参考リンク
http://www.kicad-de-kiban.net/archives/arduino7.html
http://www.kicad-de-kiban.net/archives/dcjack17.html
http://www.kicad.xyz/
https://tech.nosuz.jp/category/%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C/kicad/


書籍
トランジスタ技術 2016年 7月号

GBA Dumper その3

https://www.insidegadgets.com/2016/12/06/gbxcartread-part-1-design-and-testing-gameboy-carts/
https://www.insidegadgets.com/2016/12/25/gbxcartread-part-2-switching-to-ch340g-gba-rom-reading-sram-readwrite-and-determining-sizes/
https://www.insidegadgets.com/2017/01/22/gbxcartread-part-3-gba-eeprom-readwrite-flash-write-and-determining-sizes/


ちょうどタイムリーに調べている方のblogを発見しました。なんという幸運。(^^;
英語読めなくてもコードでなんとなくわかりました。


ROMサイズの確定方法は、ヘッダ情報にないから自前で実装するしかないですよね。
他の方のやり方を見れてなるほどと思いました。


SRAM, EEPROM, FLASHまで調べているのでpart2, part3は必見です。
知識欲をかなり満たせてくれます。

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で作っちゃダメですね・・・こりゃ。