Joypad
Joypads have 4 directions and 6 buttons switches.
Registers used to read the button's states: see Memory mapped registers
The SYSTEM_IO ($C0044A) BIOS call can be used to read joypads more easily: it sets values in the BIOS RAM which gives currently pressed, state change, and repeat values for both joypads.
NeoGeo CD joypads
The NeoGeo CD joypads use membrane switches and springs for the 4 directions (replacement part ?) which directly set the corresponding inputs to ground.
The buttons are buffered with 3, dual NPN digital transistors marked "G9"
Only one output is used: OUT3, which is connected to the D input and can therefor be used for joypad detection (D = 0 if OUT3 = 1)