GBA: Fix GPIO being readable when set to write-only

This commit is contained in:
Jeffrey Pfau 2014-12-25 14:49:06 -08:00
parent f25821524d
commit 90a3872552
1 changed files with 7 additions and 5 deletions
src/gba

View File

@ -50,11 +50,6 @@ void GBAGPIOWrite(struct GBACartridgeGPIO* gpio, uint32_t address, uint16_t valu
case GPIO_REG_DATA:
gpio->pinState &= ~gpio->direction;
gpio->pinState |= value;
if (gpio->readWrite) {
uint16_t old = gpio->gpioBase[0];
old &= ~gpio->direction;
gpio->gpioBase[0] = old | gpio->pinState;
}
_readPins(gpio);
break;
case GPIO_REG_DIRECTION:
@ -66,6 +61,13 @@ void GBAGPIOWrite(struct GBACartridgeGPIO* gpio, uint32_t address, uint16_t valu
default:
GBALog(gpio->p, GBA_LOG_WARN, "Invalid GPIO address");
}
if (gpio->readWrite) {
uint16_t old = gpio->gpioBase[0];
old &= ~gpio->direction;
gpio->gpioBase[0] = old | gpio->pinState;
} else {
gpio->gpioBase[0] = 0;
}
}
void GBAGPIOInitRTC(struct GBACartridgeGPIO* gpio) {