src/gba/gba-io.c (view raw)
1#include "gba-io.h"
2
3#include "gba-video.h"
4
5void GBAIOWrite(struct GBA* gba, uint32_t address, uint16_t value) {
6 switch (address) {
7 case REG_DISPSTAT:
8 GBAVideoWriteDISPSTAT(&gba->video, value);
9 break;
10 case REG_WAITCNT:
11 GBAAdjustWaitstates(&gba->memory, value);
12 break;
13 default:
14 GBALog(GBA_LOG_STUB, "Stub I/O register write: %03x", address);
15 break;
16 }
17 gba->memory.io[address >> 1] = value;
18}
19
20uint16_t GBAIORead(struct GBA* gba, uint32_t address) {
21 switch (address) {
22 case REG_DISPSTAT:
23 return GBAVideoReadDISPSTAT(&gba->video);
24 break;
25 case REG_WAITCNT:
26 // Handled transparently by registers
27 break;
28 default:
29 GBALog(GBA_LOG_STUB, "Stub I/O register read: %03x", address);
30 break;
31 }
32 return gba->memory.io[address >> 1];
33}