VirtualBoy controller to USB adapter
So you want to play with a Virtual Boy emulator on your PC, depriving yourself the pleasure
of adopting an unpleasant posture and of getting a headache? At least, don't go so far
as to deny yourself the privilege of holding the real controller in your hands! (Ok, I admit I never
really tried a real Virtual Boy. Maybe it's not that
Anyway, in order to use a Virtual boy controller on a PC, I designed an adapter. The schematics,
wiring and source code are on this page.
Here are a few pictures demonstrating how this project can be implemented.
1. Building an adapter
If you have the small circuit board with the controller connector salvaged from an (hopefully broken) console, you can build an adapter:
2. Converting a controller (with internal circuit)
If you don't have the console-side connector, a permanent controller conversion can be made by building an/or installing
the circuit internally:
3. Converting a controller (with external circuit)
The circuit can also be built/installed externally, in-line with the original cable. Make sure to protect it with an enclosure!
How to use mappings:
|Axes 1 and 2
|Axes 3 and 4
If the START button is held when powering-up the adapter (eg: by connecting the USB cable), the alternate mapping will be enabled.
The mapping can be changed "live" by connecting PB1 or PC0 to GND through a jumper or switch.
Schematics and wiring
Here is the schematic and annotated pictures of the connectors:
Cable side pinout
Console side pinout
Here is a table mapping pin numbers to colors and functions:
|2||+5v||Blue||5 volt from console to controller.|
Using the .hex files
|virtualboy_usb-1.1.tar.gz (91.7 KB)|
virtualboy_usb-1.1.hex (7.3 KB)
|February 22, 2014 (Saturday)
- Alternate mapping can be enabled at run-time by grounding PORTC0 or PORTB1.
- Updates for compilation with recent GCC
- Updated USB VID/PID
The Atmega8a has to be programmed using the .hex file. The "fuse bytes" for this
project are high_byte=0xc9, low_byte=0x9f
For more information about the tools required to program an AVR microcontroller,
please visit my
Source Code (.tar.gz files)
Unless indicated otherwise, the source code is published under the GPL license. Please
consult the included LICENSE file for more information. The project compiles using the
included makefiles using avr-gcc under Linux.
I like seeing how others build my projects. If you build an adapter, please send me pictures and I'll add them here.
I cannot be held responsible for any damages that could occur to you
or your equipment while following the procedures present on this page.
Also, I GIVE ABSOLUTELY NO WARRANTY on the correctness and usability
of the informations on this page. Please note, however, that the procedures
above have worked in my case without any damages or problems.
Now you cannot say that I did not warn you :)