Added some missing funcs

This commit is contained in:
korenkonder
2023-12-06 23:18:45 +03:00
parent 2767e5d20f
commit dc47408803
5 changed files with 53 additions and 1 deletions
+46
View File
@@ -7,6 +7,8 @@
#include "../gl_state.hpp"
#include "../render_manager.hpp"
#include "../shader_glsl_ft.hpp"
#include "../sprite.hpp"
#include "../stage.hpp"
#include "../uniform.hpp"
#include "../wrap.hpp"
#include "draw_object.hpp"
@@ -2394,6 +2396,31 @@ namespace mdl {
static const mat4* rob_chara_item_equip_mat = 0;
HOOK(void, FASTCALL, sub_14031AF10, 0x000000014031AF10, obj_axis_aligned_bounding_box* aabb, color4u8_bgra color) {
mdl::EtcObj etc(mdl::ETC_OBJ_SPHERE);
etc.color = color;
etc.fog = false;
etc.data.cube.size = aabb->size * 2.0f;
mat4 mat;
mat4_translate(&aabb->center, &mat);
disp_manager->entry_obj_etc(&mat, &etc);
}
HOOK(void, FASTCALL, sub_14031AFE0, 0x000000014031AFE0, obj_bounding_sphere* bounding_sphere, color4u8_bgra color) {
mdl::EtcObj etc(mdl::ETC_OBJ_SPHERE);
etc.color = color;
etc.fog = false;
etc.data.sphere.radius = bounding_sphere->radius;
etc.data.sphere.slices = 0x20;
etc.data.sphere.stacks = 0x20;
etc.data.sphere.wire = false;
mat4 mat;
mat4_translate(&bounding_sphere->center, &mat);
disp_manager->entry_obj_etc(&mat, &etc);
}
HOOK(void, FASTCALL, DispManager__entry_obj, 0x00000001404379E0,
obj* obj_data, obj_mesh_vertex_buffer* obj_vert_buf, obj_mesh_index_buffer* obj_index_buf,
prj::vector<GLuint>* textures, vec4* blend_color, mat4* bone_mat, obj* obj_morph,
@@ -2403,6 +2430,10 @@ namespace mdl {
abort();
}
HOOK(void, FASTCALL, DispManager__entry_obj_etc, 0x00000001404395C0, mdl::EtcObj* etc) {
disp_manager->entry_obj_etc(&mat4_identity, etc);
}
HOOK(void, FASTCALL, DispManager__entry_obj_by_obj, 0x0000000140439A20, obj* obj_data, prj::vector<GLuint>* textures,
obj_mesh_vertex_buffer* obj_vert_buf, obj_mesh_index_buffer* obj_index_buf, mat4* bone_mat, float_t alpha) {
if (!obj_data)
@@ -2416,6 +2447,17 @@ namespace mdl {
textures, blend_color_ptr, bone_mat, 0, 0, 0, 0, 0, 0, 0, !!bone_mat);
}
HOOK(void, FASTCALL, sub_1404BCC60, 0x00000001404BCC60, vec3* pos, float_t width, float_t height) {
mdl::EtcObj etc(ETC_OBJ_PLANE);
etc.color = *spr_color;
etc.data.plane.w = (int)width;
etc.data.plane.h = (int)height;
mat4 mat;
mat4_translate(pos, &mat);
disp_manager->entry_obj_etc(&mat, &etc);
}
HOOK(void, FASTCALL, DispManager__entry_obj_by_object_info_object_skin, 0x00000001405E8E20,
object_info obj_info, prj::vector<texture_pattern_struct>* texture_pattern,
texture_data_struct* texture_data, float_t alpha, mat4* matrices, mat4* ex_data_matrices, mat4* mat) {
@@ -2453,8 +2495,12 @@ namespace mdl {
WRITE_NOP_6(0x0000000140512BE6);
INSTALL_HOOK(sub_14031AF10);
INSTALL_HOOK(sub_14031AFE0);
INSTALL_HOOK(DispManager__entry_obj);
INSTALL_HOOK(DispManager__entry_obj_etc);
INSTALL_HOOK(DispManager__entry_obj_by_obj);
INSTALL_HOOK(sub_1404BCC60);
INSTALL_HOOK(DispManager__entry_obj_by_object_info_object_skin);
}
}
+2 -1
View File
@@ -96,6 +96,8 @@ namespace spr {
static void draw_sprite_scale(spr::SprArgs* args);
}
vec4* spr_color = (vec4*)0x00000001411ACC30;
size_t(FASTCALL* sprite_manager_get_reqlist_count)(int32_t index)
= (size_t(FASTCALL*)(int32_t index))0x000000014063FA90;
@@ -1088,7 +1090,6 @@ namespace spr {
}
}
void sprite_manager_init() {
if (!sprite_manager_render_data)
sprite_manager_render_data = new spr::SpriteManager::RenderData;
+2
View File
@@ -190,6 +190,8 @@ namespace spr {
extern void(FASTCALL* put_rgb_cross)(mat4* mat);
}
extern vec4* spr_color;
extern size_t(FASTCALL* sprite_manager_get_reqlist_count)(int32_t index);
extern void sprite_manager_init();
+1
View File
@@ -83,6 +83,7 @@ struct stage {
static_assert(sizeof(stage) == 0x68, "\"stage\" struct should have a size of 0x68");
extern size_t(FASTCALL* stage_data_handler_get_stage_data_count)() = (size_t(FASTCALL*)())0x000000014064AFC0;
static bool object_bounding_sphere_check_visibility_shadow(obj_bounding_sphere* sphere, mat4* mat);
static bool object_bounding_sphere_check_visibility_shadow_chara(obj_bounding_sphere* sphere);
+2
View File
@@ -7,4 +7,6 @@
#include "../KKdLib/default.hpp"
extern size_t(FASTCALL*stage_data_handler_get_stage_data_count)();
extern void stage_patch();