ColecoHawk - implement memory domains
This commit is contained in:
parent
ff2c74245b
commit
5fda8801f4
|
@ -41,10 +41,33 @@ namespace BizHawk.Emulation.Consoles.Coleco
|
||||||
|
|
||||||
LoadRom(rom);
|
LoadRom(rom);
|
||||||
this.game = game;
|
this.game = game;
|
||||||
|
SetupMemoryDomains();
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
||||||
|
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
||||||
|
IList<MemoryDomain> memoryDomains;
|
||||||
|
const ushort RamSizeMask = 0x03FF;
|
||||||
|
void SetupMemoryDomains()
|
||||||
|
{
|
||||||
|
var domains = new List<MemoryDomain>(3);
|
||||||
|
var MainMemoryDomain = new MemoryDomain("Main RAM", Ram.Length, Endian.Little,
|
||||||
|
addr => Ram[addr & RamSizeMask],
|
||||||
|
(addr, value) => Ram[addr & RamSizeMask] = value);
|
||||||
|
var VRamDomain = new MemoryDomain("Video RAM", VDP.VRAM.Length, Endian.Little,
|
||||||
|
addr => VDP.VRAM[addr & 0x3FFF],
|
||||||
|
(addr, value) => VDP.VRAM[addr & 0x3FFF] = value);
|
||||||
|
var SystemBusDomain = new MemoryDomain("System Bus", 0x10000, Endian.Little,
|
||||||
|
addr => Cpu.ReadMemory((ushort)addr),
|
||||||
|
(addr, value) => Cpu.WriteMemory((ushort)addr, value));
|
||||||
|
|
||||||
|
domains.Add(MainMemoryDomain);
|
||||||
|
domains.Add(VRamDomain);
|
||||||
|
domains.Add(SystemBusDomain);
|
||||||
|
memoryDomains = domains.AsReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
public void FrameAdvance(bool render, bool renderSound)
|
public void FrameAdvance(bool render, bool renderSound)
|
||||||
{
|
{
|
||||||
Frame++;
|
Frame++;
|
||||||
|
@ -159,8 +182,5 @@ namespace BizHawk.Emulation.Consoles.Coleco
|
||||||
public ISyncSoundProvider SyncSoundProvider { get { return null; } }
|
public ISyncSoundProvider SyncSoundProvider { get { return null; } }
|
||||||
public bool StartAsyncSound() { return true; }
|
public bool StartAsyncSound() { return true; }
|
||||||
public void EndAsyncSound() { }
|
public void EndAsyncSound() { }
|
||||||
|
|
||||||
public IList<MemoryDomain> MemoryDomains { get { return null; } }
|
|
||||||
public MemoryDomain MainMemory { get { return null; } }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Consoles.Coleco
|
||||||
{
|
{
|
||||||
public sealed class TMS9918A : IVideoProvider
|
public sealed class TMS9918A : IVideoProvider
|
||||||
{
|
{
|
||||||
byte[] VRAM = new byte[0x4000];
|
public byte[] VRAM = new byte[0x4000];
|
||||||
byte[] Registers = new byte[8];
|
byte[] Registers = new byte[8];
|
||||||
byte StatusByte;
|
byte StatusByte;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue