HD Packs: Added support for <= & >= operators in memoryCheck conditions
This commit is contained in:
parent
f2b02c81b8
commit
12249df1a7
2 changed files with 13 additions and 1 deletions
|
@ -51,7 +51,9 @@ enum class HdPackConditionOperator
|
||||||
Equal = 0,
|
Equal = 0,
|
||||||
NotEqual = 1,
|
NotEqual = 1,
|
||||||
GreaterThan = 2,
|
GreaterThan = 2,
|
||||||
LowerThan = 3
|
LowerThan = 3,
|
||||||
|
LowerThanOrEqual = 4,
|
||||||
|
GreaterThanOrEqual = 5,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct HdPackBaseMemoryCondition : public HdPackCondition
|
struct HdPackBaseMemoryCondition : public HdPackCondition
|
||||||
|
@ -83,6 +85,8 @@ struct HdPackBaseMemoryCondition : public HdPackCondition
|
||||||
case HdPackConditionOperator::NotEqual: out << "!="; break;
|
case HdPackConditionOperator::NotEqual: out << "!="; break;
|
||||||
case HdPackConditionOperator::GreaterThan: out << ">"; break;
|
case HdPackConditionOperator::GreaterThan: out << ">"; break;
|
||||||
case HdPackConditionOperator::LowerThan: out << "<"; break;
|
case HdPackConditionOperator::LowerThan: out << "<"; break;
|
||||||
|
case HdPackConditionOperator::LowerThanOrEqual: out << "<="; break;
|
||||||
|
case HdPackConditionOperator::GreaterThanOrEqual: out << ">="; break;
|
||||||
}
|
}
|
||||||
out << ",";
|
out << ",";
|
||||||
out << HexUtilities::ToHex(OperandB);
|
out << HexUtilities::ToHex(OperandB);
|
||||||
|
@ -139,6 +143,8 @@ struct HdPackMemoryCheckCondition : public HdPackBaseMemoryCondition
|
||||||
case HdPackConditionOperator::NotEqual: return screenInfo->WatchedAddressValues[OperandA] != screenInfo->WatchedAddressValues[OperandB];
|
case HdPackConditionOperator::NotEqual: return screenInfo->WatchedAddressValues[OperandA] != screenInfo->WatchedAddressValues[OperandB];
|
||||||
case HdPackConditionOperator::GreaterThan: return screenInfo->WatchedAddressValues[OperandA] > screenInfo->WatchedAddressValues[OperandB];
|
case HdPackConditionOperator::GreaterThan: return screenInfo->WatchedAddressValues[OperandA] > screenInfo->WatchedAddressValues[OperandB];
|
||||||
case HdPackConditionOperator::LowerThan: return screenInfo->WatchedAddressValues[OperandA] < screenInfo->WatchedAddressValues[OperandB];
|
case HdPackConditionOperator::LowerThan: return screenInfo->WatchedAddressValues[OperandA] < screenInfo->WatchedAddressValues[OperandB];
|
||||||
|
case HdPackConditionOperator::LowerThanOrEqual: return screenInfo->WatchedAddressValues[OperandA] <= screenInfo->WatchedAddressValues[OperandB];
|
||||||
|
case HdPackConditionOperator::GreaterThanOrEqual: return screenInfo->WatchedAddressValues[OperandA] >= screenInfo->WatchedAddressValues[OperandB];
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -156,6 +162,8 @@ struct HdPackMemoryCheckConstantCondition : public HdPackBaseMemoryCondition
|
||||||
case HdPackConditionOperator::NotEqual: return screenInfo->WatchedAddressValues[OperandA] != OperandB;
|
case HdPackConditionOperator::NotEqual: return screenInfo->WatchedAddressValues[OperandA] != OperandB;
|
||||||
case HdPackConditionOperator::GreaterThan: return screenInfo->WatchedAddressValues[OperandA] > OperandB;
|
case HdPackConditionOperator::GreaterThan: return screenInfo->WatchedAddressValues[OperandA] > OperandB;
|
||||||
case HdPackConditionOperator::LowerThan: return screenInfo->WatchedAddressValues[OperandA] < OperandB;
|
case HdPackConditionOperator::LowerThan: return screenInfo->WatchedAddressValues[OperandA] < OperandB;
|
||||||
|
case HdPackConditionOperator::LowerThanOrEqual: return screenInfo->WatchedAddressValues[OperandA] <= OperandB;
|
||||||
|
case HdPackConditionOperator::GreaterThanOrEqual: return screenInfo->WatchedAddressValues[OperandA] >= OperandB;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -454,6 +454,10 @@ void HdPackLoader::ProcessConditionTag(vector<string> &tokens, bool createInvert
|
||||||
op = HdPackConditionOperator::GreaterThan;
|
op = HdPackConditionOperator::GreaterThan;
|
||||||
} else if(opString == "<") {
|
} else if(opString == "<") {
|
||||||
op = HdPackConditionOperator::LowerThan;
|
op = HdPackConditionOperator::LowerThan;
|
||||||
|
} else if(opString == "<=") {
|
||||||
|
op = HdPackConditionOperator::LowerThanOrEqual;
|
||||||
|
} else if(opString == ">=") {
|
||||||
|
op = HdPackConditionOperator::GreaterThanOrEqual;
|
||||||
} else {
|
} else {
|
||||||
checkConstraint(false, "[HDPack] Invalid operator.");
|
checkConstraint(false, "[HDPack] Invalid operator.");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue