Gameboy - refactor memory domains to use the correct objects instead of the cpu buss

This commit is contained in:
andres.delikat 2011-12-27 02:59:37 +00:00
parent 422e9c6daa
commit 9b2a9a390f
1 changed files with 19 additions and 15 deletions

View File

@ -338,28 +338,32 @@ namespace BizHawk.Emulation.Consoles.Gameboy
(addr, value) => Cpu.WriteMemory((ushort)addr, value));
var WRAM0Domain = new MemoryDomain("WRAM Bank 0", 0x2000, Endian.Little,
addr => Cpu.ReadMemory((ushort)((addr & 0x1FFF) + 0xC000)),
(addr, value) => Cpu.WriteMemory((ushort)((addr & 0x1FFF) + 0xC000), value));
addr => WRam[addr & 0x1FFF],
(addr, value) => WRam[addr & 0x1FFF] = value);
var WRAM1Domain = new MemoryDomain("WRAM Bank 1", 0x2000, Endian.Little,
addr => Cpu.ReadMemory((ushort)((addr & 0x1FFF) + 0xD000)),
(addr, value) => Cpu.WriteMemory((ushort)((addr & 0x1FFF) + 0xD000), value));
addr => WRam[(addr & 0x1FFF) + 0x2000],
(addr, value) => WRam[addr & 0x1FFF] = value);
var WRAMADomain = new MemoryDomain("WRAM (All)", 0x4000, Endian.Little,
addr => Cpu.ReadMemory((ushort)((addr & 0x3FFF) + 0xC000)),
(addr, value) => Cpu.WriteMemory((ushort)((addr & 0x3FFF) + 0xC000), value));
var WRAMADomain = new MemoryDomain("WRAM Bank (All)", 0x8000, Endian.Little,
addr => WRam[addr & 0x7FFF],
(addr, value) => WRam[addr & 0x7FFF] = value); //adelikat: Do we want to check for GBC vs GB and limit this domain accordingly?
var OAMDomain = new MemoryDomain("SRAM", 0x00A0, Endian.Little,
addr => OAM[addr & 0x9F],
(addr, value) => OAM[addr & 0x9F] = value);
var OAMDomain = new MemoryDomain("OAM", 0x00A0, Endian.Little,
addr => Cpu.ReadMemory((ushort)((addr & 0x009F) + 0xFE00)),
(addr, value) => Cpu.WriteMemory((ushort)((addr & 0x009F) + 0xFE00), value));
addr => OAM[addr & 0x9F],
(addr, value) => OAM[addr & 0x9F] = value);
var HRAMDomain = new MemoryDomain("HRAM", 0x007F, Endian.Little,
addr => Cpu.ReadMemory((ushort)((addr & 0x007E) + 0xFF80)),
(addr, value) => Cpu.WriteMemory((ushort)((addr & 0x007E) + 0xFF80), value));
var HRAMDomain = new MemoryDomain("HRAM", 0x0080, Endian.Little,
addr => HRam[addr & 0x007F],
(addr, value) => HRam[addr & 0x0080] = value);
var VRAMDomain = new MemoryDomain("VRAM", 0x2000, Endian.Little,
addr => Cpu.ReadMemory((ushort)((addr & 0x1FFF) + 0x8000)),
(addr, value) => Cpu.WriteMemory((ushort)((addr & 0x1FFF) + 0x8000), value));
addr => VRam[addr & 0x1FFF],
(addr, value) => VRam[addr & 0x1FFF] = value);
domains.Add(WRAM0Domain);
domains.Add(WRAM1Domain);
@ -700,7 +704,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
{
lagged = true;
Controller.UpdateControls(Frame++);
//Cpu.ExecuteCycles(4096);
Cpu.ExecuteCycles(4096);
if (lagged)
{