diff --git a/sys/src/games/gb/dat.h b/sys/src/games/gb/dat.h index 110e955de..787c8f839 100644 --- a/sys/src/games/gb/dat.h +++ b/sys/src/games/gb/dat.h @@ -69,10 +69,10 @@ enum { WX = 0x4B, KEY1 = 0x4D, VBK = 0x4F, - HDMASL = 0x51, - HDMASH = 0x52, - HDMADL = 0x53, - HDMADH = 0x54, + HDMASH = 0x51, + HDMASL = 0x52, + HDMADH = 0x53, + HDMADL = 0x54, HDMAC = 0x55, BCPS = 0x68, diff --git a/sys/src/games/gb/mem.c b/sys/src/games/gb/mem.c index c5b4bd554..7f2894571 100644 --- a/sys/src/games/gb/mem.c +++ b/sys/src/games/gb/mem.c @@ -549,7 +549,7 @@ dmastep(void) u16int sa, da; sa = (reg[HDMASL] | reg[HDMASH] << 8) & 0xfff0; - da = (reg[HDMADL] | reg[HDMADH] << 8) & 0x0ff0; + da = (reg[HDMADL] | reg[HDMADH] << 8) & 0x1ff0 | 0x8000; for(i = 0; i < 16; i++) memwrite(da++, memread(sa++)); reg[HDMASL] += 16;