So to start this project off thank you bbtinkerer for your original classic joystick project which inspired and started off this project by providing base code for the protocol (https://hackaday.com/2017/05/19/a-diy-nes-advantage-controller-for-the-nes-classic/).
So a little info, I am using the HC-5/6, as the bluetooth serial communication link which connects the receiver (dongle that plugs into the classic console) and transmitter (controller). Here you can see I hardwired the HC-05 module (after setting up the AT mode to allow master mode and autoconnecting to any other slave module).
Next up, the software runs on an ATMEGA328P with each the transmitter and receiver having their own controller on tiny little general purpose boards I designed and ordered through my sponsor JLCPCB (thanks a bunch!!!). Check them out here: $2 PCBs (in 48hours): https://jlcpcb.com
The transmitter connects to the original SNES controller board's SPI serial shift register and polls it just like the console would. Once the button states are captured, then they encoded into a 2 byte packet to be sent over the bluetooth UART serial. Here's the transmitter circuit. The HC-05 bluetooth module is on the front and the discrete RGB leds right above the up button.
The battery (a 330mAh 3.7V cell) and charging circuit with micro usb are on the back left hand side. The atmega328p and 3.3V LDO regulator are on the right here.
We can see that delta T is just under 30mS which equates to:
Less than 2 frames of latency assuming NTSC 60 frames a second (or equivalently 1 frame for 30 fps). So definitely good enough for me and the majority of the types of games I play (although this might pose problems for games like punchout that require frame perfect button inputs).
In the next part I will add some finishing touches to the controller and button it all up. Then I will finish the receiver and maybe make versions that are compatible with original consoles and usb.