From 7ba8ae3b76a662ce574980f5ffd6a00d73c2cf62 Mon Sep 17 00:00:00 2001 From: Dylan Ascencio Date: Mon, 11 Sep 2023 19:51:32 -0400 Subject: [PATCH] Match d_a_scene_change --- configure.py | 2 +- src/d/actor/d_a_scene_change.cpp | 82 +++++++++++++++++++++++++++----- 2 files changed, 70 insertions(+), 14 deletions(-) diff --git a/configure.py b/configure.py index aa442cf9a..1e3b0c940 100644 --- a/configure.py +++ b/configure.py @@ -723,7 +723,7 @@ LIBS = [ ActorRel(NonMatching, "d_a_pz"), ActorRel(NonMatching, "d_a_sail"), ActorRel(NonMatching, "d_a_salvage_tbox"), - ActorRel(NonMatching, "d_a_scene_change"), + ActorRel(Matching, "d_a_scene_change"), ActorRel(NonMatching, "d_a_shutter"), ActorRel(NonMatching, "d_a_shutter2"), ActorRel(NonMatching, "d_a_st"), diff --git a/src/d/actor/d_a_scene_change.cpp b/src/d/actor/d_a_scene_change.cpp index 5b1b54e28..a006bdb4b 100644 --- a/src/d/actor/d_a_scene_change.cpp +++ b/src/d/actor/d_a_scene_change.cpp @@ -3,41 +3,97 @@ // Translation Unit: d_a_scene_change.cpp // -#include "d_a_scene_change.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "f_op/f_op_actor.h" +#include "f_op/f_op_actor_mng.h" +#include "m_Do/m_Do_mtx.h" +#include "m_Do/m_Do_hostIO.h" +#include "d/d_procname.h" #include "dolphin/types.h" +class daSceneChgHIO_c { +public: + daSceneChgHIO_c(); + virtual ~daSceneChgHIO_c(); + + s8 m0004; + s8 m0005; + f32 m0008; +}; + +static daSceneChgHIO_c l_HIO; + +class d_a_scene_change_c : public fopAc_ac_c { +public: + Mtx mTransformMtx; +}; + /* 000000EC-00000118 .text __ct__15daSceneChgHIO_cFv */ daSceneChgHIO_c::daSceneChgHIO_c() { - /* Nonmatching */ + m0004 = 0xFF; + m0005 = 0; + m0008 = 100.0f; } /* 00000118-000001A8 .text daSceneChgCreate__FPv */ -void daSceneChgCreate(void*) { - /* Nonmatching */ +s32 daSceneChgCreate(void* i_this) { + d_a_scene_change_c* scnChg = static_cast(i_this); + + fopAcM_SetupActor(scnChg, d_a_scene_change_c); + + MTXTrans(&mDoMtx_stack_c::now[0], scnChg->current.pos.x, scnChg->current.pos.y, scnChg->current.pos.z); + mDoMtx_ZXYrotM(&mDoMtx_stack_c::now[0], scnChg->shape_angle.x, scnChg->shape_angle.y, scnChg->shape_angle.z); + + MTXCopy(&mDoMtx_stack_c::now[0], &scnChg->mTransformMtx[0]); + return cPhs_COMPLEATE_e; } /* 000001A8-000001B0 .text daSceneChgDelete__FPv */ -void daSceneChgDelete(void*) { - /* Nonmatching */ +BOOL daSceneChgDelete(void* i_this) { + return TRUE; } /* 000001B0-000001B8 .text daSceneChgExecute__FPv */ -void daSceneChgExecute(void*) { - /* Nonmatching */ +BOOL daSceneChgExecute(void* i_this) { + return TRUE; } /* 000001B8-000001C0 .text daSceneChgDraw__FPv */ -void daSceneChgDraw(void*) { - /* Nonmatching */ +BOOL daSceneChgDraw(void* i_this) { + return TRUE; } /* 000001C0-000001C8 .text daSceneChgIsDelete__FPv */ -void daSceneChgIsDelete(void*) { - /* Nonmatching */ +BOOL daSceneChgIsDelete(void* i_this) { + return TRUE; } /* 000001C8-00000218 .text __dt__15daSceneChgHIO_cFv */ daSceneChgHIO_c::~daSceneChgHIO_c() { - /* Nonmatching */ + m0004 = 0xFF; } +static actor_method_class daSceneChgMethodTable = { + (process_method_func)daSceneChgCreate, + (process_method_func)daSceneChgDelete, + (process_method_func)daSceneChgExecute, + (process_method_func)daSceneChgIsDelete, + (process_method_func)daSceneChgDraw, +}; + +extern actor_process_profile_definition g_profile_SCENECHG = { + -3, + 3, + 0xFFFD, + PROC_SCENECHG, + &g_fpcLf_Method.mBase, + sizeof(d_a_scene_change_c), + 0, + 0, + &g_fopAc_Method.base, + 0x01A1, + &daSceneChgMethodTable, + 0x00040000, + fopAc_ACTOR_e, + fopAc_CULLBOX_4_e, +};