summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_obj_picture.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/d/actor/d_a_obj_picture.cpp')
-rw-r--r--src/d/actor/d_a_obj_picture.cpp1061
1 files changed, 491 insertions, 570 deletions
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
+};