From 408bb04a97c727865efefdf50c035b23215f9dfa Mon Sep 17 00:00:00 2001 From: slack Date: Fri, 12 Sep 2008 22:02:14 +0200 Subject: [PATCH] Fixed bug in core. LDH was accessing directly to memory.high, and wouldn't trigger DMA or DIV responses. --- GBMemory.cc | 2 +- gbcore.cc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/GBMemory.cc b/GBMemory.cc index bb31106..5a8e118 100644 --- a/GBMemory.cc +++ b/GBMemory.cc @@ -64,7 +64,7 @@ void GBMemory::write(u16 addr, u8 value, WatchpointControl watch) else if (addr == DMA) { u16 dma_src = value << 8; - logger.warning("OAM DMA transfer from 0x", std::hex, std::setfill('0'), dma_src, " requested"); + //logger.warning("OAM DMA transfer from 0x", std::hex, std::setfill('0'), dma_src, " requested"); core->video.DMA_OAM(dma_src); } } diff --git a/gbcore.cc b/gbcore.cc index 07467a1..a744d18 100644 --- a/gbcore.cc +++ b/gbcore.cc @@ -553,13 +553,13 @@ GameBoy::run_status GameBoy::run_cycle() break; // LDH (n), A case 0xE0: { - memory.high[memory.read(regs.PC++)] = regs.A; + memory.write(0xFF00+memory.read(regs.PC++), regs.A); cycles_until_next_instruction = 12; break; } // LDH A, (n) case 0xF0: - regs.A = memory.high[memory.read(regs.PC++)]; + regs.A = memory.read(0xFF00+memory.read(regs.PC++)); cycles_until_next_instruction = 12; break; -- 2.34.1