gameboy memory domains: make consistent between gambatte and GBhawk

This commit is contained in:
alyosha-tas 2020-03-20 20:04:58 -04:00
parent af2f87deac
commit 7e00b7892f
2 changed files with 26 additions and 18 deletions

View File

@ -12,26 +12,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
var domains = new List<MemoryDomain> var domains = new List<MemoryDomain>
{ {
new MemoryDomainDelegate( new MemoryDomainDelegate(
"Main RAM", "WRAM",
RAM.Length, RAM.Length,
MemoryDomain.Endian.Little, MemoryDomain.Endian.Little,
addr => RAM[addr], addr => RAM[addr],
(addr, value) => RAM[addr] = value, (addr, value) => RAM[addr] = value,
1), 1),
new MemoryDomainDelegate(
"Zero Page RAM",
ZP_RAM.Length,
MemoryDomain.Endian.Little,
addr => ZP_RAM[addr],
(addr, value) => ZP_RAM[addr] = value,
1),
new MemoryDomainDelegate(
"System Bus",
0X10000,
MemoryDomain.Endian.Little,
addr => PeekSystemBus(addr),
(addr, value) => PokeSystemBus(addr, value),
1),
new MemoryDomainDelegate( new MemoryDomainDelegate(
"ROM", "ROM",
_rom.Length, _rom.Length,
@ -45,12 +31,33 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
MemoryDomain.Endian.Little, MemoryDomain.Endian.Little,
addr => VRAM[addr], addr => VRAM[addr],
(addr, value) => VRAM[addr] = value, (addr, value) => VRAM[addr] = value,
1) 1),
new MemoryDomainDelegate(
"OAM",
OAM.Length,
MemoryDomain.Endian.Little,
addr => OAM[addr],
(addr, value) => OAM[addr] = value,
1),
new MemoryDomainDelegate(
"HRAM",
ZP_RAM.Length,
MemoryDomain.Endian.Little,
addr => ZP_RAM[addr],
(addr, value) => ZP_RAM[addr] = value,
1),
new MemoryDomainDelegate(
"System Bus",
0X10000,
MemoryDomain.Endian.Little,
addr => PeekSystemBus(addr),
(addr, value) => PokeSystemBus(addr, value),
1),
}; };
if (cart_RAM != null) if (cart_RAM != null)
{ {
var CartRam = new MemoryDomainByteArray("Cart RAM", MemoryDomain.Endian.Little, cart_RAM, true, 1); var CartRam = new MemoryDomainByteArray("CartRAM", MemoryDomain.Endian.Little, cart_RAM, true, 1);
domains.Add(CartRam); domains.Add(CartRam);
} }

View File

@ -32,7 +32,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
CreateMemoryDomain(LibGambatte.MemoryAreas.wram, "WRAM"); CreateMemoryDomain(LibGambatte.MemoryAreas.wram, "WRAM");
CreateMemoryDomain(LibGambatte.MemoryAreas.rom, "ROM"); CreateMemoryDomain(LibGambatte.MemoryAreas.rom, "ROM");
CreateMemoryDomain(LibGambatte.MemoryAreas.vram, "VRAM"); CreateMemoryDomain(LibGambatte.MemoryAreas.vram, "VRAM");
CreateMemoryDomain(LibGambatte.MemoryAreas.cartram, "CartRAM");
CreateMemoryDomain(LibGambatte.MemoryAreas.oam, "OAM"); CreateMemoryDomain(LibGambatte.MemoryAreas.oam, "OAM");
CreateMemoryDomain(LibGambatte.MemoryAreas.hram, "HRAM"); CreateMemoryDomain(LibGambatte.MemoryAreas.hram, "HRAM");
@ -57,6 +56,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
LibGambatte.gambatte_cpuwrite(GambatteState, (ushort)addr, val); LibGambatte.gambatte_cpuwrite(GambatteState, (ushort)addr, val);
}, 1)); }, 1));
CreateMemoryDomain(LibGambatte.MemoryAreas.cartram, "CartRAM");
MemoryDomains = new MemoryDomainList(_memoryDomains); MemoryDomains = new MemoryDomainList(_memoryDomains);
(ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(MemoryDomains); (ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(MemoryDomains);
} }