diff --git a/src/d/actor/d_a_mant.cpp b/src/d/actor/d_a_mant.cpp index a308ad4209..47b7831c0e 100644 --- a/src/d/actor/d_a_mant.cpp +++ b/src/d/actor/d_a_mant.cpp @@ -16,12 +16,30 @@ using GameVersion = dusk::version::GameVersion; -static u8* l_Egnd_mantTEX_get() { alignas(32) static u8 buf[0x4000]; static bool _ = (dusk::LoadRelAsset(buf, "/rel/Final/Release/d_a_mant.rel", {{GameVersion::GcnUsa, 0x1C00}, {GameVersion::GcnPal, 0x1C00}}, 0x4000), true); return buf; } +// keep the original version of the cape texture const so we don't need to reload the file +static u8 const * l_Egnd_mantTEX_get() { alignas(32) static u8 buf[0x4000]; static bool _ = (dusk::LoadRelAsset(buf, "/rel/Final/Release/d_a_mant.rel", {{GameVersion::GcnUsa, 0x1C00}, {GameVersion::GcnPal, 0x1C00}}, 0x4000), true); return buf; } static u8* l_Egnd_mantTEX_U_get() { alignas(32) static u8 buf[0x4000]; static bool _ = (dusk::LoadRelAsset(buf, "/rel/Final/Release/d_a_mant.rel", {{GameVersion::GcnUsa, 0x5C00}, {GameVersion::GcnPal, 0x5C00}}, 0x4000), true); return buf; } static u8* l_Egnd_mantPAL_get() { alignas(32) static u8 buf[0x60]; static bool _ = (dusk::LoadRelAsset(buf, "/rel/Final/Release/d_a_mant.rel", {{GameVersion::GcnUsa, 0x9C00}, {GameVersion::GcnPal, 0x9C00}}, 0x60), true); return buf; } #define l_Egnd_mantTEX (l_Egnd_mantTEX_get()) #define l_Egnd_mantTEX_U (l_Egnd_mantTEX_U_get()) #define l_Egnd_mantPAL (l_Egnd_mantPAL_get()) + +// make a copy of the cape texture that can be overwritten with the tears +static u8 l_Egnd_mantTEX_copy[0x4000]; + +// keep our cached texture objects out here so that we can update them from multiple places +static bool textureObjsInitialized = false; +static TGXTlutObj tlutObj; +static TGXTexObj mainTexObj; +static TGXTexObj undersideTexObj; + +// l_pos is unused +//static f32* l_pos_get() { alignas(32) static f32 buf[507]; static bool _ = (dusk::LoadRelAsset(buf, "/rel/Final/Release/d_a_mant.rel", {{GameVersion::GcnUsa, 0xA44C}, {GameVersion::GcnPal, 0xA44C}}, sizeof(buf)), true); return buf; } +static f32* l_normal_get() { alignas(32) static f32 buf[3]; static bool _ = (dusk::LoadRelAsset(buf, "/rel/Final/Release/d_a_mant.rel", {{GameVersion::GcnUsa, 0x9C60}, {GameVersion::GcnPal, 0x9C60}}, sizeof(buf)), true); return buf; } +static f32* l_texCoord_get() { alignas(32) static f32 buf[338]; static bool _ = (dusk::LoadRelAsset(buf, "/rel/Final/Release/d_a_mant.rel", {{GameVersion::GcnUsa, 0xA458}, {GameVersion::GcnPal, 0xA458}}, sizeof(buf)), true); return buf; } +//#define l_pos (l_pos_get()) +#define l_normal (l_normal_get()) +#define l_texCoord (l_texCoord_get()) #else #include "assets/l_Egnd_mantTEX.h" @@ -31,228 +49,6 @@ static u8* l_Egnd_mantPAL_get() { alignas(32) static u8 buf[0x60]; static bo #endif #include "d/d_s_play.h" -static u32 l_pos[507] = { - 0x42480000, 0x3F5CFC93, 0xC365BD9C, 0x4226AAAA, - 0x3F5CFC93, 0xC365BD9C, 0x42055556, 0x3F5CFC93, - 0xC365BD9C, 0x41C80000, 0x3F5CFC93, 0xC365BD9C, - 0x41855556, 0x3F5CFC93, 0xC365BD9C, 0x41055556, - 0x3F5CFC93, 0xC365BD9C, 0x358637BD, 0x3F5CFC93, - 0xC365BD9C, 0xC1055554, 0x3F5CFC93, 0xC365BD9C, - 0xC1855554, 0x3F5CFC93, 0xC365BD9C, 0xC1C7FFFF, - 0x3F5CFC93, 0xC365BD9C, 0xC2055554, 0x3F5CFC93, - 0xC365BD9C, 0xC226AAAA, 0x3F5CFC93, 0xC365BD9C, - 0xC2480000, 0x3F5CFC93, 0xC365BD9C, 0x42480000, - 0x3F5CFC93, 0xC35292F0, 0x4226AAAA, 0x3F5CFC93, - 0xC35292F0, 0x42055556, 0x3F5CFC93, 0xC35292F0, - 0x41C80000, 0x3F5CFC93, 0xC35292F0, 0x41855556, - 0x3F5CFC93, 0xC35292F0, 0x41055556, 0x3F5CFC93, - 0xC35292F0, 0x358637BD, 0x3F5CFC93, 0xC35292F0, - 0xC1055554, 0x3F5CFC93, 0xC35292F0, 0xC1855554, - 0x3F5CFC93, 0xC35292F0, 0xC1C7FFFF, 0x3F5CFC93, - 0xC35292F0, 0xC2055554, 0x3F5CFC93, 0xC35292F0, - 0xC226AAAA, 0x3F5CFC93, 0xC35292F0, 0xC2480000, - 0x3F5CFC93, 0xC35292F0, 0x42480000, 0x3F5CFC93, - 0xC33F6846, 0x4226AAAA, 0x3F5CFC93, 0xC33F6846, - 0x42055556, 0x3F5CFC93, 0xC33F6846, 0x41C80000, - 0x3F5CFC93, 0xC33F6846, 0x41855556, 0x3F5CFC93, - 0xC33F6846, 0x41055556, 0x3F5CFC93, 0xC33F6846, - 0x358637BD, 0x3F5CFC93, 0xC33F6846, 0xC1055554, - 0x3F5CFC93, 0xC33F6846, 0xC1855554, 0x3F5CFC93, - 0xC33F6846, 0xC1C7FFFF, 0x3F5CFC93, 0xC33F6846, - 0xC2055554, 0x3F5CFC93, 0xC33F6846, 0xC226AAAA, - 0x3F5CFC93, 0xC33F6846, 0xC2480000, 0x3F5CFC93, - 0xC33F6846, 0x42480000, 0x3F5CFC93, 0xC32C3D9C, - 0x4226AAAA, 0x3F5CFC93, 0xC32C3D9C, 0x42055556, - 0x3F5CFC93, 0xC32C3D9C, 0x41C80000, 0x3F5CFC93, - 0xC32C3D9C, 0x41855556, 0x3F5CFC93, 0xC32C3D9C, - 0x41055556, 0x3F5CFC93, 0xC32C3D9C, 0x358637BD, - 0x3F5CFC93, 0xC32C3D9C, 0xC1055554, 0x3F5CFC93, - 0xC32C3D9C, 0xC1855554, 0x3F5CFC93, 0xC32C3D9C, - 0xC1C7FFFF, 0x3F5CFC93, 0xC32C3D9C, 0xC2055554, - 0x3F5CFC93, 0xC32C3D9C, 0xC226AAAA, 0x3F5CFC93, - 0xC32C3D9C, 0xC2480000, 0x3F5CFC93, 0xC32C3D9C, - 0x42480000, 0x3F5CFC93, 0xC31912F1, 0x4226AAAA, - 0x3F5CFC93, 0xC31912F1, 0x42055556, 0x3F5CFC93, - 0xC31912F1, 0x41C80000, 0x3F5CFC93, 0xC31912F1, - 0x41855556, 0x3F5CFC93, 0xC31912F1, 0x41055556, - 0x3F5CFC93, 0xC31912F1, 0x358637BD, 0x3F5CFC93, - 0xC31912F1, 0xC1055554, 0x3F5CFC93, 0xC31912F1, - 0xC1855554, 0x3F5CFC93, 0xC31912F1, 0xC1C7FFFF, - 0x3F5CFC93, 0xC31912F1, 0xC2055554, 0x3F5CFC93, - 0xC31912F1, 0xC226AAAA, 0x3F5CFC93, 0xC31912F1, - 0xC2480000, 0x3F5CFC93, 0xC31912F1, 0x42480000, - 0x3F5CFC93, 0xC305E846, 0x4226AAAA, 0x3F5CFC93, - 0xC305E846, 0x42055556, 0x3F5CFC93, 0xC305E846, - 0x41C80000, 0x3F5CFC93, 0xC305E846, 0x41855556, - 0x3F5CFC93, 0xC305E846, 0x41055556, 0x3F5CFC93, - 0xC305E846, 0x358637BD, 0x3F5CFC93, 0xC305E846, - 0xC1055554, 0x3F5CFC93, 0xC305E846, 0xC1855554, - 0x3F5CFC93, 0xC305E846, 0xC1C7FFFF, 0x3F5CFC93, - 0xC305E846, 0xC2055554, 0x3F5CFC93, 0xC305E846, - 0xC226AAAA, 0x3F5CFC93, 0xC305E846, 0xC2480000, - 0x3F5CFC93, 0xC305E846, 0x42480000, 0x3F5CFC93, - 0xC2E57B38, 0x4226AAAA, 0x3F5CFC93, 0xC2E57B38, - 0x42055556, 0x3F5CFC93, 0xC2E57B38, 0x41C80000, - 0x3F5CFC93, 0xC2E57B38, 0x41855556, 0x3F5CFC93, - 0xC2E57B38, 0x41055556, 0x3F5CFC93, 0xC2E57B38, - 0x358637BD, 0x3F5CFC93, 0xC2E57B38, 0xC1055554, - 0x3F5CFC93, 0xC2E57B38, 0xC1855554, 0x3F5CFC93, - 0xC2E57B38, 0xC1C7FFFF, 0x3F5CFC93, 0xC2E57B38, - 0xC2055554, 0x3F5CFC93, 0xC2E57B38, 0xC226AAAA, - 0x3F5CFC93, 0xC2E57B38, 0xC2480000, 0x3F5CFC93, - 0xC2E57B38, 0x42480000, 0x3F5CFC93, 0xC2BF25E2, - 0x4226AAAA, 0x3F5CFC93, 0xC2BF25E2, 0x42055556, - 0x3F5CFC93, 0xC2BF25E2, 0x41C80000, 0x3F5CFC93, - 0xC2BF25E2, 0x41855556, 0x3F5CFC93, 0xC2BF25E2, - 0x41055556, 0x3F5CFC93, 0xC2BF25E2, 0x358637BD, - 0x3F5CFC93, 0xC2BF25E2, 0xC1055554, 0x3F5CFC93, - 0xC2BF25E2, 0xC1855554, 0x3F5CFC93, 0xC2BF25E2, - 0xC1C7FFFF, 0x3F5CFC93, 0xC2BF25E2, 0xC2055554, - 0x3F5CFC93, 0xC2BF25E2, 0xC226AAAA, 0x3F5CFC93, - 0xC2BF25E2, 0xC2480000, 0x3F5CFC93, 0xC2BF25E2, - 0x42480000, 0x3F5CFC93, 0xC298D08D, 0x4226AAAA, - 0x3F5CFC93, 0xC298D08D, 0x42055556, 0x3F5CFC93, - 0xC298D08D, 0x41C80000, 0x3F5CFC93, 0xC298D08D, - 0x41855556, 0x3F5CFC93, 0xC298D08D, 0x41055556, - 0x3F5CFC93, 0xC298D08D, 0x358637BD, 0x3F5CFC93, - 0xC298D08D, 0xC1055554, 0x3F5CFC93, 0xC298D08D, - 0xC1855554, 0x3F5CFC93, 0xC298D08D, 0xC1C7FFFF, - 0x3F5CFC93, 0xC298D08D, 0xC2055554, 0x3F5CFC93, - 0xC298D08D, 0xC226AAAA, 0x3F5CFC93, 0xC298D08D, - 0xC2480000, 0x3F5CFC93, 0xC298D08D, 0x42480000, - 0x3F5CFC93, 0xC264F66F, 0x4226AAAA, 0x3F5CFC93, - 0xC264F66F, 0x42055556, 0x3F5CFC93, 0xC264F66F, - 0x41C80000, 0x3F5CFC93, 0xC264F66F, 0x41855556, - 0x3F5CFC93, 0xC264F66F, 0x41055556, 0x3F5CFC93, - 0xC264F66F, 0x358637BD, 0x3F5CFC93, 0xC264F66F, - 0xC1055554, 0x3F5CFC93, 0xC264F66F, 0xC1855554, - 0x3F5CFC93, 0xC264F66F, 0xC1C7FFFF, 0x3F5CFC93, - 0xC264F66F, 0xC2055554, 0x3F5CFC93, 0xC264F66F, - 0xC226AAAA, 0x3F5CFC93, 0xC264F66F, 0xC2480000, - 0x3F5CFC93, 0xC264F66F, 0x42480000, 0x3F5CFC93, - 0xC2184BC4, 0x4226AAAA, 0x3F5CFC93, 0xC2184BC4, - 0x42055556, 0x3F5CFC93, 0xC2184BC4, 0x41C80000, - 0x3F5CFC93, 0xC2184BC4, 0x41855556, 0x3F5CFC93, - 0xC2184BC4, 0x41055556, 0x3F5CFC93, 0xC2184BC4, - 0x358637BD, 0x3F5CFC93, 0xC2184BC4, 0xC1055554, - 0x3F5CFC93, 0xC2184BC4, 0xC1855554, 0x3F5CFC93, - 0xC2184BC4, 0xC1C7FFFF, 0x3F5CFC93, 0xC2184BC4, - 0xC2055554, 0x3F5CFC93, 0xC2184BC4, 0xC226AAAA, - 0x3F5CFC93, 0xC2184BC4, 0xC2480000, 0x3F5CFC93, - 0xC2184BC4, 0x42480000, 0x3F5CFC93, 0xC1974231, - 0x4226AAAA, 0x3F5CFC93, 0xC1974231, 0x42055556, - 0x3F5CFC93, 0xC1974231, 0x41C80000, 0x3F5CFC93, - 0xC1974231, 0x41855556, 0x3F5CFC93, 0xC1974231, - 0x41055556, 0x3F5CFC93, 0xC1974231, 0x358637BD, - 0x3F5CFC93, 0xC1974231, 0xC1055554, 0x3F5CFC93, - 0xC1974231, 0xC1855554, 0x3F5CFC93, 0xC1974231, - 0xC1C7FFFF, 0x3F5CFC93, 0xC1974231, 0xC2055554, - 0x3F5CFC93, 0xC1974231, 0xC226AAAA, 0x3F5CFC93, - 0xC1974231, 0xC2480000, 0x3F5CFC93, 0xC1974231, - 0x42480000, 0x3F5CFC93, 0x3E84C964, 0x4226AAAA, - 0x3F5CFC93, 0x3E84C964, 0x42055556, 0x3F5CFC93, - 0x3E84C964, 0x41C80000, 0x3F5CFC93, 0x3E84C964, - 0x41855556, 0x3F5CFC93, 0x3E84C964, 0x41055556, - 0x3F5CFC93, 0x3E84C964, 0x358637BD, 0x3F5CFC93, - 0x3E84C964, 0xC1055554, 0x3F5CFC93, 0x3E84C964, - 0xC1855554, 0x3F5CFC93, 0x3E84C964, 0xC1C7FFFF, - 0x3F5CFC93, 0x3E84C964, 0xC2055554, 0x3F5CFC93, - 0x3E84C964, 0xC226AAAA, 0x3F5CFC93, 0x3E84C964, - 0xC2480000, 0x3F5CFC93, 0x3E84C964, -}; - -static u32 l_normal[3] = { - 0x00000000, 0x3F800000, 0x00000000, -}; - -static u32 l_texCoord[338] = { - 0x00000000, 0x3F6AAAB0, 0x3DAAAA7E, 0x3F6AAAB0, - 0x3DAAAA7E, 0x3F800000, 0x00000000, 0x3F800000, - 0x3E2AAAC1, 0x3F6AAAB0, 0x3E2AAAC1, 0x3F800000, - 0x3E800000, 0x3F6AAAB0, 0x3E800000, 0x3F800000, - 0x3EAAAA9F, 0x3F6AAAB0, 0x3EAAAA9F, 0x3F800000, - 0x3ED55561, 0x3F6AAAB0, 0x3ED55561, 0x3F800000, - 0x3F000000, 0x3F6AAAB0, 0x3F000000, 0x3F800000, - 0x3F155550, 0x3F6AAAB0, 0x3F155550, 0x3F800000, - 0x3F2AAAB0, 0x3F6AAAB0, 0x3F2AAAB0, 0x3F800000, - 0x3F400000, 0x3F6AAAB0, 0x3F400000, 0x3F800000, - 0x3F555550, 0x3F6AAAB0, 0x3F555550, 0x3F800000, - 0x3F6AAAB0, 0x3F6AAAB0, 0x3F6AAAB0, 0x3F800000, - 0x3F800000, 0x3F6AAAB0, 0x3F800000, 0x3F800000, - 0x00000000, 0x3F555550, 0x3DAAAA7E, 0x3F555550, - 0x3E2AAAC1, 0x3F555550, 0x3E800000, 0x3F555550, - 0x3EAAAA9F, 0x3F555550, 0x3ED55561, 0x3F555550, - 0x3F000000, 0x3F555550, 0x3F155550, 0x3F555550, - 0x3F2AAAB0, 0x3F555550, 0x3F400000, 0x3F555550, - 0x3F555550, 0x3F555550, 0x3F6AAAB0, 0x3F555550, - 0x3F800000, 0x3F555550, 0x00000000, 0x3F400000, - 0x3DAAAA7E, 0x3F400000, 0x3E2AAAC1, 0x3F400000, - 0x3E800000, 0x3F400000, 0x3EAAAA9F, 0x3F400000, - 0x3ED55561, 0x3F400000, 0x3F000000, 0x3F400000, - 0x3F155550, 0x3F400000, 0x3F2AAAB0, 0x3F400000, - 0x3F400000, 0x3F400000, 0x3F555550, 0x3F400000, - 0x3F6AAAB0, 0x3F400000, 0x3F800000, 0x3F400000, - 0x00000000, 0x3F2AAAB0, 0x3DAAAA7E, 0x3F2AAAB0, - 0x3E2AAAC1, 0x3F2AAAB0, 0x3E800000, 0x3F2AAAB0, - 0x3EAAAA9F, 0x3F2AAAB0, 0x3ED55561, 0x3F2AAAB0, - 0x3F000000, 0x3F2AAAB0, 0x3F155550, 0x3F2AAAB0, - 0x3F2AAAB0, 0x3F2AAAB0, 0x3F400000, 0x3F2AAAB0, - 0x3F555550, 0x3F2AAAB0, 0x3F6AAAB0, 0x3F2AAAB0, - 0x3F800000, 0x3F2AAAB0, 0x00000000, 0x3F155550, - 0x3DAAAA7E, 0x3F155550, 0x3E2AAAC1, 0x3F155550, - 0x3E800000, 0x3F155550, 0x3EAAAA9F, 0x3F155550, - 0x3ED55561, 0x3F155550, 0x3F000000, 0x3F155550, - 0x3F155550, 0x3F155550, 0x3F2AAAB0, 0x3F155550, - 0x3F400000, 0x3F155550, 0x3F555550, 0x3F155550, - 0x3F6AAAB0, 0x3F155550, 0x3F800000, 0x3F155550, - 0x00000000, 0x3F000000, 0x3DAAAA7E, 0x3F000000, - 0x3E2AAAC1, 0x3F000000, 0x3E800000, 0x3F000000, - 0x3EAAAA9F, 0x3F000000, 0x3ED55561, 0x3F000000, - 0x3F000000, 0x3F000000, 0x3F155550, 0x3F000000, - 0x3F2AAAB0, 0x3F000000, 0x3F400000, 0x3F000000, - 0x3F555550, 0x3F000000, 0x3F6AAAB0, 0x3F000000, - 0x3F800000, 0x3F000000, 0x00000000, 0x3ED55561, - 0x3DAAAA7E, 0x3ED55561, 0x3E2AAAC1, 0x3ED55561, - 0x3E800000, 0x3ED55561, 0x3EAAAA9F, 0x3ED55561, - 0x3ED55561, 0x3ED55561, 0x3F000000, 0x3ED55561, - 0x3F155550, 0x3ED55561, 0x3F2AAAB0, 0x3ED55561, - 0x3F400000, 0x3ED55561, 0x3F555550, 0x3ED55561, - 0x3F6AAAB0, 0x3ED55561, 0x3F800000, 0x3ED55561, - 0x00000000, 0x3EAAAA9F, 0x3DAAAA7E, 0x3EAAAA9F, - 0x3E2AAAC1, 0x3EAAAA9F, 0x3E800000, 0x3EAAAA9F, - 0x3EAAAA9F, 0x3EAAAA9F, 0x3ED55561, 0x3EAAAA9F, - 0x3F000000, 0x3EAAAA9F, 0x3F155550, 0x3EAAAA9F, - 0x3F2AAAB0, 0x3EAAAA9F, 0x3F400000, 0x3EAAAA9F, - 0x3F555550, 0x3EAAAA9F, 0x3F6AAAB0, 0x3EAAAA9F, - 0x3F800000, 0x3EAAAA9F, 0x00000000, 0x3E800000, - 0x3DAAAA7E, 0x3E800000, 0x3E2AAAC1, 0x3E800000, - 0x3E800000, 0x3E800000, 0x3EAAAA9F, 0x3E800000, - 0x3ED55561, 0x3E800000, 0x3F000000, 0x3E800000, - 0x3F155550, 0x3E800000, 0x3F2AAAB0, 0x3E800000, - 0x3F400000, 0x3E800000, 0x3F555550, 0x3E800000, - 0x3F6AAAB0, 0x3E800000, 0x3F800000, 0x3E800000, - 0x00000000, 0x3E2AAAC1, 0x3DAAAA7E, 0x3E2AAAC1, - 0x3E2AAAC1, 0x3E2AAAC1, 0x3E800000, 0x3E2AAAC1, - 0x3EAAAA9F, 0x3E2AAAC1, 0x3ED55561, 0x3E2AAAC1, - 0x3F000000, 0x3E2AAAC1, 0x3F155550, 0x3E2AAAC1, - 0x3F2AAAB0, 0x3E2AAAC1, 0x3F400000, 0x3E2AAAC1, - 0x3F555550, 0x3E2AAAC1, 0x3F6AAAB0, 0x3E2AAAC1, - 0x3F800000, 0x3E2AAAC1, 0x00000000, 0x3DAAAA7E, - 0x3DAAAA7E, 0x3DAAAA7E, 0x3E2AAAC1, 0x3DAAAA7E, - 0x3E800000, 0x3DAAAA7E, 0x3EAAAA9F, 0x3DAAAA7E, - 0x3ED55561, 0x3DAAAA7E, 0x3F000000, 0x3DAAAA7E, - 0x3F155550, 0x3DAAAA7E, 0x3F2AAAB0, 0x3DAAAA7E, - 0x3F400000, 0x3DAAAA7E, 0x3F555550, 0x3DAAAA7E, - 0x3F6AAAB0, 0x3DAAAA7E, 0x3F800000, 0x3DAAAA7E, - 0x00000000, 0x00000000, 0x3DAAAA7E, 0x00000000, - 0x3E2AAAC1, 0x00000000, 0x3E800000, 0x00000000, - 0x3EAAAA9F, 0x00000000, 0x3ED55561, 0x00000000, - 0x3F000000, 0x00000000, 0x3F155550, 0x00000000, - 0x3F2AAAB0, 0x00000000, 0x3F400000, 0x00000000, - 0x3F555550, 0x00000000, 0x3F6AAAB0, 0x00000000, - 0x3F800000, 0x00000000, -}; - #if TARGET_PC using GameVersion = dusk::version::GameVersion; @@ -307,7 +103,7 @@ static void mant_build_anchor_frame(const cXyz& anchor_a, const cXyz& anchor_b, void daMant_packet_c::draw() { ZoneScoped; #if TARGET_PC - void* image = l_Egnd_mantTEX; + void* image = l_Egnd_mantTEX_copy; void* lut = l_Egnd_mantPAL; #else void* image = tex_d[0]; @@ -389,12 +185,12 @@ void daMant_packet_c::draw() { } } GXSETARRAY(GX_VA_POS, draw_pos, sizeof(mNrm[0]), 12, true); - GXSETARRAY(GX_VA_NRM, &l_normal, sizeof(l_normal), 12, false); + GXSETARRAY(GX_VA_NRM, l_normal, sizeof(f32) * 3, 12, false); #else GXSETARRAY(GX_VA_POS, this->getPos(), sizeof(mPos[0]), 12, true); GXSETARRAY(GX_VA_NRM, this->getNrm(), sizeof(mNrm[0]), 12, true); #endif - GXSETARRAY(GX_VA_TEX0, &l_texCoord, sizeof(l_texCoord), 8, false); // TODO: set to true when converted to float literals + GXSETARRAY(GX_VA_TEX0, l_texCoord, sizeof(f32) * 338, 8, false); GXSetZCompLoc(0); GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE); @@ -420,10 +216,6 @@ void daMant_packet_c::draw() { GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0); #if TARGET_PC - static bool textureObjsInitialized = false; - static TGXTlutObj tlutObj; - static TGXTexObj mainTexObj; - static TGXTexObj undersideTexObj; if (!textureObjsInitialized) { GXInitTlutObj(&tlutObj, lut, GX_TL_RGB5A3, 0x100); GXInitTexObjCI(&mainTexObj, image, 0x80, 0x80, GX_TF_C8, GX_CLAMP, GX_CLAMP, 0, 0); @@ -917,8 +709,14 @@ static int daMant_Execute(mant_class* i_this) { if (0 <= uVar1 && uVar1 < 0x4000) { int iVar5 = (uVar1 & 7) + (uVar1 & 0x78) * 4 + (uVar1 >> 4 & 0x18) + (uVar1 & 0x3e00); - l_Egnd_mantTEX[iVar5] = l_Egnd_mantTEX_U[iVar5] = 0; + DUSK_IF_ELSE(l_Egnd_mantTEX_copy[iVar5], l_Egnd_mantTEX[iVar5]) = l_Egnd_mantTEX_U[iVar5] = 0; } + +#if TARGET_PC + if(textureObjsInitialized) { + GXInitTlutObjData(&tlutObj, l_Egnd_mantPAL); // make sure the cached textures are updated + } +#endif } } @@ -956,6 +754,14 @@ static int daMant_Create(fopAc_ac_c* i_this) { l_Egnd_mantTEX_U[i] = 6; } +#if TARGET_PC + memcpy(l_Egnd_mantTEX_copy, l_Egnd_mantTEX, sizeof(l_Egnd_mantTEX_copy)); + + if(textureObjsInitialized) { + GXInitTlutObjData(&tlutObj, l_Egnd_mantPAL); // make sure the cached textures are updated + } +#endif + lbl_277_bss_0 = 0; daMant_Execute(m_this); return 4;