I started diving into the Maple Bus protocol early 2022 after making a genesis emulation system for a friend with working controller ports (https://github.com/OrangeFox86/GenesisControllerUsbPico). As I was building that, I thought what would really be neat is if I interface with Dreamcast controller and all of its peripherals.
My wife had bought me a Salea as a gift just a few months prior, and this seemed like the perfect opportunity to start playing with this new tool. I first started with making a Maple Bus analyzer library for the Salea:
https://github.com/OrangeFox86/Maple-Bu ... e-Analyzer
(Sources I used to develop this are at the bottom of the README in that project)
I had also been getting into working with the RP2040 (Raspberry Pi Pico) at the time which has hardware suited for interfacing with any protocol you can think of. That ended up being serendipitous because I had no idea of what the PIO modules were when I started. The Pico is very accessible at only $4 USD which is perfect for open-source projects like this. That spawned this project:
https://github.com/OrangeFox86/Dreamcas ... lerUsbPico
The main goal of this project is to be able to emulate 4 controller interfaces with all VMU and jump pack capabilities. A secondary goal is to document the Maple Bus protocol in the README. The project is still under development, but I'm satisfied with the Maple Bus stack and scheduler as they are currently implemented. It's written in C++ since I feel object-oriented programming keeps me the most organized, and there is a lot of memory and processing power to work with on the Pico anyway. I do some things that would concern some embedded developers like use std::vectors without limiting their capacity and use std::shared_ptr to allocate memory on the heap

What's mainly left to work on is src/hal/Usb. I have 4 HID gamepads which interface with controller peripherals and a read-only mass storage device which can interface with memory units. I will implement write access to the memory units at some point, but that part is a lower priority item at the moment. I have little idea of how I'd like to interface the VMU screen to USB yet. That will most likely require a driver, and then I'd have to go nag the folks at Redream to give me something to hook into. I'm not even sure who I can talk to for that - any help would be appreciated if anyone knows.
Some demo videos:
https://youtu.be/tD_OHZ76U-I
https://youtu.be/V_kegrv6tz0