Sega gen added to Bridge.

Ok I know a lot of you have been wanting to see this one and many were skeptical it would work.  It was extremely tight timing to make it work but it does work. I focused on the 3 button mode for now and it looks like 6 button is rather simple.

Again, as with so much, the info on the net was only mostly correct. I also found a lot of the write ups to be very difficult reading. Most all of my work was trial error…

Sega polling is basically like an Atari controller (two button), with a pulse.  Once a controller sees u,d,l or r pressed, it hold the respective line low. Same for B and C except that the line is high during the pulse. So like the Atari, each button and direction has its own pin. Also the controller holds the right and left low during the pulse when the controller is not pressing theses directions. It is for this reason the console will   let you use an Atari controller but it also known it’s not connected to one. The Start and A buttons are low only during the  pulse when pressed and checked 600ns or so after the falling edge. They are then raised  after the rising edge. When the console does not see a  Sega controller it inverts the pulse and normal high becomes normally low. The issue with this is that you can not wait for the falling edge (beginning of pulse) and set the pin states on most AVR’s with a 16Mhz clock. So to do this, it is a must to prep a lot of the conditions. Since the console checks only every 16.6ms, there is not much you can do about the built in lag other then making sure the Bridge polls the controller data (Bliss-Box end) before the check. To do this we burn 10ms then poll the Bridge, and send the data to be collected by the console.

Leave a Reply

Your email address will not be published. Required fields are marked *