Пример #1
0
        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;
        }
Пример #2
0
        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;
        }
Пример #3
0
        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();
            }));
        }