Fixed group traversal bug. Added ACHR flag "Unknown 30". All non-REFR flags checked.
This commit is contained in:
@@ -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 = {
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user