Break off ITracer from IDebuggable, rename to ITraceable and make it an IEmulatorService, refactor things accordingly
This commit is contained in:
parent
5d4f9a715a
commit
0f2197cec1
|
@ -17,8 +17,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
public partial class TraceLogger : Form, IToolFormAutoConfig
|
||||
{
|
||||
[RequiredService]
|
||||
private IDebuggable _debugtarget { get; set; }
|
||||
private ITracer Tracer { get { return _debugtarget.Tracer; } }
|
||||
private ITraceable Tracer { get; set; }
|
||||
|
||||
[ConfigPersist]
|
||||
private int MaxLines { get; set; }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace BizHawk.Emulation.Common
|
||||
{
|
||||
public class TraceBuffer : ITracer
|
||||
public class TraceBuffer : ITraceable
|
||||
{
|
||||
private readonly StringBuilder buffer;
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
<Compile Include="Interfaces\ISoundProvider.cs" />
|
||||
<Compile Include="Interfaces\IStatable.cs" />
|
||||
<Compile Include="Interfaces\ISyncSoundProvider.cs" />
|
||||
<Compile Include="Interfaces\ITracer.cs" />
|
||||
<Compile Include="Interfaces\ITraceable.cs" />
|
||||
<Compile Include="Interfaces\IVideoProvider.cs" />
|
||||
<Compile Include="MemoryDomain.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
|
|
|
@ -115,22 +115,12 @@ namespace BizHawk.Emulation.Common.IEmulatorExtensions
|
|||
return false;
|
||||
}
|
||||
|
||||
// TODO: this is a pretty ugly way to handle this
|
||||
var debuggable = (IDebuggable)core.ServiceProvider.GetService<IDebuggable>();
|
||||
if (debuggable != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var tracer = debuggable.Tracer;
|
||||
return true;
|
||||
}
|
||||
catch (NotImplementedException)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return core.ServiceProvider.HasService<ITraceable>();
|
||||
}
|
||||
|
||||
return false;
|
||||
public static ITraceable AsTracer(this IEmulator core)
|
||||
{
|
||||
return (ITraceable)core.ServiceProvider.GetService<ITraceable>();
|
||||
}
|
||||
|
||||
public static bool MemoryCallbacksAvailable(this IEmulator core)
|
||||
|
|
|
@ -17,8 +17,6 @@ namespace BizHawk.Emulation.Common
|
|||
/// <param name="value"></param>
|
||||
void SetCpuRegister(string register, int value);
|
||||
|
||||
ITracer Tracer { get; }
|
||||
|
||||
IMemoryCallbackSystem MemoryCallbacks { get; }
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
/// <summary>
|
||||
/// Allows the cpu to dump trace info to a trace stream
|
||||
/// </summary>
|
||||
public interface ITracer
|
||||
public interface ITraceable : IEmulatorService
|
||||
{
|
||||
// TODO: would it be faster (considering both disk and screen output) to keep the data as a List<string> directly?
|
||||
|
|
@ -120,12 +120,6 @@ namespace BizHawk.Emulation.Cores.Calculators
|
|||
}
|
||||
}
|
||||
|
||||
public ITracer Tracer
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public IMemoryCallbackSystem MemoryCallbacks { get; private set; }
|
||||
|
||||
[FeatureNotImplemented]
|
||||
|
|
|
@ -51,12 +51,6 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64
|
|||
}
|
||||
}
|
||||
|
||||
public ITracer Tracer
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public IMemoryCallbackSystem MemoryCallbacks
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
|
|
|
@ -56,8 +56,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
}
|
||||
}
|
||||
|
||||
public ITracer Tracer { get; private set; }
|
||||
|
||||
public IMemoryCallbackSystem MemoryCallbacks { get; private set; }
|
||||
|
||||
public bool CanStep(StepType type)
|
||||
|
|
|
@ -21,6 +21,8 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
private readonly GameInfo _game;
|
||||
private int _frame;
|
||||
|
||||
private ITraceable Tracer { get; set; }
|
||||
|
||||
[CoreConstructor("A26")]
|
||||
public Atari2600(CoreComm comm, GameInfo game, byte[] rom, object settings, object syncSettings)
|
||||
{
|
||||
|
@ -47,6 +49,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
|
||||
var ser = new BasicServiceProvider(this);
|
||||
ser.Register<IDisassemblable>(Cpu);
|
||||
ser.Register<ITraceable>(Tracer);
|
||||
ServiceProvider = ser;
|
||||
}
|
||||
|
||||
|
|
|
@ -54,12 +54,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari7800
|
|||
}
|
||||
}
|
||||
|
||||
public ITracer Tracer
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public IMemoryCallbackSystem MemoryCallbacks
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
|
|
|
@ -121,12 +121,6 @@ namespace BizHawk.Emulation.Cores.ColecoVision
|
|||
}
|
||||
}
|
||||
|
||||
public ITracer Tracer
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public IMemoryCallbackSystem MemoryCallbacks
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
|
|
|
@ -65,6 +65,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
|||
Header = " -Addr--- -Opcode- -Instruction------------------- -R0----- -R1----- -R2----- -R3----- -R4----- -R5----- -R6----- -R7----- -R8----- -R9----- -R10---- -R11---- -R12---- -R13(SP) -R14(LR) -R15(PC) -CPSR--- -SPSR---"
|
||||
};
|
||||
|
||||
(ServiceProvider as BasicServiceProvider).Register<ITraceable>(Tracer);
|
||||
|
||||
CoreComm = comm;
|
||||
|
||||
comm.VsyncNum = 262144;
|
||||
|
@ -112,8 +114,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
|||
// TODO: optimize managed to unmanaged using the ActiveChanged event
|
||||
public IInputCallbackSystem InputCallbacks { [FeatureNotImplemented]get { return _inputCallbacks; } }
|
||||
|
||||
|
||||
public ITracer Tracer { get; private set; }
|
||||
private ITraceable Tracer { get; set; }
|
||||
|
||||
public string SystemId { get { return "GBA"; } }
|
||||
public bool DeterministicEmulation { get { return true; } }
|
||||
|
|
|
@ -71,6 +71,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
|||
throw new InvalidOperationException("LoadRom() returned false!");
|
||||
|
||||
Tracer = new TraceBuffer();
|
||||
ser.Register<ITraceable>(Tracer);
|
||||
|
||||
CoreComm.VsyncNum = 262144;
|
||||
CoreComm.VsyncDen = 4389;
|
||||
|
@ -117,7 +118,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
|
|||
public int LagCount { get; set; }
|
||||
public bool IsLagFrame { get; private set; }
|
||||
|
||||
public ITracer Tracer { get; private set; }
|
||||
private ITraceable Tracer { get; set; }
|
||||
|
||||
public string SystemId { get { return "GBA"; } }
|
||||
|
||||
|
|
|
@ -129,6 +129,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
ser.Register<IDisassemblable>(new GBDisassembler());
|
||||
ServiceProvider = ser;
|
||||
Tracer = new TraceBuffer();
|
||||
ser.Register<ITraceable>(Tracer);
|
||||
InitMemoryCallbacks();
|
||||
CoreComm = comm;
|
||||
|
||||
|
@ -264,7 +265,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public ITracer Tracer { get; private set; }
|
||||
private ITraceable Tracer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// true if the emulator is currently emulating CGB
|
||||
|
|
|
@ -92,12 +92,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
private readonly MemoryCallbackSystem _memorycallbacks = new MemoryCallbackSystem();
|
||||
public IMemoryCallbackSystem MemoryCallbacks { get { return _memorycallbacks; } }
|
||||
|
||||
public ITracer Tracer
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public IVideoProvider VideoProvider { get { return this; } }
|
||||
public ISoundProvider SoundProvider { get { return null; } }
|
||||
public ISyncSoundProvider SyncSoundProvider { get { return this; } }
|
||||
|
|
|
@ -60,15 +60,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public ITracer Tracer
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public IMemoryCallbackSystem MemoryCallbacks { get; private set; }
|
||||
|
||||
public bool CanStep(StepType type) { return false; }
|
||||
|
|
|
@ -38,7 +38,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
this.SyncSettings = (NESSyncSettings)SyncSettings ?? new NESSyncSettings();
|
||||
this.ControllerSettings = this.SyncSettings.Controls;
|
||||
CoreComm = comm;
|
||||
Tracer = new TraceBuffer();
|
||||
|
||||
MemoryCallbacks = new MemoryCallbackSystem();
|
||||
BootGodDB.Initialize();
|
||||
videoProvider = new MyVideoProvider(this);
|
||||
|
@ -53,6 +53,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
var ser = new BasicServiceProvider(this);
|
||||
ser.Register<IDisassemblable>(cpu);
|
||||
|
||||
Tracer = new TraceBuffer();
|
||||
ser.Register<ITraceable>(Tracer);
|
||||
|
||||
if (board is BANDAI_FCG_1)
|
||||
{
|
||||
var reader = (board as BANDAI_FCG_1).reader;
|
||||
|
@ -951,7 +954,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
[FeatureNotImplemented]
|
||||
public void Step(StepType type) { throw new NotImplementedException(); }
|
||||
|
||||
public ITracer Tracer { get; private set; }
|
||||
private ITraceable Tracer { get; set; }
|
||||
public IMemoryCallbackSystem MemoryCallbacks { get; private set; }
|
||||
|
||||
NESSettings Settings = new NESSettings();
|
||||
|
|
|
@ -408,15 +408,6 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES
|
|||
[FeatureNotImplemented]
|
||||
public void Step(StepType type) { throw new NotImplementedException(); }
|
||||
|
||||
public ITracer Tracer
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public IMemoryCallbackSystem MemoryCallbacks
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
|
|
|
@ -38,6 +38,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
|||
ServiceProvider = new BasicServiceProvider(this);
|
||||
MemoryCallbacks = new MemoryCallbackSystem();
|
||||
Tracer = new TraceBuffer();
|
||||
(ServiceProvider as BasicServiceProvider).Register<ITraceable>(Tracer);
|
||||
|
||||
_game = game;
|
||||
CoreComm = comm;
|
||||
|
@ -251,7 +252,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
|||
// TODO: optimize managed to unmanaged using the ActiveChanged event
|
||||
public IInputCallbackSystem InputCallbacks { [FeatureNotImplemented]get { return _inputCallbacks; } }
|
||||
|
||||
public ITracer Tracer { get; private set; }
|
||||
public ITraceable Tracer { get; private set; }
|
||||
public IMemoryCallbackSystem MemoryCallbacks { get; private set; }
|
||||
|
||||
public bool CanStep(StepType type) { return false; }
|
||||
|
|
|
@ -70,6 +70,8 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
|||
{
|
||||
ServiceProvider = new BasicServiceProvider(this);
|
||||
Tracer = new TraceBuffer();
|
||||
(ServiceProvider as BasicServiceProvider).Register<ITraceable>(Tracer);
|
||||
|
||||
MemoryCallbacks = new MemoryCallbackSystem();
|
||||
CoreComm = comm;
|
||||
|
||||
|
@ -94,7 +96,7 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
|||
|
||||
public string BoardName { get { return null; } }
|
||||
|
||||
public ITracer Tracer { get; private set; }
|
||||
private ITraceable Tracer { get; set; }
|
||||
public IMemoryCallbackSystem MemoryCallbacks { get; private set; }
|
||||
|
||||
public PCEngine(CoreComm comm, GameInfo game, Disc disc, object Settings, object syncSettings)
|
||||
|
|
|
@ -303,15 +303,6 @@ namespace BizHawk.Emulation.Cores.Sega.Genesis
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public ITracer Tracer
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
int vdpcallback(int level) // Musashi handler
|
||||
{
|
||||
InterruptCallback(level);
|
||||
|
|
|
@ -108,7 +108,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
|||
IsSG1000 = game.System == "SG";
|
||||
RomData = rom;
|
||||
Tracer = new TraceBuffer();
|
||||
|
||||
(ServiceProvider as BasicServiceProvider).Register<ITraceable>(Tracer);
|
||||
if (RomData.Length % BankSize != 0)
|
||||
Array.Resize(ref RomData, ((RomData.Length / BankSize) + 1) * BankSize);
|
||||
RomBanks = (byte)(RomData.Length / BankSize);
|
||||
|
@ -216,7 +216,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
|||
|
||||
public IEmulatorServiceProvider ServiceProvider { get; private set; }
|
||||
|
||||
public ITracer Tracer { get; private set; }
|
||||
private ITraceable Tracer { get; set; }
|
||||
|
||||
string DetermineRegion(string gameRegion)
|
||||
{
|
||||
|
|
|
@ -61,7 +61,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
|
|||
public GPGX(CoreComm comm, byte[] rom, DiscSystem.Disc CD, object Settings, object SyncSettings)
|
||||
{
|
||||
ServiceProvider = new BasicServiceProvider(this);
|
||||
|
||||
(ServiceProvider as BasicServiceProvider).Register<ITraceable>(_tracer);
|
||||
// this can influence some things internally
|
||||
string romextension = "GEN";
|
||||
|
||||
|
@ -392,14 +392,6 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
|
|||
|
||||
private readonly TraceBuffer _tracer = new TraceBuffer();
|
||||
|
||||
public ITracer Tracer
|
||||
{
|
||||
get
|
||||
{
|
||||
return _tracer;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// TODO: use render and rendersound
|
||||
|
|
|
@ -201,6 +201,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
|
|||
public Octoshock(CoreComm comm, List<DiscSystem.Disc> discs, List<string> discNames, byte[] exe, object settings, object syncSettings)
|
||||
{
|
||||
ServiceProvider = new BasicServiceProvider(this);
|
||||
(ServiceProvider as BasicServiceProvider).Register<ITraceable>(tracer);
|
||||
CoreComm = comm;
|
||||
DriveLightEnabled = true;
|
||||
|
||||
|
@ -996,7 +997,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
|
|||
OctoshockDll.shock_SetRegister_CPU(psx, index, (uint)value);
|
||||
}
|
||||
|
||||
public ITracer Tracer { get { return tracer; } }
|
||||
public ITraceable Tracer { get { return tracer; } }
|
||||
|
||||
public int ShockTraceCallback(IntPtr opaque, uint PC, uint inst, string dis)
|
||||
{
|
||||
|
|
|
@ -133,15 +133,6 @@ namespace BizHawk.Emulation.Cores.WonderSwan
|
|||
|
||||
public IEmulatorServiceProvider ServiceProvider { get; private set; }
|
||||
|
||||
public ITracer Tracer
|
||||
{
|
||||
[FeatureNotImplemented]
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (Core != IntPtr.Zero)
|
||||
|
|
Loading…
Reference in New Issue