GB Interceptor 〈Game Boy video capture〉
購入前の注意事項と既知の問題
ノート:
- アダプターをご用意ください。 (5V/1A、iPhone アダプターなど) とマイクロ USB ケーブル。
- スマートフォンの充電アダプター(5V/1A、iPhoneアダプターなど)とmicro-USBケーブルをご用意ください。この製品に使用されている arduino の micro USB コネクタは非常に壊れやすく壊れやすいため、磁気ケーブルの使用を強くお勧めします。
- 磁気ケーブルの使用を強くお勧めします。
- この製品は、オープンソース プロジェクトの手作りキットです。工業用ライン製品とは異なり、この製品は工場で手作業で取り付けられているため、品質が多少異なる場合があります。手作り品としてお考えください。
- カートリッジの状態、種類、相性など様々な要因により読み取れない場合がございますので、予めご了承ください。オープンソースプロジェクトに基づく製品ですので、完璧ではないことをご理解の上ご購入ください。
- プログラミングや操作方法についてはサポートできませんのでご了承ください。
- Arduinoのファームウェア書き換えによる事故は保証対象外となります。
- バックアップが前提となりますので、お持ちのゲームのみでご利用ください。ゲームのダウンロード後に元のカートリッジを譲渡または販売することは違法です。
- 使用方法をよくお調べになってからご購入ください。
- 詳細はプロジェクトページのWikiを参照してください。
これは、sanni がこれまでに遭遇した問題のリストです。
既知の問題点:
Arduino メガ 2560
- Arduino が 3.3V モードでリセットする場合は、カート リーダー PCB の 22uF タンタルを 47uF 電解コンデンサに置き換えます。
- Arduino は、USB 経由で特定の信号を受信するとリセットします。たとえば、USB スティックを抜くと、Arduino がリセットされる場合があります。
- 一部の Arduino では、スイッチを 3.3V に設定して機能させるには、電圧低下検出を無効にする必要があります。これを行うには、次のようなものを使用してArduinoをフラッシュします USBASP 、 libusbK ドライバー そして、この avrdude コマンド: "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe" -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -c usbasp -p atmega2560 -U efuse:w:0xFF:m
バッテリーモジュール (装着時)
- バッテリーをバッテリー モジュールに差し込んだ後、最初に少なくとも 1 回は USB 電源を差し込む必要があります。そうしないと電源が入りません。
- 電力を大量に消費するアプリケーションでは、バッテリ モジュールが十分な電流を供給できない場合があり、USB 電源を接続する必要があります。
ボタン
- ボタンが正常に機能しない場合は、ボードの反対側にある 10K 抵抗をチェックして、はんだ付けし直してください。
- SMD プッシュ ボタンのピンを金属ケースにブリッジするのは非常に簡単で、その結果、カート リーダーは自動的にさまざまなサブメニューに入ります。
- SMD プッシュ ボタンの脚が PCB に適切にはんだ付けされないことがあり、そのため何も選択できません。
- ボタンが 1 つしかない非常に古いカート リーダーを使用している場合は、Cart_Reader.ino のコードの先頭にある設定で 2 番目のボタンを無効にすることができます。
バスのタイミング
- 私はロジック アナライザーもオシロスコープも持っていないので、すべてのバス タイミングは試行錯誤に基づく推測にすぎず、正しくないため、時々奇妙な動作が発生します。通常は、もう一度試してみるだけでうまくいきます。
カートリーダーシールド
- はんだ接続の抵抗が 0.6 オームを超えていないことを確認します。その場合は、コールド ジョイントが発生している可能性が高く、はんだ付けをやり直す必要があります。
クロックジェネレータモジュール
- 動作しないクロック ジェネレーター モジュールが複数報告されています。 (テスト済み)
構成スイッチ
- オン/オフや 3V/5V などのスルーホール スライド スイッチの内部接点は、しばらく使用しないと腐食する可能性があります。これをマルチメータで測定すると、抵抗は 1 オームを超えます。この場合、スライド スイッチを数回前後に動かして腐食を取り除く必要があります。そうしないと、カート リーダーの動作に影響を与える可能性があります。
- カート リーダーの電源が入らない場合は、マルチメーターを使用して、外側ピンと内側ピンがショートしていないかどうかを確認してください。
EPROM アダプタと書き込み機能
- 27C322 プログラミングは完全にはテストされていません。動作しますが、ハードウェアとソフトウェアの両方がまだベータ段階にあるため、注意して使用してください。
ファイルブラウザ
- コンパイル後に「使用可能なメモリが不足しています。安定性の問題が発生する可能性があります。」起動中にファイル エクスプローラーがクラッシュする可能性があるという警告が表示される
- メモリを節約するために、特定の量のファイルとフォルダーしか持つことができないため、ファイル ブラウザーがクラッシュした場合は、SD カード上のファイル/フォルダーが多すぎる可能性があります。
- ファイル名は 8 + 3 文字を超えてはなりません。これも現在、メモリを節約するために実装されています。
- ファイル名から特殊文字を削除する必要があります。
- ファイル ブラウザに黒い画面が表示されることがあります。もう一度やり直してください。
- カート リーダーによって作成されていないファイルが SD カードにある場合、ファイル ブラウザがクラッシュし、ファイル リストではなく OLED にゴミが表示されるだけです。
ゲームボーイ
- ゲームボーイのコードは、MBC1、MBC3、および MBC5 でのみテストされました。
ゲームボーイアドバンス
- 現在、GBA カートリッジは、接点がきれいな場合にのみ正常に読み取ります。綿棒と消毒用アルコールを使用してきれいにしてください。
- EEPROM セーブのあるゲームが正しくダンプされないことがあります。EEPROM は maskROM とピンを共有しているため、解決する必要があるタイミングの問題である可能性があります。
- GBA ROMサイズと保存タイプのデータベースにはエラーがある可能性があります。 http://www.advanscene.com/ 必要な情報を見つけるために。
- 一部の中国語 GBA リプロは、カート リーダーが 5V に切り替えられた場合にのみ書き換えることができます
- 1024k フラッシュの書き込みは、カート リーダーの電源を入れたばかりで、他の読み取り/書き込み操作がまだ行われていない場合にのみ機能する可能性があります。
ゲームカートリッジ
- エッジ コネクタがきれいで、腐食していないことを確認します。 Nevr-Dull を使用した非常に軽い磨きと IPA を使用したクリーニングは、わずかな汚れでもダンプに悪影響を与える可能性があるため、驚くほど効果があります。
N64
- Aliexpress のほとんどの N64 スロットは 2.5mm ではなく 2.54mm です。3D プリントされた部品を使用して、カートリッジの位置を合わせてください。
- デザエモン 3D sram は現在サポートされていません。
- フラッシュラム セーブ ゲームを読み出す場合、書き込み操作を行う前にカートリッジ リーダーの電源を入れ直す必要があります。
- eeprom 保存の読み取り/書き込みは、成功するまでに 2 回試行する必要がある場合があります。
- N64 dev カートを妥当な価格で入手できなかったため、それらをダンプするサポートはありません。
- MSP55LV512 および MSP55LV100S チップを使用した中国の N64 repro のフラッシュは壊れているようです。
- options.h で ROM enable slowcrc をダンプするときに CRC エラーが発生する場合、高速の crc 計算は一部のカート リーダーでのみ機能するようです。
ファミコン
- これまでのところ、公式のマッパーのみがサポートされています。自分で別のマッパーを追加する場合は、コードを他のメンバーと共有してください。
- ダンプされたすべての ROM に iNES ヘッダーが追加されるわけではありません。この場合、PC に iNES ヘッダーを手動で追加しない限り、ROM はエミュレーターで再生されません。
ニンテンドーパワーSFメモリー
- カート リーダーが NP カートを「hirom all」またはゲーム メニュー モードに切り替えることができない場合があります。電源を入れ直してから再試行してください。
有機ELモジュール
- 実際の ID はまだ 0x3C ですが、背面に 0x78 または 0x7B の ID が印刷された OLED 画面が報告されています。
電源
- 一部の安価な中国製 USB 充電器を使用すると、さまざまなエラーが発生します。
- 一部の PC USB ポートは、SA1 カートリッジのような電力消費量の多いタスクには十分な電流を供給できない場合があります。
- 470uF のコンデンサを Arduino からの 2 本のワイヤにハンダ付けすると、多くの電力関連の問題を解決できます。
シリアルモニター
- シリアル モニタを使用している場合は、「Press Button」と表示されますが、シリアル モニタを介して 1 つのランダムな文字を送信する必要があります。
スーパーファミコン
- Final Fantasy 6 (JAP) や Tales of Symphonia などの奇数サイズの ROM は、ヘッダーで間違ったファイル サイズを報告し、正しいサイズが snes.txt ファイルにリストされていない場合はオーバー ダンプされます。
- SA1 のような一部のカートリッジは、PC の USB ポートの代わりに高品質の 5V/1A 携帯電話充電器を使用している場合にのみ正しくダンプします。Arduino からの 2 本のワイヤにはんだ付けされた 470uF コンデンサも必要です。 (装着済み) ※SA1はオプション
- ほとんどの場合、SA1 のロックを解除するには複数回試行する必要があります。ロックを解除しないと、ROM の最初の部分だけがダンプされます。
- SA1 カートをダンプする場合、CLK1 スイッチをオフに設定すると役立つ場合があります。 ※SA1はオプション
説明
Capture or stream Game Boy gameplay footage via USB without modifying the Game Boy.
This open source and open hardware Game Boy adapter uses an rp2040 to capture the communication on the cartridge bus. This data is fed into an emulator, rendered and then offered as a USB video class device.
*The plastic transparent case is processed with pliers.
Therefore, the cut surface is not beautiful.
-
This open souce project design by Sebastian Staacks.
-
This video provides an overview.
Warnings
Please make sure to understand what this device does and what its limitations are. Most importantly, there is a little lag which will make it unsuitable for playing on a bis screen. It might be ok for slow games, but its focus is on recording and streaming.
Also check out the compatibility tables for host software (for example OBS) and particular games. In principle this is a USB video class device and does not require drivers, but not all software supports the unsusual video format of the Interceptor. Similarly, games should usually work, but sometimes there are some details that the Interceptor does not yet support properly and some rare things that cannot work based on the principle of this device.
Usage
Simply plug the Interceptor into your Game Boy and the Game into the Interceptor. Connect the Interceptor to your computer before turning on the Game Boy. It should show up as a webcam in any software that supports USB Video devices (for example OBS Studio). Note that some software is not entirely happy with the exotic format, but it should work in most cases (see Host software compatibility).
Then just turn on the Game Boy and play.
Note that you do not need to open the video stream first. The only important step is that the Interceptor is powered via USB before the Game Boy is turned on.
Buttons
The [Mode] button (next to the LEDs) allows to switch between grayscale/green colors and toggle frame blending. Each press switches colors and frame blending is toggled each time it returns to grayscale.
The [Flash] button (near the center, usually inside the case) is only used to flash a new firmware version. Simply hold it while plugging in the USB cable. The Interceptor should appear as a storage device (like a USB stick) and you can simply drag the new firmware file (a uf2 file) into it.
LEDs
The red LED indicates that the Interceptor is powered.
The blue LED stays on as long as the Interceptor is in sync with the game. (It may shortly turn off for a fraction of a second when the Game Boy turns the display off, i.e. when loading a level.)
Support
While I do not give any guarantees I (and probably others too) am happy to help if I have the time.
If you are having difficulties to order, build or use your Interceptor, please do not contact me directly but use r/thereoughtabe on reddit as this allows others to help and the answer might help others, too.
If you found a bug and in particular if you find glitches in a game, please check the compatibility lists in the Wiki first to see if it is a known problem and open an issue here on Github otherwise.
Building the firmware
Most users should just install the latest release uf2 as described in the Build guide, but if you want to build it yourself, you will need the Raspberry Pi Pico SDK. Don't forget to set PICO_SDK_PATH accordingly.
Make sure to check out the submodules too and specifically make sure that the TinyUSB submodule is at least on version 0.14.0 as the Pico SDK currently references an older version. (Also see #3)
License
The code is released under the GNU General Public Licence 3 and the design files (PCB layout and 3d printed case) are released under the Creative Commons licence CC-BY 4.0.
--
Linux
It seems like every single software is happy to accept the GB Interceptor. Of course, glitches can be expected in some cases when the software did not expect a 160x144 resolution.
Software | Status | Note |
---|---|---|
ffmpeg | ✔️ | |
OBS | ✔️ | |
VLC | ✔️ | You might want to reduce VLC's default 300ms buffer to reduce latency. |
Zoom | ✔️ |
Windows
Software | Status | Note |
---|---|---|
OBS | ✔️ | |
VLC | ❌ | Seems to have trouble with the format and throws an error. |
Windows Camera | ✔️ | Interceptor needs at least firmware 1.0.3 |
Zoom | ✔️ | Note that Zoom tends to hang if the Interceptor does not react properly. Unplugging and reconnecting can help. |
MacOS
Software | Status | Note |
---|---|---|
Face Time | ✔️⚠️ | See remark below |
OBS | ✔️⚠️ | See remark below |
Photo Booth | ✔️⚠️ | See remark below |
VLC | ✔️⚠️ | See remark below |
Works on MacOS since Interceptor firmware 1.0.1. This has been successfully tested on a MacBook Pro with Intel CPU and Ventura 13.1. Unfortunately, the image is distorted and green on an M2 Macbook Air and I suspect that it is a bug in the driver for Apple CPUs, probably related to the Interceptors NV12 color format as other cameras work. Also see #1
Android
USB video class devices are supported when the Android device supports USB OTG (pretty much all devices with USB-C). However, few apps support the video format of the GB Interceptor.
Software | Status | Note |
---|---|---|
USB Camera (com.shenyaocn.android.usbcamera) | ✔️ | Note that this app hangs in version 1.0.1 and 1.0.2 of the Interceptor firmware. Fixed in version 1.0.3 |
USB Camera Viewer (com.homesoft.usb.camera) | ❌ | Reports that the format is not supported. |
USB OTG camera, Endoscope app (net.usb.usby) | ❌ | No image |
iOS
There is no general support for the USB video class on iOS. Maybe Apple will add this in the future...
タブのタイトル
Capture or stream Game Boy gameplay footage via USB without modifying the Game Boy.
This open source and open hardware Game Boy adapter uses an rp2040 to capture the communication on the cartridge bus. This data is fed into an emulator, rendered and then offered as a USB video class device.
*The plastic transparent case is processed with pliers.
Therefore, the cut surface is not beautiful.
-
This open souce project design by Sebastian Staacks.
-
This video provides an overview.
Warnings
Please make sure to understand what this device does and what its limitations are. Most importantly, there is a little lag which will make it unsuitable for playing on a bis screen. It might be ok for slow games, but its focus is on recording and streaming.
Also check out the compatibility tables for host software (for example OBS) and particular games. In principle this is a USB video class device and does not require drivers, but not all software supports the unsusual video format of the Interceptor. Similarly, games should usually work, but sometimes there are some details that the Interceptor does not yet support properly and some rare things that cannot work based on the principle of this device.
Usage
Simply plug the Interceptor into your Game Boy and the Game into the Interceptor. Connect the Interceptor to your computer before turning on the Game Boy. It should show up as a webcam in any software that supports USB Video devices (for example OBS Studio). Note that some software is not entirely happy with the exotic format, but it should work in most cases (see Host software compatibility).
Then just turn on the Game Boy and play.
Note that you do not need to open the video stream first. The only important step is that the Interceptor is powered via USB before the Game Boy is turned on.
Buttons
The [Mode] button (next to the LEDs) allows to switch between grayscale/green colors and toggle frame blending. Each press switches colors and frame blending is toggled each time it returns to grayscale.
The [Flash] button (near the center, usually inside the case) is only used to flash a new firmware version. Simply hold it while plugging in the USB cable. The Interceptor should appear as a storage device (like a USB stick) and you can simply drag the new firmware file (a uf2 file) into it.
LEDs
The red LED indicates that the Interceptor is powered.
The blue LED stays on as long as the Interceptor is in sync with the game. (It may shortly turn off for a fraction of a second when the Game Boy turns the display off, i.e. when loading a level.)
Support
While I do not give any guarantees I (and probably others too) am happy to help if I have the time.
If you are having difficulties to order, build or use your Interceptor, please do not contact me directly but use r/thereoughtabe on reddit as this allows others to help and the answer might help others, too.
If you found a bug and in particular if you find glitches in a game, please check the compatibility lists in the Wiki first to see if it is a known problem and open an issue here on Github otherwise.
Building the firmware
Most users should just install the latest release uf2 as described in the Build guide, but if you want to build it yourself, you will need the Raspberry Pi Pico SDK. Don't forget to set PICO_SDK_PATH accordingly.
Make sure to check out the submodules too and specifically make sure that the TinyUSB submodule is at least on version 0.14.0 as the Pico SDK currently references an older version. (Also see #3)
License
The code is released under the GNU General Public Licence 3 and the design files (PCB layout and 3d printed case) are released under the Creative Commons licence CC-BY 4.0.
--
Linux
It seems like every single software is happy to accept the GB Interceptor. Of course, glitches can be expected in some cases when the software did not expect a 160x144 resolution.
Software | Status | Note |
---|---|---|
ffmpeg | ✔️ | |
OBS | ✔️ | |
VLC | ✔️ | You might want to reduce VLC's default 300ms buffer to reduce latency. |
Zoom | ✔️ |
Windows
Software | Status | Note |
---|---|---|
OBS | ✔️ | |
VLC | ❌ | Seems to have trouble with the format and throws an error. |
Windows Camera | ✔️ | Interceptor needs at least firmware 1.0.3 |
Zoom | ✔️ | Note that Zoom tends to hang if the Interceptor does not react properly. Unplugging and reconnecting can help. |
MacOS
Software | Status | Note |
---|---|---|
Face Time | ✔️⚠️ | See remark below |
OBS | ✔️⚠️ | See remark below |
Photo Booth | ✔️⚠️ | See remark below |
VLC | ✔️⚠️ | See remark below |
Works on MacOS since Interceptor firmware 1.0.1. This has been successfully tested on a MacBook Pro with Intel CPU and Ventura 13.1. Unfortunately, the image is distorted and green on an M2 Macbook Air and I suspect that it is a bug in the driver for Apple CPUs, probably related to the Interceptors NV12 color format as other cameras work. Also see #1
Android
USB video class devices are supported when the Android device supports USB OTG (pretty much all devices with USB-C). However, few apps support the video format of the GB Interceptor.
Software | Status | Note |
---|---|---|
USB Camera (com.shenyaocn.android.usbcamera) | ✔️ | Note that this app hangs in version 1.0.1 and 1.0.2 of the Interceptor firmware. Fixed in version 1.0.3 |
USB Camera Viewer (com.homesoft.usb.camera) | ❌ | Reports that the format is not supported. |
USB OTG camera, Endoscope app (net.usb.usby) | ❌ | No image |
iOS
There is no general support for the USB video class on iOS. Maybe Apple will add this in the future...