VirtualBoy controller to USB adapter



Introduction

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 bad...)

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.


goto top Up


Pictures

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!


goto top Up


Mappings

USBDefaultAlternate
Axes 1 and 2 Left D-Pad Left D-Pad
Axes 3 and 4 Right D-Pad
Button 1 A A
Button 2 B B
Button 3 Start Start
Button 4 Select Select
Button 5 R R
Button 6 L L
Button 7 Right-D-pad Up
Button 8 Right-D-Pad right
Button 9 Right-D-Pad down
Button 10 Right-D-Pad left
How to use mappings:

1: If the START button is held when powering-up the adapter (eg: by connecting the USB cable), the alternate mapping will be enabled.

2: The mapping can be changed "live" by connecting PB1 or PC0 to GND through a jumper or switch.

goto top Up


Schematics and wiring

Here is the schematic and annotated pictures of the connectors:
Schematic

Schematic

Cable side pinout

Cable side pinout

Console side pinout

Console side pinout



Here is a table mapping pin numbers to colors and functions:
#NameColorComments
1DataYellow
2+5vBlue5 volt from console to controller.
3LatchBrown
4ClockOrange
5GNDBlack
6VbatRedBattery voltage


goto top Up


Software

File(s)DateDescription
virtualboy_usb-1.1.tar.gz (91.7 KB)
virtualboy_usb-1.1.hex (7.3 KB)
February 22, 2014 (Saturday) Version 1.1:
  • Alternate mapping can be enabled at run-time by grounding PORTC0 or PORTB1.
  • Updates for compilation with recent GCC
  • Updated USB VID/PID
This project is also available on GitHub!
To request features, report issues or contribute, you may send me an email or use the GitHub repository:
https://github.com/raphnet/virtualboy_usb
Using the .hex files
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 AVR programming page.

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.

goto top Up


User pictures

I like seeing how others build my projects. If you build an adapter, please send me pictures and I'll add them here.

goto top Up


Disclaimer

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 :)

goto top Up


Trademarks used in this site are the property of their respectives owners.
Copyright © 2002-2017, Raphaël Assénat
Website coded withWebsite coded with vimLast update: October 14, 2016 (Friday)