From 408bb04a97c727865efefdf50c035b23215f9dfa Mon Sep 17 00:00:00 2001
From: slack <slack@codemaniacs.com>
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