Our website member TwBurn just smashed our forum with this great news!
He did managed to use a Wii U and a Switch pro controller to play some CD-i games.
This is still very soon to call it victory, but he made it. The first step as been done, and he can be proud of it!
Using an Arduino PCB known to be very versatile and compatible with almost everything, he created an Arduino Library that support 4 different modes.
His work is available on our Open-Source section.
On our forum, he says:
I’ve created an Arduino Library which can be used to emulate a CD-i controller. Currently it supports four different modes (Relative, Maneuvering, Absolute Coordinate and Absolute Screen). I’m hoping to also add Keyboard support once I can find some documentation on the subject.
I’ve been using this library together with a USB Host Shield to connect some modern controllers (in my case a Wii U and Switch Pro controller) to the CD-i with acceptable to good results, depending on the title used. I’ve included these as examples in the library.
The library can be found on: https://github.com/TwBurn/cdi-controller-library
For future updates I hope to include some more examples (like an USB mouse, keyboard), workout some issues, as well as moving my hardware beyond a prototyping phase so I don’t have random wires running over my desk.
Thank you TwBurn!
Your work will help so many people…
I am trying to create an interface for a 2 button joystick for a CDi 470/05. There a number of questions I have regarding the requirements of the CDi. I would appreciate it if anyone can answer them. I have started with some example software and looked at some arduino code to see any differences to my code. First question is does the pointing device ID have to be continuously sent? if not must it always be the first byte of a packet or only sent once at startup?
There has been much spoken about the baud rate, I am sending all data idle low with data bits 0 sent as a high and 1’s as a low which I believe is the spec. I am handshaking with the RTS line on pin7 and sending on pin 2 of the front connector of the CDi unit. However, checking the data on an oscilloscope, The RTS never stays high long enough for complete packet at 1200 baud. On 9600 baud it’s OK and always gets the full packet including a device ID if sent. The CDi appears to turn its nose up at the data at the lower baud rate and falls low at the start of the last byte. Any button pressing is not present either when monitoring the packet data. Unlike the 9600baud when all the data is present. I understand the CDi can monitor the incoming data and choose to work at either baud rate with a preference for 1200 baud. I have not seen, during the testing of the project, any response whatsoever from the CDi. Data is clearly present when the joystick is moved and buttons pressed, at least on the higher baud rate. Any help would be appreciated, Thanks Guys. Chris
Hey @lovecatts! We are really happy to have you here!
Having a person interested into CD-i development is always amazing!
Many people here can help you. Ask:
You can also visit our forum, and for a perfect online help, join us on Discord:
You will find tons of information at the “homebrew and dev” section.