Dreamcast controller to USB adapter

Dreamcast controller to USB adapter

Contents

Introduction

Dreamcast to USB
Dreamcast to USB
I have received many requests and while I had been looking forward to the challenge of building this adapter, due to other not less interesting projects, it took a very long time before I finally began working on it. But now it is finally ready. It works. You are invited to read this project's build log for the technical details of the path that led to the final result.

Features:
  • Standard Dreamcast controller support. (Tested with Sega HKT-7700 and and Peformance P-20-007)
  • Dreamcast keyboard support. (Tested with: HKT-4000, HKT-7600 and HKT-7631)
  • Standard USB HID interface. (Tested with Linux and Win7)
  • Works well with the nulldc emulator.
  • Arcade style controllers should also work. (Not tested)
  • Incomplete (wheel not working) mouse support. (Tested with HKT-4200)
I might eventually add support for the Jump Pack (vibration). Memory cards will never be supported by this design.


A few items based on this project or otherwise related are available in my store:



goto top

Pictures

My development setup
My development setup
Completed adapter
Completed adapter
Tested controller: HKT-7700
Tested controller: HKT-7700
Tested mouse <sup>[1]</sup> : HKT-4200
Tested mouse [1] : HKT-4200

Controller under win7
Controller under win7
Controller under win7
Controller under win7
Mouse under win7
Mouse under win7
Performance P-20-007
Performance P-20-007
Tested keyboard: HKT-4000
Tested keyboard: HKT-4000
Tested keyboard: HKT-7600
Tested keyboard: HKT-7600
Keyboard under Win7
Keyboard under Win7
Keyboard under Win7
Keyboard under Win7


[1]: Mouse support is incomplete (wheel not working).

goto top

Schematic

Schematic
Schematic
The dreamcast controller is powered directly from the USB 5 volt line. Communication with the controller is done at 3.3v so a regulator is required for the MCU. This simple design uses an Atmega168 running at 16MHz. At 3.3v, the documented maximum is around 13MHz, so the MCU is overclocked. This does not seem to cause problems, but eventually I might design a more complicated version with a level translator to do away with this practise. 

Here is a view of both connector types (console side and peripheral side) with pin numbers.


Also, since my multiuse PCB2 is well suited for this project, here is a wiring diagram using it:

Note that the circuit should have a 3.3v regulator installed. The proper 0 ohm resistor (or bridges) should be present for the MCU to run at 3.3v (not 5v). 

goto top

Firmware

Version v1.2
November 23, 2013 (Saturday)
New features:
  • Dreamcast keyboard support (Tested: HKT-7600 and HKT-4000)
  • Increased poll rate for better responsiveness
  • Display an image on the LCD if present. (Hardcoded image. Not usable by emulators)
File(s):
dreamcast_usb-1.2.tar.gz (111.1 KB)
dc_usb-1.2.hex (22.7 KB)
Show previous releases...
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/dreamcast_usb
Using the .hex files
The Atmega168 has to be programmed using the .hex file. The "fuse bytes" for this project are: extended_fuse=0x01, high_fuse=0xd5, low_fuse=0xd7

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

Use

Thinking the adapter would probably be used with the nulldc emulator, I made sure it would work properly. Here is a configuration example:


Start nulldc and go to Options-> Maple->Port A. Attach the "PuruPuru Dreamcast Controller" to the port.
Options-> Maple->Port A-> Attach...
Options-> Maple->Port A-> Attach...


Next, navigate again to Options-> Maple->Port A and open the configuration window by clicking "Config keys for Player 1".
«Config keys for Player 1».
Options-> Maple->Port A-> Config...
Options-> Maple->Port A-> Config...


Finally, in the configuration window, assign the controller buttons and axis. Note that I configured the "deadzone" option to the minimum value (1%) because to me, the game felt like it did on a real Dreamcast with this setting.
Plugin configuration
Plugin configuration



goto top

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.

February 1, 2014 (Saturday)
Phil did a very clean job of converting a controller to USB. He writes: "I didn't build an adapter, but I modded the controller using ALL the parts of the controller including the cable but converting it to usb. It works great!". He adds: "I had to extend the wires, trim some plastic with a razor blade of course to fit the usb plug and I made a little black cover for the plug out of a dvd case I had laying around. All in all I think it looks good.".



goto top

References

The following documents were very useful for this project:
goto top

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

Oscar perez

Arquitecto especialista en gestion de proyectos si necesitas desarrollar algun proyecto en Bogota contactame en el 3006825874 o visita mi pagina en www.arquitectobogota.tk

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

0 comentarios:

Publicar un comentario