BizHawk/BizHawk.Client.Common/plugins/PluginBase.cs

59 lines
1.8 KiB
C#
Raw Normal View History

2018-09-01 04:21:34 +00:00
using System;
using System.Collections.Generic;
using BizHawk.Emulation.Common;
using BizHawk.Emulation.Common.IEmulatorExtensions;
namespace BizHawk.Client.Common
{
public abstract class PluginBase
{
[RequiredService]
private IEmulator Emulator { get; set; }
[RequiredService]
private IMemoryDomains Domains { get; set; }
[OptionalService]
private IInputPollable InputPollableCore { get; set; }
[OptionalService]
private IDebuggable DebuggableCore { get; set; }
public abstract void PreFrameCallback();
public abstract void PostFrameCallback();
public abstract void SaveStateCallback(string name);
public abstract void LoadStateCallback(string name);
public abstract void InputPollCallback();
protected virtual void AddReadCallback(Action cb, uint address, string domain)
{
if (DebuggableCore.MemoryCallbacksAvailable())
{
DebuggableCore.MemoryCallbacks.Add(new MemoryCallback(domain, MemoryCallbackType.Read, "Lua Hook", cb, address, null));
}
}
protected virtual void AddWriteCallback(Action cb, uint address, string domain)
{
if (DebuggableCore.MemoryCallbacksAvailable())
{
DebuggableCore.MemoryCallbacks.Add(new MemoryCallback(domain, MemoryCallbackType.Write, "Lua Hook", cb, address, null));
}
}
protected virtual void AddExecCallback(Action cb, uint address, string domain)
{
if (DebuggableCore.MemoryCallbacksAvailable() && DebuggableCore.MemoryCallbacks.ExecuteCallbacksAvailable)
{
DebuggableCore.MemoryCallbacks.Add(new MemoryCallback(domain, MemoryCallbackType.Execute, "Lua Hook", cb, address, null));
}
}
protected virtual void RemoveMemoryCallback(Action cb)
{
if (DebuggableCore.MemoryCallbacksAvailable())
{
DebuggableCore.MemoryCallbacks.Remove(cb);
}
}
}
}