void InitCallbacks() { padcb = new LibVBANext.StandardCallback(() => InputCallbacks.Call()); fetchcb = new LibVBANext.AddressCallback((addr) => MemoryCallbacks.CallExecutes(addr)); readcb = new LibVBANext.AddressCallback((addr) => MemoryCallbacks.CallReads(addr)); writecb = new LibVBANext.AddressCallback((addr) => MemoryCallbacks.CallWrites(addr)); tracecb = new LibVBANext.TraceCallback((addr, opcode) => Tracer.Put(Trace(addr, opcode))); _inputCallbacks.ActiveChanged += SyncPadCallback; _memorycallbacks.ActiveChanged += SyncMemoryCallbacks; }
public void SetScanlineCallback(Action callback, int scanline) { if (scanline < 0 || scanline > 227) { throw new ArgumentOutOfRangeException("scanline", "Scanline must be in [0, 227]!"); } if (callback == null) { scanlinecb = null; LibVBANext.SetScanlineCallback(Core, scanlinecb, 0); } else { scanlinecb = new LibVBANext.StandardCallback(callback); LibVBANext.SetScanlineCallback(Core, scanlinecb, scanline); } }
void InitCallbacks() { padcb = new LibVBANext.StandardCallback(() => InputCallbacks.Call()); fetchcb = new LibVBANext.AddressCallback((addr) => { uint flags = (uint)(MemoryCallbackFlags.AccessExecute); MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus"); }); readcb = new LibVBANext.AddressCallback((addr) => { uint flags = (uint)(MemoryCallbackFlags.AccessRead); MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus"); }); writecb = new LibVBANext.AddressCallback((addr) => { uint flags = (uint)(MemoryCallbackFlags.AccessWrite); MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus"); }); tracecb = new LibVBANext.TraceCallback((addr, opcode) => Tracer.Put(Trace(addr, opcode))); _inputCallbacks.ActiveChanged += SyncPadCallback; _memorycallbacks.ActiveChanged += SyncMemoryCallbacks; }