GB Interceptor 〈Game Boy video capture〉
Notes & Known issues before purchasing
Notes:
- Please prepare an adapter. (5V/1A, e.g. iphone adapter) and a micro USB cable.
- Please prepare a smartphone charging adapter (5V/1A, e.g. iphone adapter) and a micro-USB cable. The micro USB connector of the arduino used in this product is very fragile and easily broken, so we strongly recommend using a magnetic cable.
- We strongly recommend using a magnetic cable.
- This product is a handmade kit for an open-source project. Unlike industrial line products, the quality of this product may vary slightly due to the fact that it is hand-mounted in a factory. Please consider it as a handmade product.
- Please note that there may be cases where the cartridge cannot be read due to various factors such as condition, type, and compatibility. Please understand that this is a product based on an open source project, so please purchase with the understanding that it is not perfect.
- Please note that we cannot provide any support for programming or operating instructions.
- This warranty does not cover accidents caused by rewriting the firmware of the Arduino.
- Please use it only with the game that you own because the backup becomes a premise. It is illegal to transfer or sell the original cartridge after the game is downloaded.
- Please purchase only after thoroughly researching how to use it.
- Please refer to the Wiki on the project page for details.
This is a list of issues sanni have encountered so far.
Known issues:
Arduino Mega 2560
- If the Arduino resets in 3.3V mode replace the 22uF tantalum on the Cart Reader PCB with a 47uF electrolytic capacitor.
- The Arduino resets if it receives certain signals over USB. For example, if you unplug a USB stick the Arduino might reset.
- Some Arduinos need the brownout detection disabled to function with the switch set to 3.3V. To do this flash the Arduino using something like an USBASP, the libusbK driver and this avrdude command: "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
Battery Module (when you put in on)
- After plugging in the battery into the battery module you first need to plug in a USB power source at least once or it won't turn on.
- Sometimes the battery module might not supply enough current for more power-hungry applications and you will have to plug in a USB power source.
Buttons
- If the buttons are not working properly, check the 10K resistors on the opposite site of the board and re-solder them.
- It's very easy to bridge the pins of the SMD push buttons with their metal case resulting in the Cart Reader automatically entering various sub-menus.
- Sometimes the legs of the SMD push buttons don't get soldered properly to the PCB and therefore you can't select anything.
- If you have a very old Cart Reader with just one button you can disable the second button in the config at the beginning of the code in Cart_Reader.ino.
Bus timings
- I don't have a logic analyzer nor an oscilloscope so all the bus timings are just guesses based on trial and error and far from correct which results in some odd behavior now and then. Usually, you can just give it a second try and it will work though.
Cart Reader Shield
- check that no solder connection has a higher resistance than ~0.6 Ohm. If it does you most likely have a cold joint and need to rework your soldering.
Clock Generator Module
- there have been multiple reports of non-working clock generator modules (tested)
Config switches
- the inner contacts of the through-hole slide switches like On/Off and 3V/5V can corrode if they're not used for some time. You can measure this with a multi-meter, the resistance will be above 1 Ohm. In this case, you need to move the slide switch back and forth a couple of times to get rid of the corrosion or else it might have an influence on the Cart Reader's behavior.
- If the Cart Reader does not turn on, use a multi-meter to check for a short between the outer and inner pins.
EPROM adapter and write function
- The 27C322 programming has not been fully tested, it does work but both the hardware and the software for it are still in a beta phase so use with caution.
File-browser
- If after compiling the "Low memory available, stability problems may occur." warning is displayed the file explorer might crash during launch
- To conserve memory you can only have a certain amount of files and folders, so if the file browser crashes maybe you have too many files/folders on the SD card.
- Filenames should not be longer than 8+3 characters, again this is currently implemented to save memory.
- Special characters should be removed from a filename.
- Sometimes the file browser just displays a black screen, simply try again.
- If there are files on the SD card not created by the Cart Reader the file browser might crash and only display garbage on the OLED instead of the file list.
Game Boy
- The Game Boy code was only tested with MBC1, MBC3 and MBC5.
Game Boy Advance
- Currently GBA cartridges only read ok if the contacts are clean, use a cotton swab and some rubbing alcohol to clean them
- Sometimes games with EEPROM save don't dump correctly, the EEPROM shares pins with the maskROM so it could be a timing issue that needs to be resolved.
- The database for GBA ROM size and save type might have some errors, you can also use http://www.advanscene.com/ to find out the needed information.
- Some Chinese GBA repros can only be rewritten if the Cart Reader is switched to 5V
- Writing 1024k flash might only work if the Cart Reader was just switched on and no other read/write operation has been done yet
Game Cartridges
- make sure the edge connectors are clean and not corroded. A very light polish with Nevr-Dull and a cleaning with IPA can work wonders as even a little bit of dirt can have a negative influence on dumping.
N64
- Most N64 slots on Aliexpress are 2.54mm instead of 2.5mm, make sure you use the 3d printed part to help align the cartridge
- Dezaemon 3D sram is currently not supported.
- If you read-out a flashram save game you need to power cycle the cartridge reader before you can do a write operation.
- Sometimes reading/writing eeprom saves needs two tries before it succeeds.
- I was not able to get an N64 dev cart for a reasonable price so there is no support dumping them.
- Flashing of Chinese N64 repros with MSP55LV512 and MSP55LV100S chips seems to be broken.
- If you get a CRC error when dumping a ROM enable slowcrc in options.h, the fast crc calculation seems to only work on some Cart Readers
NES
- so far only official mappers are supported, if you add another mapper by yourself please share the code with the rest of us.
- the iNES header will not be added to all dumped ROMs, in this case the ROM will not play in an emulator unless you manually add a iNES header on your PC
Nintendo Power SF Memory
- Sometimes the cart reader fails to switch the NP cart into "hirom all" or game menu mode, simply power cycle and try again.
OLED Module
- there have been reports of OLED screens with an 0x78 or 0x7B ID printed on the back while their real ID is still 0x3C.
Power Supply
- Using some cheap Chinese build USB chargers will result in various errors.
- Some PC USB ports might not provide enough current for more power-hungry tasks like SA1 cartridges.
- Soldering a 470uF capacitor to the two wires coming from the Arduino can solve a lot of power-related issues.
Serial Monitor
- If you use the serial monitor it will still say "Press Button" but what you need to do is send a single random character through the serial monitor.
Super Nintendo
- ROMs with odd sizes like Final Fantasy 6(JAP) or Tales of Symphonia report a wrong file size in their header and will be over-dumped if the correct size is not listed in the snes.txt file.
- Some cartridges like SA1 only dump correctly if you're using a high quality 5V/1A mobile phone charger instead of the USB port of a PC, they also need a 470uF capacitor soldered to the two wires coming from the Arduino.(already put in on) *SA1 is Option
- Most of the time unlocking SA1 needs multiple tries, if not unlocked only the first part of the ROM will be dumped.
- For dumping SA1 carts sometimes it is helpful to set the CLK1 switch to off. *SA1 is Option
Description
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...
Tab title
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...