DreamcastControllerUSB supportbkp - TheArcadeStriker/flycast-wiki GitHub Wiki

What Is It And Why Do I Care?

Well, Flycast has some built in VMU support now, and our wonderful community has taken this and made our lives so much easier and less expensive. Make sure you enable Show VMU Screen in GFX settings of Flycast. This allows you to see the VMU screen right in Flycast, allowing you to use the really cool features most games implemented (Radars, Stats, Health, Minimap Etc) which are really cool, and then utilizing either Elysian VMU or Dream Explorer, you can actually "use" the VMU like it was in your hand to play the mini games from some Dreamcast games right on the your device. This is the best we have had.....until now. With this DreamcastControllerUSB setup you can, for the very first time, use a REAL DC controller, VMU and Rumble pack with Flycast!

How Do I Use It

DreamcastControllerUsb offers VMU LCD and Rumble support using Flycast on Windows, MacOS and Linux.

IMG_3281

Demo: https://youtu.be/Nj4dRMZ_jB0

General Disclaimer

Proceed at your own risk! I am not liable for any damage that may occur due to the use of any provided schematics, firmware, or any other recommendations made within this project (see LICENSE.md). There is risk of damage to any attached hardware (ex: USB port, Dreamcast peripheral, or Dreamcast) if circuitry is improperly handled.

Step 1: Hardware Setup

  • Wire up a Raspberry Pi Pico for Host Mode
  • Only 1 Player is supported for VMU LCD and Rumble at the moment: You can wire up for Player 1-4 (and have up to 4 Controllers connected, but only 1 with VMU LCD / Rumble), or build your setup for Player 1 only
  • Pay special attention to Isolation Circuitry and Dreamcast Controller Pinout
  • Once the hardware is setup, deploy the latest binary on the Pico (either host-1p.uf2, or host-4p.uf2, depending on your setup)
  • Perform a first test: Plugin the microcontroller with at least one controller connected. VMU LCD should show a stylized VMU, and the Rumble pack should vibrate. The LED on the Pico board may be used for quick status - when connected to USB, it should remain on when no button is pressed on any controller and turn off once a button is pressed.
  • If this doesn't work:

Step 2: Software Setup

  • Download the latest dev-build of Flycast
  • Startup Flycast
  • Plugin the microcontroller with at least one controller connected. VMU LCD should show a stylized VMU, and the Rumble pack should vibrate. If not, go back to Step 1
  • You are done! Fire up a game, and enjoy VMU LCD and Rumble support. Make sure to check the Usage Notes
  • If this isn't working and you verified Step 1, go to Troubleshooting

Usage Notes

  • VMUs can not be used for actual savegames during emulation yet ; However, VMU binary files can be copied over to/from the VMU (there is currently just an extra step to move your save games and mini games from the Flycast VMU file, and drop it in to the Real VMU, and then vice versa. it takes about 10 seconds both ways)
    • When plugged in, the VMU will show up as a removable drive labeled DC-Memory
    • Find the *.bin file that you want to overwrite your VMU memory with, rename it to vmu0.bin, and then drag and drop it into the removable drive
      • WARNING: This will entirely overwrite the memory of your VMU. Ensure that you make backups when necessary.
    • You can now enjoy any VMU game, e.g., Chao Adventure, on the go!
  • Controllers need to be reconnected if devices (e.g., VMU/Rumble pack) are added to the controller
  • Games need to be restarted, or a savestate needs to be loaded, if a Controller is reconnected

Troubleshooting

  • Issue 1: VMU LCD and / or Rumble are not working
    • Make sure to check Step 1 again, and verify hardware functionality
    • If you are on Linux, try starting Flycast with superuser permissions
    • While DreamcastControllerUsb is plugged in, check your OS if the USB serial device shows up:
      • Windows: Open Device Manager -> Ports. Note down the COM* serial device name of USB Serial Device (e.g., COM3)
      • MacOS: Open Terminal and input ls /dev/tty.usbmodem*. Note down the name of the serial device port (e.g., /dev/tty.usbmodem1123)
      • Linux: Open Terminal and input ls /dev/ttyACM*. Note down the name of the serial device port (e.g., /dev/ttyACM0)
    • If no serial device shows up:
      • check Step 1 again, and verify hardware functionality
    • If exactly one serial device shows up, add the following line to Flycast's emu.cfg file in the [input] section:
      • DreamcastControllerUsbSerialDevice = <YourSerialDevicePortName>
    • If more than one serial device shows up:
      • Check which one has the VID 1209 and the PID 2F07, and use this one in emu.cfg (see previous step), or
      • try and error all devices
    • Make sure to relaunch Flycast after every modification of emu.cfg
  • Issue 2: Stick/Buttons/Triggers are not working
    • In Flycast, open Settings -> Controls. Click Map next to Dreamcast Controller USB
    • Map the missing Stick/Buttons/Triggers

More Info...?

This is currently "Piggy Backing" off another idea/implementation, and this is why being opensource is so important to having the best emulator we can. Someone does one thing, and someone else comes along and gets ideas and boom, we all get the rewards from that. While this code may very well change around later on, it is being actively developed by Tails and Kosekmi, and