Mesen2/Core/NES/Debugger/NesDisUtils.h
Sour ad548465c6 Debugger: NES - Added new "break on..." options
Invalid VRAM access, Invalid OAM write, DMA controller read, Unstable opcodes
2025-03-27 21:16:02 +09:00

31 lines
1.1 KiB
C++

#pragma once
#include "pch.h"
#include "Debugger/DebugTypes.h"
class LabelManager;
class MemoryDumper;
class EmuSettings;
struct NesCpuState;
enum class NesAddrMode;
class NesDisUtils
{
private:
static uint32_t GetOperandAddress(DisassemblyInfo& info, uint32_t memoryAddr);
static uint8_t GetOpSize(NesAddrMode addrMode);
public:
static void GetDisassembly(DisassemblyInfo& info, string& out, uint32_t memoryAddr, LabelManager* labelManager, EmuSettings* settings);
static EffectiveAddressInfo GetEffectiveAddress(DisassemblyInfo& info, NesCpuState& state, MemoryDumper* memoryDumper);
static uint8_t GetOpSize(uint8_t opCode);
static char const* const GetOpName(uint8_t opCode);
static NesAddrMode GetOpMode(uint8_t opCode);
static bool IsOpUnofficial(uint8_t opCode);
static bool IsOpUnstable(uint8_t opCode);
static bool IsUnconditionalJump(uint8_t opCode);
static bool IsConditionalJump(uint8_t opCode);
static CdlFlags::CdlFlags GetOpFlags(uint8_t opCode, uint16_t pc, uint16_t prevPc);
static bool IsJumpToSub(uint8_t opCode);
static bool IsReturnInstruction(uint8_t opCode);
};