Files
WolfensteinVB/libs/libgccvb/controller.c
2026-02-19 23:28:57 +01:00

40 lines
858 B
C

#include "types.h"
#include "hw.h"
#include "controller.h"
u16 oldkeydown = 0x0000;
u16 oldkeyup = 0x0000;
/* Reads the keypad, returns the 16 button bits */
u16 vbReadPad()
{
HW_REGS[SCR] = (S_INTDIS | S_HW);
while (HW_REGS[SCR] & S_STAT);
return (HW_REGS[SDHR] << 8) | HW_REGS[SDLR];
}
/* Check if a button has been pressed since the last read. If button state matches last read, it is returned as 'off' */
u16 vbPadKeyDown()
{
u16 keystate,keydown;
keystate = vbReadPad() & K_ANY;
keydown = (oldkeydown & keystate) ^ keystate;
oldkeydown = keystate;
return keydown;
}
/* Check if a button has been released since the last read. If button state matches last read, it is returned as 'off' */
u16 vbPadKeyUp()
{
u16 keystate,keyup;
keystate = vbReadPad() & K_ANY;
keyup = (oldkeyup & ~keystate);
oldkeyup = keystate;
return keyup;
}