Пример #1
0
 public void RemoveMemoryCallback(MemoryCallbackDelegate cb)
 {
     if (DebuggableCore.MemoryCallbacksAvailable())
     {
         DebuggableCore.MemoryCallbacks.Remove(cb);
     }
 }
Пример #2
0
 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));
     }
 }
Пример #3
0
 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;
 }
Пример #4
0
 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));
 }
Пример #5
0
 public void Remove(MemoryCallbackDelegate action)
 {
     if (RemoveInternal(action) > 0)
     {
         if (UpdateHasVariables())
         {
             Changes();
         }
     }
 }
Пример #6
0
        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;
        }
Пример #7
0
        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);
                }
            }
        }
Пример #9
0
        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);
            }
        }
Пример #10
0
        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;
 }
Пример #12
0
 public TracingMemoryCallback(MemoryCallbackDelegate callback)
 {
     Callback = callback;
 }