From 08badaaa04994dcba47944599586c7e08087c9e2 Mon Sep 17 00:00:00 2001 From: Trueffeloot <106771418+Trueffeloot@users.noreply.github.com> Date: Wed, 13 Sep 2023 15:25:28 +0200 Subject: [PATCH 1/4] d_a_tag_kb_item OK --- src/d/actor/d_a_tag_kb_item.cpp | 117 +++++++++++++++++++++++++------- 1 file changed, 93 insertions(+), 24 deletions(-) diff --git a/src/d/actor/d_a_tag_kb_item.cpp b/src/d/actor/d_a_tag_kb_item.cpp index 344013558..87888ca71 100644 --- a/src/d/actor/d_a_tag_kb_item.cpp +++ b/src/d/actor/d_a_tag_kb_item.cpp @@ -1,58 +1,127 @@ -// -// Generated by dtk -// Translation Unit: d_a_tag_kb_item.cpp -// +/** + * d_a_tag_kb_item.cpp + * +*/ -#include "d_a_tag_kb_item.h" +//#include "d_a_tag_kb_item.h" #include "dolphin/types.h" +#include "d/d_com_inf_game.h" +#include "f_op/f_op_actor_mng.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "d/d_procname.h" + +class daTagKbItem_c : public fopAc_ac_c { +public: + void kb_dig(fopAc_ac_c*); + void dig_main(); + bool _delete(); + void CreateInit(); + int _create(); + bool _execute(); + bool _draw(); + + /* 0x290 */ u8 field_0x290[0x298 - 0x290]; + /* 0x298 */ u8 field_0x298; + /* 0x299 */ u8 field_0x299; + /* 0x29C */ s32 field_0x29c; + /* 0x2A0 */ u8 field_0x2a0; + /* 0x2A1 */ u8 field_0x2a1; + /* 0x2A4 */ s32 field_0x2a4; + /* 0x2A8 */ fopAc_ac_c* mpActor; +}; // Size: 0x2AC /* 00000078-000000C8 .text _delete__13daTagKbItem_cFv */ -void daTagKbItem_c::_delete() { - /* Nonmatching */ +bool daTagKbItem_c::_delete() { + if (field_0x2a0 != 0xff && field_0x2a4 != 0xff) { + /* fopAcM_GetHomeRoomNo causes regalloc inside i_fopAcM_offSwitch */ + //i_fopAcM_offSwitch(this, field_0x2a4); + + g_dComIfG_gameInfo.save.offSwitch(field_0x2a4, orig.roomNo); + } + return 1; } /* 000000C8-0000010C .text CreateInit__13daTagKbItem_cFv */ void daTagKbItem_c::CreateInit() { - /* Nonmatching */ + field_0x2a0 = fopAcM_GetParam(this); + s8 paramBit = fopAcM_GetParamBit(this, 8, 8); + field_0x29c = paramBit; + field_0x2a1 = fopAcM_GetParamBit(this, 0x10, 8); + field_0x2a4 = fopAcM_GetParamBit(this, 0x18, 8); + field_0x298 = 0; + field_0x299 = 0; + mpActor = NULL; } /* 0000010C-000001BC .text _create__13daTagKbItem_cFv */ -void daTagKbItem_c::_create() { - /* Nonmatching */ +int daTagKbItem_c::_create() { + fopAcM_SetupActor(this, daTagKbItem_c); + + CreateInit(); + // same regalloc issues + // if (field_0x29c != 0x1f && fopAcM_isItem(this, field_0x29c) || field_0x2a4 != 0xff && i_fopAcM_isSwitch(this, field_0x2a4)) + if (field_0x29c != 0x1f && g_dComIfG_gameInfo.save.isItem(field_0x29c, orig.roomNo) || field_0x2a4 != 0xff && g_dComIfG_gameInfo.save.isSwitch(field_0x2a4, orig.roomNo)) { + return cPhs_ERROR_e; + } + return cPhs_COMPLEATE_e; } /* 000001BC-000001C4 .text _execute__13daTagKbItem_cFv */ -void daTagKbItem_c::_execute() { - /* Nonmatching */ +bool daTagKbItem_c::_execute() { + return 1; } /* 000001C4-000001CC .text _draw__13daTagKbItem_cFv */ -void daTagKbItem_c::_draw() { - /* Nonmatching */ +bool daTagKbItem_c::_draw() { + return 1; } /* 000001CC-000001EC .text daTagKbItem_Create__FPv */ -void daTagKbItem_Create(void*) { - /* Nonmatching */ +static int daTagKbItem_Create(void* i_this) { + return static_cast(i_this)->_create(); } /* 000001EC-00000210 .text daTagKbItem_Delete__FPv */ -void daTagKbItem_Delete(void*) { - /* Nonmatching */ +static int daTagKbItem_Delete(void* i_this) { + return static_cast(i_this)->_delete(); } /* 00000210-00000234 .text daTagKbItem_Draw__FPv */ -void daTagKbItem_Draw(void*) { - /* Nonmatching */ +static int daTagKbItem_Draw(void* i_this) { + return static_cast(i_this)->_draw(); } /* 00000234-00000258 .text daTagKbItem_Execute__FPv */ -void daTagKbItem_Execute(void*) { - /* Nonmatching */ +static int daTagKbItem_Execute(void* i_this) { + return static_cast(i_this)->_execute(); } /* 00000258-00000260 .text daTagKbItem_IsDelete__FPv */ -void daTagKbItem_IsDelete(void*) { - /* Nonmatching */ +static int daTagKbItem_IsDelete(void* i_this) { + return 1; } +static actor_method_class daTagKbItemMethodTable = { + (process_method_func)daTagKbItem_Create, + (process_method_func)daTagKbItem_Delete, + (process_method_func)daTagKbItem_Execute, + (process_method_func)daTagKbItem_IsDelete, + (process_method_func)daTagKbItem_Draw, +}; + +extern actor_process_profile_definition g_profile_TAG_KB_ITEM = { + fpcLy_CURRENT_e, + 7, + fpcLy_CURRENT_e, + PROC_TAG_KB_ITEM, + &g_fpcLf_Method.mBase, + sizeof(daTagKbItem_c), + 0, + 0, + &g_fopAc_Method.base, + 0x0127, + &daTagKbItemMethodTable, + 0x00040000, + fopAc_ACTOR_e, + fopAc_CULLBOX_0_e, +}; From 25608e3f470d099a1a8b3415b772a517e36c6e80 Mon Sep 17 00:00:00 2001 From: Trueffeloot <106771418+Trueffeloot@users.noreply.github.com> Date: Wed, 13 Sep 2023 15:28:06 +0200 Subject: [PATCH 2/4] add d_a_tag_kb_item --- configure.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.py b/configure.py index db157d892..a240e5db9 100644 --- a/configure.py +++ b/configure.py @@ -451,7 +451,7 @@ LIBS = [ ActorRel(NonMatching, "d_a_tag_evsw"), ActorRel(NonMatching, "d_a_tag_ghostship"), ActorRel(NonMatching, "d_a_tag_hint"), - ActorRel(NonMatching, "d_a_tag_kb_item"), + ActorRel(Matching, "d_a_tag_kb_item"), ActorRel(NonMatching, "d_a_tag_kk1"), ActorRel(NonMatching, "d_a_tag_light"), ActorRel(NonMatching, "d_a_tag_msg"), From b04ac8f24b37546434db6931cc4739d3d43eda14 Mon Sep 17 00:00:00 2001 From: Trueffeloot <106771418+Trueffeloot@users.noreply.github.com> Date: Wed, 13 Sep 2023 15:28:46 +0200 Subject: [PATCH 3/4] format d_a_tag_kb_item --- src/d/actor/d_a_tag_kb_item.cpp | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/d/actor/d_a_tag_kb_item.cpp b/src/d/actor/d_a_tag_kb_item.cpp index 87888ca71..43fad0863 100644 --- a/src/d/actor/d_a_tag_kb_item.cpp +++ b/src/d/actor/d_a_tag_kb_item.cpp @@ -1,14 +1,14 @@ /** * d_a_tag_kb_item.cpp - * -*/ + * + */ -//#include "d_a_tag_kb_item.h" -#include "dolphin/types.h" -#include "d/d_com_inf_game.h" -#include "f_op/f_op_actor_mng.h" +// #include "d_a_tag_kb_item.h" #include "JSystem/JKernel/JKRHeap.h" +#include "d/d_com_inf_game.h" #include "d/d_procname.h" +#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" class daTagKbItem_c : public fopAc_ac_c { public: @@ -33,9 +33,9 @@ public: /* 00000078-000000C8 .text _delete__13daTagKbItem_cFv */ bool daTagKbItem_c::_delete() { if (field_0x2a0 != 0xff && field_0x2a4 != 0xff) { - /* fopAcM_GetHomeRoomNo causes regalloc inside i_fopAcM_offSwitch */ - //i_fopAcM_offSwitch(this, field_0x2a4); - + /* fopAcM_GetHomeRoomNo causes regalloc inside i_fopAcM_offSwitch */ + // i_fopAcM_offSwitch(this, field_0x2a4); + g_dComIfG_gameInfo.save.offSwitch(field_0x2a4, orig.roomNo); } return 1; @@ -59,8 +59,11 @@ int daTagKbItem_c::_create() { CreateInit(); // same regalloc issues - // if (field_0x29c != 0x1f && fopAcM_isItem(this, field_0x29c) || field_0x2a4 != 0xff && i_fopAcM_isSwitch(this, field_0x2a4)) - if (field_0x29c != 0x1f && g_dComIfG_gameInfo.save.isItem(field_0x29c, orig.roomNo) || field_0x2a4 != 0xff && g_dComIfG_gameInfo.save.isSwitch(field_0x2a4, orig.roomNo)) { + // if (field_0x29c != 0x1f && fopAcM_isItem(this, field_0x29c) || field_0x2a4 != 0xff && + // i_fopAcM_isSwitch(this, field_0x2a4)) + if (field_0x29c != 0x1f && g_dComIfG_gameInfo.save.isItem(field_0x29c, orig.roomNo) || + field_0x2a4 != 0xff && g_dComIfG_gameInfo.save.isSwitch(field_0x2a4, orig.roomNo)) + { return cPhs_ERROR_e; } return cPhs_COMPLEATE_e; @@ -102,10 +105,8 @@ static int daTagKbItem_IsDelete(void* i_this) { } static actor_method_class daTagKbItemMethodTable = { - (process_method_func)daTagKbItem_Create, - (process_method_func)daTagKbItem_Delete, - (process_method_func)daTagKbItem_Execute, - (process_method_func)daTagKbItem_IsDelete, + (process_method_func)daTagKbItem_Create, (process_method_func)daTagKbItem_Delete, + (process_method_func)daTagKbItem_Execute, (process_method_func)daTagKbItem_IsDelete, (process_method_func)daTagKbItem_Draw, }; From 3347d152779004a32d424c72c46a7e18bf5bfc18 Mon Sep 17 00:00:00 2001 From: Trueffeloot <106771418+Trueffeloot@users.noreply.github.com> Date: Wed, 13 Sep 2023 21:05:48 +0200 Subject: [PATCH 4/4] jpn match --- src/d/actor/d_a_tag_kb_item.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/d/actor/d_a_tag_kb_item.cpp b/src/d/actor/d_a_tag_kb_item.cpp index 43fad0863..42a616b7f 100644 --- a/src/d/actor/d_a_tag_kb_item.cpp +++ b/src/d/actor/d_a_tag_kb_item.cpp @@ -32,12 +32,11 @@ public: /* 00000078-000000C8 .text _delete__13daTagKbItem_cFv */ bool daTagKbItem_c::_delete() { +#if VERSION != VERSION_JP if (field_0x2a0 != 0xff && field_0x2a4 != 0xff) { - /* fopAcM_GetHomeRoomNo causes regalloc inside i_fopAcM_offSwitch */ - // i_fopAcM_offSwitch(this, field_0x2a4); - - g_dComIfG_gameInfo.save.offSwitch(field_0x2a4, orig.roomNo); + dComIfGs_offSwitch(field_0x2a4, orig.roomNo); } +#endif return 1; } @@ -58,11 +57,8 @@ int daTagKbItem_c::_create() { fopAcM_SetupActor(this, daTagKbItem_c); CreateInit(); - // same regalloc issues - // if (field_0x29c != 0x1f && fopAcM_isItem(this, field_0x29c) || field_0x2a4 != 0xff && - // i_fopAcM_isSwitch(this, field_0x2a4)) - if (field_0x29c != 0x1f && g_dComIfG_gameInfo.save.isItem(field_0x29c, orig.roomNo) || - field_0x2a4 != 0xff && g_dComIfG_gameInfo.save.isSwitch(field_0x2a4, orig.roomNo)) + if (field_0x29c != 0x1f && dComIfGs_isItem(field_0x29c, orig.roomNo) || + field_0x2a4 != 0xff && dComIfGs_isSwitch(field_0x2a4, orig.roomNo)) { return cPhs_ERROR_e; } @@ -71,6 +67,13 @@ int daTagKbItem_c::_create() { /* 000001BC-000001C4 .text _execute__13daTagKbItem_cFv */ bool daTagKbItem_c::_execute() { +#if VERSION == VERSION_JP + if (field_0x29c != 0x1f && dComIfGs_isItem(field_0x29c, orig.roomNo) || + field_0x2a4 != 0xff && dComIfGs_isSwitch(field_0x2a4, orig.roomNo)) + { + fopAcM_delete(this); + } +#endif return 1; }