MaplePad – RP2040 Dreamcast controller, VMU, and Purupuru (rumble pack) emulator
github.comHoping to get controller support for MicroPython w/ LEGO Boost, RP2040js etc, I researched a bunch of Bluetooth BLE + C/Python links here: https://github.com/pybricks/support/issues/262#issuecomment-... :
> https://github.com/DJm00n/ControllersInfo: HID profiles for Xbox 360, Xbox One, PS4, PS5, Stadia, and Switch
> "HID over GATT Profile (HOGP) 1.0" https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?d...
- [ ] MicroPython: wrap the Bluetooth HID over GATT Profile events and buttons
Perhaps your Dreamcast controller could do BLE and VMU wireless.
Really interested in putting together some kind of USB host to HID over GATT profile or Bluetooth HID to i2c/UART bridge.
We’re (Pimoroni) closing on shipping a dual RP2040 HDMI board (PicoVision) that’s great for bedroom coder style games, but lack of full fat Bluetooth support or USB HID host in MicroPython - and the relative pain of making and supporting a build that includes these features - make adding controllers… tricky.
Now I wish I’d kept the Dreamcast controller I modded with a custom cable to poke Maple bus. Hindsight!
Talking about RP2040 powered controller firmware. GP2040 is an amazing project, which is used a lot in the Fighting Game Community where custom controllers are common. https://github.com/OpenStickCommunity/GP2040-CE
There's also PhobGCC, an rp2040 motherboard replacement offering Hall effect sticks for Gamecube controllers.
(I'm lead software dev on it)
Thanks for the work btw!
I’m kinda burned out from always having to replace and hunt for parts for my gc controller because of my almost 22years addiction for SSBM.
Considering getting a phob soon :)
Oh wow, thank you for this!
I once tried putting an Arduino in an arcade stick, for reading controller inputs and sending keyboard presses via USB, but the lag was horrible. It's been on my to-do list to eventually dive enough into AVR-C to try to improve on it.
There is/was a premade board for this (don't remember what it was called), but it was quite expensive, and I didn't want to keep moving it between controllers.
Looks like it was made possible by the Pico's PIO assembly/chip https://github.com/mackieks/MaplePad/blob/main/src/maple.pio
The cycle accurate assembly language has enabled a number of timing sensitive FIFO data processes. What had to be done with FPGA's before has some limited support with PIO. I hope RPI increases the number of instructions and simultaneous running PIO machines in the future.
It's great to have the PIO in a smaller/cheaper device, but if that is the kind of thing that you really like, I do want to mention the BeagleBone SPUs and the Parallax Propeller / Propeller2 are similar/more powerful implementations of this concept.
RE: Propeller2- at $10+/chip, I'm just going with an XC7A35T or the TI AM243X (actually less $ and substantially more RAM) or AM62X series CPUs.
33000 LUTs and 90 DSP48s are more than enough to do 10+ RISC-V cores, I don't understand the niche this product fills.
I've done similar things (for a Playstation 1/2 controller) bit-banging with 8-bit microcontrollers. They often include instruction timing information in the datasheets.
A PIO LUT instruction with a 256 entry deep, 32bits wide lookup table would absolutely make my day.
That's REALLY cool.
I remember reading that the Maple bus used by Dreamcast's peripherals was pretty similar to USB in a lot of ways, and wondering why they didn't just use USB?
I definitely would not say this about all of Sega's hardware engineering efforts (I'm staring at you, Saturn) but the Dreamcast seemed like such a nicely engineered piece of equipment that I have always given Sega the benefit of the doubt. I assume there was an adequate reason: lower latency, cost, profits, quality control, licensing, etc. Or perhaps USB just wasn't mature enough - it was released in 1996 and Dreamcast design was probably already underway.
But, I've never seen an official explanation.
Not sure about the Dreamcast but with the GameCube I noticed the latency between plugging in a new controller and having the system respond to it is practically instantaneous.
Much, much faster than USB.
I strongly suspect, but do not know, that the slowness in USB enumeration is a software stack issue on the host side of things.
If you think about plugging a USB device into a desktop OS, the OS has to check security settings, find and load a driver for the device, etc.
But as far as the protocol itself is concerned but I don't see any intrinsic reason why enumeration can't be nearly instant, for something like a console that only needs to recognize a few possible devices, each with minimal drivers that can be preloaded.
I have a modded Dreamcast free to a good home if anyone wants it and lives in Melbourne or Sydney. (I've found emulation easier for me these days, as I try to simplify my physical setup).
Very nice of you to offer, and rather tempting - though I have no time to play.
How is it modded? I recall that certain models, identified by some number on the bottom of the console, allowed burned discs to be played. What extra can you do with a modded system?
Near as I know, all DCs can boot suitably-prepared burned discs without modding. The only hardware mod I’m aware of would be to defeat region lock on original discs.
I'd be happy to have it, customs siezed my 3 attempts to get a gdemu here.
That said, look them up on ebay, you'd be able to sell it for a few hundred within a week early.
Also, if you every want to use light gun games on a CRT, they don't work easily with emulation.
It's yours.
Send me an email with your details (check my profile for my email address)
That's quite a cool gift given current prices <3
You're a cool cat, respect.
Must be something in the air. I just started working on a DC VMU project this weekend (warning 8-bit mature): https://www.newgrounds.com/art/view/kittyhawkmontrose/boobca...
The DC's VMU is a fascinating evolutionary dead end.
I like playing on real hardware whenever possible, but I dunno what it was about the Dreamcast. I've had three units die on me so far. Emulation is pretty much my only route left at this point, unless Sega ever gets around to releasing a Dreamcast Classic.
Of course this gets posted to HN right after the optical drive in my Dreamcast stops working...
You should look into the mods for replacing the GDROM drive with a SDCard reader.
Oh, that's neat! I don't think it leaves me with a way to play my existing games though.
Just pirate them. You've already paid for them, what's the harm?