Add iw6 leafTable patch
allows loading of iw6 leaftable data
This commit is contained in:
parent
dc7e0c1a08
commit
70d8316738
@ -7,6 +7,49 @@
|
|||||||
|
|
||||||
namespace map_patches
|
namespace map_patches
|
||||||
{
|
{
|
||||||
|
struct GfxLightGridTree
|
||||||
|
{
|
||||||
|
unsigned char index;
|
||||||
|
unsigned char maxDepth;
|
||||||
|
char unused[2];
|
||||||
|
int nodeCount;
|
||||||
|
int leafCount;
|
||||||
|
int coordMinGridSpace[3];
|
||||||
|
int coordMaxGridSpace[3];
|
||||||
|
int coordHalfSizeGridSpace[3];
|
||||||
|
int defaultColorIndexBitCount;
|
||||||
|
int defaultLightIndexBitCount;
|
||||||
|
unsigned int* p_nodeTable;
|
||||||
|
int leafTableSize;
|
||||||
|
unsigned char* p_leafTable;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum leaf_table_version : std::int8_t
|
||||||
|
{
|
||||||
|
h2 = 0i8,
|
||||||
|
h1 = 0i8,
|
||||||
|
s1 = 0i8,
|
||||||
|
iw6 = 1i8,
|
||||||
|
};
|
||||||
|
|
||||||
|
utils::hook::detour r_decode_light_grid_block_hook;
|
||||||
|
void r_decode_light_grid_block_stub(GfxLightGridTree* p_tree, int child_mask,
|
||||||
|
char child_index, int encoded_node_address, char* p_node_raw, char* p_leaf_raw)
|
||||||
|
{
|
||||||
|
static const auto p_address = 0x6A032E_b + 1;
|
||||||
|
if (p_tree->unused[0] == leaf_table_version::iw6)
|
||||||
|
{
|
||||||
|
utils::hook::set<uint8_t>(p_address, 6); // iw6
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
utils::hook::set<uint8_t>(p_address, 7); // s1,h1,h2
|
||||||
|
}
|
||||||
|
|
||||||
|
r_decode_light_grid_block_hook.invoke<void>(p_tree, child_mask,
|
||||||
|
child_index, encoded_node_address, p_node_raw, p_leaf_raw);
|
||||||
|
}
|
||||||
|
|
||||||
class component final : public component_interface
|
class component final : public component_interface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -20,6 +63,9 @@ namespace map_patches
|
|||||||
// skip fx name prefix checks
|
// skip fx name prefix checks
|
||||||
utils::hook::set<uint8_t>(0x2F377D_b, 0xEB); // createfx parse
|
utils::hook::set<uint8_t>(0x2F377D_b, 0xEB); // createfx parse
|
||||||
utils::hook::set<uint8_t>(0x4444E0_b, 0xEB); // scr_loadfx
|
utils::hook::set<uint8_t>(0x4444E0_b, 0xEB); // scr_loadfx
|
||||||
|
|
||||||
|
// patch iw6 leafTable decoding
|
||||||
|
r_decode_light_grid_block_hook.create(0x69E7D0_b, r_decode_light_grid_block_stub);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user