mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
92 lines
2.7 KiB
C++
92 lines
2.7 KiB
C++
#pragma once
|
|
#include "pch.h"
|
|
#include "Debugger/DebugTypes.h"
|
|
#include "Debugger/BaseEventManager.h"
|
|
#include "Utilities/SimpleLock.h"
|
|
|
|
enum class DebugEventType;
|
|
struct DebugEventInfo;
|
|
class GbaCpu;
|
|
class GbaPpu;
|
|
class GbaMemoryManager;
|
|
class GbaDmaController;
|
|
class Debugger;
|
|
|
|
struct GbaEventViewerConfig : public BaseEventViewerConfig
|
|
{
|
|
EventViewerCategoryCfg Irq;
|
|
EventViewerCategoryCfg MarkedBreakpoints;
|
|
|
|
EventViewerCategoryCfg PaletteReads;
|
|
EventViewerCategoryCfg PaletteWrites;
|
|
EventViewerCategoryCfg VramReads;
|
|
EventViewerCategoryCfg VramWrites;
|
|
EventViewerCategoryCfg OamReads;
|
|
EventViewerCategoryCfg OamWrites;
|
|
|
|
EventViewerCategoryCfg PpuRegisterBgScrollReads;
|
|
EventViewerCategoryCfg PpuRegisterBgScrollWrites;
|
|
EventViewerCategoryCfg PpuRegisterWindowReads;
|
|
EventViewerCategoryCfg PpuRegisterWindowWrites;
|
|
EventViewerCategoryCfg PpuRegisterOtherReads;
|
|
EventViewerCategoryCfg PpuRegisterOtherWrites;
|
|
|
|
EventViewerCategoryCfg DmaRegisterReads;
|
|
EventViewerCategoryCfg DmaRegisterWrites;
|
|
|
|
EventViewerCategoryCfg ApuRegisterReads;
|
|
EventViewerCategoryCfg ApuRegisterWrites;
|
|
|
|
EventViewerCategoryCfg SerialReads;
|
|
EventViewerCategoryCfg SerialWrites;
|
|
|
|
EventViewerCategoryCfg TimerReads;
|
|
EventViewerCategoryCfg TimerWrites;
|
|
|
|
EventViewerCategoryCfg InputReads;
|
|
EventViewerCategoryCfg InputWrites;
|
|
|
|
EventViewerCategoryCfg OtherRegisterReads;
|
|
EventViewerCategoryCfg OtherRegisterWrites;
|
|
|
|
bool ShowPreviousFrameEvents;
|
|
};
|
|
|
|
class GbaEventManager final : public BaseEventManager
|
|
{
|
|
private:
|
|
static constexpr int ScanlineWidth = 308*4;
|
|
static constexpr int ScreenHeight = 228;
|
|
static constexpr int VBlankScanline = 160;
|
|
|
|
GbaEventViewerConfig _config = {};
|
|
|
|
GbaPpu* _ppu = nullptr;
|
|
GbaCpu* _cpu = nullptr;
|
|
GbaMemoryManager* _memoryManager = nullptr;
|
|
GbaDmaController* _dmaController = nullptr;
|
|
Debugger* _debugger = nullptr;
|
|
|
|
uint32_t _scanlineCount = GbaEventManager::ScreenHeight;
|
|
uint16_t* _ppuBuffer = nullptr;
|
|
|
|
protected:
|
|
bool ShowPreviousFrameEvents() override;
|
|
void ConvertScanlineCycleToRowColumn(int32_t& x, int32_t& y) override;
|
|
void DrawScreen(uint32_t* buffer) override;
|
|
|
|
public:
|
|
GbaEventManager(Debugger* debugger, GbaCpu* cpu, GbaPpu* ppu, GbaMemoryManager* memoryManager, GbaDmaController* dmaController);
|
|
~GbaEventManager();
|
|
|
|
void AddEvent(DebugEventType type, MemoryOperationInfo& operation, int32_t breakpointId = -1) override;
|
|
void AddEvent(DebugEventType type) override;
|
|
|
|
EventViewerCategoryCfg GetEventConfig(DebugEventInfo& evt) override;
|
|
|
|
uint32_t TakeEventSnapshot(bool forAutoRefresh) override;
|
|
DebugEventInfo GetEvent(uint16_t y, uint16_t x) override;
|
|
|
|
FrameInfo GetDisplayBufferSize() override;
|
|
void SetConfiguration(BaseEventViewerConfig& config) override;
|
|
};
|