As a lot of you already may know, it's possible to read both the B and C buttons on an unmodified Sega Genesis controller. (bB sample code here, asm sample code here, and 2-button classic games and homebrew here.)
While looking at the standard Atari 2600 and Genesis pinouts a while back...
6... Button A/Button B
9... Start/Button C
...it occurred to me that if you switched pins 5 and 7, you might be able to control the Select line of the multiplexer in the Genesis controller with the Paddle line. (Some Genesis buttons share wires; the status of one pair of buttons is returned when the Select line is hi, and the status of another pair of buttons is returned when Select is low.)
The first test confirmed the theory, but it was apparent I needed a pull-up resistor between 5 and 7, to allow the Paddle cap to charge again after a button press. I found that a 10k resistor did the trick.
Buttons A, B, C, and Start can be read with this configuration, and I believe with a bit of software protocol work that the remaining buttons on a 6-button pad can be read too.
While this isn't as slick as the 2-button read, since it involves modification to the pad, it's still pretty cool to be able to read the additional Genesis buttons on a 2600 for a 10 cent investment. And given that genesis compatible pads can be bought for around $5, it would be viable to sell a modified pad with a homebrew title that required multiple buttons.
In case anyone decides to tread down this road someday, a sample program to report the 4 buttons on a Genesis pad follows...
3buttonread.asm.txt 1.52KB 280 downloads
3buttonread.bin 4KB 188 downloads
Someday I'm gonna hack this into Defender 2 and play it in all of 4 button glory it deserves!