GB IO: Implement key reading

This commit is contained in:
Jeffrey Pfau 2016-01-19 23:12:25 -08:00
parent d2f97a8edc
commit 81cd68cbac
1 changed files with 17 additions and 0 deletions

View File

@ -85,8 +85,25 @@ void GBIOWrite(struct GB* gb, unsigned address, uint8_t value) {
gb->memory.io[address] = value;
}
static uint8_t _readKeys(struct GB* gb) {
uint8_t keys = *gb->keySource;
switch (gb->memory.io[REG_JOYP] & 0x30) {
case 0x10:
keys >>= 4;
break;
case 0x20:
break;
default:
// ???
break;
}
return (gb->memory.io[REG_JOYP] | 0xF) ^ (keys & 0xF);
}
uint8_t GBIORead(struct GB* gb, unsigned address) {
switch (address) {
case REG_JOYP:
return _readKeys(gb);
case REG_IF:
break;
case REG_IE: