GBA SIO: Improve readability

This commit is contained in:
Vicki Pfau 2021-03-12 02:26:43 -08:00
parent 885ef286d2
commit 3a95b30d63
3 changed files with 18 additions and 9 deletions

View File

@ -29,8 +29,12 @@ enum {
JOY_CMD_TRANS = 0x14, JOY_CMD_TRANS = 0x14,
JOY_CMD_RECV = 0x15, JOY_CMD_RECV = 0x15,
JOYSTAT_TRANS_BIT = 8, JOYSTAT_TRANS = 8,
JOYSTAT_RECV_BIT = 2, JOYSTAT_RECV = 2,
JOYCNT_RESET = 1,
JOYCNT_RECV = 2,
JOYCNT_TRANS = 4,
}; };
DECL_BITFIELD(GBASIONormal, uint16_t); DECL_BITFIELD(GBASIONormal, uint16_t);

View File

@ -532,7 +532,7 @@ void GBAIOWrite(struct GBA* gba, uint32_t address, uint16_t value) {
break; break;
case REG_JOY_TRANS_LO: case REG_JOY_TRANS_LO:
case REG_JOY_TRANS_HI: case REG_JOY_TRANS_HI:
gba->memory.io[REG_JOYSTAT >> 1] |= JOYSTAT_TRANS_BIT; gba->memory.io[REG_JOYSTAT >> 1] |= JOYSTAT_TRANS;
// Fall through // Fall through
case REG_SIODATA32_LO: case REG_SIODATA32_LO:
case REG_SIODATA32_HI: case REG_SIODATA32_HI:
@ -576,6 +576,7 @@ void GBAIOWrite(struct GBA* gba, uint32_t address, uint16_t value) {
case REG_DEBUG_FLAGS: case REG_DEBUG_FLAGS:
if (gba->debug) { if (gba->debug) {
GBADebug(gba, value); GBADebug(gba, value);
return; return;
} }
// Fall through // Fall through
@ -835,7 +836,7 @@ uint16_t GBAIORead(struct GBA* gba, uint32_t address) {
case REG_JOY_RECV_LO: case REG_JOY_RECV_LO:
case REG_JOY_RECV_HI: case REG_JOY_RECV_HI:
gba->memory.io[REG_JOYSTAT >> 1] &= ~JOYSTAT_RECV_BIT; gba->memory.io[REG_JOYSTAT >> 1] &= ~JOYSTAT_RECV;
break; break;
case REG_SOUNDBIAS: case REG_SOUNDBIAS:

View File

@ -31,7 +31,7 @@ uint16_t GBASIOJOYWriteRegister(struct GBASIODriver* sio, uint32_t address, uint
int GBASIOJOYSendCommand(struct GBASIODriver* sio, enum GBASIOJOYCommand command, uint8_t* data) { int GBASIOJOYSendCommand(struct GBASIODriver* sio, enum GBASIOJOYCommand command, uint8_t* data) {
switch (command) { switch (command) {
case JOY_RESET: case JOY_RESET:
sio->p->p->memory.io[REG_JOYCNT >> 1] |= 1; sio->p->p->memory.io[REG_JOYCNT >> 1] |= JOYCNT_RESET;
if (sio->p->p->memory.io[REG_JOYCNT >> 1] & 0x40) { if (sio->p->p->memory.io[REG_JOYCNT >> 1] & 0x40) {
GBARaiseIRQ(sio->p->p, IRQ_SIO, 0); GBARaiseIRQ(sio->p->p, IRQ_SIO, 0);
} }
@ -40,16 +40,18 @@ int GBASIOJOYSendCommand(struct GBASIODriver* sio, enum GBASIOJOYCommand command
data[0] = 0x00; data[0] = 0x00;
data[1] = 0x04; data[1] = 0x04;
data[2] = sio->p->p->memory.io[REG_JOYSTAT >> 1]; data[2] = sio->p->p->memory.io[REG_JOYSTAT >> 1];
mLOG(GBA_SIO, DEBUG, "JOY %s: %02X (%02X)", command == JOY_POLL ? "poll" : "reset", data[2], sio->p->p->memory.io[REG_JOYCNT >> 1]); mLOG(GBA_SIO, DEBUG, "JOY %s: %02X (%02X)", command == JOY_POLL ? "poll" : "reset", data[2], sio->p->p->memory.io[REG_JOYCNT >> 1]);
return 3; return 3;
case JOY_RECV: case JOY_RECV:
sio->p->p->memory.io[REG_JOYCNT >> 1] |= 2; sio->p->p->memory.io[REG_JOYCNT >> 1] |= JOYCNT_RECV;
sio->p->p->memory.io[REG_JOYSTAT >> 1] |= 2; sio->p->p->memory.io[REG_JOYSTAT >> 1] |= JOYSTAT_RECV;
sio->p->p->memory.io[REG_JOY_RECV_LO >> 1] = data[0] | (data[1] << 8); sio->p->p->memory.io[REG_JOY_RECV_LO >> 1] = data[0] | (data[1] << 8);
sio->p->p->memory.io[REG_JOY_RECV_HI >> 1] = data[2] | (data[3] << 8); sio->p->p->memory.io[REG_JOY_RECV_HI >> 1] = data[2] | (data[3] << 8);
data[0] = sio->p->p->memory.io[REG_JOYSTAT >> 1]; data[0] = sio->p->p->memory.io[REG_JOYSTAT >> 1];
mLOG(GBA_SIO, DEBUG, "JOY recv: %02X (%02X)", data[0], sio->p->p->memory.io[REG_JOYCNT >> 1]); mLOG(GBA_SIO, DEBUG, "JOY recv: %02X (%02X)", data[0], sio->p->p->memory.io[REG_JOYCNT >> 1]);
if (sio->p->p->memory.io[REG_JOYCNT >> 1] & 0x40) { if (sio->p->p->memory.io[REG_JOYCNT >> 1] & 0x40) {
@ -57,13 +59,15 @@ int GBASIOJOYSendCommand(struct GBASIODriver* sio, enum GBASIOJOYCommand command
} }
return 1; return 1;
case JOY_TRANS: case JOY_TRANS:
sio->p->p->memory.io[REG_JOYCNT >> 1] |= 4; sio->p->p->memory.io[REG_JOYCNT >> 1] |= JOYCNT_TRANS;
sio->p->p->memory.io[REG_JOYSTAT >> 1] &= ~JOYSTAT_TRANS_BIT; sio->p->p->memory.io[REG_JOYSTAT >> 1] &= ~JOYSTAT_TRANS;
data[0] = sio->p->p->memory.io[REG_JOY_TRANS_LO >> 1]; data[0] = sio->p->p->memory.io[REG_JOY_TRANS_LO >> 1];
data[1] = sio->p->p->memory.io[REG_JOY_TRANS_LO >> 1] >> 8; data[1] = sio->p->p->memory.io[REG_JOY_TRANS_LO >> 1] >> 8;
data[2] = sio->p->p->memory.io[REG_JOY_TRANS_HI >> 1]; data[2] = sio->p->p->memory.io[REG_JOY_TRANS_HI >> 1];
data[3] = sio->p->p->memory.io[REG_JOY_TRANS_HI >> 1] >> 8; data[3] = sio->p->p->memory.io[REG_JOY_TRANS_HI >> 1] >> 8;
data[4] = sio->p->p->memory.io[REG_JOYSTAT >> 1]; data[4] = sio->p->p->memory.io[REG_JOYSTAT >> 1];
mLOG(GBA_SIO, DEBUG, "JOY trans: %02X%02X%02X%02X:%02X (%02X)", data[0], data[1], data[2], data[3], data[4], sio->p->p->memory.io[REG_JOYCNT >> 1]); mLOG(GBA_SIO, DEBUG, "JOY trans: %02X%02X%02X%02X:%02X (%02X)", data[0], data[1], data[2], data[3], data[4], sio->p->p->memory.io[REG_JOYCNT >> 1]);
if (sio->p->p->memory.io[REG_JOYCNT >> 1] & 0x40) { if (sio->p->p->memory.io[REG_JOYCNT >> 1] & 0x40) {