Skip to content

DreamcastControllerUsb plus Flycast equals ❤️

Mike Kosek edited this page Feb 5, 2025 · 7 revisions

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; However, VMU binary files can be copied over to/from the VMU
    • 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