The Sega Genesis has two DE9 connectors. Two of the pins are hardwired to power and ground output. The others act as 7-bit GPIO ports, where the CPU can assign a direction (input or output) for each pin through the direction register.
$A10009: Controller 1 direction
$A10003: Controller 1 data
The pinout for controllers is as follows (
source):
1-4, 6, 9: Button states
5: Vcc (always output)
7: Clock (output, double data rate)
8: Ground (always output)
On 3-button controllers, the clock output acts as a select, with different button states returned for true or false. On 6-button controllers, the third pulse on clock within a few milliseconds returns an additional set of button states.
And famiclone controllers, from
socram8888's link:
1: Controller NC, Zapper trigger
2: Controller button states, Zapper NC
3: Controller reload, Zapper NC
4: Controller clock, Zapper NC
5: Controller NC, Zapper photodiode
6, 7: Power
8, 9: Ground
This appears to mean that a specially written Genesis game could be written to accept 3-button or 6-button Genesis controllers or NES or Super NES controllers using the famiclone pinout, but not the famiclone Zapper because of the conflict on pin 5.
But interestingly enough, the
Atari 2600 controller pinout puts paddle inputs on pins 5 and 9.
Nocash's 2600 doc explains that paddles control the charging of capacitors inside the console, and games measure how long it takes in scanlines for the caps to charge enough that the pin goes high. That's almost the same protocol that the Zapper ends up implementing for things like Operation Wolf and
Zap Ruder, which measure time in scanlines from vblank to light.