1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-11-30 20:18:06 +11:00
collapseos/emul/z80/sms_pad.c
Virgil Dupras 490eceab6d emul/z80: flatten directory structure
I'm about to reuse sdc.c in sms.c and the old directory structure
was becoming awkward.
2020-10-25 15:58:00 -04:00

31 lines
618 B
C

#include "sms_pad.h"
void pad_init(Pad *pad, Tristate *TH)
{
pad->pressed = 0xff;
pad->TH = TH;
}
void pad_setbtn(Pad *pad, PAD_BTN btn, bool pressed)
{
if (pressed) {
pad->pressed &= ~(1 << btn);
} else {
pad->pressed |= (1 << btn);
}
}
uint8_t pad_rd(Pad *pad)
{
uint8_t res;
if (*pad->TH == TRI_LOW) { // TH selected
// A and START shifted in from bits 7:6 into 5:4
res = (pad->pressed & 0xf) | ((pad->pressed & 0xc0) >> 2);
} else {
res = pad->pressed & 0x3f;
}
// Bits 7:6 are always high
res |= 0b11000000;
return res;
}