BizHawk/BizHawk.Emulation.Cores/Consoles/Magnavox/Odyssey2/O2Hawk.ICodeDataLog.cs

64 lines
1.2 KiB
C#

using System;
using System.IO;
using System.Collections.Generic;
using BizHawk.Emulation.Common;
using BizHawk.Emulation.Cores.Components.I8048;
namespace BizHawk.Emulation.Cores.Consoles.O2Hawk
{
public partial class O2Hawk : ICodeDataLogger
{
private ICodeDataLog _cdl;
public void SetCDL(ICodeDataLog cdl)
{
_cdl = cdl;
if (cdl == null)
this.cpu.CDLCallback = null;
else this.cpu.CDLCallback = CDLCpuCallback;
}
public void NewCDL(ICodeDataLog cdl)
{
cdl["ROM"] = new byte[MemoryDomains["ROM"].Size];
cdl["HRAM"] = new byte[MemoryDomains["Zero Page RAM"].Size];
cdl["WRAM"] = new byte[MemoryDomains["Main RAM"].Size];
if (MemoryDomains.Has("Cart RAM"))
{
cdl["CartRAM"] = new byte[MemoryDomains["Cart RAM"].Size];
}
cdl.SubType = "O2";
cdl.SubVer = 0;
}
[FeatureNotImplemented]
void ICodeDataLogger.DisassembleCDL(Stream s, ICodeDataLog cdl)
{
}
public void SetCDL(I8048.eCDLogMemFlags flags, string type, int cdladdr)
{
if (type == null) return;
byte val = (byte)flags;
_cdl[type][cdladdr] |= (byte)flags;
}
void CDLCpuCallback(ushort addr, I8048.eCDLogMemFlags flags)
{
if (addr < 0x400)
{
}
else
{
mapper.MapCDL(addr, flags);
return;
}
}
}
}