Dreamcast controller to USB adapter

Dreamcast controller to USB adapter

Contents

Introduction

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



goup

Pictures

th_dev_setup_ready
My development setup
th_adap_dc_usb1
Completed adapter
th_HKT-7700_1
Tested controller: HKT-7700
th_HKT-4200
Tested mouse [1] : HKT-4200

th_gamepad_win7
Controller under win7
th_gamepad_win7_test
Controller under win7
th_mouse_win7
Mouse under win7
th_performance_dc
Performance P-20-007
th_dc_keyboard_hkt4000_2
Tested keyboard: HKT-4000
th_dc_keyboard_hkt7600_4
Tested keyboard: HKT-7600
th_keyboard_win7
Keyboard under Win7
th_win7_japanese_keyboard
Keyboard under Win7


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

goup

Schematic

th_dc_usb_simple_v1
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.
th_dc_connector_pinout


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

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

goup

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...
GitHub-Mark-64pxThis 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.


goup

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.
th_nulldc_plugin
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».
th_nulldc_plugin_config1
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.
th_nulldc_plugin_config2
Plugin configuration



goup

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.".
th_DC_Controller_1
th_DC_Controller_2
th_DC_Controller_3
th_dc_usb_plug



goup

References

The following documents were very useful for this project:
goup

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
b16-rounded

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

  • soc-icon-black-dribbble
  • soc-icon-black-t
  • soc-icon-black-p
  • soc-icon-black-be
  • soc-icon-black-instagram
    Blogger Comment
    Facebook Comment

0 comentarios:

Publicar un comentario