GE Debugger: Provide addrs in breakpoint conds.

Easier to just refer to the full address.
This commit is contained in:
Unknown W. Brackets committed 2022-09-11 10:57:04 -07:00
1 parent 75efcd9dfd
commit aa377662dd
2 files changed
+55 -13

No files matched your search

+44 -2
View File
@@ -31,6 +31,18 @@ enum class GEReferenceIndex : uint32_t {
BFLAG,
OP,
DATA,
CLUTADDR,
TRANSFERSRC,
TRANSFERDST,
TEXADDR0,
TEXADDR1,
TEXADDR2,
TEXADDR3,
TEXADDR4,
TEXADDR5,
TEXADDR6,
TEXADDR7,
BONE_MATRIX = 0x200,
WORLD_MATRIX = 0x260,
@@ -56,6 +68,17 @@ static constexpr ReferenceName referenceNames[] = {
{ GEReferenceIndex::BFLAG, "boundflag" },
{ GEReferenceIndex::OP, "op" },
{ GEReferenceIndex::DATA, "data" },
{ GEReferenceIndex::CLUTADDR, "clutaddr" },
{ GEReferenceIndex::TRANSFERSRC, "transfersrc" },
{ GEReferenceIndex::TRANSFERDST, "transferdst" },
{ GEReferenceIndex::TEXADDR0, "texaddr0" },
{ GEReferenceIndex::TEXADDR1, "texaddr1" },
{ GEReferenceIndex::TEXADDR2, "texaddr2" },
{ GEReferenceIndex::TEXADDR3, "texaddr3" },
{ GEReferenceIndex::TEXADDR4, "texaddr4" },
{ GEReferenceIndex::TEXADDR5, "texaddr5" },
{ GEReferenceIndex::TEXADDR6, "texaddr6" },
{ GEReferenceIndex::TEXADDR7, "texaddr7" },
};
class GEExpressionFunctions : public IExpressionFunctions {
@@ -133,15 +156,15 @@ bool GEExpressionFunctions::parseSymbol(char *str, uint32_t &symbolValue) {
}
uint32_t GEExpressionFunctions::getReferenceValue(uint32_t referenceIndex) {
GPUgstate state = gpu_->GetGState();
if (referenceIndex < 0x100) {
uint32_t value = gpu_->GetGState().cmdmem[referenceIndex];
uint32_t value = state.cmdmem[referenceIndex];
// TODO: Later, support float values and similar.
return value & 0x00FFFFFF;
}
// We return the matrix value as float bits, which gets interpreted correctly in the parser.
if (referenceIndex >= (uint32_t)GEReferenceIndex::BONE_MATRIX && referenceIndex < (uint32_t)GEReferenceIndex::MATRIX_END) {
GPUgstate state = gpu_->GetGState();
float value;
if (referenceIndex >= (uint32_t)GEReferenceIndex::TGEN_MATRIX) {
value = state.tgenMatrix[referenceIndex - (uint32_t)GEReferenceIndex::TGEN_MATRIX];
@@ -197,6 +220,25 @@ uint32_t GEExpressionFunctions::getReferenceValue(uint32_t referenceIndex) {
}
return 0;
case GEReferenceIndex::CLUTADDR:
return state.getClutAddress();
case GEReferenceIndex::TRANSFERSRC:
return state.getTransferSrcAddress();
case GEReferenceIndex::TRANSFERDST:
return state.getTransferDstAddress();
case GEReferenceIndex::TEXADDR0:
case GEReferenceIndex::TEXADDR1:
case GEReferenceIndex::TEXADDR2:
case GEReferenceIndex::TEXADDR3:
case GEReferenceIndex::TEXADDR4:
case GEReferenceIndex::TEXADDR5:
case GEReferenceIndex::TEXADDR6:
case GEReferenceIndex::TEXADDR7:
return state.getTextureAddress((int)ref - (int)GEReferenceIndex::TEXADDR0);
case GEReferenceIndex::BONE_MATRIX:
case GEReferenceIndex::WORLD_MATRIX:
case GEReferenceIndex::VIEW_MATRIX:
+11 -11
View File
@@ -188,14 +188,14 @@ static constexpr GECmdInfo geCmdInfo[] = {
{ GE_CMD_FRAMEBUFWIDTH, "fbstride", GECmdFormat::STRIDE },
{ GE_CMD_ZBUFPTR, "zbptr", GECmdFormat::LOW_ADDR_ONLY },
{ GE_CMD_ZBUFWIDTH, "zbstride", GECmdFormat::STRIDE },
{ GE_CMD_TEXADDR0, "texaddr0", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR1, "texaddr1", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR2, "texaddr2", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR3, "texaddr3", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR4, "texaddr4", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR5, "texaddr5", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR6, "texaddr6", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR7, "texaddr7", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR0, "texaddr0low", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR1, "texaddr1low", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR2, "texaddr2low", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR3, "texaddr3low", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR4, "texaddr4low", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR5, "texaddr5low", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR6, "texaddr6low", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXADDR7, "texaddr7low", GECmdFormat::LOW_ADDR },
{ GE_CMD_TEXBUFWIDTH0, "texbufw0", GECmdFormat::STRIDE_HIGH_ADDR },
{ GE_CMD_TEXBUFWIDTH1, "texbufw1", GECmdFormat::STRIDE_HIGH_ADDR },
{ GE_CMD_TEXBUFWIDTH2, "texbufw2", GECmdFormat::STRIDE_HIGH_ADDR },
@@ -204,11 +204,11 @@ static constexpr GECmdInfo geCmdInfo[] = {
{ GE_CMD_TEXBUFWIDTH5, "texbufw5", GECmdFormat::STRIDE_HIGH_ADDR },
{ GE_CMD_TEXBUFWIDTH6, "texbufw6", GECmdFormat::STRIDE_HIGH_ADDR },
{ GE_CMD_TEXBUFWIDTH7, "texbufw7", GECmdFormat::STRIDE_HIGH_ADDR },
{ GE_CMD_CLUTADDR, "clutaddr", GECmdFormat::LOW_ADDR },
{ GE_CMD_CLUTADDR, "clutaddrlow", GECmdFormat::LOW_ADDR },
{ GE_CMD_CLUTADDRUPPER, "clutaddrhigh", GECmdFormat::HIGH_ADDR },
{ GE_CMD_TRANSFERSRC, "transfersrc", GECmdFormat::LOW_ADDR },
{ GE_CMD_TRANSFERSRC, "transfersrclow", GECmdFormat::LOW_ADDR },
{ GE_CMD_TRANSFERSRCW, "transfersrcstride", GECmdFormat::STRIDE_HIGH_ADDR },
{ GE_CMD_TRANSFERDST, "transferdst", GECmdFormat::LOW_ADDR },
{ GE_CMD_TRANSFERDST, "transferdstlow", GECmdFormat::LOW_ADDR },
{ GE_CMD_TRANSFERDSTW, "transferdststride", GECmdFormat::STRIDE_HIGH_ADDR },
{ GE_CMD_UNKNOWN_B6, "unknownb6", GECmdFormat::NONE },
{ GE_CMD_UNKNOWN_B7, "unknownb7", GECmdFormat::NONE },