mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-04-25 06:44:59 +00:00
Use CP constants in FifoAnalyzer
This commit is contained in:
parent
a6f6211dde
commit
4cc442d7cd
4 changed files with 31 additions and 31 deletions
|
@ -258,37 +258,37 @@ u32 AnalyzeCommand(const u8* data, DecodeMode mode)
|
||||||
|
|
||||||
void LoadCPReg(u32 subCmd, u32 value, CPMemory& cpMem)
|
void LoadCPReg(u32 subCmd, u32 value, CPMemory& cpMem)
|
||||||
{
|
{
|
||||||
switch (subCmd & 0xF0)
|
switch (subCmd & CP_COMMAND_MASK)
|
||||||
{
|
{
|
||||||
case 0x50:
|
case VCD_LO:
|
||||||
cpMem.vtxDesc.low.Hex = value;
|
cpMem.vtxDesc.low.Hex = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x60:
|
case VCD_HI:
|
||||||
cpMem.vtxDesc.high.Hex = value;
|
cpMem.vtxDesc.high.Hex = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x70:
|
case CP_VAT_REG_A:
|
||||||
ASSERT((subCmd & 0x0F) < 8);
|
ASSERT(subCmd - CP_VAT_REG_A < CP_NUM_VAT_REG);
|
||||||
cpMem.vtxAttr[subCmd & 7].g0.Hex = value;
|
cpMem.vtxAttr[subCmd & CP_VAT_MASK].g0.Hex = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x80:
|
case CP_VAT_REG_B:
|
||||||
ASSERT((subCmd & 0x0F) < 8);
|
ASSERT(subCmd - CP_VAT_REG_B < CP_NUM_VAT_REG);
|
||||||
cpMem.vtxAttr[subCmd & 7].g1.Hex = value;
|
cpMem.vtxAttr[subCmd & CP_VAT_MASK].g1.Hex = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x90:
|
case CP_VAT_REG_C:
|
||||||
ASSERT((subCmd & 0x0F) < 8);
|
ASSERT(subCmd - CP_VAT_REG_C < CP_NUM_VAT_REG);
|
||||||
cpMem.vtxAttr[subCmd & 7].g2.Hex = value;
|
cpMem.vtxAttr[subCmd & CP_VAT_MASK].g2.Hex = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xA0:
|
case ARRAY_BASE:
|
||||||
cpMem.arrayBases[subCmd & 0xF] = value;
|
cpMem.arrayBases[subCmd & CP_ARRAY_MASK] = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xB0:
|
case ARRAY_STRIDE:
|
||||||
cpMem.arrayStrides[subCmd & 0xF] = value & 0xFF;
|
cpMem.arrayStrides[subCmd & CP_ARRAY_MASK] = value & 0xFF;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,9 @@ u32 AnalyzeCommand(const u8* data, DecodeMode mode);
|
||||||
struct CPMemory
|
struct CPMemory
|
||||||
{
|
{
|
||||||
TVtxDesc vtxDesc;
|
TVtxDesc vtxDesc;
|
||||||
std::array<VAT, 8> vtxAttr;
|
std::array<VAT, CP_NUM_VAT_REG> vtxAttr;
|
||||||
std::array<u32, 16> arrayBases;
|
std::array<u32, CP_NUM_ARRAYS> arrayBases;
|
||||||
std::array<u32, 16> arrayStrides;
|
std::array<u32, CP_NUM_ARRAYS> arrayStrides;
|
||||||
};
|
};
|
||||||
|
|
||||||
void LoadCPReg(u32 subCmd, u32 value, CPMemory& cpMem);
|
void LoadCPReg(u32 subCmd, u32 value, CPMemory& cpMem);
|
||||||
|
|
|
@ -25,14 +25,14 @@ void FifoPlaybackAnalyzer::AnalyzeFrames(FifoDataFile* file,
|
||||||
std::vector<AnalyzedFrameInfo>& frameInfo)
|
std::vector<AnalyzedFrameInfo>& frameInfo)
|
||||||
{
|
{
|
||||||
u32* cpMem = file->GetCPMem();
|
u32* cpMem = file->GetCPMem();
|
||||||
FifoAnalyzer::LoadCPReg(0x50, cpMem[0x50], s_CpMem);
|
FifoAnalyzer::LoadCPReg(VCD_LO, cpMem[VCD_LO], s_CpMem);
|
||||||
FifoAnalyzer::LoadCPReg(0x60, cpMem[0x60], s_CpMem);
|
FifoAnalyzer::LoadCPReg(VCD_HI, cpMem[VCD_HI], s_CpMem);
|
||||||
|
|
||||||
for (int i = 0; i < 8; ++i)
|
for (u32 i = 0; i < CP_NUM_VAT_REG; ++i)
|
||||||
{
|
{
|
||||||
FifoAnalyzer::LoadCPReg(0x70 + i, cpMem[0x70 + i], s_CpMem);
|
FifoAnalyzer::LoadCPReg(CP_VAT_REG_A + i, cpMem[CP_VAT_REG_A + i], s_CpMem);
|
||||||
FifoAnalyzer::LoadCPReg(0x80 + i, cpMem[0x80 + i], s_CpMem);
|
FifoAnalyzer::LoadCPReg(CP_VAT_REG_B + i, cpMem[CP_VAT_REG_B + i], s_CpMem);
|
||||||
FifoAnalyzer::LoadCPReg(0x90 + i, cpMem[0x90 + i], s_CpMem);
|
FifoAnalyzer::LoadCPReg(CP_VAT_REG_C + i, cpMem[CP_VAT_REG_C + i], s_CpMem);
|
||||||
}
|
}
|
||||||
|
|
||||||
frameInfo.clear();
|
frameInfo.clear();
|
||||||
|
|
|
@ -17,16 +17,16 @@ void FifoRecordAnalyzer::Initialize(const u32* cpMem)
|
||||||
{
|
{
|
||||||
s_DrawingObject = false;
|
s_DrawingObject = false;
|
||||||
|
|
||||||
FifoAnalyzer::LoadCPReg(0x50, *(cpMem + 0x50), s_CpMem);
|
FifoAnalyzer::LoadCPReg(VCD_LO, cpMem[VCD_LO], s_CpMem);
|
||||||
FifoAnalyzer::LoadCPReg(0x60, *(cpMem + 0x60), s_CpMem);
|
FifoAnalyzer::LoadCPReg(VCD_HI, cpMem[VCD_HI], s_CpMem);
|
||||||
for (int i = 0; i < 8; ++i)
|
for (u32 i = 0; i < CP_NUM_VAT_REG; ++i)
|
||||||
FifoAnalyzer::LoadCPReg(0x70 + i, *(cpMem + 0x70 + i), s_CpMem);
|
FifoAnalyzer::LoadCPReg(CP_VAT_REG_A + i, cpMem[CP_VAT_REG_A + i], s_CpMem);
|
||||||
|
|
||||||
const u32* const bases_start = cpMem + 0xA0;
|
const u32* const bases_start = cpMem + ARRAY_BASE;
|
||||||
const u32* const bases_end = bases_start + s_CpMem.arrayBases.size();
|
const u32* const bases_end = bases_start + s_CpMem.arrayBases.size();
|
||||||
std::copy(bases_start, bases_end, s_CpMem.arrayBases.begin());
|
std::copy(bases_start, bases_end, s_CpMem.arrayBases.begin());
|
||||||
|
|
||||||
const u32* const strides_start = cpMem + 0xB0;
|
const u32* const strides_start = cpMem + ARRAY_STRIDE;
|
||||||
const u32* const strides_end = strides_start + s_CpMem.arrayStrides.size();
|
const u32* const strides_end = strides_start + s_CpMem.arrayStrides.size();
|
||||||
std::copy(strides_start, strides_end, s_CpMem.arrayStrides.begin());
|
std::copy(strides_start, strides_end, s_CpMem.arrayStrides.begin());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue