Open Tails86 opened 2 years ago
When a VMU is plugged in and initially powers up, the controller completely stops communicating for a while. Normally, the microcontroller will detect this and internally disconnect then continually ask for status until it responds again. This matches how the Dreamcast operates. Unlike the Dreamcast, this implementation sometimes puts the controller in a non-functioning state until it is reset. One peculiar thing I noticed is during the VMU initialization beep, logic LOW sits about 1.3 to 1.4 V when measuring SDCK lines at the controller. On the Dreamcast, the same sort of oddness happens, but logic LOW sits about 1.0 to 1.1 V.
I found that the pico has some resistance on its output already. I reduced the added resistance on the GPIO to match the total resistance that a Dreamcast has. This didn't seem to help much.
I then played around with a real Dreamcast and was actually able to reproduce this issue there. Since this is an issue on a real system too, I don't think there is much I can do about it. I'm keeping this issue open though so I can keep thinking of ways this can be fixed.
The supposed reset sequence, 14 pulses on msckb while mscka is low, does not do anything to get the controller out of this state
To reproduce: