public void RemoveMemoryCallback(MemoryCallbackDelegate cb) { if (DebuggableCore.MemoryCallbacksAvailable()) { DebuggableCore.MemoryCallbacks.Remove(cb); } }
public void AddExecCallback(MemoryCallbackDelegate cb, uint?address, string domain) { if (DebuggableCore.MemoryCallbacksAvailable() && DebuggableCore.MemoryCallbacks.ExecuteCallbacksAvailable) { DebuggableCore.MemoryCallbacks.Add(new MemoryCallback(domain, MemoryCallbackType.Execute, "Plugin Hook", cb, address, null)); } }
public MemoryCallback(string scope, MemoryCallbackType type, string name, MemoryCallbackDelegate callback, uint?address, uint?mask) { Type = type; Name = name; Callback = callback; Address = address; AddressMask = mask ?? 0xFFFFFFFF; Scope = scope; }
public void Debug2805() { DebugCallback = (_, _, _) => { Console.WriteLine(DebugCallbackExecuted ? "subsequent call" : "first call"); Remove(DebugCallback); DebugCallbackExecuted = true; }; Add(new MemoryCallback("System Bus", MemoryCallbackType.Write, "Plugin Hook", DebugCallback, 0x020096E0, null)); }
public void Remove(MemoryCallbackDelegate action) { if (RemoveInternal(action) > 0) { if (UpdateHasVariables()) { Changes(); } } }
public Breakpoint(IDebuggable core, string scope, MemoryCallbackDelegate callBack, uint address, uint mask, MemoryCallbackType type, bool enabled = true) { Scope = scope; _core = core; Type = type; Callback = callBack; Address = address; AddressMask = mask; Name = "Pause"; Active = enabled; }
public MemoryCallback(string scope, MemoryCallbackType type, string name, MemoryCallbackDelegate callback, uint?address, uint?mask) { if (type == MemoryCallbackType.Execute && !address.HasValue) { throw new InvalidOperationException("When assigning an execute callback, an address must be specified"); } Type = type; Name = name; Callback = callback; Address = address; AddressMask = mask ?? 0xFFFFFFFF; Scope = scope; }
public void Remove(MemoryCallbackDelegate action) { var cbToRemove = _callbacks.SingleOrDefault(container => container.Callback.Callback == action); if (cbToRemove != null) { if (cbToRemove.Callback.Type == MemoryCallbackType.Execute) { _callbacks.Remove(cbToRemove); if (_callbacks.All(cb => cb.Callback.Type != MemoryCallbackType.Execute)) { _executeCallback = null; MGBAHawk.ZZHacky.BizSetExecCallback(_mgba.Core, null); } } else if (MGBAHawk.ZZHacky.BizClearWatchpoint(_mgba.Core, cbToRemove.ID)) { _callbacks.Remove(cbToRemove); } } }
public void Remove(MemoryCallbackDelegate action) { var cbToRemove = _callbacks.SingleOrDefault(container => container.Callback.Callback == action); if (cbToRemove == null) { return; } if (cbToRemove.Callback.Type is MemoryCallbackType.Execute) { _callbacks.Remove(cbToRemove); if (!_callbacks.Any(cb => cb.Callback.Type is MemoryCallbackType.Execute)) { _executeCallback = null; MGBAHawk.ZZHacky.BizSetExecCallback(_mgba.Core, null); } } else { Remove(cbToRemove); } }
private int RemoveInternal(MemoryCallbackDelegate action) { var readsToRemove = _reads.Where(imc => imc.Callback == action).ToList(); var writesToRemove = _writes.Where(imc => imc.Callback == action).ToList(); var execsToRemove = _execs.Where(imc => imc.Callback == action).ToList(); foreach (var read in readsToRemove) { _reads.Remove(read); } foreach (var write in writesToRemove) { _writes.Remove(write); } foreach (var exec in execsToRemove) { _execs.Remove(exec); } return(readsToRemove.Count + writesToRemove.Count + execsToRemove.Count); }
public TracingMemoryCallback(MemoryCallbackDelegate callback, string scope) { Callback = callback; Scope = scope; }
public TracingMemoryCallback(MemoryCallbackDelegate callback) { Callback = callback; }