From 186f1810300468981a134e73d967c12b08aa72cc Mon Sep 17 00:00:00 2001 From: Sour Date: Mon, 13 Feb 2023 21:35:44 -0500 Subject: [PATCH] Debugger: PCE - Added psgchannel/vdcreg to expression tokens (+ fixed other tokens not working due to wrong case) --- Core/Debugger/ExpressionEvaluator.Pce.cpp | 18 ++++++++++++++---- Core/Debugger/ExpressionEvaluator.h | 2 ++ Core/PCE/Debugger/PceDebugger.h | 2 ++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Core/Debugger/ExpressionEvaluator.Pce.cpp b/Core/Debugger/ExpressionEvaluator.Pce.cpp index 7f406376..4906bcbf 100644 --- a/Core/Debugger/ExpressionEvaluator.Pce.cpp +++ b/Core/Debugger/ExpressionEvaluator.Pce.cpp @@ -1,6 +1,8 @@ #include "pch.h" #include "Debugger/ExpressionEvaluator.h" #include "PCE/PceTypes.h" +#include "PCE/PceConsole.h" +#include "PCE/PcePsg.h" #include "PCE/Debugger/PceDebugger.h" unordered_map& ExpressionEvaluator::GetPceTokens() @@ -26,10 +28,12 @@ unordered_map& ExpressionEvaluator::GetPceTokens() { "psmemory", EvalValues::RegPS_Memory }, { "psoverflow", EvalValues::RegPS_Overflow }, { "psnegative", EvalValues::RegPS_Negative }, - { "vramTransferDone", EvalValues::PceVramTransferDone }, - { "satbTransferDone", EvalValues::PceSatbTransferDone }, - { "scanlineDetected", EvalValues::PceScanlineDetected }, - { "irqVdc2", EvalValues::PceIrqVdc2 }, + { "vramtransferdone", EvalValues::PceVramTransferDone }, + { "satbtransferdone", EvalValues::PceSatbTransferDone }, + { "scanlinedetected", EvalValues::PceScanlineDetected }, + { "irqvdc2", EvalValues::PceIrqVdc2 }, + { "psgchannel", EvalValues::PceSelectedPsgChannel }, + { "vdcreg", EvalValues::PceSelectedVdcRegister } }; return supportedTokens; @@ -43,6 +47,10 @@ int64_t ExpressionEvaluator::GetPceTokenValue(int64_t token, EvalResultType& res return ppu; }; + auto psg = [this]() -> PcePsgState& { + return ((PceDebugger*)_cpuDebugger)->GetConsole()->GetPsg()->GetState(); + }; + PceCpuState& s = (PceCpuState&)((PceDebugger*)_cpuDebugger)->GetState(); switch(token) { case EvalValues::RegA: return s.A; @@ -65,6 +73,8 @@ int64_t ExpressionEvaluator::GetPceTokenValue(int64_t token, EvalResultType& res case EvalValues::PceVramTransferDone: return ReturnBool(ppu().Vdc.VramTransferDone, resultType); case EvalValues::PceSatbTransferDone: return ReturnBool(ppu().Vdc.SatbTransferDone, resultType); case EvalValues::PceScanlineDetected: return ReturnBool(ppu().Vdc.ScanlineDetected, resultType); + case EvalValues::PceSelectedPsgChannel: return psg().ChannelSelect; + case EvalValues::PceSelectedVdcRegister: return ppu().Vdc.CurrentReg; case EvalValues::RegPS_Carry: return ReturnBool(s.PS & PceCpuFlags::Carry, resultType); case EvalValues::RegPS_Zero: return ReturnBool(s.PS & PceCpuFlags::Zero, resultType); diff --git a/Core/Debugger/ExpressionEvaluator.h b/Core/Debugger/ExpressionEvaluator.h index 0a44e1b1..564267fb 100644 --- a/Core/Debugger/ExpressionEvaluator.h +++ b/Core/Debugger/ExpressionEvaluator.h @@ -147,6 +147,8 @@ enum EvalValues : int64_t PceSatbTransferDone, PceScanlineDetected, PceIrqVdc2, + PceSelectedPsgChannel, + PceSelectedVdcRegister, FirstLabelIndex, }; diff --git a/Core/PCE/Debugger/PceDebugger.h b/Core/PCE/Debugger/PceDebugger.h index ecdbb5cd..563edd8a 100644 --- a/Core/PCE/Debugger/PceDebugger.h +++ b/Core/PCE/Debugger/PceDebugger.h @@ -96,6 +96,8 @@ public: IAssembler* GetAssembler() override; BaseEventManager* GetEventManager() override; + PceConsole* GetConsole() { return _console; } + BaseState& GetState() override; void GetPpuState(BaseState& state) override; void SetPpuState(BaseState& state) override;