Submit Search
Upload
Arduinoを使ったgameboyカードリッジのdump
•
2 likes
•
3,800 views
_
__106__
Follow
arduinoを使ってゲームボーイのカードリッジからデータを吸い出します
Read less
Read more
Devices & Hardware
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 20
Download now
Download to read offline
Recommended
ゲームAI製作のためのワークショップ(III)
ゲームAI製作のためのワークショップ(III)
Youichiro Miyake
ゲームシナリオ構成法 2015版
ゲームシナリオ構成法 2015版
小林 信行
30歳過ぎてもエンジニアでいるためにやったこと
30歳過ぎてもエンジニアでいるためにやったこと
onozaty
DNNコンパイラの歩みと最近の動向 〜TVMを中心に〜
DNNコンパイラの歩みと最近の動向 〜TVMを中心に〜
Takeo Imai
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
Sho Iwamoto
ゲームの面白さを解明する ―構造化IRFモデルと自動ゲームデザインの未来―
ゲームの面白さを解明する ―構造化IRFモデルと自動ゲームデザインの未来―
井戸 里志
ゲームの楽しさを図式化する ―楽しさを網羅的に分類する「主体性構造モデル」
ゲームの楽しさを図式化する ―楽しさを網羅的に分類する「主体性構造モデル」
井戸 里志
ゲームAI入門(前半)
ゲームAI入門(前半)
Youichiro Miyake
Recommended
ゲームAI製作のためのワークショップ(III)
ゲームAI製作のためのワークショップ(III)
Youichiro Miyake
ゲームシナリオ構成法 2015版
ゲームシナリオ構成法 2015版
小林 信行
30歳過ぎてもエンジニアでいるためにやったこと
30歳過ぎてもエンジニアでいるためにやったこと
onozaty
DNNコンパイラの歩みと最近の動向 〜TVMを中心に〜
DNNコンパイラの歩みと最近の動向 〜TVMを中心に〜
Takeo Imai
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
Sho Iwamoto
ゲームの面白さを解明する ―構造化IRFモデルと自動ゲームデザインの未来―
ゲームの面白さを解明する ―構造化IRFモデルと自動ゲームデザインの未来―
井戸 里志
ゲームの楽しさを図式化する ―楽しさを網羅的に分類する「主体性構造モデル」
ゲームの楽しさを図式化する ―楽しさを網羅的に分類する「主体性構造モデル」
井戸 里志
ゲームAI入門(前半)
ゲームAI入門(前半)
Youichiro Miyake
自己組織化ゲーム
自己組織化ゲーム
Kiichi Kajiura
ゲーム制作初心者が知るべき8つのこと
ゲーム制作初心者が知るべき8つのこと
MASA_T_O
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
Yasuharu Seki
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
Fixstars Corporation
老害について
老害について
Ken SASAKI
Fpsにおけるレベルデザイン web u_pver
Fpsにおけるレベルデザイン web u_pver
Yoshihiko Nozawa
Gpu vs fpga
Gpu vs fpga
Yukitaka Takemura
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
Shinya Takamaeda-Y
カンバンゲーム ルール説明
カンバンゲーム ルール説明
Yasui Tsutomu
QEMUでARM64bitベアメタルプログラミング
QEMUでARM64bitベアメタルプログラミング
Yuma Ohgami
TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介
Takeo Imai
ゲームAIの中の数学(上)
ゲームAIの中の数学(上)
Youichiro Miyake
サムライスピリッツキャラクター制作事例 アニメーション編
サムライスピリッツキャラクター制作事例 アニメーション編
SNK
ゲームAIの基礎と事例
ゲームAIの基礎と事例
Tomoaki TSUCHIE
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
simotin13 Miyazaki
カンバンゲーム
カンバンゲーム
Yasui Tsutomu
適度に弱い敵aiの作り方
適度に弱い敵aiの作り方
dodoyuzo
ゲームAI入門(後半)
ゲームAI入門(後半)
Youichiro Miyake
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
uchan_nos
OSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUG
Hideki Aoshima
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Junichi Kakisako
More Related Content
What's hot
自己組織化ゲーム
自己組織化ゲーム
Kiichi Kajiura
ゲーム制作初心者が知るべき8つのこと
ゲーム制作初心者が知るべき8つのこと
MASA_T_O
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
Yasuharu Seki
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
Fixstars Corporation
老害について
老害について
Ken SASAKI
Fpsにおけるレベルデザイン web u_pver
Fpsにおけるレベルデザイン web u_pver
Yoshihiko Nozawa
Gpu vs fpga
Gpu vs fpga
Yukitaka Takemura
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
Shinya Takamaeda-Y
カンバンゲーム ルール説明
カンバンゲーム ルール説明
Yasui Tsutomu
QEMUでARM64bitベアメタルプログラミング
QEMUでARM64bitベアメタルプログラミング
Yuma Ohgami
TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介
Takeo Imai
ゲームAIの中の数学(上)
ゲームAIの中の数学(上)
Youichiro Miyake
サムライスピリッツキャラクター制作事例 アニメーション編
サムライスピリッツキャラクター制作事例 アニメーション編
SNK
ゲームAIの基礎と事例
ゲームAIの基礎と事例
Tomoaki TSUCHIE
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
simotin13 Miyazaki
カンバンゲーム
カンバンゲーム
Yasui Tsutomu
適度に弱い敵aiの作り方
適度に弱い敵aiの作り方
dodoyuzo
ゲームAI入門(後半)
ゲームAI入門(後半)
Youichiro Miyake
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
uchan_nos
What's hot
(20)
自己組織化ゲーム
自己組織化ゲーム
ゲーム制作初心者が知るべき8つのこと
ゲーム制作初心者が知るべき8つのこと
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
老害について
老害について
Fpsにおけるレベルデザイン web u_pver
Fpsにおけるレベルデザイン web u_pver
Gpu vs fpga
Gpu vs fpga
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
カンバンゲーム ルール説明
カンバンゲーム ルール説明
QEMUでARM64bitベアメタルプログラミング
QEMUでARM64bitベアメタルプログラミング
TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介
ゲームAIの中の数学(上)
ゲームAIの中の数学(上)
サムライスピリッツキャラクター制作事例 アニメーション編
サムライスピリッツキャラクター制作事例 アニメーション編
ゲームAIの基礎と事例
ゲームAIの基礎と事例
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
カンバンゲーム
カンバンゲーム
適度に弱い敵aiの作り方
適度に弱い敵aiの作り方
ゲームAI入門(後半)
ゲームAI入門(後半)
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
Similar to Arduinoを使ったgameboyカードリッジのdump
OSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUG
Hideki Aoshima
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Junichi Kakisako
Cuda
Cuda
Shumpei Hozumi
Osc hokkaido2015 arduinoで温度を測るところまで
Osc hokkaido2015 arduinoで温度を測るところまで
rarere
20140910 Arduino for beginners
20140910 Arduino for beginners
Kenichi Ohwada
Arduino jenkins
Arduino jenkins
Kiro Harada
20110724 WIZDOM:知識ゼロからのArduino(1)
20110724 WIZDOM:知識ゼロからのArduino(1)
Atsushi ENTA
Takep lpc1114-190614
Takep lpc1114-190614
たけおか しょうぞう
Imaocande LT
Imaocande LT
Imaoka Micihihiro
配布用Raspberry pi+arduino+scratchでフィジカルコンピューティング体験!
配布用Raspberry pi+arduino+scratchでフィジカルコンピューティング体験!
Kazuhiro Abe
ESP32特集の内容紹介
ESP32特集の内容紹介
Kenta IDA
組込みAndroid入門実習
組込みAndroid入門実習
ksk sue
Internet of Things
Internet of Things
Rainmaker Ho
Big Raspberry JAM TOKYO 2013 Hardware
Big Raspberry JAM TOKYO 2013 Hardware
Hideki Aoshima
150130 edison-ug
150130 edison-ug
Takehiko Tomiyama
20181117 arduino basicbeta1
20181117 arduino basicbeta1
Chiehwun
M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話
Masawo Yamazaki
Movidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみた
NISHIMOTO Keisuke
イチからはじめるADK北海道支部勉強会発表資料
イチからはじめるADK北海道支部勉強会発表資料
Kenichi Yoshida
第1回電子制御講習
第1回電子制御講習
Koshiro Miyauchi
Similar to Arduinoを使ったgameboyカードリッジのdump
(20)
OSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUG
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Cuda
Cuda
Osc hokkaido2015 arduinoで温度を測るところまで
Osc hokkaido2015 arduinoで温度を測るところまで
20140910 Arduino for beginners
20140910 Arduino for beginners
Arduino jenkins
Arduino jenkins
20110724 WIZDOM:知識ゼロからのArduino(1)
20110724 WIZDOM:知識ゼロからのArduino(1)
Takep lpc1114-190614
Takep lpc1114-190614
Imaocande LT
Imaocande LT
配布用Raspberry pi+arduino+scratchでフィジカルコンピューティング体験!
配布用Raspberry pi+arduino+scratchでフィジカルコンピューティング体験!
ESP32特集の内容紹介
ESP32特集の内容紹介
組込みAndroid入門実習
組込みAndroid入門実習
Internet of Things
Internet of Things
Big Raspberry JAM TOKYO 2013 Hardware
Big Raspberry JAM TOKYO 2013 Hardware
150130 edison-ug
150130 edison-ug
20181117 arduino basicbeta1
20181117 arduino basicbeta1
M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話
Movidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみた
イチからはじめるADK北海道支部勉強会発表資料
イチからはじめるADK北海道支部勉強会発表資料
第1回電子制御講習
第1回電子制御講習
Arduinoを使ったgameboyカードリッジのdump
1.
Arduino を使った GAMEBOY
カードリッジの DUMP 工学部情報科学科 勝亦利宗
2.
自己紹介 ● 工学部情報科学科 2 年
勝亦利宗 ● Twitter @___106___ ● Github https://github.com/106-/ – 今回のプログラム https://github.com/106-/gbdumper
3.
必要なもの ● Arduino Leonard ● シフトレジスタ
SN74HC595N ● ブレッドボード ● ジャンパーケーブル多数 ● ジャンパーピン多数 ● 10KΩ の抵抗 4 本 ● ゲームボーイ用カードリッジコネクタ ● IDE ケーブル
4.
なぜゲームボーイからデータを取り出すのか ? ● セーブデータの保存 (
データ保持用の電池が切れる ) ● エミュレータで使う
5.
カードリッジのしくみ ● ピン配置
6.
カードリッジのしくみ ● VCC : 5V
電源 ● CLK : Arduino の GND に接続 – ポケットカメラの出力がおかしくなるため ● WR, RD, MREQ : Arduino の任意のピンに接続 – 上線は否定の意味 ( 使わないときは常に HIGH) – 抵抗を挟んでおく ( フェイルセーフ ) – 読み込み / 書き込み / メモリ書き込みのスイッチ ● A0-A15 : ( 読み込み | 書き込み ) たいアドレスを指定する ● D0-D7 : アドレスに指定したデータが読み出せたり書き込めたり
7.
カードリッジのしくみ ● RESET : 抵抗を挟んで
5V 電源 ● AUDIO : 用途不明 ● GND : Arduino の GND に接続 → 基本的に A0-A15 ピンにアドレスを指定し , それに対するデータを D0-D7 ピンに指定していく
8.
シフトレジスタとは ● カードのピンが 27 本なのに対して
,Arduino のピンは 18 本しかない – シフトレジスタを使って解決する
9.
シフトレジスタとは ● シフトレジスタ : – パラレル信号をシリアル信号に変換したり
, その逆もできる IC – Arduino には簡単に使える関数が存在するので便利 – 今回はシリアル→パラレル変換ができるものを使う – 山形の秋葉原で買えます → アドレス指定部分に必要だった 16 本のピンを一つに集約できる ! – ラッチピン , クロックピン , シリアルピンの 3 本
10.
シフトレジスタとは // シフトレジスタでアドレスを指定する . void
setaddress(unsigned int addr) { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, (addr>>8)); shiftOut(dataPin, clockPin, MSBFIRST, (addr&0xFF)); digitalWrite(latchPin, HIGH); } こんな感じでアドレスを指定できる
11.
シフトレジスタとは ● 接続例 ( シフトレジスタが一つの場合
) http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=2369
12.
回路完成図
13.
プログラム部を DUMP する ● DUMP
時の動作 – ROM のヘッダを読み込み ,MBC(MBC とは ?→ あとで ) を調べる – RD ピンを LOW にして , アドレスを変えながらデータを一つ一つ送信する – MBC を切り替えてゆく
14.
MBC とは ● Memory Bank
Controller の略 – GB の ROM サイズは最大で 16KByte – ROM を複数積むことで容量不足分を補う – 複数積んだ ROM を切り替える ( バンク切り替えという ) のが MBC – 切り替えは特定のアドレスに書き込んで行う – MBC にはいくつかのタイプがある ● MBC によって書き込むアドレスが違ったりするので面倒
15.
ROM のヘッダ ● 0x0100 から
0x014F の範囲には , そのゲームの様々な情報が記録されている – ゲームのタイトル ,MBC のタイプ , データのサイズなど – データチェック用に任天堂のロゴも ● MBC の判定に使うのは 0x147, ROM/RAM のサイズは 0x148 と 0x149
16.
クライアント ● 送られてきたデータを PC に保存するプログラムを
Python で書く ● ヘッダ部を読み込み ,MBC の情報などを表示する ● とくに複雑なことは無いので詳しい説明は省きます
17.
DUMP してみる ● BGB で動作確認
18.
そのほかにも… ● セーブデータを読み込んだり , 書き込んだり –
サイズやアドレスが ROM とは違うが , 基本的な考え方は ROM と同じ
19.
そのほかにも… ● ポケットカメラの画像を抽出する – PocketSaver というソフトをつかう
20.
参考 ● GBCartRead: Arduino
based Gameboy Cart Reader https://www.insidegadgets.com/2011/03/19/gbcartread-arduino-based-gameboy -cart-reader-%E2%80%93-part-1-read-the-rom/ ● いまさら聞けないゲームボーイ http://matsu-world.qee.jp/gameboy/index.html ● Memory Bank Controllers http://gbdev.gg8.se/wiki/articles/Memory_Bank_Controllers
Download now