2019-07-25 22:22:09 -04:00
|
|
|
#pragma once
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "DebugTypes.h"
|
|
|
|
|
|
|
|
class DebugUtilities
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
static SnesMemoryType GetCpuMemoryType(CpuType type)
|
|
|
|
{
|
|
|
|
switch(type) {
|
|
|
|
case CpuType::Cpu: return SnesMemoryType::CpuMemory;
|
|
|
|
case CpuType::Spc: return SnesMemoryType::SpcMemory;
|
2020-02-23 21:50:55 -05:00
|
|
|
case CpuType::NecDsp: return SnesMemoryType::NecDspMemory;
|
2019-07-25 22:22:09 -04:00
|
|
|
case CpuType::Sa1: return SnesMemoryType::Sa1Memory;
|
2019-07-30 22:34:52 -04:00
|
|
|
case CpuType::Gsu: return SnesMemoryType::GsuMemory;
|
2020-02-24 22:00:52 -05:00
|
|
|
case CpuType::Cx4: return SnesMemoryType::Cx4Memory;
|
2020-05-18 16:10:53 -04:00
|
|
|
case CpuType::Gameboy: return SnesMemoryType::GameboyMemory;
|
2019-07-25 22:22:09 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
throw std::runtime_error("Invalid CPU type");
|
|
|
|
}
|
2019-07-30 22:34:52 -04:00
|
|
|
|
2020-02-11 22:01:06 -05:00
|
|
|
static CpuType ToCpuType(SnesMemoryType type)
|
|
|
|
{
|
|
|
|
switch(type) {
|
|
|
|
case SnesMemoryType::SpcMemory:
|
|
|
|
case SnesMemoryType::SpcRam:
|
|
|
|
case SnesMemoryType::SpcRom:
|
|
|
|
return CpuType::Spc;
|
|
|
|
|
|
|
|
case SnesMemoryType::GsuMemory:
|
|
|
|
case SnesMemoryType::GsuWorkRam:
|
|
|
|
return CpuType::Gsu;
|
|
|
|
|
|
|
|
case SnesMemoryType::Sa1InternalRam:
|
|
|
|
case SnesMemoryType::Sa1Memory:
|
|
|
|
return CpuType::Sa1;
|
|
|
|
|
|
|
|
case SnesMemoryType::DspDataRam:
|
|
|
|
case SnesMemoryType::DspDataRom:
|
|
|
|
case SnesMemoryType::DspProgramRom:
|
|
|
|
return CpuType::NecDsp;
|
|
|
|
|
2020-02-24 22:00:52 -05:00
|
|
|
case SnesMemoryType::Cx4DataRam:
|
|
|
|
case SnesMemoryType::Cx4Memory:
|
|
|
|
return CpuType::Cx4;
|
2020-05-18 16:10:53 -04:00
|
|
|
|
|
|
|
case SnesMemoryType::GbPrgRom:
|
|
|
|
case SnesMemoryType::GbWorkRam:
|
|
|
|
case SnesMemoryType::GbCartRam:
|
|
|
|
case SnesMemoryType::GbHighRam:
|
2020-05-26 00:05:35 -04:00
|
|
|
case SnesMemoryType::GbBootRom:
|
2020-07-03 10:06:40 -04:00
|
|
|
case SnesMemoryType::GbVideoRam:
|
|
|
|
case SnesMemoryType::GbSpriteRam:
|
|
|
|
case SnesMemoryType::GameboyMemory:
|
2020-05-18 16:10:53 -04:00
|
|
|
return CpuType::Gameboy;
|
2020-02-24 22:00:52 -05:00
|
|
|
|
2020-02-11 22:01:06 -05:00
|
|
|
default:
|
|
|
|
return CpuType::Cpu;
|
|
|
|
}
|
|
|
|
|
|
|
|
throw std::runtime_error("Invalid CPU type");
|
|
|
|
}
|
|
|
|
|
2019-07-30 22:34:52 -04:00
|
|
|
static constexpr SnesMemoryType GetLastCpuMemoryType()
|
|
|
|
{
|
2020-05-18 16:10:53 -04:00
|
|
|
return SnesMemoryType::GameboyMemory;
|
2019-07-30 22:34:52 -04:00
|
|
|
}
|
|
|
|
|
2019-12-05 23:36:00 -05:00
|
|
|
static bool IsPpuMemory(SnesMemoryType memType)
|
|
|
|
{
|
|
|
|
switch(memType) {
|
|
|
|
case SnesMemoryType::VideoRam:
|
|
|
|
case SnesMemoryType::SpriteRam:
|
|
|
|
case SnesMemoryType::CGRam:
|
2020-05-18 16:10:53 -04:00
|
|
|
case SnesMemoryType::GbVideoRam:
|
2020-07-03 10:06:40 -04:00
|
|
|
case SnesMemoryType::GbSpriteRam:
|
2019-12-05 23:36:00 -05:00
|
|
|
return true;
|
|
|
|
|
|
|
|
default:
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-06-23 18:34:03 -04:00
|
|
|
static bool IsRomMemory(SnesMemoryType memType)
|
|
|
|
{
|
|
|
|
switch(memType) {
|
|
|
|
case SnesMemoryType::PrgRom:
|
|
|
|
case SnesMemoryType::GbPrgRom:
|
|
|
|
case SnesMemoryType::GbBootRom:
|
|
|
|
case SnesMemoryType::SaveRam: //Include save ram here to avoid uninit memory read warnings on save ram
|
|
|
|
return true;
|
2020-07-03 14:06:02 -04:00
|
|
|
|
|
|
|
default:
|
|
|
|
return false;
|
2020-06-23 18:34:03 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-07-30 22:34:52 -04:00
|
|
|
static constexpr CpuType GetLastCpuType()
|
|
|
|
{
|
2020-05-18 16:10:53 -04:00
|
|
|
return CpuType::Gameboy;
|
2019-07-30 22:34:52 -04:00
|
|
|
}
|
2019-07-25 22:22:09 -04:00
|
|
|
};
|