summaryrefslogtreecommitdiff
path: root/src/d/actor
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-10-23 05:41:00 -0700
committerGitHub <noreply@github.com>2025-10-23 06:41:00 -0600
commit70eefa53c7deb1903052ce48142a0a87ca375584 (patch)
treefc964d62ad9995d6492f7621005654e76f6b025f /src/d/actor
parent9bebc819ab2e0152850b11d8d3871b24f490c082 (diff)
d_a_obj_lv4CandleTag / d_a_obj_lv4EdShutter done, d_a_obj_picture almost (#2755)
Diffstat (limited to 'src/d/actor')
-rw-r--r--src/d/actor/d_a_obj_lv4CandleTag.cpp380
-rw-r--r--src/d/actor/d_a_obj_lv4EdShutter.cpp535
-rw-r--r--src/d/actor/d_a_obj_picture.cpp1061
3 files changed, 772 insertions, 1204 deletions
diff --git a/src/d/actor/d_a_obj_lv4CandleTag.cpp b/src/d/actor/d_a_obj_lv4CandleTag.cpp
index dcfd91e2c7..10f87a433b 100644
--- a/src/d/actor/d_a_obj_lv4CandleTag.cpp
+++ b/src/d/actor/d_a_obj_lv4CandleTag.cpp
@@ -1,363 +1,193 @@
-//
-// Generated By: dol2asm
-// Translation Unit: d_a_obj_lv4CandleTag
-//
-
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_obj_lv4CandleTag.h"
-#include "dol2asm.h"
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__20dalv4CandleTag_HIO_cFv();
-extern "C" void __dt__14mDoHIO_entry_cFv();
-extern "C" void setBaseMtx__16dalv4CandleTag_cFv();
-extern "C" void create__16dalv4CandleTag_cFv();
-extern "C" void Execute__16dalv4CandleTag_cFv();
-extern "C" void procMain__16dalv4CandleTag_cFv();
-extern "C" void init_modeWatch__16dalv4CandleTag_cFv();
-extern "C" void modeWatch__16dalv4CandleTag_cFv();
-extern "C" void init_modeNG__16dalv4CandleTag_cFv();
-extern "C" void modeNG__16dalv4CandleTag_cFv();
-extern "C" void init_modeNGWait__16dalv4CandleTag_cFv();
-extern "C" void modeNGWait__16dalv4CandleTag_cFv();
-extern "C" void init_modeEnd__16dalv4CandleTag_cFv();
-extern "C" void modeEnd__16dalv4CandleTag_cFv();
-extern "C" void eventStart__16dalv4CandleTag_cFv();
-extern "C" bool Draw__16dalv4CandleTag_cFv();
-extern "C" bool Delete__16dalv4CandleTag_cFv();
-extern "C" static void dalv4CandleTag_Draw__FP16dalv4CandleTag_c();
-extern "C" static void dalv4CandleTag_Execute__FP16dalv4CandleTag_c();
-extern "C" static void dalv4CandleTag_Delete__FP16dalv4CandleTag_c();
-extern "C" static void dalv4CandleTag_Create__FP10fopAc_ac_c();
-extern "C" void __dt__20dalv4CandleTag_HIO_cFv();
-extern "C" void __sinit_d_a_obj_lv4CandleTag_cpp();
-extern "C" static void func_80C5DA58();
-extern "C" static void func_80C5DA60();
-extern "C" void __dt__17dEvLib_callback_cFv();
-extern "C" bool eventRun__17dEvLib_callback_cFv();
-extern "C" bool eventEnd__17dEvLib_callback_cFv();
-extern "C" bool eventStart__17dEvLib_callback_cFv();
-extern "C" void __dt__16dalv4CandleTag_cFv();
-
-//
-// External References:
-//
-
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void offSwitch__10dSv_info_cFii();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void eventUpdate__17dEvLib_callback_cFv();
-extern "C" void orderEvent__17dEvLib_callback_cFiii();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void __dl__FPv();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_28();
-extern "C" void _restgpr_28();
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* 80C5DB84-80C5DB90 -00001 000C+00 0/1 0/0 0/0 .data @3686 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3686[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeWatch__16dalv4CandleTag_cFv,
-};
-#pragma pop
-
-/* 80C5DB90-80C5DB9C -00001 000C+00 0/1 0/0 0/0 .data @3687 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3687[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeNG__16dalv4CandleTag_cFv,
-};
-#pragma pop
-
-/* 80C5DB9C-80C5DBA8 -00001 000C+00 0/1 0/0 0/0 .data @3688 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3688[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeNGWait__16dalv4CandleTag_cFv,
-};
-#pragma pop
-
-/* 80C5DBA8-80C5DBB4 -00001 000C+00 0/1 0/0 0/0 .data @3689 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3689[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeEnd__16dalv4CandleTag_cFv,
-};
-#pragma pop
-
-/* 80C5DBB4-80C5DBE4 000050 0030+00 0/1 0/0 0/0 .data mode_proc$3685 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 mode_proc[48] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-#pragma pop
-/* 80C5DBE4-80C5DC04 -00001 0020+00 1/0 0/0 0/0 .data l_dalv4CandleTag_Method */
-SECTION_DATA static void* l_dalv4CandleTag_Method[8] = {
- (void*)dalv4CandleTag_Create__FP10fopAc_ac_c,
- (void*)dalv4CandleTag_Delete__FP16dalv4CandleTag_c,
- (void*)dalv4CandleTag_Execute__FP16dalv4CandleTag_c,
- (void*)NULL,
- (void*)dalv4CandleTag_Draw__FP16dalv4CandleTag_c,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
-};
+class dalv4CandleTag_HIO_c : public mDoHIO_entry_c {
+public:
+ /* 80C5D44C */ dalv4CandleTag_HIO_c();
+ /* 80C5D9C0 */ virtual ~dalv4CandleTag_HIO_c() {}
-/* 80C5DC04-80C5DC34 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_Lv4Candle */
-SECTION_DATA extern void* g_profile_Tag_Lv4Candle[12] = {
- (void*)0xFFFFFFFD, (void*)0x0007FFFD,
- (void*)0x01730000, (void*)&g_fpcLf_Method,
- (void*)0x0000058C, (void*)NULL,
- (void*)NULL, (void*)&g_fopAc_Method,
- (void*)0x021C0000, (void*)&l_dalv4CandleTag_Method,
- (void*)0x00044000, (void*)0x000E0000,
-};
-
-/* 80C5DC34-80C5DC5C 0000D0 0028+00 2/2 0/0 0/0 .data __vt__16dalv4CandleTag_c */
-SECTION_DATA extern void* __vt__16dalv4CandleTag_c[10] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80C5DA60,
- (void*)func_80C5DA58,
- (void*)eventRun__17dEvLib_callback_cFv,
- (void*)eventEnd__17dEvLib_callback_cFv,
- (void*)__dt__16dalv4CandleTag_cFv,
- (void*)eventStart__16dalv4CandleTag_cFv,
-};
+ void genMessage(JORMContext*);
-/* 80C5DC5C-80C5DC74 0000F8 0018+00 3/3 0/0 0/0 .data __vt__17dEvLib_callback_c */
-SECTION_DATA extern void* __vt__17dEvLib_callback_c[6] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__17dEvLib_callback_cFv,
- (void*)eventStart__17dEvLib_callback_cFv,
- (void*)eventRun__17dEvLib_callback_cFv,
- (void*)eventEnd__17dEvLib_callback_cFv,
-};
-
-/* 80C5DC74-80C5DC80 000110 000C+00 2/2 0/0 0/0 .data __vt__20dalv4CandleTag_HIO_c */
-SECTION_DATA extern void* __vt__20dalv4CandleTag_HIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__20dalv4CandleTag_HIO_cFv,
-};
-
-/* 80C5DC80-80C5DC8C 00011C 000C+00 3/3 0/0 0/0 .data __vt__14mDoHIO_entry_c */
-SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14mDoHIO_entry_cFv,
+ /* 0x4 */ u8 mTimer;
};
/* 80C5D44C-80C5D470 0000EC 0024+00 1/1 0/0 0/0 .text __ct__20dalv4CandleTag_HIO_cFv */
dalv4CandleTag_HIO_c::dalv4CandleTag_HIO_c() {
- // NONMATCHING
-}
-
-/* 80C5D470-80C5D4B8 000110 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */
-// mDoHIO_entry_c::~mDoHIO_entry_c() {
-extern "C" void __dt__14mDoHIO_entry_cFv() {
- // NONMATCHING
+ mTimer = 60;
}
/* 80C5D4B8-80C5D4F0 000158 0038+00 2/2 0/0 0/0 .text setBaseMtx__16dalv4CandleTag_cFv */
void dalv4CandleTag_c::setBaseMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
}
/* 80C5D4F0-80C5D5D4 000190 00E4+00 1/1 0/0 0/0 .text create__16dalv4CandleTag_cFv */
-cPhs__Step dalv4CandleTag_c::create() {
- // NONMATCHING
+int dalv4CandleTag_c::create() {
+ fopAcM_ct(this, dalv4CandleTag_c);
+
+ setBaseMtx();
+
+ mSwTop = getSwTop();
+ mSwOK = getSwOK();
+ mSwNG = getSwNG();
+ mSwTotal = getSwTotal();
+
+ if (fopAcM_isSwitch(this, mSwOK)) {
+ init_modeEnd();
+ } else {
+ init_modeWatch();
+ }
+
+ return cPhs_COMPLEATE_e;
}
/* 80C5D5D4-80C5D618 000274 0044+00 1/1 0/0 0/0 .text Execute__16dalv4CandleTag_cFv */
int dalv4CandleTag_c::Execute() {
- // NONMATCHING
+ eventUpdate();
+ procMain();
+ setBaseMtx();
+ return 1;
}
-/* ############################################################################################## */
-/* 80C5DC98-80C5DCA4 000008 000C+00 1/1 0/0 0/0 .bss @3624 */
-static u8 lit_3624[12];
-
/* 80C5DCA4-80C5DCAC 000014 0008+00 2/2 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[8];
-
-/* 80C5DCAC-80C5DCB0 00001C 0004+00 1/1 0/0 0/0 .bss None */
-static u8 data_80C5DCAC[4];
+static dalv4CandleTag_HIO_c l_HIO;
/* 80C5D618-80C5D6D4 0002B8 00BC+00 1/1 0/0 0/0 .text procMain__16dalv4CandleTag_cFv */
void dalv4CandleTag_c::procMain() {
- // NONMATCHING
+ static void (dalv4CandleTag_c::*mode_proc[])() = {
+ &dalv4CandleTag_c::modeWatch,
+ &dalv4CandleTag_c::modeNG,
+ &dalv4CandleTag_c::modeNGWait,
+ &dalv4CandleTag_c::modeEnd,
+ };
+
+ (this->*mode_proc[mMode])();
}
/* 80C5D6D4-80C5D6E0 000374 000C+00 2/2 0/0 0/0 .text init_modeWatch__16dalv4CandleTag_cFv */
void dalv4CandleTag_c::init_modeWatch() {
- // NONMATCHING
+ mMode = 0;
}
/* 80C5D6E0-80C5D78C 000380 00AC+00 1/0 0/0 0/0 .text modeWatch__16dalv4CandleTag_cFv */
void dalv4CandleTag_c::modeWatch() {
- // NONMATCHING
+ if (fopAcM_isSwitch(this, mSwOK)) {
+ init_modeEnd();
+ } else if (fopAcM_isSwitch(this, mSwNG)) {
+ if (getEventID() != 0xFF) {
+ orderEvent(getEventID(), 0xFF, 1);
+ } else {
+ eventStart();
+ }
+ }
}
-/* ############################################################################################## */
-/* 80C5DB5C-80C5DB60 000000 0004+00 1/1 0/0 0/0 .rodata @3727 */
-SECTION_RODATA static f32 const lit_3727 = 1.0f;
-COMPILER_STRIP_GATE(0x80C5DB5C, &lit_3727);
-
-/* 80C5DB60-80C5DB64 000004 0004+00 1/1 0/0 0/0 .rodata @3728 */
-SECTION_RODATA static f32 const lit_3728 = -1.0f;
-COMPILER_STRIP_GATE(0x80C5DB60, &lit_3728);
-
/* 80C5D78C-80C5D814 00042C 0088+00 1/1 0/0 0/0 .text init_modeNG__16dalv4CandleTag_cFv
*/
void dalv4CandleTag_c::init_modeNG() {
- // NONMATCHING
+ mTimer = l_HIO.mTimer;
+ mDoAud_seStart(Z2SE_OBJ_LV4_CNDL_MISS, NULL, 0, 0);
+ mMode = 1;
}
/* 80C5D814-80C5D8A0 0004B4 008C+00 1/0 0/0 0/0 .text modeNG__16dalv4CandleTag_cFv */
void dalv4CandleTag_c::modeNG() {
- // NONMATCHING
+ if (mTimer != 0) {
+ mTimer--;
+ } else {
+ u8 swbit = mSwTop;
+ for (int i = 0; i < mSwTotal; i++) {
+ fopAcM_offSwitch(this, swbit);
+ swbit++;
+ }
+
+ init_modeNGWait();
+ }
}
/* 80C5D8A0-80C5D8AC 000540 000C+00 1/1 0/0 0/0 .text init_modeNGWait__16dalv4CandleTag_cFv */
void dalv4CandleTag_c::init_modeNGWait() {
- // NONMATCHING
+ mMode = 2;
}
/* 80C5D8AC-80C5D8FC 00054C 0050+00 1/0 0/0 0/0 .text modeNGWait__16dalv4CandleTag_cFv */
void dalv4CandleTag_c::modeNGWait() {
- // NONMATCHING
+ if (!fopAcM_isSwitch(this, mSwNG)) {
+ init_modeWatch();
+ }
}
/* 80C5D8FC-80C5D908 00059C 000C+00 2/2 0/0 0/0 .text init_modeEnd__16dalv4CandleTag_cFv
*/
void dalv4CandleTag_c::init_modeEnd() {
- // NONMATCHING
+ mMode = 3;
}
/* 80C5D908-80C5D90C 0005A8 0004+00 1/0 0/0 0/0 .text modeEnd__16dalv4CandleTag_cFv */
-void dalv4CandleTag_c::modeEnd() {
- /* empty function */
-}
+void dalv4CandleTag_c::modeEnd() {}
/* 80C5D90C-80C5D930 0005AC 0024+00 2/1 0/0 0/0 .text eventStart__16dalv4CandleTag_cFv */
bool dalv4CandleTag_c::eventStart() {
- // NONMATCHING
+ init_modeNG();
+ return true;
}
/* 80C5D930-80C5D938 0005D0 0008+00 1/1 0/0 0/0 .text Draw__16dalv4CandleTag_cFv */
int dalv4CandleTag_c::Draw() {
- return true;
+ return 1;
}
/* 80C5D938-80C5D940 0005D8 0008+00 1/1 0/0 0/0 .text Delete__16dalv4CandleTag_cFv */
int dalv4CandleTag_c::Delete() {
- return true;
+ return 1;
}
/* 80C5D940-80C5D960 0005E0 0020+00 1/0 0/0 0/0 .text dalv4CandleTag_Draw__FP16dalv4CandleTag_c */
-static void dalv4CandleTag_Draw(dalv4CandleTag_c* param_0) {
- // NONMATCHING
+static int dalv4CandleTag_Draw(dalv4CandleTag_c* i_this) {
+ return i_this->Draw();
}
/* 80C5D960-80C5D980 000600 0020+00 1/0 0/0 0/0 .text dalv4CandleTag_Execute__FP16dalv4CandleTag_c
*/
-static void dalv4CandleTag_Execute(dalv4CandleTag_c* param_0) {
- // NONMATCHING
+static int dalv4CandleTag_Execute(dalv4CandleTag_c* i_this) {
+ return i_this->Execute();
}
/* 80C5D980-80C5D9A0 000620 0020+00 1/0 0/0 0/0 .text dalv4CandleTag_Delete__FP16dalv4CandleTag_c
*/
-static void dalv4CandleTag_Delete(dalv4CandleTag_c* param_0) {
- // NONMATCHING
+static int dalv4CandleTag_Delete(dalv4CandleTag_c* i_this) {
+ return i_this->Delete();
}
/* 80C5D9A0-80C5D9C0 000640 0020+00 1/0 0/0 0/0 .text dalv4CandleTag_Create__FP10fopAc_ac_c */
-static void dalv4CandleTag_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80C5D9C0-80C5DA1C 000660 005C+00 2/1 0/0 0/0 .text __dt__20dalv4CandleTag_HIO_cFv */
-// dalv4CandleTag_HIO_c::~dalv4CandleTag_HIO_c() {
-extern "C" void __dt__20dalv4CandleTag_HIO_cFv() {
- // NONMATCHING
-}
-
-/* 80C5DA1C-80C5DA58 0006BC 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_lv4CandleTag_cpp */
-void __sinit_d_a_obj_lv4CandleTag_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80C5DA1C, __sinit_d_a_obj_lv4CandleTag_cpp);
-#pragma pop
-
-/* 80C5DA58-80C5DA60 0006F8 0008+00 1/0 0/0 0/0 .text @1392@eventStart__16dalv4CandleTag_cFv */
-static void func_80C5DA58() {
- // NONMATCHING
-}
-
-/* 80C5DA60-80C5DA68 000700 0008+00 1/0 0/0 0/0 .text @1392@__dt__16dalv4CandleTag_cFv */
-static void func_80C5DA60() {
- // NONMATCHING
-}
-
-/* 80C5DA68-80C5DAB0 000708 0048+00 1/0 0/0 0/0 .text __dt__17dEvLib_callback_cFv */
-// dEvLib_callback_c::~dEvLib_callback_c() {
-extern "C" void __dt__17dEvLib_callback_cFv() {
- // NONMATCHING
+static int dalv4CandleTag_Create(fopAc_ac_c* i_this) {
+ return ((dalv4CandleTag_c*)i_this)->create();
}
-/* 80C5DAB0-80C5DAB8 000750 0008+00 2/0 0/0 0/0 .text eventRun__17dEvLib_callback_cFv */
-// int dEvLib_callback_c::eventRun() {
-extern "C" bool eventRun__17dEvLib_callback_cFv() {
- return true;
-}
-
-/* 80C5DAB8-80C5DAC0 000758 0008+00 2/0 0/0 0/0 .text eventEnd__17dEvLib_callback_cFv */
-// int dEvLib_callback_c::eventEnd() {
-extern "C" bool eventEnd__17dEvLib_callback_cFv() {
- return true;
-}
-
-/* 80C5DAC0-80C5DAC8 000760 0008+00 1/0 0/0 0/0 .text eventStart__17dEvLib_callback_cFv
- */
-// int dEvLib_callback_c::eventStart() {
-extern "C" bool eventStart__17dEvLib_callback_cFv() {
- return true;
-}
+/* 80C5DBE4-80C5DC04 -00001 0020+00 1/0 0/0 0/0 .data l_dalv4CandleTag_Method */
+static actor_method_class l_dalv4CandleTag_Method = {
+ (process_method_func)dalv4CandleTag_Create,
+ (process_method_func)dalv4CandleTag_Delete,
+ (process_method_func)dalv4CandleTag_Execute,
+ NULL,
+ (process_method_func)dalv4CandleTag_Draw,
+};
-/* 80C5DAC8-80C5DB48 000768 0080+00 2/1 0/0 0/0 .text __dt__16dalv4CandleTag_cFv */
-// dalv4CandleTag_c::~dalv4CandleTag_c() {
-extern "C" void __dt__16dalv4CandleTag_cFv() {
- // NONMATCHING
-}
+/* 80C5DC04-80C5DC34 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_Lv4Candle */
+extern actor_process_profile_definition g_profile_Tag_Lv4Candle = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Tag_Lv4Candle, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(dalv4CandleTag_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 540, // mPriority
+ &l_dalv4CandleTag_Method, // sub_method
+ 0x00044000, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
diff --git a/src/d/actor/d_a_obj_lv4EdShutter.cpp b/src/d/actor/d_a_obj_lv4EdShutter.cpp
index e2d1294b32..88acd5fbe7 100644
--- a/src/d/actor/d_a_obj_lv4EdShutter.cpp
+++ b/src/d/actor/d_a_obj_lv4EdShutter.cpp
@@ -6,447 +6,264 @@
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_obj_lv4EdShutter.h"
-#include "dol2asm.h"
-
-
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__20daLv4EdShutter_HIO_cFv();
-extern "C" void __dt__14mDoHIO_entry_cFv();
-extern "C" void setBaseMtx__16daLv4EdShutter_cFv();
-extern "C" void CreateHeap__16daLv4EdShutter_cFv();
-extern "C" void create__16daLv4EdShutter_cFv();
-extern "C" void Execute__16daLv4EdShutter_cFPPA3_A4_f();
-extern "C" void move__16daLv4EdShutter_cFv();
-extern "C" void init_modeWait__16daLv4EdShutter_cFv();
-extern "C" void modeWait__16daLv4EdShutter_cFv();
-extern "C" void init_modeOpen__16daLv4EdShutter_cFv();
-extern "C" void modeOpen__16daLv4EdShutter_cFv();
-extern "C" void init_modeClose__16daLv4EdShutter_cFv();
-extern "C" void modeClose__16daLv4EdShutter_cFv();
-extern "C" void init_modeEnd__16daLv4EdShutter_cFv();
-extern "C" void modeEnd__16daLv4EdShutter_cFv();
-extern "C" void eventStart__16daLv4EdShutter_cFv();
-extern "C" void Draw__16daLv4EdShutter_cFv();
-extern "C" void Delete__16daLv4EdShutter_cFv();
-extern "C" static void daLv4EdShutter_Draw__FP16daLv4EdShutter_c();
-extern "C" static void daLv4EdShutter_Execute__FP16daLv4EdShutter_c();
-extern "C" static void daLv4EdShutter_Delete__FP16daLv4EdShutter_c();
-extern "C" static void daLv4EdShutter_Create__FP10fopAc_ac_c();
-extern "C" void __dt__20daLv4EdShutter_HIO_cFv();
-extern "C" void __sinit_d_a_obj_lv4EdShutter_cpp();
-extern "C" static void func_80C5E7C4();
-extern "C" static void func_80C5E7CC();
-extern "C" void __dt__17dEvLib_callback_cFv();
-extern "C" bool eventStart__17dEvLib_callback_cFv();
-extern "C" bool eventRun__17dEvLib_callback_cFv();
-extern "C" bool eventEnd__17dEvLib_callback_cFv();
-extern "C" void __dt__16daLv4EdShutter_cFv();
-extern "C" extern char const* const d_a_obj_lv4EdShutter__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfGp_getReverb__Fi();
-extern "C" void offSwitch__10dSv_info_cFii();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void orderEvent__17dEvLib_callback_cFiii();
-extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
-extern "C" void __ct__16dBgS_MoveBgActorFv();
-extern "C" bool Create__16dBgS_MoveBgActorFv();
-extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
-extern "C" bool ToFore__16dBgS_MoveBgActorFv();
-extern "C" bool ToBack__16dBgS_MoveBgActorFv();
-extern "C" void
-MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
-extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
-extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void cLib_addCalc__FPfffff();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void __dl__FPv();
-extern "C" void __ptmf_scall();
-extern "C" extern void* __vt__16dBgS_MoveBgActor[10];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80C5E8DC-80C5E8E0 000000 0004+00 3/3 0/0 0/0 .rodata @3634 */
-SECTION_RODATA static f32 const lit_3634 = 80.0f;
-COMPILER_STRIP_GATE(0x80C5E8DC, &lit_3634);
-
-/* 80C5E8E0-80C5E8E4 000004 0004+00 1/1 0/0 0/0 .rodata @3635 */
-SECTION_RODATA static f32 const lit_3635 = 40.0f;
-COMPILER_STRIP_GATE(0x80C5E8E0, &lit_3635);
-
-/* 80C5E924-80C5E930 -00001 000C+00 0/1 0/0 0/0 .data @3721 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3721[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeWait__16daLv4EdShutter_cFv,
-};
-#pragma pop
-
-/* 80C5E930-80C5E93C -00001 000C+00 0/1 0/0 0/0 .data @3722 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3722[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeOpen__16daLv4EdShutter_cFv,
-};
-#pragma pop
-
-/* 80C5E93C-80C5E948 -00001 000C+00 0/1 0/0 0/0 .data @3723 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3723[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeClose__16daLv4EdShutter_cFv,
-};
-#pragma pop
-
-/* 80C5E948-80C5E954 -00001 000C+00 0/1 0/0 0/0 .data @3724 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3724[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)modeEnd__16daLv4EdShutter_cFv,
-};
-#pragma pop
-
-/* 80C5E954-80C5E984 000050 0030+00 0/1 0/0 0/0 .data mode_proc$3720 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 mode_proc[48] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-#pragma pop
-
-/* 80C5E984-80C5E9A4 -00001 0020+00 1/0 0/0 0/0 .data l_daLv4EdShutter_Method */
-static actor_method_class l_daLv4EdShutter_Method = {
- (process_method_func)daLv4EdShutter_Create__FP10fopAc_ac_c,
- (process_method_func)daLv4EdShutter_Delete__FP16daLv4EdShutter_c,
- (process_method_func)daLv4EdShutter_Execute__FP16daLv4EdShutter_c,
- 0,
- (process_method_func)daLv4EdShutter_Draw__FP16daLv4EdShutter_c,
-};
-
-/* 80C5E9A4-80C5E9D4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Lv4EdShutter */
-extern actor_process_profile_definition g_profile_Obj_Lv4EdShutter = {
- fpcLy_CURRENT_e, // mLayerID
- 3, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_Lv4EdShutter, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daLv4EdShutter_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 636, // mPriority
- &l_daLv4EdShutter_Method, // sub_method
- 0x00040100, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-/* 80C5E9D4-80C5E9EC 0000D0 0018+00 3/3 0/0 0/0 .data __vt__17dEvLib_callback_c */
-SECTION_DATA extern void* __vt__17dEvLib_callback_c[6] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__17dEvLib_callback_cFv,
- (void*)eventStart__17dEvLib_callback_cFv,
- (void*)eventRun__17dEvLib_callback_cFv,
- (void*)eventEnd__17dEvLib_callback_cFv,
-};
+class daLv4EdShutter_HIO_c : public mDoHIO_entry_c {
+public:
+ /* 80C5DDAC */ daLv4EdShutter_HIO_c();
+ /* 80C5E72C */ virtual ~daLv4EdShutter_HIO_c() {}
-/* 80C5E9EC-80C5EA34 0000E8 0048+00 2/2 0/0 0/0 .data __vt__16daLv4EdShutter_c */
-SECTION_DATA extern void* __vt__16daLv4EdShutter_c[18] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__16daLv4EdShutter_cFv,
- (void*)Create__16dBgS_MoveBgActorFv,
- (void*)Execute__16daLv4EdShutter_cFPPA3_A4_f,
- (void*)Draw__16daLv4EdShutter_cFv,
- (void*)Delete__16daLv4EdShutter_cFv,
- (void*)IsDelete__16dBgS_MoveBgActorFv,
- (void*)ToFore__16dBgS_MoveBgActorFv,
- (void*)ToBack__16dBgS_MoveBgActorFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80C5E7CC,
- (void*)func_80C5E7C4,
- (void*)eventRun__17dEvLib_callback_cFv,
- (void*)eventEnd__17dEvLib_callback_cFv,
- (void*)__dt__16daLv4EdShutter_cFv,
- (void*)eventStart__16daLv4EdShutter_cFv,
-};
-
-/* 80C5EA34-80C5EA40 000130 000C+00 2/2 0/0 0/0 .data __vt__20daLv4EdShutter_HIO_c */
-SECTION_DATA extern void* __vt__20daLv4EdShutter_HIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__20daLv4EdShutter_HIO_cFv,
-};
+ void genMessage(JORMContext*);
-/* 80C5EA40-80C5EA4C 00013C 000C+00 3/3 0/0 0/0 .data __vt__14mDoHIO_entry_c */
-SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14mDoHIO_entry_cFv,
+ /* 0x04 */ f32 close_max_speed;
+ /* 0x08 */ f32 open_speed_max;
+ /* 0x0C */ s16 field_0xc;
+ /* 0x0E */ u8 field_0xe;
};
/* 80C5DDAC-80C5DDF0 0000EC 0044+00 1/1 0/0 0/0 .text __ct__20daLv4EdShutter_HIO_cFv */
daLv4EdShutter_HIO_c::daLv4EdShutter_HIO_c() {
- // NONMATCHING
-}
-
-/* 80C5DDF0-80C5DE38 000130 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */
-// mDoHIO_entry_c::~mDoHIO_entry_c() {
-extern "C" void __dt__14mDoHIO_entry_cFv() {
- // NONMATCHING
+ close_max_speed = 80.0f;
+ open_speed_max = 40.0f;
+ field_0xc = 60;
+ field_0xe = 4;
}
/* 80C5DE38-80C5DEC8 000178 0090+00 2/2 0/0 0/0 .text setBaseMtx__16daLv4EdShutter_cFv */
void daLv4EdShutter_c::setBaseMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y + mMovePos, current.pos.z);
+ mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, 0);
+ mpModel->setBaseScale(scale);
+ mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
-/* ############################################################################################## */
-/* 80C5E8FC-80C5E8FC 000020 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80C5E8FC = "P_AShtr";
-#pragma pop
-
/* 80C5DEC8-80C5DF34 000208 006C+00 1/0 0/0 0/0 .text CreateHeap__16daLv4EdShutter_cFv */
-void daLv4EdShutter_c::CreateHeap() {
- // NONMATCHING
+int daLv4EdShutter_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("P_AShtr", 4);
+ JUT_ASSERT(165, modelData != NULL);
+ mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (mpModel == NULL) {
+ return 0;
+ }
+
+ return 1;
}
-/* ############################################################################################## */
-/* 80C5E8E4-80C5E8E8 000008 0004+00 1/2 0/0 0/0 .rodata @3704 */
-SECTION_RODATA static f32 const lit_3704 = -300.0f;
-COMPILER_STRIP_GATE(0x80C5E8E4, &lit_3704);
-
/* 80C5DF34-80C5E0A4 000274 0170+00 1/1 0/0 0/0 .text create__16daLv4EdShutter_cFv */
-void daLv4EdShutter_c::create() {
- // NONMATCHING
+int daLv4EdShutter_c::create() {
+ fopAcM_ct(this, daLv4EdShutter_c);
+
+ int phase_state = dComIfG_resLoad(&mPhase, "P_AShtr");
+ if (phase_state == cPhs_COMPLEATE_e) {
+ if (MoveBGCreate("P_AShtr", 7, dBgS_MoveBGProc_TypicalRotY, 0x1900, NULL) == cPhs_ERROR_e) {
+ return cPhs_ERROR_e;
+ }
+
+ fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
+ fopAcM_setCullSizeBox2(this, mpModel->getModelData());
+
+ mOpenSw = getOpenSw();
+ mCloseSw = getCloseSw();
+ mMovePos = -300.0f;
+ mStatus = 0;
+ shape_angle.y += 0x4000;
+ setBaseMtx();
+ mZenmetuSw = getZenmetuSw();
+
+ if (mZenmetuSw != 0xFF && fopAcM_isSwitch(this, mZenmetuSw)) {
+ init_modeEnd();
+ } else {
+ init_modeWait();
+ }
+ }
+
+ return phase_state;
}
/* 80C5E0A4-80C5E0F4 0003E4 0050+00 1/0 0/0 0/0 .text Execute__16daLv4EdShutter_cFPPA3_A4_f */
-void daLv4EdShutter_c::Execute(Mtx** param_0) {
- // NONMATCHING
+int daLv4EdShutter_c::Execute(Mtx** param_0) {
+ move();
+ *param_0 = &mpModel->getBaseTRMtx();
+ setBaseMtx();
+ return 1;
}
-/* ############################################################################################## */
-/* 80C5EA58-80C5EA64 000008 000C+00 1/1 0/0 0/0 .bss @3628 */
-static u8 lit_3628[12];
-
/* 80C5EA64-80C5EA74 000014 0010+00 3/3 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[16];
-
-/* 80C5EA74-80C5EA78 000024 0004+00 1/1 0/0 0/0 .bss None */
-static u8 data_80C5EA74[4];
+static daLv4EdShutter_HIO_c l_HIO;
/* 80C5E0F4-80C5E1B0 000434 00BC+00 1/1 0/0 0/0 .text move__16daLv4EdShutter_cFv */
void daLv4EdShutter_c::move() {
- // NONMATCHING
+ static void (daLv4EdShutter_c::*mode_proc[])() = {
+ &daLv4EdShutter_c::modeWait,
+ &daLv4EdShutter_c::modeOpen,
+ &daLv4EdShutter_c::modeClose,
+ &daLv4EdShutter_c::modeEnd,
+ };
+
+ (this->*mode_proc[mMode])();
}
/* 80C5E1B0-80C5E1C8 0004F0 0018+00 3/3 0/0 0/0 .text init_modeWait__16daLv4EdShutter_cFv
*/
void daLv4EdShutter_c::init_modeWait() {
- // NONMATCHING
+ mWaitTimer = getWaitTime();
+ mMode = 0;
}
/* 80C5E1C8-80C5E2E0 000508 0118+00 1/0 0/0 0/0 .text modeWait__16daLv4EdShutter_cFv */
void daLv4EdShutter_c::modeWait() {
- // NONMATCHING
+ if (mStatus == 0) {
+ if (fopAcM_isSwitch(this, mCloseSw)) {
+ if (mWaitTimer == 0) {
+ if (getEventID() != 0xFF) {
+ orderEvent(getEventID(), 0xFF, 1);
+ } else {
+ eventStart();
+ }
+ } else {
+ mWaitTimer--;
+ }
+ }
+ } else if (fopAcM_isSwitch(this, mOpenSw)) {
+ if (mWaitTimer == 0) {
+ if (getEventID() != 0xFF) {
+ orderEvent(getEventID(), 0xFF, 1);
+ } else {
+ eventStart();
+ }
+ } else {
+ mWaitTimer--;
+ }
+ }
}
-/* ############################################################################################## */
-/* 80C5E8E8-80C5E8EC 00000C 0004+00 2/2 0/0 0/0 .rodata @3787 */
-SECTION_RODATA static f32 const lit_3787 = 1.0f;
-COMPILER_STRIP_GATE(0x80C5E8E8, &lit_3787);
-
-/* 80C5E8EC-80C5E8F0 000010 0004+00 2/2 0/0 0/0 .rodata @3788 */
-SECTION_RODATA static f32 const lit_3788 = -1.0f;
-COMPILER_STRIP_GATE(0x80C5E8EC, &lit_3788);
-
/* 80C5E2E0-80C5E394 000620 00B4+00 1/1 0/0 0/0 .text init_modeOpen__16daLv4EdShutter_cFv
*/
void daLv4EdShutter_c::init_modeOpen() {
- // NONMATCHING
-}
+ mMoveSpeed = l_HIO.open_speed_max;
-/* ############################################################################################## */
-/* 80C5E8F0-80C5E8F4 000014 0004+00 0/2 0/0 0/0 .rodata @3816 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3816 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80C5E8F0, &lit_3816);
-#pragma pop
-
-/* 80C5E8F4-80C5E8F8 000018 0004+00 0/2 0/0 0/0 .rodata @3817 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3817 = 5.0f;
-COMPILER_STRIP_GATE(0x80C5E8F4, &lit_3817);
-#pragma pop
-
-/* 80C5E8F8-80C5E8FC 00001C 0004+00 0/2 0/0 0/0 .rodata @3818 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3818[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80C5E8F8, &lit_3818);
-#pragma pop
+ cXyz se_pos(current.pos);
+ se_pos.y = home.pos.y;
+ mDoAud_seStart(Z2SE_OBJ_STL_FENCE_DW, &se_pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ mMode = 1;
+}
/* 80C5E394-80C5E464 0006D4 00D0+00 1/0 0/0 0/0 .text modeOpen__16daLv4EdShutter_cFv */
void daLv4EdShutter_c::modeOpen() {
- // NONMATCHING
+ f32 remaining = cLib_addCalc(&mMovePos, -300.0f, 0.3f, mMoveSpeed, 5.0f);
+ if (remaining == 0.0f) {
+ mStatus = 0;
+ fopAcM_offSwitch(this, mOpenSw);
+ fopAcM_offSwitch(this, mCloseSw);
+
+ if (mZenmetuSw != 0xFF && fopAcM_isSwitch(this, mZenmetuSw)) {
+ init_modeEnd();
+ } else {
+ init_modeWait();
+ }
+ }
}
/* 80C5E464-80C5E518 0007A4 00B4+00 1/1 0/0 0/0 .text init_modeClose__16daLv4EdShutter_cFv */
void daLv4EdShutter_c::init_modeClose() {
- // NONMATCHING
+ mMoveSpeed = l_HIO.close_max_speed;
+
+ cXyz se_pos(current.pos);
+ se_pos.y = home.pos.y;
+ mDoAud_seStart(Z2SE_OBJ_STL_FENCE_UP, &se_pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ mMode = 2;
}
/* 80C5E518-80C5E584 000858 006C+00 1/0 0/0 0/0 .text modeClose__16daLv4EdShutter_cFv */
void daLv4EdShutter_c::modeClose() {
- // NONMATCHING
+ f32 remaining = cLib_addCalc(&mMovePos, 0.0f, 0.3f, mMoveSpeed, 5.0f);
+ if (remaining == 0.0f) {
+ mStatus = 1;
+ init_modeWait();
+ }
}
/* 80C5E584-80C5E590 0008C4 000C+00 2/2 0/0 0/0 .text init_modeEnd__16daLv4EdShutter_cFv
*/
void daLv4EdShutter_c::init_modeEnd() {
- // NONMATCHING
+ mMode = 3;
}
/* 80C5E590-80C5E594 0008D0 0004+00 1/0 0/0 0/0 .text modeEnd__16daLv4EdShutter_cFv */
-void daLv4EdShutter_c::modeEnd() {
- /* empty function */
-}
+void daLv4EdShutter_c::modeEnd() {}
/* 80C5E594-80C5E5CC 0008D4 0038+00 2/1 0/0 0/0 .text eventStart__16daLv4EdShutter_cFv */
-void daLv4EdShutter_c::eventStart() {
- // NONMATCHING
+bool daLv4EdShutter_c::eventStart() {
+ if (mStatus == 0) {
+ init_modeClose();
+ } else {
+ init_modeOpen();
+ }
+
+ return true;
}
/* 80C5E5CC-80C5E670 00090C 00A4+00 1/0 0/0 0/0 .text Draw__16daLv4EdShutter_cFv */
-void daLv4EdShutter_c::Draw() {
- // NONMATCHING
+int daLv4EdShutter_c::Draw() {
+ g_env_light.settingTevStruct(16, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
+
+ dComIfGd_setListBG();
+ mDoExt_modelUpdateDL(mpModel);
+ dComIfGd_setList();
+ return 1;
}
/* 80C5E670-80C5E6A0 0009B0 0030+00 1/0 0/0 0/0 .text Delete__16daLv4EdShutter_cFv */
-void daLv4EdShutter_c::Delete() {
- // NONMATCHING
+int daLv4EdShutter_c::Delete() {
+ dComIfG_resDelete(&mPhase, "P_AShtr");
+ return 1;
}
/* 80C5E6A0-80C5E6CC 0009E0 002C+00 1/0 0/0 0/0 .text daLv4EdShutter_Draw__FP16daLv4EdShutter_c */
-static void daLv4EdShutter_Draw(daLv4EdShutter_c* param_0) {
- // NONMATCHING
+static int daLv4EdShutter_Draw(daLv4EdShutter_c* i_this) {
+ return i_this->MoveBGDraw();
}
/* 80C5E6CC-80C5E6EC 000A0C 0020+00 1/0 0/0 0/0 .text daLv4EdShutter_Execute__FP16daLv4EdShutter_c
*/
-static void daLv4EdShutter_Execute(daLv4EdShutter_c* param_0) {
- // NONMATCHING
+static int daLv4EdShutter_Execute(daLv4EdShutter_c* i_this) {
+ return i_this->MoveBGExecute();
}
/* 80C5E6EC-80C5E70C 000A2C 0020+00 1/0 0/0 0/0 .text daLv4EdShutter_Delete__FP16daLv4EdShutter_c
*/
-static void daLv4EdShutter_Delete(daLv4EdShutter_c* param_0) {
- // NONMATCHING
+static int daLv4EdShutter_Delete(daLv4EdShutter_c* i_this) {
+ return i_this->MoveBGDelete();
}
/* 80C5E70C-80C5E72C 000A4C 0020+00 1/0 0/0 0/0 .text daLv4EdShutter_Create__FP10fopAc_ac_c */
-static void daLv4EdShutter_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
-
-/* 80C5E72C-80C5E788 000A6C 005C+00 2/1 0/0 0/0 .text __dt__20daLv4EdShutter_HIO_cFv */
-daLv4EdShutter_HIO_c::~daLv4EdShutter_HIO_c() {
- // NONMATCHING
-}
-
-/* 80C5E788-80C5E7C4 000AC8 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_lv4EdShutter_cpp */
-void __sinit_d_a_obj_lv4EdShutter_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80C5E788, __sinit_d_a_obj_lv4EdShutter_cpp);
-#pragma pop
-
-/* 80C5E7C4-80C5E7CC 000B04 0008+00 1/0 0/0 0/0 .text @1448@eventStart__16daLv4EdShutter_cFv */
-static void func_80C5E7C4() {
- // NONMATCHING
-}
-
-/* 80C5E7CC-80C5E7D4 000B0C 0008+00 1/0 0/0 0/0 .text @1448@__dt__16daLv4EdShutter_cFv */
-static void func_80C5E7CC() {
- // NONMATCHING
-}
-
-/* 80C5E7D4-80C5E81C 000B14 0048+00 1/0 0/0 0/0 .text __dt__17dEvLib_callback_cFv */
-// dEvLib_callback_c::~dEvLib_callback_c() {
-extern "C" void __dt__17dEvLib_callback_cFv() {
- // NONMATCHING
-}
-
-/* 80C5E81C-80C5E824 000B5C 0008+00 1/0 0/0 0/0 .text eventStart__17dEvLib_callback_cFv
- */
-// bool dEvLib_callback_c::eventStart() {
-extern "C" bool eventStart__17dEvLib_callback_cFv() {
- return true;
-}
-
-/* 80C5E824-80C5E82C 000B64 0008+00 2/0 0/0 0/0 .text eventRun__17dEvLib_callback_cFv */
-// bool dEvLib_callback_c::eventRun() {
-extern "C" bool eventRun__17dEvLib_callback_cFv() {
- return true;
-}
-
-/* 80C5E82C-80C5E834 000B6C 0008+00 2/0 0/0 0/0 .text eventEnd__17dEvLib_callback_cFv */
-// bool dEvLib_callback_c::eventEnd() {
-extern "C" bool eventEnd__17dEvLib_callback_cFv() {
- return true;
+static int daLv4EdShutter_Create(fopAc_ac_c* i_this) {
+ return ((daLv4EdShutter_c*)i_this)->create();
}
-/* 80C5E834-80C5E8C8 000B74 0094+00 2/1 0/0 0/0 .text __dt__16daLv4EdShutter_cFv */
-daLv4EdShutter_c::~daLv4EdShutter_c() {
- // NONMATCHING
-}
+/* 80C5E984-80C5E9A4 -00001 0020+00 1/0 0/0 0/0 .data l_daLv4EdShutter_Method */
+static actor_method_class l_daLv4EdShutter_Method = {
+ (process_method_func)daLv4EdShutter_Create,
+ (process_method_func)daLv4EdShutter_Delete,
+ (process_method_func)daLv4EdShutter_Execute,
+ NULL,
+ (process_method_func)daLv4EdShutter_Draw,
+};
-/* 80C5E8FC-80C5E8FC 000020 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 80C5E9A4-80C5E9D4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Lv4EdShutter */
+extern actor_process_profile_definition g_profile_Obj_Lv4EdShutter = {
+ fpcLy_CURRENT_e, // mLayerID
+ 3, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_Lv4EdShutter, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daLv4EdShutter_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 636, // mPriority
+ &l_daLv4EdShutter_Method, // sub_method
+ 0x00040100, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
diff --git a/src/d/actor/d_a_obj_picture.cpp b/src/d/actor/d_a_obj_picture.cpp
index 33a7a4fda9..97e8c2575d 100644
--- a/src/d/actor/d_a_obj_picture.cpp
+++ b/src/d/actor/d_a_obj_picture.cpp
@@ -6,679 +6,600 @@
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_obj_picture.h"
-#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" static void daObjPicture_c_createHeap__FP10fopAc_ac_c();
-extern "C" void __ct__14daObjPicture_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__8dCcD_CpsFv();
-extern "C" void __ct__8dCcD_CpsFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__14daObjPicture_cFv();
-extern "C" void createHeap__14daObjPicture_cFv();
-extern "C" void create__14daObjPicture_cFv();
-extern "C" void Delete__14daObjPicture_cFv();
-extern "C" void draw__14daObjPicture_cFv();
-extern "C" void execute__14daObjPicture_cFv();
-extern "C" void init__14daObjPicture_cFv();
-extern "C" void setPicModelMtx__14daObjPicture_cFv();
-extern "C" void setTmgModelMtx__14daObjPicture_cFv();
-extern "C" void getLinePosPic__14daObjPicture_cFiP4cXyz();
-extern "C" void getPosTmg__14daObjPicture_cFP4cXyz();
-extern "C" void setLinePos__14daObjPicture_cFv();
-extern "C" void moveLineFall1__14daObjPicture_cFv();
-extern "C" void moveLineFall2__14daObjPicture_cFv();
-extern "C" void chkHitRope__14daObjPicture_cFv();
-extern "C" void chkHitBombTg__14daObjPicture_cFv();
-extern "C" void setPicAtCol__14daObjPicture_cFv();
-extern "C" static void daObjPicture_create__FP14daObjPicture_c();
-extern "C" static void daObjPicture_Delete__FP14daObjPicture_c();
-extern "C" static void daObjPicture_execute__FP14daObjPicture_c();
-extern "C" static void daObjPicture_draw__FP14daObjPicture_c();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" extern char const* const d_a_obj_picture__stringBase0;
-extern "C" u8 s_CcDCps__14daObjPicture_c[76];
-extern "C" u8 s_CcDCyl_pic_at__14daObjPicture_c[68];
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void scaleM__14mDoMtx_stack_cFfff();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void mDoExt_modelUpdate__FP8J3DModel();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void init__19mDoExt_3DlineMat1_cFUsUsP7ResTIMGi();
-extern "C" void update__19mDoExt_3DlineMat1_cFifR8_GXColorUsP12dKy_tevstr_c();
-extern "C" void setMat__26mDoExt_3DlineMatSortPacketFP18mDoExt_3DlineMat_c();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
-extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void onSwitch__10dSv_info_cFii();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void Release__4cBgSFP9dBgW_Base();
-extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
-extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
-extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
-extern "C" void __ct__4dBgWFv();
-extern "C" void Move__4dBgWFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void __dt__12dCcD_GObjInfFv();
-extern "C" void ChkTgHit__12dCcD_GObjInfFv();
-extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CpsFRC11dCcD_SrcCps();
-extern "C" void CalcTgVec__8dCcD_CpsFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __pl__4cXyzCFRC3Vec();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void __ml__4cXyzCFf();
-extern "C" void normalizeZP__4cXyzFv();
-extern "C" void ChkUsed__9cBgW_BgIdCFv();
-extern "C" void __ct__8cM3dGCpsFv();
-extern "C" void __dt__8cM3dGCpsFv();
-extern "C" void Set__8cM3dGCpsFRC4cXyzRC4cXyzf();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void cLib_addCalc0__FPfff();
-extern "C" void cLib_addCalcPosXZ2__FP4cXyzRC4cXyzff();
-extern "C" void cLib_chaseF__FPfff();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void _savegpr_19();
-extern "C" void _savegpr_22();
-extern "C" void _savegpr_23();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _restgpr_19();
-extern "C" void _restgpr_22();
-extern "C" void _restgpr_23();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" extern void* __vt__19mDoExt_3DlineMat1_c[5];
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__8dCcD_Cps[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__12cCcD_CpsAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" f32 mGroundY__11fopAcM_gc_c;
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-
-//
-// Declarations:
-//
/* 80CAD2F8-80CAD318 000078 0020+00 1/1 0/0 0/0 .text daObjPicture_c_createHeap__FP10fopAc_ac_c */
-static void daObjPicture_c_createHeap(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daObjPicture_c_createHeap(fopAc_ac_c* i_this) {
+ return ((daObjPicture_c*)i_this)->createHeap();
}
-/* ############################################################################################## */
-/* 80CAF0DC-80CAF0DC 0000C0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80CAF0DC = "L9Picture";
-#pragma pop
-
/* 80CAF0E8-80CAF0EC -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
-SECTION_DATA static void* l_arcName = (void*)&d_a_obj_picture__stringBase0;
+static char* l_arcName = "L9Picture";
/* 80CAF0EC-80CAF104 000004 0018+00 1/1 0/0 0/0 .data l_LINE_OFFSET_POS */
-SECTION_DATA static u8 l_LINE_OFFSET_POS[24] = {
- 0xC2, 0xC8, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00,
- 0x42, 0xC8, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00,
+static Vec l_LINE_OFFSET_POS[] = {
+ {-100.0f, 200.0f, -2.0f},
+ {100.0f, 200.0f, -2.0f},
};
/* 80CAF104-80CAF110 00001C 000C+00 1/1 0/0 0/0 .data l_PIC_AT_OFFSET_POS */
-SECTION_DATA static u8 l_PIC_AT_OFFSET_POS[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static Vec l_PIC_AT_OFFSET_POS = {
+ 0.0f, 100.0f, 0.0f
};
/* 80CAF110-80CAF15C 000028 004C+00 1/1 0/0 0/0 .data s_CcDCps__14daObjPicture_c */
-SECTION_DATA u8 daObjPicture_c::s_CcDCps[76] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x20, 0xA0, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x60, 0x00, 0x00,
+dCcD_SrcCps daObjPicture_c::s_CcDCps = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x20A0, 0x11}, 0x0}}, // mObj
+ {dCcD_SE_SWORD, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x4}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, 14.0f}, // mCps
+ } // mCpsAttr
};
/* 80CAF15C-80CAF1A0 000074 0044+00 1/1 0/0 0/0 .data s_CcDCyl_pic_at__14daObjPicture_c
*/
-SECTION_DATA u8 daObjPicture_c::s_CcDCyl_pic_at[68] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x79,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-/* 80CAF1A0-80CAF1C0 -00001 0020+00 1/0 0/0 0/0 .data daObjPicture_METHODS */
-static actor_method_class daObjPicture_METHODS = {
- (process_method_func)daObjPicture_create__FP14daObjPicture_c,
- (process_method_func)daObjPicture_Delete__FP14daObjPicture_c,
- (process_method_func)daObjPicture_execute__FP14daObjPicture_c,
- 0,
- (process_method_func)daObjPicture_draw__FP14daObjPicture_c,
-};
-
-/* 80CAF1C0-80CAF1F0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Picture */
-extern actor_process_profile_definition g_profile_Obj_Picture = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_Picture, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjPicture_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 742, // mPriority
- &daObjPicture_METHODS, // sub_method
- 0x00040180, // mStatus
- fopAc_ENV_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80CAF1F0-80CAF204 000108 0014+00 1/1 0/0 0/0 .data __vt__18mDoExt_3DlineMat_c */
-SECTION_DATA extern void* __vt__18mDoExt_3DlineMat_c[5] = {
- (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL,
-};
-
-/* 80CAF204-80CAF210 00011C 000C+00 2/2 0/0 0/0 .data __vt__14daObjPicture_c */
-SECTION_DATA extern void* __vt__14daObjPicture_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14daObjPicture_cFv,
-};
-
-/* 80CAF210-80CAF21C 000128 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */
-SECTION_DATA extern void* __vt__10cCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10cCcD_GSttsFv,
-};
-
-/* 80CAF21C-80CAF228 000134 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */
-SECTION_DATA extern void* __vt__10dCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10dCcD_GSttsFv,
-};
-
-/* 80CAF228-80CAF234 000140 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
-
-/* 80CAF234-80CAF240 00014C 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
+dCcD_SrcCyl daObjPicture_c::s_CcDCyl_pic_at = {
+ {
+ {0x0, {{0x400, 0x1, 0x11}, {0x0, 0x11}, 0x79}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {0.0f, 0.0f, 0.0f}, // mCenter
+ 0.0f, // mRadius
+ 0.0f // mHeight
+ } // mCyl
};
/* 80CAD318-80CAD498 000098 0180+00 2/2 0/0 0/0 .text __ct__14daObjPicture_cFv */
daObjPicture_c::daObjPicture_c() {
- // NONMATCHING
-}
-
-/* 80CAD498-80CAD4E0 000218 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
-
-/* 80CAD4E0-80CAD528 000260 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
-
-/* 80CAD528-80CAD5EC 0002A8 00C4+00 2/2 0/0 0/0 .text __dt__8dCcD_CpsFv */
-// dCcD_Cps::~dCcD_Cps() {
-extern "C" void __dt__8dCcD_CpsFv() {
- // NONMATCHING
-}
-
-/* 80CAD5EC-80CAD66C 00036C 0080+00 1/1 0/0 0/0 .text __ct__8dCcD_CpsFv */
-// dCcD_Cps::dCcD_Cps() {
-extern "C" void __ct__8dCcD_CpsFv() {
- // NONMATCHING
-}
-
-/* 80CAD66C-80CAD6C8 0003EC 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
+ memset(mpBgw, 0, 8);
+ mpRopestModel = NULL;
+ mpPicModel = NULL;
+ memset(mpRopeMat, 0, 8);
}
/* 80CAD6C8-80CAD908 000448 0240+00 1/0 0/0 0/0 .text __dt__14daObjPicture_cFv */
daObjPicture_c::~daObjPicture_c() {
- // NONMATCHING
+ dComIfG_resDelete(this, l_arcName);
}
-/* ############################################################################################## */
/* 80CAF01C-80CAF024 000000 0008+00 6/6 0/0 0/0 .rodata l_dzbIdx */
-SECTION_RODATA static u8 const l_dzbIdx[8] = {
- 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0A,
+static const int l_dzbIdx[] = {
+ 11, 10,
};
-COMPILER_STRIP_GATE(0x80CAF01C, &l_dzbIdx);
/* 80CAF024-80CAF02C 000008 0008+00 0/1 0/0 0/0 .rodata l_PictureBmdIdx */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const l_PictureBmdIdx[8] = {
- 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07,
+static const int l_PictureBmdIdx[] = {
+ 6, 7,
};
-COMPILER_STRIP_GATE(0x80CAF024, &l_PictureBmdIdx);
-#pragma pop
-
-/* 80CAF02C-80CAF030 000010 0004+00 0/3 0/0 0/0 .rodata @3925 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3925 = 1.0f;
-COMPILER_STRIP_GATE(0x80CAF02C, &lit_3925);
-#pragma pop
-
-/* 80CAF030-80CAF034 000014 0004+00 2/3 0/0 0/0 .rodata @3926 */
-SECTION_RODATA static f32 const lit_3926 = 325.0f;
-COMPILER_STRIP_GATE(0x80CAF030, &lit_3926);
-
-/* 80CAF034-80CAF038 000018 0004+00 1/2 0/0 0/0 .rodata @3927 */
-SECTION_RODATA static f32 const lit_3927 = 0.5f;
-COMPILER_STRIP_GATE(0x80CAF034, &lit_3927);
/* 80CAD908-80CADC18 000688 0310+00 1/1 0/0 0/0 .text createHeap__14daObjPicture_cFv */
-void daObjPicture_c::createHeap() {
- // NONMATCHING
+int daObjPicture_c::createHeap() {
+ int bmd_idx = getArg_0() & 1;
+
+ J3DModelData* a_model_data_p = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 5);
+ JUT_ASSERT(116, a_model_data_p != NULL);
+
+ mpRopestModel = mDoExt_J3DModel__create(a_model_data_p, 0x80000, 0x11000084);
+ if (mpRopestModel == NULL) {
+ return 0;
+ }
+
+ cXyz pos(current.pos);
+ f32 size = 1.0f;
+
+ for (int i = 0; i < 2; i++) {
+ if (i == 1 && field_0xd26 != 0) {
+ break;
+ }
+
+ mpBgw[i] = new dBgW();
+ if (mpBgw[i] == NULL) {
+ return 0;
+ }
+
+ if (i == 0) {
+ pos.set(home.pos.x, home.pos.y + 325.0f, home.pos.z);
+ size = 0.5f;
+ }
+
+ mDoMtx_stack_c::transS(pos.x, pos.y, pos.z);
+ mDoMtx_stack_c::ZXYrotM(home.angle.x, home.angle.y, home.angle.z);
+ mDoMtx_stack_c::scaleM(size, size, size);
+ MTXCopy(mDoMtx_stack_c::get(), mBgMtx[i]);
+
+ if (mpBgw[i]->Set((cBgD_t*)dComIfG_getObjectRes(l_arcName, l_dzbIdx[i]), 1, &mBgMtx[i]) == 1) {
+ return 0;
+ }
+
+ if (i == 1) {
+ mpBgw[i]->SetCrrFunc(dBgS_MoveBGProc_TypicalRotY);
+ }
+ }
+
+ if (field_0xd26 != 0) {
+ return 1;
+ }
+
+ a_model_data_p = (J3DModelData*)dComIfG_getObjectRes(l_arcName, l_PictureBmdIdx[bmd_idx]);
+ JUT_ASSERT(179, a_model_data_p != NULL);
+
+ mpPicModel = mDoExt_J3DModel__create(a_model_data_p, 0x80000, 0x11000084);
+ if (mpPicModel == NULL) {
+ return 0;
+ }
+
+ for (int i = 0; i < 2; i++) {
+ mpRopeMat[i] = new mDoExt_3DlineMat1_c();
+ if (mpRopeMat[i] == NULL) {
+ OS_REPORT_ERROR("止め具ロープ:3Dラインマテリアルクラス生成失敗\n");
+ return 0;
+ }
+
+ if (!mpRopeMat[i]->init(1, 10, (ResTIMG*)dComIfG_getObjectRes(l_arcName, 14), 1)) {
+ OS_REPORT_ERROR("止め具ロープ:3Dラインマテリアルクラス初期化失敗\n");
+ return 0;
+ }
+ }
+
+ return 1;
}
-/* ############################################################################################## */
-/* 80CAF038-80CAF044 00001C 000C+00 0/1 0/0 0/0 .rodata @3958 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3958[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x66, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CAF038, &lit_3958);
-#pragma pop
-
-/* 80CAF044-80CAF048 000028 0004+00 0/1 0/0 0/0 .rodata @4007 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4007 = -100.0f;
-COMPILER_STRIP_GATE(0x80CAF044, &lit_4007);
-#pragma pop
-
-/* 80CAF048-80CAF04C 00002C 0004+00 0/1 0/0 0/0 .rodata @4008 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4008 = -500.0f;
-COMPILER_STRIP_GATE(0x80CAF048, &lit_4008);
-#pragma pop
-
-/* 80CAF04C-80CAF050 000030 0004+00 0/1 0/0 0/0 .rodata @4009 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4009 = 100.0f;
-COMPILER_STRIP_GATE(0x80CAF04C, &lit_4009);
-#pragma pop
-
-/* 80CAF050-80CAF054 000034 0004+00 0/1 0/0 0/0 .rodata @4010 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4010 = 1500.0f;
-COMPILER_STRIP_GATE(0x80CAF050, &lit_4010);
-#pragma pop
-
-/* 80CAF054-80CAF058 000038 0004+00 0/1 0/0 0/0 .rodata @4011 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4011 = 500.0f;
-COMPILER_STRIP_GATE(0x80CAF054, &lit_4011);
-#pragma pop
-
-/* 80CAF058-80CAF05C 00003C 0004+00 0/1 0/0 0/0 .rodata @4012 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4012 = 14.0f;
-COMPILER_STRIP_GATE(0x80CAF058, &lit_4012);
-#pragma pop
-
-/* 80CAF05C-80CAF060 000040 0004+00 0/1 0/0 0/0 .rodata @4013 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4013 = 10.0f;
-COMPILER_STRIP_GATE(0x80CAF05C, &lit_4013);
-#pragma pop
-
-/* 80CAF060-80CAF064 000044 0004+00 0/1 0/0 0/0 .rodata @4014 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4014 = 110.0f;
-COMPILER_STRIP_GATE(0x80CAF060, &lit_4014);
-#pragma pop
-
/* 80CADC18-80CADFB0 000998 0398+00 1/1 0/0 0/0 .text create__14daObjPicture_cFv */
-void daObjPicture_c::create() {
- // NONMATCHING
+// NONMATCHING
+int daObjPicture_c::create() {
+ fopAcM_ct(this, daObjPicture_c);
+
+ int phase_state = dComIfG_resLoad(this, l_arcName);
+ if (phase_state == cPhs_COMPLEATE_e) {
+ field_0xd26 = 0;
+ if (fopAcM_isSwitch(this, getSW_0())) {
+ field_0xd26 = 1;
+ }
+
+ if (!fopAcM_entrySolidHeap(this, daObjPicture_c_createHeap, 0x4000)) {
+ return cPhs_ERROR_e;
+ }
+
+ for (int i = 0; i < 2; i++) {
+ if (i == 1 && field_0xd26 != 0) {
+ break;
+ }
+
+ if (dComIfG_Bgsp().Regist(mpBgw[i], this)) {
+ return cPhs_ERROR_e;
+ }
+ }
+
+ init();
+ setPicModelMtx();
+ setTmgModelMtx();
+
+ J3DModel* model = field_0xd26 != 0 ? mpRopestModel : mpPicModel;
+ fopAcM_SetMtx(this, model->getBaseTRMtx());
+ fopAcM_setCullSizeBox(this, -100.0f, -500.0f, -500.0f, 100.0f, 1500.0f, 500.0f);
+
+ if (field_0xd26 == 0) {
+ field_0x574.Init(0xFF, 0xFF, this);
+
+ cXyz pos;
+ cXyz picpos;
+ getPosTmg(&pos);
+
+ for (int i = 0; i < 2; i++) {
+ mCps[i].Set(s_CcDCps);
+ mCps[i].SetStts(&field_0x574);
+ getLinePosPic(i, &picpos);
+
+ mCps[i].cCcD_CpsAttr::Set(pos, picpos, 14.0f);
+ mCps[i].CalcTgVec();
+ mCps[i].OnTgNoSlingHitInfSet();
+ }
+
+ field_0x5b0.Init(0xFF, 0xFF, this);
+ mAtCyl.Set(s_CcDCyl_pic_at);
+ mAtCyl.SetStts(&field_0x5b0);
+ mAtCyl.SetC(current.pos);
+ mAtCyl.SetH(10.0f);
+ mAtCyl.SetR(110.0f);
+
+ field_0x5ec.Init(0xFF, 0xFF, this);
+ getPosTmg(&pos);
+
+ Vec sp1C = {0.0f, 0.0f, -230.0f};
+ mDoMtx_stack_c::transS(pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::multVec(&sp1C, &pos);
+
+ for (int i = 0; i < 2; i++) {
+ mCps2[i].Set(s_CcDCps);
+ mCps2[i].SetStts(&field_0x5ec);
+ getLinePosPic(i, &picpos);
+
+ mDoMtx_stack_c::transS(picpos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::multVec(&sp1C, &picpos);
+
+ mCps2[i].cCcD_CpsAttr::Set(pos, picpos, 14.0f);
+ mCps2[i].CalcTgVec();
+ mCps2[i].OnTgNoSlingHitInfSet();
+ }
+
+ setLinePos();
+ mpBgw[1]->OffRoofRegist();
+ }
+ }
+
+ return phase_state;
}
/* 80CADFB0-80CAE05C 000D30 00AC+00 1/1 0/0 0/0 .text Delete__14daObjPicture_cFv */
-void daObjPicture_c::Delete() {
- // NONMATCHING
+int daObjPicture_c::Delete() {
+ for (int i = 0; i < 2; i++) {
+ if (i == 1 && field_0xd26 != 0) {
+ break;
+ }
+
+ if (mpBgw[i] != NULL && mpBgw[i]->ChkUsed()) {
+ dComIfG_Bgsp().Release(mpBgw[i]);
+ }
+ }
+
+ this->~daObjPicture_c();
+ return 1;
}
-/* ############################################################################################## */
-/* 80CAF064-80CAF068 000048 0004+00 1/1 0/0 0/0 .rodata @4042 */
-SECTION_RODATA static u8 const lit_4042[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80CAF064, &lit_4042);
-
-/* 80CAF068-80CAF06C 00004C 0004+00 1/1 0/0 0/0 .rodata @4076 */
-SECTION_RODATA static f32 const lit_4076 = 3.5f;
-COMPILER_STRIP_GATE(0x80CAF068, &lit_4076);
-
/* 80CAE05C-80CAE1B8 000DDC 015C+00 1/1 0/0 0/0 .text draw__14daObjPicture_cFv */
-void daObjPicture_c::draw() {
- // NONMATCHING
+int daObjPicture_c::draw() {
+ g_env_light.settingTevStruct(16, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mpRopestModel, &tevStr);
+ mDoExt_modelUpdate(mpRopestModel);
+
+ if (field_0xd26 != 0) {
+ return 1;
+ }
+
+ g_env_light.setLightTevColorType_MAJI(mpPicModel, &tevStr);
+ dComIfGd_setListBG();
+ mDoExt_modelUpdateDL(mpPicModel);
+ dComIfGd_setList();
+
+ for (int i = 0; i < 2; i++) {
+ GXColor rope_col = {0, 0, 0, 0};
+ mpRopeMat[i]->update(10, 3.5f, rope_col, 0, &tevStr);
+ dComIfGd_set3DlineMat(mpRopeMat[i]);
+ }
+
+ return 1;
}
-/* ############################################################################################## */
-/* 80CAF06C-80CAF070 000050 0004+00 0/2 0/0 0/0 .rodata @4146 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4146 = -1.0f;
-COMPILER_STRIP_GATE(0x80CAF06C, &lit_4146);
-#pragma pop
-
-/* 80CAF070-80CAF074 000054 0004+00 0/3 0/0 0/0 .rodata @4147 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4147[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80CAF070, &lit_4147);
-#pragma pop
-
-/* 80CAF074-80CAF078 000058 0004+00 0/1 0/0 0/0 .rodata @4148 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4148 = 12.0f;
-COMPILER_STRIP_GATE(0x80CAF074, &lit_4148);
-#pragma pop
-
-/* 80CAF078-80CAF07C 00005C 0004+00 0/1 0/0 0/0 .rodata @4149 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4149 = 4.0f;
-COMPILER_STRIP_GATE(0x80CAF078, &lit_4149);
-#pragma pop
-
-/* 80CAF07C-80CAF080 000060 0004+00 0/1 0/0 0/0 .rodata @4150 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4150 = 7.0f;
-COMPILER_STRIP_GATE(0x80CAF07C, &lit_4150);
-#pragma pop
-
-/* 80CAF080-80CAF084 000064 0004+00 0/2 0/0 0/0 .rodata @4151 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4151 = 5.0f;
-COMPILER_STRIP_GATE(0x80CAF080, &lit_4151);
-#pragma pop
-
-/* 80CAF084-80CAF088 000068 0004+00 0/1 0/0 0/0 .rodata @4152 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4152 = -1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80CAF084, &lit_4152);
-#pragma pop
-
/* 80CAE1B8-80CAE510 000F38 0358+00 1/1 0/0 0/0 .text execute__14daObjPicture_cFv */
-void daObjPicture_c::execute() {
- // NONMATCHING
+int daObjPicture_c::execute() {
+ if (field_0xd26 != 0) {
+ setTmgModelMtx();
+ return 1;
+ }
+
+ switch (field_0xd24) {
+ case 0:
+ if (chkHitRope() || chkHitBombTg()) {
+ fopAcM_onSwitch(this, getSW_0());
+ mDoAud_seStart(Z2SE_OBJ_ROPE_PAINT_CUT, &field_0xc88, 0, 0);
+ field_0xd24 = 1;
+ speed.set(0.0f, -1.0f, 0.0f);
+
+ for (int i = 0; i < 10; i++) {
+ if (i == 5 || i == 6) {
+ field_0xd28[i].x = 12.0f;
+ } else if (i == 0 || i == 1) {
+ field_0xd28[i].x = 4.0f;
+ } else {
+ field_0xd28[i].x = 7.0f;
+ }
+
+ field_0xd28[i].y = -1.0f;
+ field_0xd28[i].z = 0.0f;
+ }
+
+ return 1;
+ }
+
+ for (int i = 0; i < 2; i++) {
+ dComIfG_Ccsp()->Set(&mCps[i]);
+ dComIfG_Ccsp()->Set(&mCps2[i]);
+ }
+ break;
+ case 1: {
+ cXyz sp14(field_0xc94.x, current.pos.y, field_0xc94.z);
+ fopAcM_gc_c::gndCheck(&sp14);
+ current.pos.y += speed.y;
+
+ moveLineFall1();
+
+ if (fopAcM_gc_c::getGroundY() > current.pos.y) {
+ mDoAud_seStart(Z2SE_OBJ_ROPE_PAINT_LAND, &current.pos, 0, 0);
+ current.pos.y = 5.0f + fopAcM_gc_c::getGroundY();
+ field_0xd24 = 2;
+ speed.y = -0.1f;
+ }
+
+ speed.y += gravity;
+ cLib_chaseF(&current.pos.x, field_0xca0.x, 1.0f);
+ cLib_chaseF(&current.pos.z, field_0xca0.z, 1.0f);
+ break;
+ }
+ case 2: {
+ cXyz sp8(current.pos);
+ fopAcM_gc_c::gndCheck(&sp8);
+
+ shape_angle.x += 0x400;
+ if (shape_angle.x > 0x4000) {
+ shape_angle.x = 0x4000;
+ }
+
+ moveLineFall2();
+
+ if (field_0xd27 != 0 && shape_angle.x == 0x4000) {
+ field_0xd24 = 3;
+ }
+
+ cLib_chaseF(&current.pos.x, field_0xca0.x, 1.0f);
+ cLib_chaseF(&current.pos.z, field_0xca0.z, 1.0f);
+ setPicAtCol();
+ break;
+ }
+ case 3:
+ break;
+ }
+
+ setPicModelMtx();
+ setTmgModelMtx();
+ mpBgw[1]->Move();
+ return 1;
}
-/* ############################################################################################## */
-/* 80CAF088-80CAF094 00006C 000C+00 0/1 0/0 0/0 .rodata @4156 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4156[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CAF088, &lit_4156);
-#pragma pop
-
-/* 80CAF094-80CAF098 000078 0004+00 0/1 0/0 0/0 .rodata @4160 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4160 = -3.0f;
-COMPILER_STRIP_GATE(0x80CAF094, &lit_4160);
-#pragma pop
-
-/* 80CAF098-80CAF09C 00007C 0004+00 0/1 0/0 0/0 .rodata @4161 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4161 = 15.0f;
-COMPILER_STRIP_GATE(0x80CAF098, &lit_4161);
-#pragma pop
-
/* 80CAE510-80CAE5B0 001290 00A0+00 1/1 0/0 0/0 .text init__14daObjPicture_cFv */
void daObjPicture_c::init() {
- // NONMATCHING
+ field_0xd24 = 0;
+ gravity = -3.0f;
+
+ Vec sp8 = {0.0f, 0.0f, 100.0f};
+
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::multVec(&sp8, &field_0xc94);
+
+ sp8.z = 15.0f;
+ mDoMtx_stack_c::multVec(&sp8, &field_0xca0);
}
/* 80CAE5B0-80CAE638 001330 0088+00 2/2 0/0 0/0 .text setPicModelMtx__14daObjPicture_cFv
*/
void daObjPicture_c::setPicModelMtx() {
- // NONMATCHING
+ if (field_0xd26 == 0) {
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
+ mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z);
+ MTXCopy(mDoMtx_stack_c::get(), mBgMtx[1]);
+ mpPicModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ }
}
/* 80CAE638-80CAE6C4 0013B8 008C+00 2/2 0/0 0/0 .text setTmgModelMtx__14daObjPicture_cFv
*/
void daObjPicture_c::setTmgModelMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(home.pos.x, home.pos.y + 325.0f, home.pos.z);
+ mDoMtx_stack_c::ZXYrotM(home.angle.x, home.angle.y, home.angle.z);
+ mDoMtx_stack_c::scaleM(0.5f, 0.5f, 0.5f);
+ mpRopestModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 80CAE6C4-80CAE744 001444 0080+00 4/4 0/0 0/0 .text getLinePosPic__14daObjPicture_cFiP4cXyz */
-void daObjPicture_c::getLinePosPic(int param_0, cXyz* param_1) {
- // NONMATCHING
+void daObjPicture_c::getLinePosPic(int param_0, cXyz* o_pos) {
+ *o_pos = l_LINE_OFFSET_POS[param_0];
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::multVec(o_pos, o_pos);
}
/* 80CAE744-80CAE76C 0014C4 0028+00 2/2 0/0 0/0 .text getPosTmg__14daObjPicture_cFP4cXyz
*/
-void daObjPicture_c::getPosTmg(cXyz* param_0) {
- // NONMATCHING
+void daObjPicture_c::getPosTmg(cXyz* o_pos) {
+ o_pos->set(home.pos.x, 325.0f + home.pos.y, home.pos.z);
}
-/* ############################################################################################## */
-/* 80CAF09C-80CAF0A0 000080 0004+00 1/1 0/0 0/0 .rodata @4280 */
-SECTION_RODATA static f32 const lit_4280 = 20.0f;
-COMPILER_STRIP_GATE(0x80CAF09C, &lit_4280);
-
/* 80CAE76C-80CAE8E8 0014EC 017C+00 1/1 0/0 0/0 .text setLinePos__14daObjPicture_cFv */
void daObjPicture_c::setLinePos() {
- // NONMATCHING
+ cXyz tmgpos;
+ cXyz picpos[2];
+ getPosTmg(&tmgpos);
+ getLinePosPic(0, &picpos[0]);
+ getLinePosPic(1, &picpos[1]);
+
+ cXyz sp44;
+ cXyz sp38;
+ for (int i = 0; i < 2; i++) {
+ sp44 = tmgpos - picpos[i];
+ sp44.normalizeZP();
+
+ cXyz* rope_pos_p = mpRopeMat[i]->getPos(0);
+ *rope_pos_p = picpos[i];
+ sp38 = *rope_pos_p;
+
+ rope_pos_p++;
+ for (int j = 1; j < 9; j++) {
+ *rope_pos_p = sp38 + (sp44 * 20.0f);
+ sp38 = *rope_pos_p;
+ rope_pos_p++;
+ }
+
+ *rope_pos_p = tmgpos;
+ }
}
-/* ############################################################################################## */
-/* 80CAF0A0-80CAF0A4 000084 0004+00 0/1 0/0 0/0 .rodata @4323 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4323 = 1.0f / 25.0f;
-COMPILER_STRIP_GATE(0x80CAF0A0, &lit_4323);
-#pragma pop
-
-/* 80CAF0A4-80CAF0A8 000088 0004+00 0/1 0/0 0/0 .rodata @4324 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4324 = 50.0f;
-COMPILER_STRIP_GATE(0x80CAF0A4, &lit_4324);
-#pragma pop
-
-/* 80CAF0A8-80CAF0AC 00008C 0004+00 0/1 0/0 0/0 .rodata @4325 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4325 = 9.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80CAF0A8, &lit_4325);
-#pragma pop
-
/* 80CAE8E8-80CAEA60 001668 0178+00 1/1 0/0 0/0 .text moveLineFall1__14daObjPicture_cFv
*/
void daObjPicture_c::moveLineFall1() {
- // NONMATCHING
+ cXyz picpos[2];
+ getLinePosPic(0, &picpos[0]);
+ getLinePosPic(1, &picpos[1]);
+
+ cXyz sp14;
+ f32 var_f31 = 1.0f;
+ cXyz* rope_pos_p;
+ for (int i = 0; i < 2; i++) {
+ rope_pos_p = mpRopeMat[i]->getPos(0);
+ *rope_pos_p = picpos[i];
+ rope_pos_p++;
+
+ if (i == 0) {
+ var_f31 = -1.0f;
+ } else {
+ var_f31 = 1.0f;
+ }
+
+ for (int j = 1; j < 10; j++) {
+ cLib_addCalc0(&field_0xd28[j].x, 0.04f, 50.0f);
+ field_0xd28[j].y += 0.45f * gravity;
+
+ sp14.set(var_f31 * field_0xd28[j].x, field_0xd28[j].y, 0.0f);
+ mDoMtx_stack_c::transS(*rope_pos_p);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::multVec(&sp14, rope_pos_p);
+ rope_pos_p++;
+ }
+ }
}
-/* ############################################################################################## */
-/* 80CAF0AC-80CAF0B0 000090 0004+00 0/1 0/0 0/0 .rodata @4432 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4432 = 8.0f;
-COMPILER_STRIP_GATE(0x80CAF0AC, &lit_4432);
-#pragma pop
-
-/* 80CAF0B0-80CAF0B4 000094 0004+00 0/1 0/0 0/0 .rodata @4433 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4433 = 7.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80CAF0B0, &lit_4433);
-#pragma pop
-
-/* 80CAF0B4-80CAF0BC 000098 0008+00 0/1 0/0 0/0 .rodata @4434 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4434[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CAF0B4, &lit_4434);
-#pragma pop
-
-/* 80CAF0BC-80CAF0C4 0000A0 0008+00 0/1 0/0 0/0 .rodata @4435 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4435[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CAF0BC, &lit_4435);
-#pragma pop
-
-/* 80CAF0C4-80CAF0CC 0000A8 0008+00 0/1 0/0 0/0 .rodata @4436 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4436[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CAF0C4, &lit_4436);
-#pragma pop
-
-/* 80CAF0CC-80CAF0D0 0000B0 0004+00 0/1 0/0 0/0 .rodata @4437 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4437 = 1.0f / 50.0f;
-COMPILER_STRIP_GATE(0x80CAF0CC, &lit_4437);
-#pragma pop
-
-/* 80CAF0D0-80CAF0D4 0000B4 0004+00 0/1 0/0 0/0 .rodata @4438 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4438 = 30.0f;
-COMPILER_STRIP_GATE(0x80CAF0D0, &lit_4438);
-#pragma pop
-
-/* 80CAF0D4-80CAF0DC 0000B8 0008+00 0/1 0/0 0/0 .rodata @4440 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4440[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80CAF0D4, &lit_4440);
-#pragma pop
-
/* 80CAEA60-80CAED28 0017E0 02C8+00 1/1 0/0 0/0 .text moveLineFall2__14daObjPicture_cFv
*/
void daObjPicture_c::moveLineFall2() {
- // NONMATCHING
+ field_0xd27 = 1;
+
+ cXyz sp18[2];
+ speed.y += gravity;
+
+ cXyz* rope_pos_p;
+ for (int i = 0; i < 2; i++) {
+ getLinePosPic(i, &sp18[i]);
+ rope_pos_p = mpRopeMat[i]->getPos(0);
+ *rope_pos_p = sp18[i];
+ rope_pos_p++;
+
+ for (int j = 1; j < 10; j++) {
+ if (8.0f + fopAcM_gc_c::getGroundY() >= rope_pos_p->y) {
+ rope_pos_p->y = 8.0f + fopAcM_gc_c::getGroundY();
+ } else {
+ rope_pos_p->y += 0.7f * speed.y;
+
+ f32 var_f31 = rope_pos_p->absXZ(current.pos) * (cM_ssin(0x4000 - shape_angle.x) / cM_ssin(shape_angle.x));
+ var_f31 += 5.0f + fopAcM_gc_c::getGroundY();
+
+ if (shape_angle.x >= 0x2000 && rope_pos_p->y < var_f31) {
+ rope_pos_p->y = var_f31;
+ }
+
+ cLib_addCalcPosXZ2(rope_pos_p, sp18[i], 0.02f * (10 - j), 30.0f);
+ field_0xd27 = 0;
+ }
+
+ rope_pos_p++;
+ }
+ }
}
/* 80CAED28-80CAEDDC 001AA8 00B4+00 1/1 0/0 0/0 .text chkHitRope__14daObjPicture_cFv */
-void daObjPicture_c::chkHitRope() {
- // NONMATCHING
+bool daObjPicture_c::chkHitRope() {
+ for (int i = 0; i < 2; i++) {
+ if (mCps[i].ChkTgHit()) {
+ cCcD_Obj* tg_hit_obj = mCps[i].GetTgHitObj();
+ if (tg_hit_obj != NULL && tg_hit_obj->ChkAtType(AT_TYPE_ARROW)) {
+ field_0xc88 = *mCps[i].GetTgHitPosP();
+ return 1;
+ }
+
+ mCps[i].ClrTgHit();
+ }
+ }
+
+ return 0;
}
/* 80CAEDDC-80CAEE90 001B5C 00B4+00 1/1 0/0 0/0 .text chkHitBombTg__14daObjPicture_cFv */
-void daObjPicture_c::chkHitBombTg() {
- // NONMATCHING
+bool daObjPicture_c::chkHitBombTg() {
+ for (int i = 0; i < 2; i++) {
+ if (mCps2[i].ChkTgHit()) {
+ cCcD_Obj* tg_hit_obj = mCps2[i].GetTgHitObj();
+ if (tg_hit_obj != NULL && tg_hit_obj->ChkAtType(AT_TYPE_BOMB)) {
+ field_0xc88 = *mCps2[i].GetTgHitPosP();
+ return 1;
+ }
+
+ mCps2[i].ClrTgHit();
+ }
+ }
+
+ return 0;
}
/* 80CAEE90-80CAEF18 001C10 0088+00 1/1 0/0 0/0 .text setPicAtCol__14daObjPicture_cFv */
void daObjPicture_c::setPicAtCol() {
- // NONMATCHING
+ mPicAtPos = l_PIC_AT_OFFSET_POS;
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::multVec(&mPicAtPos, &mPicAtPos);
+ mAtCyl.SetC(mPicAtPos);
+ dComIfG_Ccsp()->Set(&mAtCyl);
}
/* 80CAEF18-80CAEF6C 001C98 0054+00 1/0 0/0 0/0 .text daObjPicture_create__FP14daObjPicture_c */
-static void daObjPicture_create(daObjPicture_c* param_0) {
- // NONMATCHING
+static int daObjPicture_create(daObjPicture_c* i_this) {
+ fopAcM_ct(i_this, daObjPicture_c);
+ return i_this->create();
}
/* 80CAEF6C-80CAEF8C 001CEC 0020+00 1/0 0/0 0/0 .text daObjPicture_Delete__FP14daObjPicture_c */
-static void daObjPicture_Delete(daObjPicture_c* param_0) {
- // NONMATCHING
+static int daObjPicture_Delete(daObjPicture_c* i_this) {
+ return i_this->Delete();
}
/* 80CAEF8C-80CAEFAC 001D0C 0020+00 1/0 0/0 0/0 .text daObjPicture_execute__FP14daObjPicture_c */
-static void daObjPicture_execute(daObjPicture_c* param_0) {
- // NONMATCHING
+static int daObjPicture_execute(daObjPicture_c* i_this) {
+ return i_this->execute();
}
/* 80CAEFAC-80CAEFCC 001D2C 0020+00 1/0 0/0 0/0 .text daObjPicture_draw__FP14daObjPicture_c */
-static void daObjPicture_draw(daObjPicture_c* param_0) {
- // NONMATCHING
+static int daObjPicture_draw(daObjPicture_c* i_this) {
+ return i_this->draw();
}
-/* 80CAEFCC-80CAF014 001D4C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
-}
+/* 80CAF1A0-80CAF1C0 -00001 0020+00 1/0 0/0 0/0 .data daObjPicture_METHODS */
+static actor_method_class daObjPicture_METHODS = {
+ (process_method_func)daObjPicture_create,
+ (process_method_func)daObjPicture_Delete,
+ (process_method_func)daObjPicture_execute,
+ 0,
+ (process_method_func)daObjPicture_draw,
+};
-/* 80CAF0DC-80CAF0DC 0000C0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 80CAF1C0-80CAF1F0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Picture */
+extern actor_process_profile_definition g_profile_Obj_Picture = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_Picture, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjPicture_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 742, // mPriority
+ &daObjPicture_METHODS, // sub_method
+ 0x00040180, // mStatus
+ fopAc_ENV_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};