Not much progress in the last two weeks but with vacation soon my daily job workload reduced a lot. Meanwhile I got a few accessories to help BlueRetro development.
Xbox adaptive controller
First, I got the Xbox adaptive controller, the Logitech buttons kit and a Logitech USB joystick.
Unlike the regular Xbox controller this one does not have the flaw of initiating a new pairing upon link key negative reply. So the workaround for the inquiry issue is a bit more complicated. On top of spoofing the MAC address, we need to also sniff the Link Key from the original device and add it manually in the LINKKEYS.BIN on the BlueRetro's SD card.
The controller is very versatile and coupled with the Logitech buttons & joystick you can easily build an entirely custom setup. With the PC Xbox Accessories app you can setup up to 3 custom buttons mapping. The controller is actually a good challenge for my generic HID handling code. The descriptor is quite huge at 1224 bytes busting the 1024 bytes limit I had anticipated. Also it uses some usage code I didn't implement in my HID parser. So I got a few things to fix to get it working properly!. See ubuntu1804_xb1_adaptive_inquiry.log for a trace of the pairing & discovery process and see the HID descriptor here.
Atari 5200 flash cart & breakout cable
I selected a few chips I plan to use for supporting parallel buttons & direct potentiometer controllers like the 5200 got. I'm planning to use a AD8403ARUZ100 which includes 4x 100K 8 bits digital potentiometer to drive 2 joysticks.
I plan to support 4 controllers on the 5200 so I would need 2 chips for a total of 8 pots. Supporting 4 controllers will require around 40 IOs. The ESP32 doesn't have enough and they are not 5V rated anyway. I plan to use a couple MAX7301AAI SPI IO expander for that job.
I got an Atarimax flash cart to be able to run the controller test program but I don't have any fully working 5200 controllers to navigate the menus to reach it. I got one that the joystick work but all the buttons don't work. The flex board contacts are probably crack and I don't feel like fixing it, those controller are a real pain to reassemble!! So my idea to work around that was to build a breakout out cable to pass the two buttons to a Master System controller and pass the keypad to a 2600 video touch pad.
The touch pad is missing a column to handle the 5200's Start, Pause & Reset buttons so I've put a switch to toggle between the 5200's first & last columns on the first column of the 2600 touch pad. Work better than I expected, you can actually play some simple games this way!
An interesting note is that using the 2600 pad allow pressing the 4th column unpopulated button. In Pete's test rom this display a weird black symbol rather than 0xF.