Fixed group traversal bug. Added ACHR flag "Unknown 30". All non-REFR flags checked.

This commit is contained in:
2022-09-05 15:29:29 +10:00
parent ea9eece708
commit 20d29ea721
2 changed files with 9 additions and 3 deletions

View File

@@ -186,6 +186,7 @@ rfs_inner _achr = {
[11] = "Initially Disabled", [11] = "Initially Disabled",
[25] = "No AI Acquire", [25] = "No AI Acquire",
[29] = "Don't Havok Settle", [29] = "Don't Havok Settle",
[30] = "ACHR Unknown 30",
}; };
rfs_inner _acti = { rfs_inner _acti = {

View File

@@ -77,7 +77,10 @@ const char *walk_unknown_data(const char *data, size_t size) {
const char *end = data + size; const char *end = data + size;
while (data != end) { while (data != end) {
assert(data < end); if (data >= end) {
fflush(stdout);
assert(false);
}
const Type4 *type = (Type4 *)data; const Type4 *type = (Type4 *)data;
@@ -101,9 +104,10 @@ const char *walk_group(const char *data) {
const char *const start = data + sizeof(Group); const char *const start = data + sizeof(Group);
const char *const end = data + header->size; const char *const end = data + header->size;
size_t size = header->size - sizeof(Group);
// walk through the groups/records inside the group // walk through the groups/records inside the group
data = walk_unknown_data(start, header->size); data = walk_unknown_data(start, size);
assert(data == end); assert(data == end);
return data; return data;
@@ -205,7 +209,8 @@ void print_record_flags(Record *const header) {
if (str) { if (str) {
printf(" - %s\n", str); printf(" - %s\n", str);
flags -= ((uint32_t)1) << highest; flags -= ((uint32_t)1) << highest;
} } else
break;
} }
} }
} }