BizHawk/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.ITraceable.cs

51 lines
1.1 KiB
C#
Raw Normal View History

2016-01-30 18:47:14 +00:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BizHawk.Common.BufferExtensions;
using BizHawk.Emulation.Common;
using BizHawk.Common;
using BizHawk.Common.CollectionExtensions;
namespace BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES
{
partial class QuickNES
{
public TraceBuffer Tracer { get; private set; }
private LibQuickNES.TraceCallback _tracecb;
private void MakeTrace(IntPtr data)
{
int[] s = new int[7];
System.Runtime.InteropServices.Marshal.Copy(data, s, 0, 7);
byte a = (byte)s[0];
byte x = (byte)s[1];
byte y = (byte)s[2];
ushort sp = (ushort)s[3];
ushort pc = (ushort)s[4];
byte p = (byte)s[5];
byte opcode = (byte)s[6];
Tracer.Put(string.Format("{0:X2} {1:X2} {2:X2} {3:X4} {4:X4} {5:X2} {6:X2}",
a, x, y, sp, pc, p, opcode));
}
private const string TraceHeader = "_A _X _Y _SP_ _PC_ _P OP";
private void ConnectTracer()
{
Tracer = new TraceBuffer
{
Header = TraceHeader
};
(ServiceProvider as BasicServiceProvider).Register<ITraceable>(Tracer);
_tracecb = new LibQuickNES.TraceCallback(MakeTrace);
}
}
}