public void GetData() { DebugState state = new DebugState(); InteropEmu.DebugGetState(ref state); DebugEventInfo[] eventInfoArray; InteropEmu.DebugGetDebugEvents(out _pictureData, out eventInfoArray); var debugEvents = new Dictionary <int, List <DebugEventInfo> >(); for (int i = 0; i < eventInfoArray.Length; i++) { int frameCycle = (eventInfoArray[i].Scanline + 1) * 341 + eventInfoArray[i].Cycle; List <DebugEventInfo> infoList; if (!debugEvents.TryGetValue(frameCycle, out infoList)) { infoList = new List <DebugEventInfo>(); debugEvents[frameCycle] = infoList; } infoList.Add(eventInfoArray[i]); } _debugEvents = eventInfoArray; _debugEventsByCycle = debugEvents; _state = state; }
public void GetData() { DebugState state = new DebugState(); InteropEmu.DebugGetState(ref state); DebugEventInfo[] eventInfoArray; DebugEventInfo[] prevEventInfoArray = new DebugEventInfo[0]; InteropEmu.DebugGetDebugEvents(false, out _pictureData, out eventInfoArray); if (ConfigManager.Config.DebugInfo.EventViewerShowPreviousFrameEvents && (state.PPU.Scanline != -1 || state.PPU.Cycle != 0)) { //Get the previous frame's data, too InteropEmu.DebugGetDebugEvents(true, out _pictureData, out prevEventInfoArray); } int currentCycle = (int)((state.PPU.Scanline + 1) * 341 + state.PPU.Cycle); var debugEvents = new Dictionary <int, List <DebugEventInfo> >(); List <DebugEventInfo> eventList = new List <DebugEventInfo>(eventInfoArray.Length + prevEventInfoArray.Length); Action <DebugEventInfo> addEvent = (DebugEventInfo eventInfo) => { int frameCycle = (eventInfo.Scanline + 1) * 341 + eventInfo.Cycle; List <DebugEventInfo> infoList; if (!debugEvents.TryGetValue(frameCycle, out infoList)) { infoList = new List <DebugEventInfo>(); debugEvents[frameCycle] = infoList; } infoList.Add(eventInfo); eventList.Add(eventInfo); }; for (int i = 0; i < eventInfoArray.Length; i++) { addEvent(eventInfoArray[i]); } //Show events from the previous frame, too for (int i = 0; i < prevEventInfoArray.Length; i++) { int frameCycle = (prevEventInfoArray[i].Scanline + 1) * 341 + prevEventInfoArray[i].Cycle; if (frameCycle > currentCycle) { addEvent(prevEventInfoArray[i]); } } _debugEvents = eventList; _debugEventsByCycle = debugEvents; _state = state; }
public void GetData() { DebugEventInfo[] eventInfoArray; byte[] pictureData; _breakpoints = BreakpointManager.Breakpoints; InteropEmu.DebugGetDebugEvents(out pictureData, out eventInfoArray); this.BeginInvoke((Action)(() => { lstEvents.BeginUpdate(); _debugEvents.Clear(); _debugEvents.AddRange(eventInfoArray); SortData(); lstEvents.VirtualListSize = _debugEvents.Count; lstEvents.EndUpdate(); })); }