private void InitMemoryCallbacks() { readcb = (addr) => MemoryCallbacks.CallReads(addr); writecb = (addr) => MemoryCallbacks.CallWrites(addr); execcb = (addr) => MemoryCallbacks.CallExecutes(addr); _memorycallbacks.ActiveChanged += RefreshMemoryCallbacks; }
private void InitMemoryCallbacks() { _readcb = new LibGambatte.MemoryCallback(ReadCallback); _writecb = new LibGambatte.MemoryCallback(WriteCallback); _execcb = new LibGambatte.MemoryCallback(ExecCallback); _memorycallbacks.ActiveChanged += RefreshMemoryCallbacks; }
private void InitMemoryCallbacks() { LibGambatte.MemoryCallback CreateCallback(MemoryCallbackFlags flags, Func <bool> getHasCBOfType) { var rawFlags = (uint)flags; return((address, cycleOffset) => { callbackCycleCount = _cycleCount + cycleOffset; if (getHasCBOfType()) { MemoryCallbacks.CallMemoryCallbacks(address, 0, rawFlags, systemBusScope); } }); } _readcb = CreateCallback(MemoryCallbackFlags.AccessRead, () => MemoryCallbacks.HasReads); _writecb = CreateCallback(MemoryCallbackFlags.AccessWrite, () => MemoryCallbacks.HasWrites); _execcb = CreateCallback(MemoryCallbackFlags.AccessExecute, () => MemoryCallbacks.HasExecutes); _memorycallbacks.ActiveChanged += () => { LibGambatte.gambatte_setreadcallback(GambatteState, MemoryCallbacks.HasReads ? _readcb : null); LibGambatte.gambatte_setwritecallback(GambatteState, MemoryCallbacks.HasWrites ? _writecb : null); LibGambatte.gambatte_setexeccallback(GambatteState, MemoryCallbacks.HasExecutes ? _execcb : null); }; }
private void InitMemoryCallbacks() { _readcb = addr => MemoryCallbacks.CallReads(addr, "System Bus"); _writecb = addr => MemoryCallbacks.CallWrites(addr, "System Bus"); _execcb = addr => MemoryCallbacks.CallExecutes(addr, "System Bus"); _memorycallbacks.ActiveChanged += RefreshMemoryCallbacks; }
/// <summary> /// for use in dual core /// </summary> internal void ConnectMemoryCallbackSystem(MemoryCallbackSystem mcs, int which) { _memorycallbacks = mcs; _readcb = CreateCallback(MemoryCallbackFlags.AccessRead, () => MemoryCallbacks.HasReads, $"P{which + 1} "); _writecb = CreateCallback(MemoryCallbackFlags.AccessWrite, () => MemoryCallbacks.HasWrites, $"P{which + 1} "); _execcb = CreateCallback(MemoryCallbackFlags.AccessExecute, () => MemoryCallbacks.HasExecutes, $"P{which + 1} "); _memorycallbacks.ActiveChanged += SetMemoryCallbacks; }
private void InitMemoryCallbacks() { _readcb = CreateCallback(MemoryCallbackFlags.AccessRead, () => MemoryCallbacks.HasReads); _writecb = CreateCallback(MemoryCallbackFlags.AccessWrite, () => MemoryCallbacks.HasWrites); _execcb = CreateCallback(MemoryCallbackFlags.AccessExecute, () => MemoryCallbacks.HasExecutes); _memorycallbacks.ActiveChanged += SetMemoryCallbacks; }
void RefreshMemoryCallbacks() { var mcs = CoreComm.MemoryCallbackSystem; // we RefreshMemoryCallbacks() after the triggers in case the trigger turns itself off at that point if (mcs.HasReads) { readcb = delegate(uint addr) { mcs.CallRead(addr); RefreshMemoryCallbacks(); } } ; else { readcb = null; } if (mcs.HasWrites) { writecb = delegate(uint addr) { mcs.CallWrite(addr); RefreshMemoryCallbacks(); } } ; else { writecb = null; } if (mcs.HasExecutes) { execcb = delegate(uint addr) { mcs.CallExecute(addr); RefreshMemoryCallbacks(); } } ; else { execcb = null; } LibGambatte.gambatte_setreadcallback(GambatteState, readcb); LibGambatte.gambatte_setwritecallback(GambatteState, writecb); LibGambatte.gambatte_setexeccallback(GambatteState, execcb); }
void RefreshMemoryCallbacks() { var mcs = CoreComm.MemoryCallbackSystem; // we RefreshMemoryCallbacks() after the triggers in case the trigger turns itself off at that point if (mcs.HasReads) readcb = delegate(uint addr) { mcs.CallRead(addr); RefreshMemoryCallbacks(); }; else readcb = null; if (mcs.HasWrites) writecb = delegate(uint addr) { mcs.CallWrite(addr); RefreshMemoryCallbacks(); }; else writecb = null; if (mcs.HasExecutes) execcb = delegate(uint addr) { mcs.CallExecute(addr); RefreshMemoryCallbacks(); }; else execcb = null; LibGambatte.gambatte_setreadcallback(GambatteState, readcb); LibGambatte.gambatte_setwritecallback(GambatteState, writecb); LibGambatte.gambatte_setexeccallback(GambatteState, execcb); }