diff --git a/src/DivaGL/mdl/disp_manager.cpp b/src/DivaGL/mdl/disp_manager.cpp index d78c2f0..e3e75a0 100644 --- a/src/DivaGL/mdl/disp_manager.cpp +++ b/src/DivaGL/mdl/disp_manager.cpp @@ -42,8 +42,7 @@ static const GLuint MORPH_TEXCOORD0_INDEX = 13; static const GLuint MORPH_TEXCOORD1_INDEX = 14; static const GLuint BONE_INDEX_INDEX = 15; -material_list_struct::material_list_struct() : blend_color(), -has_blend_color(), emission(), has_emission() { +material_list_struct::material_list_struct() : blend_color(), has_blend_color(), emission(), has_emission() { hash = (uint32_t)-1; } diff --git a/src/DivaGL/object.cpp b/src/DivaGL/object.cpp index c7a36c4..ad7c05a 100644 --- a/src/DivaGL/object.cpp +++ b/src/DivaGL/object.cpp @@ -54,6 +54,12 @@ struct ObjsetInfo { static_assert(sizeof(ObjsetInfo) == 0xD8, "\"ObjsetInfo\" struct should have a size of 0xD8"); +void (FASTCALL* object_database_unload_set)(int32_t set) + = (void (FASTCALL*)(int32_t set))0x00000001404599B0; +obj_mesh* (FASTCALL* object_info_get_mesh_by_index)(object_info object, int32_t mesh_index) + = (obj_mesh * (FASTCALL*)(object_info object, int32_t mesh_index))0x0000000140459D40; +int32_t(FASTCALL* object_info_get_mesh_index)(object_info object, const char* mesh_name) + = (int32_t(FASTCALL*)(object_info object, const char* mesh_name))0x0000000140459DE0; uint32_t(FASTCALL* object_database_get_object_info)(const char* name) = (uint32_t(FASTCALL*)(const char* name))0x0000000140459F80; obj* (FASTCALL* object_info_get_object)(object_info obj_info) @@ -72,6 +78,10 @@ prj::vector* (FASTCALL* object_database_get_set_gentex)(int32_t set) = (prj::vector * (FASTCALL*)(int32_t set))0x000000014045A9E0; int32_t(FASTCALL* object_database_get_set_id)(int32_t set_index) = (int32_t(FASTCALL*)(int32_t set_index))0x000000014045AA10; +int32_t(FASTCALL* object_database_load_set)(int32_t set) + = (int32_t(FASTCALL*)(int32_t set))0x000000014045C6A0; +bool (FASTCALL* object_database_load_obj_set_check_not_read)(int32_t set) + = (bool(FASTCALL*)(int32_t set))0x000000014045DA60; static BufObjMgr& bufobj_mgr = *(BufObjMgr*)0x00000001411A34D0; diff --git a/src/DivaGL/object.hpp b/src/DivaGL/object.hpp index 1de61bb..44e01de 100644 --- a/src/DivaGL/object.hpp +++ b/src/DivaGL/object.hpp @@ -581,6 +581,9 @@ struct obj_vertex_buffer { static_assert(sizeof(obj_vertex_buffer) == 0x10, "\"obj_vertex_buffer\" struct should have a size of 0x10"); #endif +extern void (FASTCALL* object_database_unload_set)(int32_t set); +extern obj_mesh* (FASTCALL* object_info_get_mesh_by_index)(object_info object, int32_t mesh_index); +extern int32_t(FASTCALL* object_info_get_mesh_index)(object_info object, const char* mesh_name); extern uint32_t(FASTCALL* object_database_get_object_info)(const char* name); extern obj* (FASTCALL* object_info_get_object)(object_info obj_info); extern obj_mesh_index_buffer* (FASTCALL* object_info_get_mesh_index_buffer)(object_info obj_info, int32_t a2); @@ -590,6 +593,8 @@ extern int32_t(FASTCALL* object_database_get_set_obj_id)(int32_t set_index, int3 extern GLuint(FASTCALL* object_database_get_set_texture)(int32_t set, int32_t tex_id); extern prj::vector* (FASTCALL* object_database_get_set_gentex)(int32_t set); extern int32_t(FASTCALL* object_database_get_set_id)(int32_t set_index); +extern int32_t(FASTCALL* object_database_load_set)(int32_t set); +extern bool (FASTCALL* object_database_load_obj_set_check_not_read)(int32_t set); extern int32_t obj_material_texture_type_get_texcoord_index( obj_material_texture_type type, int32_t index); diff --git a/src/DivaGL/rob/rob.cpp b/src/DivaGL/rob/rob.cpp index d8ecd80..5344989 100644 --- a/src/DivaGL/rob/rob.cpp +++ b/src/DivaGL/rob/rob.cpp @@ -270,12 +270,14 @@ void(FASTCALL* sub_1405163C0)(size_t rob_chr, int32_t index, mat4* mat) = (void(FASTCALL*)(size_t rob_chr, int32_t index, mat4 * mat))0x00000001405163C0; float_t(FASTCALL* rob_chara_get_max_face_depth)(size_t rob_chr) = (float_t(FASTCALL*)(size_t rob_chr))0x0000000140516510; +mat4* (FASTCALL* rob_chara_get_bone_data_mat)(size_t rob_chr, mot_bone_index index) + = (mat4 * (FASTCALL*)(size_t rob_chr, mot_bone_index index))0x0000000140516730; mat4* (FASTCALL* sub_140516740)(size_t rob_chr) = (mat4 * (FASTCALL*)(size_t rob_chr))0x0000000140516740; mat4* (FASTCALL* rob_chara_get_adjust_data_mat)(size_t rob_chr) = (mat4 * (FASTCALL*)(size_t rob_chr))0x0000000140516750; -bool(FASTCALL* rob_chara_array_check_visibility)(size_t rob_chr, int32_t chara_id) - = (bool(FASTCALL*)(size_t rob_chr, int32_t chara_id))0x0000000140531F50; +bool(FASTCALL* rob_chara_array_check_visibility)(size_t rob_chr_smth, int32_t chara_id) + = (bool(FASTCALL*)(size_t rob_chr_smth, int32_t chara_id))0x0000000140531F50; size_t(FASTCALL* get_rob_chara_smth)() = (size_t(FASTCALL*)())0x00000001405320E0; size_t(FASTCALL* rob_chara_array_get)(size_t rob_chr_smth, int32_t chara_id) = (size_t(FASTCALL*)(size_t rob_chr_smth, int32_t chara_id))0x0000000140532030; diff --git a/src/DivaGL/rob/rob.hpp b/src/DivaGL/rob/rob.hpp index f1d1d69..e0aa119 100644 --- a/src/DivaGL/rob/rob.hpp +++ b/src/DivaGL/rob/rob.hpp @@ -90,11 +90,605 @@ enum item_sub_id { ITEM_SUB_MAX = 0x19, }; +enum mot_bone_index { + MOT_BONE_N_HARA_CP = 0x00, + MOT_BONE_KG_HARA_Y = 0x01, + MOT_BONE_KL_HARA_XZ = 0x02, + MOT_BONE_KL_HARA_ETC = 0x03, + MOT_BONE_N_HARA = 0x04, + MOT_BONE_CL_MUNE = 0x05, + MOT_BONE_J_MUNE_WJ = 0x06, + MOT_BONE_E_MUNE_CP = 0x07, + MOT_BONE_N_MUNE_B = 0x08, + MOT_BONE_KL_MUNE_B_WJ = 0x09, + MOT_BONE_KL_KUBI = 0x0A, + MOT_BONE_N_KAO = 0x0B, + MOT_BONE_CL_KAO = 0x0C, + MOT_BONE_J_KAO_WJ = 0x0D, + MOT_BONE_E_KAO_CP = 0x0E, + MOT_BONE_FACE_ROOT = 0x0F, + MOT_BONE_N_AGO = 0x10, + MOT_BONE_KL_AGO_WJ = 0x11, + MOT_BONE_N_TOOTH_UNDER = 0x12, + MOT_BONE_TL_TOOTH_UNDER_WJ = 0x13, + MOT_BONE_N_EYE_L = 0x14, + MOT_BONE_KL_EYE_L = 0x15, + MOT_BONE_N_EYE_L_WJ_EX = 0x16, + MOT_BONE_KL_HIGHLIGHT_L_WJ = 0x17, + MOT_BONE_N_EYE_R = 0x18, + MOT_BONE_KL_EYE_R = 0x19, + MOT_BONE_N_EYE_R_WJ_EX = 0x1A, + MOT_BONE_KL_HIGHLIGHT_R_WJ = 0x1B, + MOT_BONE_N_EYELID_L_A = 0x1C, + MOT_BONE_TL_EYELID_L_A_WJ = 0x1D, + MOT_BONE_N_EYELID_L_B = 0x1E, + MOT_BONE_TL_EYELID_L_B_WJ = 0x1F, + MOT_BONE_N_EYELID_R_A = 0x20, + MOT_BONE_TL_EYELID_R_A_WJ = 0x21, + MOT_BONE_N_EYELID_R_B = 0x22, + MOT_BONE_TL_EYELID_R_B_WJ = 0x23, + MOT_BONE_N_KUTI_D = 0x24, + MOT_BONE_TL_KUTI_D_WJ = 0x25, + MOT_BONE_N_KUTI_D_L = 0x26, + MOT_BONE_TL_KUTI_D_L_WJ = 0x27, + MOT_BONE_N_KUTI_D_R = 0x28, + MOT_BONE_TL_KUTI_D_R_WJ = 0x29, + MOT_BONE_N_KUTI_DS_L = 0x2A, + MOT_BONE_TL_KUTI_DS_L_WJ = 0x2B, + MOT_BONE_N_KUTI_DS_R = 0x2C, + MOT_BONE_TL_KUTI_DS_R_WJ = 0x2D, + MOT_BONE_N_KUTI_L = 0x2E, + MOT_BONE_TL_KUTI_L_WJ = 0x2F, + MOT_BONE_N_KUTI_M_L = 0x30, + MOT_BONE_TL_KUTI_M_L_WJ = 0x31, + MOT_BONE_N_KUTI_M_R = 0x32, + MOT_BONE_TL_KUTI_M_R_WJ = 0x33, + MOT_BONE_N_KUTI_R = 0x34, + MOT_BONE_TL_KUTI_R_WJ = 0x35, + MOT_BONE_N_KUTI_U = 0x36, + MOT_BONE_TL_KUTI_U_WJ = 0x37, + MOT_BONE_N_KUTI_U_L = 0x38, + MOT_BONE_TL_KUTI_U_L_WJ = 0x39, + MOT_BONE_N_KUTI_U_R = 0x3A, + MOT_BONE_TL_KUTI_U_R_WJ = 0x3B, + MOT_BONE_N_MABU_L_D_A = 0x3C, + MOT_BONE_TL_MABU_L_D_A_WJ = 0x3D, + MOT_BONE_N_MABU_L_D_B = 0x3E, + MOT_BONE_TL_MABU_L_D_B_WJ = 0x3F, + MOT_BONE_N_MABU_L_D_C = 0x40, + MOT_BONE_TL_MABU_L_D_C_WJ = 0x41, + MOT_BONE_N_MABU_L_U_A = 0x42, + MOT_BONE_TL_MABU_L_U_A_WJ = 0x43, + MOT_BONE_N_MABU_L_U_B = 0x44, + MOT_BONE_TL_MABU_L_U_B_WJ = 0x45, + MOT_BONE_N_EYELASHES_L = 0x46, + MOT_BONE_TL_EYELASHES_L_WJ = 0x47, + MOT_BONE_N_MABU_L_U_C = 0x48, + MOT_BONE_TL_MABU_L_U_C_WJ = 0x49, + MOT_BONE_N_MABU_R_D_A = 0x4A, + MOT_BONE_TL_MABU_R_D_A_WJ = 0x4B, + MOT_BONE_N_MABU_R_D_B = 0x4C, + MOT_BONE_TL_MABU_R_D_B_WJ = 0x4D, + MOT_BONE_N_MABU_R_D_C = 0x4E, + MOT_BONE_TL_MABU_R_D_C_WJ = 0x4F, + MOT_BONE_N_MABU_R_U_A = 0x50, + MOT_BONE_TL_MABU_R_U_A_WJ = 0x51, + MOT_BONE_N_MABU_R_U_B = 0x52, + MOT_BONE_TL_MABU_R_U_B_WJ = 0x53, + MOT_BONE_N_EYELASHES_R = 0x54, + MOT_BONE_TL_EYELASHES_R_WJ = 0x55, + MOT_BONE_N_MABU_R_U_C = 0x56, + MOT_BONE_TL_MABU_R_U_C_WJ = 0x57, + MOT_BONE_N_MAYU_L = 0x58, + MOT_BONE_TL_MAYU_L_WJ = 0x59, + MOT_BONE_N_MAYU_L_B = 0x5A, + MOT_BONE_TL_MAYU_L_B_WJ = 0x5B, + MOT_BONE_N_MAYU_L_C = 0x5C, + MOT_BONE_TL_MAYU_L_C_WJ = 0x5D, + MOT_BONE_N_MAYU_R = 0x5E, + MOT_BONE_TL_MAYU_R_WJ = 0x5F, + MOT_BONE_N_MAYU_R_B = 0x60, + MOT_BONE_TL_MAYU_R_B_WJ = 0x61, + MOT_BONE_N_MAYU_R_C = 0x62, + MOT_BONE_TL_MAYU_R_C_WJ = 0x63, + MOT_BONE_N_TOOTH_UPPER = 0x64, + MOT_BONE_TL_TOOTH_UPPER_WJ = 0x65, + MOT_BONE_N_KUBI_WJ_EX = 0x66, + MOT_BONE_N_WAKI_L = 0x67, + MOT_BONE_KL_WAKI_L_WJ = 0x68, + MOT_BONE_TL_UP_KATA_L = 0x69, + MOT_BONE_C_KATA_L = 0x6A, + MOT_BONE_J_KATA_L_WJ_CU = 0x6B, + MOT_BONE_J_UDE_L_WJ = 0x6C, + MOT_BONE_E_UDE_L_CP = 0x6D, + MOT_BONE_KL_TE_L_WJ = 0x6E, + MOT_BONE_N_HITO_L_EX = 0x6F, + MOT_BONE_NL_HITO_L_WJ = 0x70, + MOT_BONE_NL_HITO_B_L_WJ = 0x71, + MOT_BONE_NL_HITO_C_L_WJ = 0x72, + MOT_BONE_N_KO_L_EX = 0x73, + MOT_BONE_NL_KO_L_WJ = 0x74, + MOT_BONE_NL_KO_B_L_WJ = 0x75, + MOT_BONE_NL_KO_C_L_WJ = 0x76, + MOT_BONE_N_KUSU_L_EX = 0x77, + MOT_BONE_NL_KUSU_L_WJ = 0x78, + MOT_BONE_NL_KUSU_B_L_WJ = 0x79, + MOT_BONE_NL_KUSU_C_L_WJ = 0x7A, + MOT_BONE_N_NAKA_L_EX = 0x7B, + MOT_BONE_NL_NAKA_L_WJ = 0x7C, + MOT_BONE_NL_NAKA_B_L_WJ = 0x7D, + MOT_BONE_NL_NAKA_C_L_WJ = 0x7E, + MOT_BONE_N_OYA_L_EX = 0x7F, + MOT_BONE_NL_OYA_L_WJ = 0x80, + MOT_BONE_NL_OYA_B_L_WJ = 0x81, + MOT_BONE_NL_OYA_C_L_WJ = 0x82, + MOT_BONE_N_STE_L_WJ_EX = 0x83, + MOT_BONE_N_SUDE_L_WJ_EX = 0x84, + MOT_BONE_N_SUDE_B_L_WJ_EX = 0x85, + MOT_BONE_N_HIJI_L_WJ_EX = 0x86, + MOT_BONE_N_UP_KATA_L_EX = 0x87, + MOT_BONE_N_SKATA_L_WJ_CD_EX = 0x88, + MOT_BONE_N_SKATA_B_L_WJ_CD_CU_EX = 0x89, + MOT_BONE_N_SKATA_C_L_WJ_CD_CU_EX = 0x8A, + MOT_BONE_N_WAKI_R = 0x8B, + MOT_BONE_KL_WAKI_R_WJ = 0x8C, + MOT_BONE_TL_UP_KATA_R = 0x8D, + MOT_BONE_C_KATA_R = 0x8E, + MOT_BONE_J_KATA_R_WJ_CU = 0x8F, + MOT_BONE_J_UDE_R_WJ = 0x90, + MOT_BONE_E_UDE_R_CP = 0x91, + MOT_BONE_KL_TE_R_WJ = 0x92, + MOT_BONE_N_HITO_R_EX = 0x93, + MOT_BONE_NL_HITO_R_WJ = 0x94, + MOT_BONE_NL_HITO_B_R_WJ = 0x95, + MOT_BONE_NL_HITO_C_R_WJ = 0x96, + MOT_BONE_N_KO_R_EX = 0x97, + MOT_BONE_NL_KO_R_WJ = 0x98, + MOT_BONE_NL_KO_B_R_WJ = 0x99, + MOT_BONE_NL_KO_C_R_WJ = 0x9A, + MOT_BONE_N_KUSU_R_EX = 0x9B, + MOT_BONE_NL_KUSU_R_WJ = 0x9C, + MOT_BONE_NL_KUSU_B_R_WJ = 0x9D, + MOT_BONE_NL_KUSU_C_R_WJ = 0x9E, + MOT_BONE_N_NAKA_R_EX = 0x9F, + MOT_BONE_NL_NAKA_R_WJ = 0xA0, + MOT_BONE_NL_NAKA_B_R_WJ = 0xA1, + MOT_BONE_NL_NAKA_C_R_WJ = 0xA2, + MOT_BONE_N_OYA_R_EX = 0xA3, + MOT_BONE_NL_OYA_R_WJ = 0xA4, + MOT_BONE_NL_OYA_B_R_WJ = 0xA5, + MOT_BONE_NL_OYA_C_R_WJ = 0xA6, + MOT_BONE_N_STE_R_WJ_EX = 0xA7, + MOT_BONE_N_SUDE_R_WJ_EX = 0xA8, + MOT_BONE_N_SUDE_B_R_WJ_EX = 0xA9, + MOT_BONE_N_HIJI_R_WJ_EX = 0xAA, + MOT_BONE_N_UP_KATA_R_EX = 0xAB, + MOT_BONE_N_SKATA_R_WJ_CD_EX = 0xAC, + MOT_BONE_N_SKATA_B_R_WJ_CD_CU_EX = 0xAD, + MOT_BONE_N_SKATA_C_R_WJ_CD_CU_EX = 0xAE, + MOT_BONE_KL_KOSI_Y = 0xAF, + MOT_BONE_KL_KOSI_XZ = 0xB0, + MOT_BONE_KL_KOSI_ETC_WJ = 0xB1, + MOT_BONE_CL_MOMO_L = 0xB2, + MOT_BONE_J_MOMO_L_WJ = 0xB3, + MOT_BONE_J_SUNE_L_WJ = 0xB4, + MOT_BONE_E_SUNE_L_CP = 0xB5, + MOT_BONE_KL_ASI_L_WJ_CO = 0xB6, + MOT_BONE_KL_TOE_L_WJ = 0xB7, + MOT_BONE_N_HIZA_L_WJ_EX = 0xB8, + MOT_BONE_CL_MOMO_R = 0xB9, + MOT_BONE_J_MOMO_R_WJ = 0xBA, + MOT_BONE_J_SUNE_R_WJ = 0xBB, + MOT_BONE_E_SUNE_R_CP = 0xBC, + MOT_BONE_KL_ASI_R_WJ_CO = 0xBD, + MOT_BONE_KL_TOE_R_WJ = 0xBE, + MOT_BONE_N_HIZA_R_WJ_EX = 0xBF, + MOT_BONE_N_MOMO_A_L_WJ_CD_EX = 0xC0, + MOT_BONE_N_MOMO_B_L_WJ_EX = 0xC1, + MOT_BONE_N_MOMO_C_L_WJ_EX = 0xC2, + MOT_BONE_N_MOMO_A_R_WJ_CD_EX = 0xC3, + MOT_BONE_N_MOMO_B_R_WJ_EX = 0xC4, + MOT_BONE_N_MOMO_C_R_WJ_EX = 0xC5, + MOT_BONE_N_HARA_CD_EX = 0xC6, + MOT_BONE_N_HARA_B_WJ_EX = 0xC7, + MOT_BONE_N_HARA_C_WJ_EX = 0xC8, + MOT_BONE_MAX = 0xC9, +}; + +enum motion_bone_index { + MOTION_BONE_NONE = -1, + MOTION_BONE_N_HARA_CP = 0x00, + MOTION_BONE_KG_HARA_Y = 0x01, + MOTION_BONE_KL_HARA_XZ = 0x02, + MOTION_BONE_KL_HARA_ETC = 0x03, + MOTION_BONE_N_HARA = 0x04, + MOTION_BONE_CL_MUNE = 0x05, + MOTION_BONE_N_MUNE_B = 0x06, + MOTION_BONE_KL_MUNE_B_WJ = 0x07, + MOTION_BONE_KL_KUBI = 0x08, + MOTION_BONE_N_KAO = 0x09, + MOTION_BONE_CL_KAO = 0x0A, + MOTION_BONE_FACE_ROOT = 0x0B, + MOTION_BONE_N_AGO = 0x0C, + MOTION_BONE_KL_AGO_WJ = 0x0D, + MOTION_BONE_N_TOOTH_UNDER = 0x0E, + MOTION_BONE_TL_TOOTH_UNDER_WJ = 0x0F, + MOTION_BONE_N_EYE_L = 0x10, + MOTION_BONE_KL_EYE_L = 0x11, + MOTION_BONE_N_EYE_L_WJ_EX = 0x12, + MOTION_BONE_KL_HIGHLIGHT_L_WJ = 0x13, + MOTION_BONE_N_EYE_R = 0x14, + MOTION_BONE_KL_EYE_R = 0x15, + MOTION_BONE_N_EYE_R_WJ_EX = 0x16, + MOTION_BONE_KL_HIGHLIGHT_R_WJ = 0x17, + MOTION_BONE_N_EYELID_L_A = 0x18, + MOTION_BONE_TL_EYELID_L_A_WJ = 0x19, + MOTION_BONE_N_EYELID_L_B = 0x1A, + MOTION_BONE_TL_EYELID_L_B_WJ = 0x1B, + MOTION_BONE_N_EYELID_R_A = 0x1C, + MOTION_BONE_TL_EYELID_R_A_WJ = 0x1D, + MOTION_BONE_N_EYELID_R_B = 0x1E, + MOTION_BONE_TL_EYELID_R_B_WJ = 0x1F, + MOTION_BONE_N_KUTI_D = 0x20, + MOTION_BONE_TL_KUTI_D_WJ = 0x21, + MOTION_BONE_N_KUTI_D_L = 0x22, + MOTION_BONE_TL_KUTI_D_L_WJ = 0x23, + MOTION_BONE_N_KUTI_D_R = 0x24, + MOTION_BONE_TL_KUTI_D_R_WJ = 0x25, + MOTION_BONE_N_KUTI_DS_L = 0x26, + MOTION_BONE_TL_KUTI_DS_L_WJ = 0x27, + MOTION_BONE_N_KUTI_DS_R = 0x28, + MOTION_BONE_TL_KUTI_DS_R_WJ = 0x29, + MOTION_BONE_N_KUTI_L = 0x2A, + MOTION_BONE_TL_KUTI_L_WJ = 0x2B, + MOTION_BONE_N_KUTI_M_L = 0x2C, + MOTION_BONE_TL_KUTI_M_L_WJ = 0x2D, + MOTION_BONE_N_KUTI_M_R = 0x2E, + MOTION_BONE_TL_KUTI_M_R_WJ = 0x2F, + MOTION_BONE_N_KUTI_R = 0x30, + MOTION_BONE_TL_KUTI_R_WJ = 0x31, + MOTION_BONE_N_KUTI_U = 0x32, + MOTION_BONE_TL_KUTI_U_WJ = 0x33, + MOTION_BONE_N_KUTI_U_L = 0x34, + MOTION_BONE_TL_KUTI_U_L_WJ = 0x35, + MOTION_BONE_N_KUTI_U_R = 0x36, + MOTION_BONE_TL_KUTI_U_R_WJ = 0x37, + MOTION_BONE_N_MABU_L_D_A = 0x38, + MOTION_BONE_TL_MABU_L_D_A_WJ = 0x39, + MOTION_BONE_N_MABU_L_D_B = 0x3A, + MOTION_BONE_TL_MABU_L_D_B_WJ = 0x3B, + MOTION_BONE_N_MABU_L_D_C = 0x3C, + MOTION_BONE_TL_MABU_L_D_C_WJ = 0x3D, + MOTION_BONE_N_MABU_L_U_A = 0x3E, + MOTION_BONE_TL_MABU_L_U_A_WJ = 0x3F, + MOTION_BONE_N_MABU_L_U_B = 0x40, + MOTION_BONE_TL_MABU_L_U_B_WJ = 0x41, + MOTION_BONE_N_EYELASHES_L = 0x42, + MOTION_BONE_TL_EYELASHES_L_WJ = 0x43, + MOTION_BONE_N_MABU_L_U_C = 0x44, + MOTION_BONE_TL_MABU_L_U_C_WJ = 0x45, + MOTION_BONE_N_MABU_R_D_A = 0x46, + MOTION_BONE_TL_MABU_R_D_A_WJ = 0x47, + MOTION_BONE_N_MABU_R_D_B = 0x48, + MOTION_BONE_TL_MABU_R_D_B_WJ = 0x49, + MOTION_BONE_N_MABU_R_D_C = 0x4A, + MOTION_BONE_TL_MABU_R_D_C_WJ = 0x4B, + MOTION_BONE_N_MABU_R_U_A = 0x4C, + MOTION_BONE_TL_MABU_R_U_A_WJ = 0x4D, + MOTION_BONE_N_MABU_R_U_B = 0x4E, + MOTION_BONE_TL_MABU_R_U_B_WJ = 0x4F, + MOTION_BONE_N_EYELASHES_R = 0x50, + MOTION_BONE_TL_EYELASHES_R_WJ = 0x51, + MOTION_BONE_N_MABU_R_U_C = 0x52, + MOTION_BONE_TL_MABU_R_U_C_WJ = 0x53, + MOTION_BONE_N_MAYU_L = 0x54, + MOTION_BONE_TL_MAYU_L_WJ = 0x55, + MOTION_BONE_N_MAYU_L_B = 0x56, + MOTION_BONE_TL_MAYU_L_B_WJ = 0x57, + MOTION_BONE_N_MAYU_L_C = 0x58, + MOTION_BONE_TL_MAYU_L_C_WJ = 0x59, + MOTION_BONE_N_MAYU_R = 0x5A, + MOTION_BONE_TL_MAYU_R_WJ = 0x5B, + MOTION_BONE_N_MAYU_R_B = 0x5C, + MOTION_BONE_TL_MAYU_R_B_WJ = 0x5D, + MOTION_BONE_N_MAYU_R_C = 0x5E, + MOTION_BONE_TL_MAYU_R_C_WJ = 0x5F, + MOTION_BONE_N_TOOTH_UPPER = 0x60, + MOTION_BONE_TL_TOOTH_UPPER_WJ = 0x61, + MOTION_BONE_N_KUBI_WJ_EX = 0x62, + MOTION_BONE_N_WAKI_L = 0x63, + MOTION_BONE_KL_WAKI_L_WJ = 0x64, + MOTION_BONE_TL_UP_KATA_L = 0x65, + MOTION_BONE_C_KATA_L = 0x66, + MOTION_BONE_KL_TE_L_WJ = 0x67, + MOTION_BONE_N_HITO_L_EX = 0x68, + MOTION_BONE_NL_HITO_L_WJ = 0x69, + MOTION_BONE_NL_HITO_B_L_WJ = 0x6A, + MOTION_BONE_NL_HITO_C_L_WJ = 0x6B, + MOTION_BONE_N_KO_L_EX = 0x6C, + MOTION_BONE_NL_KO_L_WJ = 0x6D, + MOTION_BONE_NL_KO_B_L_WJ = 0x6E, + MOTION_BONE_NL_KO_C_L_WJ = 0x6F, + MOTION_BONE_N_KUSU_L_EX = 0x70, + MOTION_BONE_NL_KUSU_L_WJ = 0x71, + MOTION_BONE_NL_KUSU_B_L_WJ = 0x72, + MOTION_BONE_NL_KUSU_C_L_WJ = 0x73, + MOTION_BONE_N_NAKA_L_EX = 0x74, + MOTION_BONE_NL_NAKA_L_WJ = 0x75, + MOTION_BONE_NL_NAKA_B_L_WJ = 0x76, + MOTION_BONE_NL_NAKA_C_L_WJ = 0x77, + MOTION_BONE_N_OYA_L_EX = 0x78, + MOTION_BONE_NL_OYA_L_WJ = 0x79, + MOTION_BONE_NL_OYA_B_L_WJ = 0x7A, + MOTION_BONE_NL_OYA_C_L_WJ = 0x7B, + MOTION_BONE_N_STE_L_WJ_EX = 0x7C, + MOTION_BONE_N_SUDE_L_WJ_EX = 0x7D, + MOTION_BONE_N_SUDE_B_L_WJ_EX = 0x7E, + MOTION_BONE_N_HIJI_L_WJ_EX = 0x7F, + MOTION_BONE_N_UP_KATA_L_EX = 0x80, + MOTION_BONE_N_SKATA_L_WJ_CD_EX = 0x81, + MOTION_BONE_N_SKATA_B_L_WJ_CD_CU_EX = 0x82, + MOTION_BONE_N_SKATA_C_L_WJ_CD_CU_EX = 0x83, + MOTION_BONE_N_WAKI_R = 0x84, + MOTION_BONE_KL_WAKI_R_WJ = 0x85, + MOTION_BONE_TL_UP_KATA_R = 0x86, + MOTION_BONE_C_KATA_R = 0x87, + MOTION_BONE_KL_TE_R_WJ = 0x88, + MOTION_BONE_N_HITO_R_EX = 0x89, + MOTION_BONE_NL_HITO_R_WJ = 0x8A, + MOTION_BONE_NL_HITO_B_R_WJ = 0x8B, + MOTION_BONE_NL_HITO_C_R_WJ = 0x8C, + MOTION_BONE_N_KO_R_EX = 0x8D, + MOTION_BONE_NL_KO_R_WJ = 0x8E, + MOTION_BONE_NL_KO_B_R_WJ = 0x8F, + MOTION_BONE_NL_KO_C_R_WJ = 0x90, + MOTION_BONE_N_KUSU_R_EX = 0x91, + MOTION_BONE_NL_KUSU_R_WJ = 0x92, + MOTION_BONE_NL_KUSU_B_R_WJ = 0x93, + MOTION_BONE_NL_KUSU_C_R_WJ = 0x94, + MOTION_BONE_N_NAKA_R_EX = 0x95, + MOTION_BONE_NL_NAKA_R_WJ = 0x96, + MOTION_BONE_NL_NAKA_B_R_WJ = 0x97, + MOTION_BONE_NL_NAKA_C_R_WJ = 0x98, + MOTION_BONE_N_OYA_R_EX = 0x99, + MOTION_BONE_NL_OYA_R_WJ = 0x9A, + MOTION_BONE_NL_OYA_B_R_WJ = 0x9B, + MOTION_BONE_NL_OYA_C_R_WJ = 0x9C, + MOTION_BONE_N_STE_R_WJ_EX = 0x9D, + MOTION_BONE_N_SUDE_R_WJ_EX = 0x9E, + MOTION_BONE_N_SUDE_B_R_WJ_EX = 0x9F, + MOTION_BONE_N_HIJI_R_WJ_EX = 0xA0, + MOTION_BONE_N_UP_KATA_R_EX = 0xA1, + MOTION_BONE_N_SKATA_R_WJ_CD_EX = 0xA2, + MOTION_BONE_N_SKATA_B_R_WJ_CD_CU_EX = 0xA3, + MOTION_BONE_N_SKATA_C_R_WJ_CD_CU_EX = 0xA4, + MOTION_BONE_KL_KOSI_Y = 0xA5, + MOTION_BONE_KL_KOSI_XZ = 0xA6, + MOTION_BONE_KL_KOSI_ETC_WJ = 0xA7, + MOTION_BONE_CL_MOMO_L = 0xA8, + MOTION_BONE_KL_ASI_L_WJ_CO = 0xA9, + MOTION_BONE_KL_TOE_L_WJ = 0xAA, + MOTION_BONE_N_HIZA_L_WJ_EX = 0xAB, + MOTION_BONE_CL_MOMO_R = 0xAC, + MOTION_BONE_KL_ASI_R_WJ_CO = 0xAD, + MOTION_BONE_KL_TOE_R_WJ = 0xAE, + MOTION_BONE_N_HIZA_R_WJ_EX = 0xAF, + MOTION_BONE_N_MOMO_A_L_WJ_CD_EX = 0xB0, + MOTION_BONE_N_MOMO_B_L_WJ_EX = 0xB1, + MOTION_BONE_N_MOMO_C_L_WJ_EX = 0xB2, + MOTION_BONE_N_MOMO_A_R_WJ_CD_EX = 0xB3, + MOTION_BONE_N_MOMO_B_R_WJ_EX = 0xB4, + MOTION_BONE_N_MOMO_C_R_WJ_EX = 0xB5, + MOTION_BONE_N_HARA_CD_EX = 0xB6, + MOTION_BONE_N_HARA_B_WJ_EX = 0xB7, + MOTION_BONE_N_HARA_C_WJ_EX = 0xB8, + MOTION_BONE_MAX = 0xB9, +}; + +enum rob_bone_index { + ROB_BONE_NONE = -1, + ROB_BONE_N_HARA_CP = 0x00, + ROB_BONE_KG_HARA_Y = 0x01, + ROB_BONE_KL_HARA_XZ = 0x02, + ROB_BONE_KL_HARA_ETC = 0x03, + ROB_BONE_N_HARA = 0x04, + ROB_BONE_CL_MUNE = 0x05, + ROB_BONE_N_MUNE_B = 0x06, + ROB_BONE_KL_MUNE_B_WJ = 0x07, + ROB_BONE_KL_KUBI = 0x08, + ROB_BONE_N_KAO = 0x09, + ROB_BONE_CL_KAO = 0x0A, + ROB_BONE_FACE_ROOT = 0x0B, + ROB_BONE_N_AGO = 0x0C, + ROB_BONE_KL_AGO_WJ = 0x0D, + ROB_BONE_N_TOOTH_UNDER = 0x0E, + ROB_BONE_TL_TOOTH_UNDER_WJ = 0x0F, + ROB_BONE_N_EYE_L = 0x10, + ROB_BONE_KL_EYE_L = 0x11, + ROB_BONE_N_EYE_L_WJ_EX = 0x12, + ROB_BONE_KL_HIGHLIGHT_L_WJ = 0x13, + ROB_BONE_N_EYE_R = 0x14, + ROB_BONE_KL_EYE_R = 0x15, + ROB_BONE_N_EYE_R_WJ_EX = 0x16, + ROB_BONE_KL_HIGHLIGHT_R_WJ = 0x17, + ROB_BONE_N_EYELID_L_A = 0x18, + ROB_BONE_TL_EYELID_L_A_WJ = 0x19, + ROB_BONE_N_EYELID_L_B = 0x1A, + ROB_BONE_TL_EYELID_L_B_WJ = 0x1B, + ROB_BONE_N_EYELID_R_A = 0x1C, + ROB_BONE_TL_EYELID_R_A_WJ = 0x1D, + ROB_BONE_N_EYELID_R_B = 0x1E, + ROB_BONE_TL_EYELID_R_B_WJ = 0x1F, + ROB_BONE_N_KUTI_D = 0x20, + ROB_BONE_TL_KUTI_D_WJ = 0x21, + ROB_BONE_N_KUTI_D_L = 0x22, + ROB_BONE_TL_KUTI_D_L_WJ = 0x23, + ROB_BONE_N_KUTI_D_R = 0x24, + ROB_BONE_TL_KUTI_D_R_WJ = 0x25, + ROB_BONE_N_KUTI_DS_L = 0x26, + ROB_BONE_TL_KUTI_DS_L_WJ = 0x27, + ROB_BONE_N_KUTI_DS_R = 0x28, + ROB_BONE_TL_KUTI_DS_R_WJ = 0x29, + ROB_BONE_N_KUTI_L = 0x2A, + ROB_BONE_TL_KUTI_L_WJ = 0x2B, + ROB_BONE_N_KUTI_M_L = 0x2C, + ROB_BONE_TL_KUTI_M_L_WJ = 0x2D, + ROB_BONE_N_KUTI_M_R = 0x2E, + ROB_BONE_TL_KUTI_M_R_WJ = 0x2F, + ROB_BONE_N_KUTI_R = 0x30, + ROB_BONE_TL_KUTI_R_WJ = 0x31, + ROB_BONE_N_KUTI_U = 0x32, + ROB_BONE_TL_KUTI_U_WJ = 0x33, + ROB_BONE_N_KUTI_U_L = 0x34, + ROB_BONE_TL_KUTI_U_L_WJ = 0x35, + ROB_BONE_N_KUTI_U_R = 0x36, + ROB_BONE_TL_KUTI_U_R_WJ = 0x37, + ROB_BONE_N_MABU_L_D_A = 0x38, + ROB_BONE_TL_MABU_L_D_A_WJ = 0x39, + ROB_BONE_N_MABU_L_D_B = 0x3A, + ROB_BONE_TL_MABU_L_D_B_WJ = 0x3B, + ROB_BONE_N_MABU_L_D_C = 0x3C, + ROB_BONE_TL_MABU_L_D_C_WJ = 0x3D, + ROB_BONE_N_MABU_L_U_A = 0x3E, + ROB_BONE_TL_MABU_L_U_A_WJ = 0x3F, + ROB_BONE_N_MABU_L_U_B = 0x40, + ROB_BONE_TL_MABU_L_U_B_WJ = 0x41, + ROB_BONE_N_EYELASHES_L = 0x42, + ROB_BONE_TL_EYELASHES_L_WJ = 0x43, + ROB_BONE_N_MABU_L_U_C = 0x44, + ROB_BONE_TL_MABU_L_U_C_WJ = 0x45, + ROB_BONE_N_MABU_R_D_A = 0x46, + ROB_BONE_TL_MABU_R_D_A_WJ = 0x47, + ROB_BONE_N_MABU_R_D_B = 0x48, + ROB_BONE_TL_MABU_R_D_B_WJ = 0x49, + ROB_BONE_N_MABU_R_D_C = 0x4A, + ROB_BONE_TL_MABU_R_D_C_WJ = 0x4B, + ROB_BONE_N_MABU_R_U_A = 0x4C, + ROB_BONE_TL_MABU_R_U_A_WJ = 0x4D, + ROB_BONE_N_MABU_R_U_B = 0x4E, + ROB_BONE_TL_MABU_R_U_B_WJ = 0x4F, + ROB_BONE_N_EYELASHES_R = 0x50, + ROB_BONE_TL_EYELASHES_R_WJ = 0x51, + ROB_BONE_N_MABU_R_U_C = 0x52, + ROB_BONE_TL_MABU_R_U_C_WJ = 0x53, + ROB_BONE_N_MAYU_L = 0x54, + ROB_BONE_TL_MAYU_L_WJ = 0x55, + ROB_BONE_N_MAYU_L_B = 0x56, + ROB_BONE_TL_MAYU_L_B_WJ = 0x57, + ROB_BONE_N_MAYU_L_C = 0x58, + ROB_BONE_TL_MAYU_L_C_WJ = 0x59, + ROB_BONE_N_MAYU_R = 0x5A, + ROB_BONE_TL_MAYU_R_WJ = 0x5B, + ROB_BONE_N_MAYU_R_B = 0x5C, + ROB_BONE_TL_MAYU_R_B_WJ = 0x5D, + ROB_BONE_N_MAYU_R_C = 0x5E, + ROB_BONE_TL_MAYU_R_C_WJ = 0x5F, + ROB_BONE_N_TOOTH_UPPER = 0x60, + ROB_BONE_TL_TOOTH_UPPER_WJ = 0x61, + ROB_BONE_N_KUBI_WJ_EX = 0x62, + ROB_BONE_N_WAKI_L = 0x63, + ROB_BONE_KL_WAKI_L_WJ = 0x64, + ROB_BONE_TL_UP_KATA_L = 0x65, + ROB_BONE_C_KATA_L = 0x66, + ROB_BONE_KATA_L_WJ_CU = 0x67, + ROB_BONE_UDE_L_WJ = 0x68, + ROB_BONE_KL_TE_L_WJ = 0x69, + ROB_BONE_N_HITO_L_EX = 0x6A, + ROB_BONE_NL_HITO_L_WJ = 0x6B, + ROB_BONE_NL_HITO_B_L_WJ = 0x6C, + ROB_BONE_NL_HITO_C_L_WJ = 0x6D, + ROB_BONE_N_KO_L_EX = 0x6E, + ROB_BONE_NL_KO_L_WJ = 0x6F, + ROB_BONE_NL_KO_B_L_WJ = 0x70, + ROB_BONE_NL_KO_C_L_WJ = 0x71, + ROB_BONE_N_KUSU_L_EX = 0x72, + ROB_BONE_NL_KUSU_L_WJ = 0x73, + ROB_BONE_NL_KUSU_B_L_WJ = 0x74, + ROB_BONE_NL_KUSU_C_L_WJ = 0x75, + ROB_BONE_N_NAKA_L_EX = 0x76, + ROB_BONE_NL_NAKA_L_WJ = 0x77, + ROB_BONE_NL_NAKA_B_L_WJ = 0x78, + ROB_BONE_NL_NAKA_C_L_WJ = 0x79, + ROB_BONE_N_OYA_L_EX = 0x7A, + ROB_BONE_NL_OYA_L_WJ = 0x7B, + ROB_BONE_NL_OYA_B_L_WJ = 0x7C, + ROB_BONE_NL_OYA_C_L_WJ = 0x7D, + ROB_BONE_N_STE_L_WJ_EX = 0x7E, + ROB_BONE_N_SUDE_L_WJ_EX = 0x7F, + ROB_BONE_N_SUDE_B_L_WJ_EX = 0x80, + ROB_BONE_N_HIJI_L_WJ_EX = 0x81, + ROB_BONE_N_UP_KATA_L_EX = 0x82, + ROB_BONE_N_SKATA_L_WJ_CD_EX = 0x83, + ROB_BONE_N_SKATA_B_L_WJ_CD_CU_EX = 0x84, + ROB_BONE_N_SKATA_C_L_WJ_CD_CU_EX = 0x85, + ROB_BONE_N_WAKI_R = 0x86, + ROB_BONE_KL_WAKI_R_WJ = 0x87, + ROB_BONE_TL_UP_KATA_R = 0x88, + ROB_BONE_C_KATA_R = 0x89, + ROB_BONE_KATA_R_WJ_CU = 0x8A, + ROB_BONE_UDE_R_WJ = 0x8B, + ROB_BONE_KL_TE_R_WJ = 0x8C, + ROB_BONE_N_HITO_R_EX = 0x8D, + ROB_BONE_NL_HITO_R_WJ = 0x8E, + ROB_BONE_NL_HITO_B_R_WJ = 0x8F, + ROB_BONE_NL_HITO_C_R_WJ = 0x90, + ROB_BONE_N_KO_R_EX = 0x91, + ROB_BONE_NL_KO_R_WJ = 0x92, + ROB_BONE_NL_KO_B_R_WJ = 0x93, + ROB_BONE_NL_KO_C_R_WJ = 0x94, + ROB_BONE_N_KUSU_R_EX = 0x95, + ROB_BONE_NL_KUSU_R_WJ = 0x96, + ROB_BONE_NL_KUSU_B_R_WJ = 0x97, + ROB_BONE_NL_KUSU_C_R_WJ = 0x98, + ROB_BONE_N_NAKA_R_EX = 0x99, + ROB_BONE_NL_NAKA_R_WJ = 0x9A, + ROB_BONE_NL_NAKA_B_R_WJ = 0x9B, + ROB_BONE_NL_NAKA_C_R_WJ = 0x9C, + ROB_BONE_N_OYA_R_EX = 0x9D, + ROB_BONE_NL_OYA_R_WJ = 0x9E, + ROB_BONE_NL_OYA_B_R_WJ = 0x9F, + ROB_BONE_NL_OYA_C_R_WJ = 0xA0, + ROB_BONE_N_STE_R_WJ_EX = 0xA1, + ROB_BONE_N_SUDE_R_WJ_EX = 0xA2, + ROB_BONE_N_SUDE_B_R_WJ_EX = 0xA3, + ROB_BONE_N_HIJI_R_WJ_EX = 0xA4, + ROB_BONE_N_UP_KATA_R_EX = 0xA5, + ROB_BONE_N_SKATA_R_WJ_CD_EX = 0xA6, + ROB_BONE_N_SKATA_B_R_WJ_CD_CU_EX = 0xA7, + ROB_BONE_N_SKATA_C_R_WJ_CD_CU_EX = 0xA8, + ROB_BONE_KL_KOSI_Y = 0xA9, + ROB_BONE_KL_KOSI_XZ = 0xAA, + ROB_BONE_KL_KOSI_ETC_WJ = 0xAB, + ROB_BONE_CL_MOMO_L = 0xAC, + ROB_BONE_J_MOMO_L_WJ = 0xAD, + ROB_BONE_J_SUNE_L_WJ = 0xAE, + ROB_BONE_KL_ASI_L_WJ_CO = 0xAF, + ROB_BONE_KL_TOE_L_WJ = 0xB0, + ROB_BONE_N_HIZA_L_WJ_EX = 0xB1, + ROB_BONE_CL_MOMO_R = 0xB2, + ROB_BONE_J_MOMO_R_WJ = 0xB3, + ROB_BONE_J_SUNE_R_WJ = 0xB4, + ROB_BONE_KL_ASI_R_WJ_CO = 0xB5, + ROB_BONE_KL_TOE_R_WJ = 0xB6, + ROB_BONE_N_HIZA_R_WJ_EX = 0xB7, + ROB_BONE_N_MOMO_A_L_WJ_CD_EX = 0xB8, + ROB_BONE_N_MOMO_B_L_WJ_EX = 0xB9, + ROB_BONE_N_MOMO_C_L_WJ_EX = 0xBA, + ROB_BONE_N_MOMO_A_R_WJ_CD_EX = 0xBB, + ROB_BONE_N_MOMO_B_R_WJ_EX = 0xBC, + ROB_BONE_N_MOMO_C_R_WJ_EX = 0xBD, + ROB_BONE_N_HARA_CD_EX = 0xBE, + ROB_BONE_N_HARA_B_WJ_EX = 0xBF, + ROB_BONE_N_HARA_C_WJ_EX = 0xC0, + ROB_BONE_MAX = 0xC1, +}; + #define ROB_CHARA_COUNT 6 extern mat4* (FASTCALL* rob_chara_bone_data_get_mats_mat)(size_t rob_bone_data, size_t index); extern void(FASTCALL* sub_1405163C0)(size_t rob_chr, int32_t index, mat4* mat); extern float_t(FASTCALL* rob_chara_get_max_face_depth)(size_t rob_chr); +extern mat4* (FASTCALL* rob_chara_get_bone_data_mat)(size_t rob_chr, mot_bone_index index); extern mat4* (FASTCALL* sub_140516740)(size_t rob_chr); extern mat4* (FASTCALL* rob_chara_get_adjust_data_mat)(size_t rob_chr); extern bool(FASTCALL* rob_chara_array_check_visibility)(size_t rob_chr, int32_t chara_id); diff --git a/src/DivaGL/texture.cpp b/src/DivaGL/texture.cpp index 0339025..7c93d7b 100644 --- a/src/DivaGL/texture.cpp +++ b/src/DivaGL/texture.cpp @@ -298,6 +298,32 @@ HOOK(texture*, FASTCALL, texture_load_tex_2d, 0x000000014069B8E0, width, height, max_mipmap_level, data_ptr, use_high_anisotropy); } +bool texture_txp_set_load(txp_set* t, texture*** texs, uint32_t* ids) { + if (!t || !texs || !ids) + return false; + + size_t count = t->textures.size(); + *texs = force_malloc(count + 1); + texture** tex = *texs; + for (size_t i = 0; i < count; i++) + tex[i] = texture_txp_load(&t->textures[i], texture_id(0, ids[i])); + tex[count] = 0; + return true; +} + +bool texture_txp_set_load(txp_set* t, texture*** texs, texture_id* ids) { + if (!t || !texs || !ids) + return false; + + size_t count = t->textures.size(); + *texs = force_malloc(count + 1); + texture** tex = *texs; + for (size_t i = 0; i < count; i++) + tex[i] = texture_txp_load(&t->textures[i], ids[i]); + tex[count] = 0; + return true; +} + void texture_patch() { INSTALL_HOOK(texture_load_tex_cube_map); INSTALL_HOOK(texture_load_tex_2d); diff --git a/src/DivaGL/texture.hpp b/src/DivaGL/texture.hpp index 5d829f9..707dc46 100644 --- a/src/DivaGL/texture.hpp +++ b/src/DivaGL/texture.hpp @@ -92,6 +92,8 @@ extern texture* texture_load_tex_cube_map(texture_id id, GLenum internal_format, extern texture* texture_txp_load(txp* t, texture_id id); extern void texture_txp_store(texture* tex, txp* t); +extern void texture_array_free(texture** arr); + extern void texture_set_params(GLenum target, int32_t max_mipmap_level, bool use_high_anisotropy); extern void texture_params_get(GLuint tex_0 = 0, texture_param* tex_0_param = 0, @@ -99,4 +101,7 @@ extern void texture_params_get(GLuint tex_0 = 0, texture_param* tex_0_param = 0, extern void texture_params_restore(texture_param* tex_0_param = 0, texture_param* tex_1_param = 0, texture_param* tex_2_param = 0); +extern bool texture_txp_set_load(txp_set* t, texture*** texs, uint32_t* ids); +extern bool texture_txp_set_load(txp_set* t, texture*** texs, texture_id* ids); + extern void texture_patch();