all repos — mgba @ bc9d0690bba1a01a612d7b2d25c24b10b077fab9

mGBA Game Boy Advance Emulator

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	case REG_IE:
14		GBAWriteIE(gba, value);
15		break;
16	case REG_IME:
17		GBAWriteIME(gba, value);
18		break;
19	default:
20		GBALog(GBA_LOG_STUB, "Stub I/O register write: %03x", address);
21		break;
22	}
23	gba->memory.io[address >> 1] = value;
24}
25
26uint16_t GBAIORead(struct GBA* gba, uint32_t address) {
27	switch (address) {
28	case REG_DISPSTAT:
29		return GBAVideoReadDISPSTAT(&gba->video);
30		break;
31	case REG_IE:
32	case REG_WAITCNT:
33	case REG_IME:
34		// Handled transparently by registers
35		break;
36	default:
37		GBALog(GBA_LOG_STUB, "Stub I/O register read: %03x", address);
38		break;
39	}
40	return gba->memory.io[address >> 1];
41}