User input
User input can be read directly from registers REG_P1CNT ($300000) and REG_P2CNT ($340000), which come from the hardware.
The SYSTEM_IO BIOS call sets more convenient values in RAM (active high bits, edge detection, repeat...). See the call's page for more details.
Most of the games use that BIOS call to read player input (mslug is an exception ?).