ref: 367e606ec94e287a987d14557fd57397cdac174a
parent: 84d9a64e4779904cbe9a002f6c3dcaae17eddad6
author: aiju <devnull@localhost>
date: Wed Apr 1 15:27:52 EDT 2015
games/gb: fix gbc dma
--- a/sys/src/games/gb/dat.h
+++ b/sys/src/games/gb/dat.h
@@ -69,10 +69,10 @@
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,
--- a/sys/src/games/gb/mem.c
+++ b/sys/src/games/gb/mem.c
@@ -549,7 +549,7 @@
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;
--
⑨