BizHawk/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.IMemoryDomains.cs

77 lines
1.8 KiB
C#
Raw Normal View History

2017-08-29 13:18:28 +00:00
using System;
using System.Collections.Generic;
using System.Linq;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
{
public partial class GBHawk
{
private IMemoryDomains MemoryDomains;
public void SetupMemoryDomains()
{
var domains = new List<MemoryDomain>
{
new MemoryDomainDelegate(
"Main RAM",
RAM.Length,
MemoryDomain.Endian.Little,
addr => RAM[addr],
(addr, value) => RAM[addr] = value,
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(
"ROM",
_rom.Length,
MemoryDomain.Endian.Little,
addr => _rom[addr],
2018-03-27 14:50:55 +00:00
(addr, value) => _rom[addr] = value,
2018-03-18 20:06:48 +00:00
1),
2018-03-27 14:50:55 +00:00
new MemoryDomainDelegate(
"VRAM",
VRAM.Length,
MemoryDomain.Endian.Little,
addr => VRAM[addr],
(addr, value) => VRAM[addr] = value,
1)
2017-08-29 13:18:28 +00:00
};
2018-03-18 20:06:48 +00:00
if (cart_RAM != null)
{
var CartRam = new MemoryDomainByteArray("Cart RAM", MemoryDomain.Endian.Little, cart_RAM, true, 1);
domains.Add(CartRam);
}
2017-08-29 13:18:28 +00:00
MemoryDomains = new MemoryDomainList(domains);
(ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(MemoryDomains);
}
private byte PeekSystemBus(long addr)
{
ushort addr2 = (ushort)(addr & 0xFFFF);
2017-11-23 02:38:56 +00:00
return PeekMemory(addr2);
2017-08-29 13:18:28 +00:00
}
private void PokeSystemBus(long addr, byte value)
{
ushort addr2 = (ushort)(addr & 0xFFFF);
WriteMemory(addr2, value);
}
}
}