From 92c2ef1ce34340df23234524f214302bfe3bc60b Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Tue, 3 Jan 2023 17:43:38 -0800 Subject: [PATCH 1/5] d_s_room / d_a_bg first pass --- .../d/a/d_a_bg/d_a_bg/createHeap__6daBg_cFv.s | 16 +- asm/rel/d/a/d_a_bg/d_a_bg/draw__6daBg_cFv.s | 4 +- .../JSystem/J3DGraphAnimator/J3DAnimation.h | 17 +- .../J3DGraphAnimator/J3DMaterialAttach.h | 2 + .../JSystem/J3DGraphAnimator/J3DModelData.h | 1 + include/JSystem/J3DGraphBase/J3DMaterial.h | 2 + include/JSystem/J3DGraphBase/J3DShape.h | 17 +- include/d/bg/d_bg_w_base.h | 5 + include/d/com/d_com_inf_game.h | 31 +- include/d/com/d_com_static.h | 5 + include/d/d_demo.h | 1 + include/d/d_stage.h | 36 +- include/d/kankyo/d_kankyo.h | 2 +- include/d/particle/d_particle.h | 2 + include/f_op/f_op_scene_mng.h | 4 + include/f_pc/f_pc_manager.h | 5 + include/m_Do/m_Do_ext.h | 9 + include/m_Do/m_Do_lib.h | 9 + rel/d/a/d_a_bg/Makefile | 1 + rel/d/a/d_a_bg/d_a_bg.cpp | 1115 +++++++++-------- src/d/com/d_com_inf_game.cpp | 8 +- src/d/d_stage.cpp | 2 +- src/d/s/d_s_room.cpp | 386 ++++-- 23 files changed, 973 insertions(+), 707 deletions(-) diff --git a/asm/rel/d/a/d_a_bg/d_a_bg/createHeap__6daBg_cFv.s b/asm/rel/d/a/d_a_bg/d_a_bg/createHeap__6daBg_cFv.s index 5753102006..087a800c0b 100644 --- a/asm/rel/d/a/d_a_bg/d_a_bg/createHeap__6daBg_cFv.s +++ b/asm/rel/d/a/d_a_bg/d_a_bg/createHeap__6daBg_cFv.s @@ -15,8 +15,8 @@ lbl_804582B8: /* 804582EC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ /* 804582F0 3C 63 00 02 */ addis r3, r3, 2 /* 804582F4 3B A3 D4 F8 */ addi r29, r3, -11016 -/* 804582F8 3C 60 80 46 */ lis r3, data_80459424@ha /* 0x80459424@ha */ -/* 804582FC 3A C3 94 24 */ addi r22, r3, data_80459424@l /* 0x80459424@l */ +/* 804582F8 3C 60 80 46 */ lis r3, l_modelName@ha /* 0x80459424@ha */ +/* 804582FC 3A C3 94 24 */ addi r22, r3, l_modelName@l /* 0x80459424@l */ lbl_80458300: /* 80458300 7F 83 E3 78 */ mr r3, r28 /* 80458304 7C 96 DA 14 */ add r4, r22, r27 @@ -26,8 +26,8 @@ lbl_80458300: /* 80458314 7C 78 1B 79 */ or. r24, r3, r3 /* 80458318 40 82 00 24 */ bne lbl_8045833C /* 8045831C 7F 83 E3 78 */ mr r3, r28 -/* 80458320 3C 80 80 46 */ lis r4, data_80459468@ha /* 0x80459468@ha */ -/* 80458324 38 04 94 68 */ addi r0, r4, data_80459468@l /* 0x80459468@l */ +/* 80458320 3C 80 80 46 */ lis r4, l_modelName2@ha /* 0x80459468@ha */ +/* 80458324 38 04 94 68 */ addi r0, r4, l_modelName2@l /* 0x80459468@l */ /* 80458328 7C 80 DA 14 */ add r4, r0, r27 /* 8045832C 7F A5 EB 78 */ mr r5, r29 /* 80458330 38 C0 00 40 */ li r6, 0x40 @@ -55,8 +55,8 @@ lbl_80458374: /* 8045837C 7C 03 00 40 */ cmplw r3, r0 /* 80458380 41 80 FF E0 */ blt lbl_80458360 /* 80458384 7F 83 E3 78 */ mr r3, r28 -/* 80458388 3C 80 80 46 */ lis r4, data_804594AC@ha /* 0x804594AC@ha */ -/* 8045838C 38 04 94 AC */ addi r0, r4, data_804594AC@l /* 0x804594AC@l */ +/* 80458388 3C 80 80 46 */ lis r4, l_btkName@ha /* 0x804594AC@ha */ +/* 8045838C 38 04 94 AC */ addi r0, r4, l_btkName@l /* 0x804594AC@l */ /* 80458390 7C 80 DA 14 */ add r4, r0, r27 /* 80458394 7F A5 EB 78 */ mr r5, r29 /* 80458398 38 C0 00 40 */ li r6, 0x40 @@ -91,8 +91,8 @@ lbl_804583F8: /* 804583FC C0 03 93 88 */ lfs f0, lit_4125@l(r3) /* 0x80459388@l */ /* 80458400 D0 1E 00 10 */ stfs f0, 0x10(r30) /* 80458404 7F 83 E3 78 */ mr r3, r28 -/* 80458408 3C 80 80 46 */ lis r4, data_804594F0@ha /* 0x804594F0@ha */ -/* 8045840C 38 04 94 F0 */ addi r0, r4, data_804594F0@l /* 0x804594F0@l */ +/* 80458408 3C 80 80 46 */ lis r4, l_brkName@ha /* 0x804594F0@ha */ +/* 8045840C 38 04 94 F0 */ addi r0, r4, l_brkName@l /* 0x804594F0@l */ /* 80458410 7C 80 DA 14 */ add r4, r0, r27 /* 80458414 7F A5 EB 78 */ mr r5, r29 /* 80458418 38 C0 00 40 */ li r6, 0x40 diff --git a/asm/rel/d/a/d_a_bg/d_a_bg/draw__6daBg_cFv.s b/asm/rel/d/a/d_a_bg/d_a_bg/draw__6daBg_cFv.s index 39af3072ff..915133a684 100644 --- a/asm/rel/d/a/d_a_bg/d_a_bg/draw__6daBg_cFv.s +++ b/asm/rel/d/a/d_a_bg/d_a_bg/draw__6daBg_cFv.s @@ -106,8 +106,8 @@ lbl_80458A38: /* 80458A44 41 80 FF AC */ blt lbl_804589F0 /* 80458A48 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ /* 80458A4C 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 80458A50 3C 80 80 46 */ lis r4, data_80459534@ha /* 0x80459534@ha */ -/* 80458A54 38 84 95 34 */ addi r4, r4, data_80459534@l /* 0x80459534@l */ +/* 80458A50 3C 80 80 46 */ lis r4, l_tevStrType@ha /* 0x80459534@ha */ +/* 80458A54 38 84 95 34 */ addi r4, r4, l_tevStrType@l /* 0x80459534@l */ /* 80458A58 7C 84 F0 2E */ lwzx r4, r4, r30 /* 80458A5C 38 A0 00 00 */ li r5, 0 /* 80458A60 80 D6 00 0C */ lwz r6, 0xc(r22) diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index a3c6b90415..9034496b2c 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -368,6 +368,9 @@ public: calcTransform(getFrame(), param_0, pSRTInfo); } + u16 getUpdateMaterialID(u16 idx) const { return mUpdateMaterialID[idx]; } + u16 getUpdateMaterialNum() const { return field_0x14 / 3; } + private: /* 0x0C */ int field_0xc; /* 0x10 */ int field_0x10; @@ -379,7 +382,7 @@ private: /* 0x20 */ int field_0x20; /* 0x24 */ int field_0x24; /* 0x28 */ u8 mUpdateTexMtxID[4]; - /* 0x2C */ u16 mUpdateMaterialID[2]; + /* 0x2C */ u16* mUpdateMaterialID; /* 0x30 */ JUTNameTab field_0x30; /* 0x40 */ int field_0x40; /* 0x44 */ u16 field_0x44; @@ -427,6 +430,12 @@ public: /* 8032BD9C */ virtual ~J3DAnmTevRegKey(); /* 8032BE24 */ virtual s32 getKind() const; + u16 getCRegUpdateMaterialNum() const { return mCRegUpdateMaterialNum; } + u16 getKRegUpdateMaterialNum() const { return mKRegUpdateMaterialNum; } + + u16 getCRegUpdateMaterialID(u16 idx) const { return mCRegUpdateMaterialID[idx]; } + u16 getKRegUpdateMaterialID(u16 idx) const { return mKRegUpdateMaterialID[idx]; } + private: /* 0x0C */ u16 mCRegUpdateMaterialNum; /* 0x0E */ u16 mKRegUpdateMaterialNum; @@ -438,8 +447,10 @@ private: /* 0x1A */ u16 field_0x1a; /* 0x1C */ u16 field_0x1c; /* 0x1E */ u16 field_0x1e; - /* 0x20 */ u16 mCRegUpdateMaterialID[20]; - /* 0x34 */ u16 mKRegUpdateMaterialID[20]; + /* 0x20 */ u16* mCRegUpdateMaterialID; + /* 0x24 */ u8 field_0x24[0x34 - 0x24]; + /* 0x34 */ u16* mKRegUpdateMaterialID; + /* 0x38 */ u8 field_0x38[0x48 - 0x38]; /* 0x48 */ void* field_0x48; /* 0x4C */ void* field_0x4c; /* 0x50 */ int field_0x50; diff --git a/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h b/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h index 2cbe551312..79ed0e592d 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h +++ b/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h @@ -32,6 +32,8 @@ public: J3DTexture* getTexture() const { return mTexture; } JUTNameTab* getTextureName() const { return mTextureName; } + JUTNameTab* getMaterialName() const { return mMaterialName; } + u16 getMaterialNum() const { return mMaterialNum; } bool isLocked() const { return field_0x1c == 1; } diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h index 1bc947fab4..766ae76a76 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModelData.h +++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h @@ -22,6 +22,7 @@ public: /* 8032617C */ virtual ~J3DModelData(); J3DMaterialTable& getMaterialTable() { return mMaterialTable; } + JUTNameTab* getMaterialName() const { return mMaterialTable.getMaterialName(); } J3DVertexData& getVertexData() { return mVertexData; } u16 getShapeNum() const { return mShapeTable.getShapeNum(); } u16 getMaterialNum() const { return mMaterialTable.getMaterialNum(); } diff --git a/include/JSystem/J3DGraphBase/J3DMaterial.h b/include/JSystem/J3DGraphBase/J3DMaterial.h index 3dae56cd03..0ab504da98 100644 --- a/include/JSystem/J3DGraphBase/J3DMaterial.h +++ b/include/JSystem/J3DGraphBase/J3DMaterial.h @@ -63,6 +63,8 @@ public: u32 getTexNo(u32 idx) const { return mTevBlock->getTexNo(idx); } void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); } + void setTevKColor(u32 i, const J3DGXColor* i_color) { mTevBlock->setTevKColor(i, i_color); } + void setMaterialAnm(J3DMaterialAnm* i_anm) { mMaterialAnm = i_anm; } public: /* 0x04 */ J3DMaterial* mNext; diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h index 3d26ef2d6b..ab571a668f 100644 --- a/include/JSystem/J3DGraphBase/J3DShape.h +++ b/include/JSystem/J3DGraphBase/J3DShape.h @@ -97,16 +97,19 @@ public: void setScaleFlagArray(u8* pScaleFlagArray) { mScaleFlagArray = pScaleFlagArray; } void setDrawMtx(Mtx** pDrawMtx) { mDrawMtx = pDrawMtx; } void setNrmMtx(Mtx33** pNrmMtx) { mNrmMtx = pNrmMtx; } + void setTexMtxLoadType(u32 type) { mFlags = (mFlags & 0xFFFF0FFF) | type; } bool getNBTFlag() const { return mHasNBT; } u32 getBumpMtxOffset() const { return mBumpMtxOffset; } - inline J3DMaterial* getMaterial() const { return mMaterial; } - inline u32 getIndex() const { return mIndex; } - inline u32 getPipeline() const { return (mFlags >> 2) & 0x07; } - inline u32 getTexMtxLoadType() const { return mFlags & 0xF000; } - inline u32 getMtxGroupNum() const { return mMtxGroupNum; } - inline J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; } - inline J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; } + J3DMaterial* getMaterial() const { return mMaterial; } + u32 getIndex() const { return mIndex; } + u32 getPipeline() const { return (mFlags >> 2) & 0x07; } + u32 getTexMtxLoadType() const { return mFlags & 0xF000; } + u32 getMtxGroupNum() const { return mMtxGroupNum; } + J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; } + J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; } + Vec* getMin() { return &mMin; } + Vec* getMax() { return &mMax; } static void resetVcdVatCache() { sOldVcdVatCmd = NULL; } diff --git a/include/d/bg/d_bg_w_base.h b/include/d/bg/d_bg_w_base.h index 0564f0f4a7..d18386aeea 100644 --- a/include/d/bg/d_bg_w_base.h +++ b/include/d/bg/d_bg_w_base.h @@ -17,6 +17,10 @@ class dBgW_Base : public cBgW_BgId { public: enum PushPullLabel {}; + enum PRIORITY { + PRIORITY_0, + }; + typedef s32 (*PushPull_CallBack)(cBgS_PolyInfo const&, fopAc_ac_c*, s16, dBgW_Base::PushPullLabel); @@ -91,6 +95,7 @@ public: bool ChkPushPullOk() const { return m_pushPull_Ok; } void SetRoomId(int id) { m_roomId = id; } bool ChkPriority(int prio) { return m_priority == prio; } + void SetPriority(PRIORITY priority) { m_priority = priority; } private: /* 0x08 */ u8 m_priority; diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index cdb09b53fc..b6187c81c0 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -825,6 +825,7 @@ BOOL dComIfGs_isEventBit(u16 i_flag); int dComIfGs_isItemFirstBit(u8 i_no); u16 dComIfGs_getRupee(); static u16 dComIfGs_getLife(); +s8 dComIfGs_BossLife_public_Get(); inline void dComIfGs_init() { g_dComIfG_gameInfo.info.init(); @@ -1523,6 +1524,10 @@ inline void dComIfGs_setMemoryToCard(u8* i_saveData, int i_dataNum) { g_dComIfG_gameInfo.info.memory_to_card((char*)i_saveData, i_dataNum); } +inline int dComIfGs_createZone(int roomNo) { + return g_dComIfG_gameInfo.info.createZone(roomNo); +} + void dComIfGp_setSelectItem(int index); s32 dComIfGp_offHeapLockFlag(int flag); @@ -1544,6 +1549,7 @@ int dComIfGp_getSelectItemMaxNum(int index); void dComIfGp_mapShow(); void dComIfGp_mapHide(); bool dComIfGp_checkMapShow(); +void dComIfGp_ret_wp_set(s8); s32 dComIfGp_setHeapLockFlag(u8 flag); u8 dComIfGp_world_dark_get(); JKRExpHeap* dComIfGp_getSubHeap2D(int flag); @@ -1567,6 +1573,7 @@ static u8 dComIfGp_getDoStatus(); static u8 dComIfGp_getRStatus(); static dAttCatch_c* dComIfGp_att_getCatghTarget(); static void dComIfGp_setBottleStatus(u8 param_0, u8 param_1); +bool dComIfGp_getMapTrans(int i_roomNo, f32* o_transX, f32* o_transY, s16* o_angle); inline bool i_dComIfGp_checkPlayerStatus0(int param_0, u32 flag) { return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 0, flag); @@ -2347,6 +2354,10 @@ inline s32 dComIfGp_roomControl_getStayNo() { return dStage_roomControl_c::getStayNo(); } +inline s32 dComIfGp_roomControl_getZoneNo(int i_roomNo) { + return dStage_roomControl_c::getZoneNo(i_roomNo); +} + inline void dComIfGp_roomControl_initZone() { g_dComIfG_gameInfo.play.getRoomControl()->initZone(); } @@ -2375,12 +2386,28 @@ inline void dComIfGp_roomControl_setStayNo(int stayNo) { g_dComIfG_gameInfo.play.getRoomControl()->setStayNo(stayNo); } +inline void dComIfGp_roomControl_setZoneNo(int roomNo, int zoneNo) { + g_dComIfG_gameInfo.play.getRoomControl()->setZoneNo(roomNo, zoneNo); +} + inline dKy_tevstr_c* dComIfGp_roomControl_getTevStr(int i_roomNo) { return g_dComIfG_gameInfo.play.getRoomControl()->getTevStr(i_roomNo); } -inline bool dComIfGp_roomControl_checkStatusFlag(int i_roomNo, u8 flag) { - return g_dComIfG_gameInfo.play.mRoomControl.checkStatusFlag(i_roomNo, flag); +inline BOOL dComIfGp_roomControl_checkStatusFlag(int i_roomNo, u8 flag) { + return g_dComIfG_gameInfo.play.getRoomControl()->checkStatusFlag(i_roomNo, flag); +} + +inline void dComIfGp_roomControl_offStatusFlag(int i_roomNo, u8 flag) { + return g_dComIfG_gameInfo.play.getRoomControl()->offStatusFlag(i_roomNo, flag); +} + +inline void dComIfGp_roomControl_onStatusFlag(int i_roomNo, u8 flag) { + return g_dComIfG_gameInfo.play.getRoomControl()->onStatusFlag(i_roomNo, flag); +} + +inline void dComIfGp_roomControl_setStatusFlag(int i_roomNo, u8 flag) { + return g_dComIfG_gameInfo.play.getRoomControl()->setStatusFlag(i_roomNo, flag); } inline void dComIfGp_roomControl_zoneCountCheck(int i_roomNo) { diff --git a/include/d/com/d_com_static.h b/include/d/com/d_com_static.h index ba51a8f505..540fed86e5 100644 --- a/include/d/com/d_com_static.h +++ b/include/d/com/d_com_static.h @@ -48,6 +48,11 @@ public: /* 80031434 */ static bool check(s8 i_roomNo, cXyz const& i_pos); /* 800315A4 */ static void execute(); + static void reset(int roomNo) { + room_c* room = (room_c*)mRoom; // tmp + room[roomNo].reset(); + } + static u8 mData[1152]; static u8 mRoom[256]; static s16 mSetTop; diff --git a/include/d/d_demo.h b/include/d/d_demo.h index 9238020210..82d79c0b63 100644 --- a/include/d/d_demo.h +++ b/include/d/d_demo.h @@ -273,6 +273,7 @@ public: static dDemo_actor_c* getActor(u8 param_0) { return m_object->getActor(param_0); } static u32 getFrameNoMsg() { return m_frameNoMsg; } static s32 getMode() { return m_mode; } + static int getFrame() { return m_frame; } static JStudio::stb::TControl* getControl() { return m_control; } static bool isStatus(u32 status) { return m_status & status; } static void onStatus(u32 status) { m_status |= status; } diff --git a/include/d/d_stage.h b/include/d/d_stage.h index be7e187b07..e74c7acbb3 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -684,6 +684,7 @@ public: /* 0x68 */ int mVrboxcolNumInfo; }; // Size: 0x6C +class dBgW_base; class dStage_roomStatus_c { public: /* 0x000 */ dStage_roomDt_c mRoomDt; @@ -695,7 +696,7 @@ public: /* 0x3F8 */ s8 mMemBlockID; /* 0x3F9 */ u8 mRegionNo; /* 0x3FC */ int mProcID; - /* 0x400 */ int field_0x400; + /* 0x400 */ dBgW_base* mpBgW; int getZoneNo() const { return mZoneNo; } ~dStage_roomStatus_c() {} @@ -723,6 +724,11 @@ public: /* 0x04 */ void** m_dzs; }; + struct nameData { + /* 0x0 */ s8 m_num; + /* 0x1 */ char m_names[32][10]; // ? + }; + static void createRoomDzs(u8 i_num) { m_roomDzs.create(i_num); } static void* addRoomDzs(u8 i_num, u8 roomNo) { return m_roomDzs.add(i_num, roomNo); } static void removeRoomDzs() { m_roomDzs.remove(); } @@ -744,7 +750,7 @@ public: /* 80024940 */ static char* getArcBank(int); /* 80024954 */ static bool resetArchiveBank(int); /* 80024DB0 */ static void SetTimePass(int); - /* 8025BAAC */ void setZoneNo(int, int); + /* 8025BAAC */ static void setZoneNo(int, int); static s32 GetTimePass(); static s8 getStayNo() { return mStayNo; } @@ -763,14 +769,28 @@ public: static void offNoChangeRoom() { mNoChangeRoom = false; } static void setProcID(u32 id) { mProcID = id; } static u32 getProcID() { return mProcID; } + static void setStatusProcID(int i_roomNo, unsigned int i_id) { mStatus[i_roomNo].mProcID = i_id; } static int getStatusProcID(int i_roomNo) { return mStatus[i_roomNo].mProcID; } static void setFileList2(int i_roomNo, dStage_FileList2_dt_c* list) { mStatus[i_roomNo].mRoomDt.mFileList2Info = list; } - bool checkStatusFlag(int i_roomNo, u8 flag) const { + + static void setBgW(int param_0, dBgW_base* i_bgw) { + mStatus[param_0].mpBgW = i_bgw; + } + + BOOL checkStatusFlag(int i_roomNo, u8 flag) const { return cLib_checkBit(mStatus[i_roomNo].mFlag, flag); } + void offStatusFlag(int i_roomNo, u8 flag) { + return cLib_offBit(mStatus[i_roomNo].mFlag, flag); + } + + void onStatusFlag(int i_roomNo, u8 flag) { + return cLib_onBit(mStatus[i_roomNo].mFlag, flag); + } + static JKRExpHeap* mMemoryBlock[19]; static char mArcBank[32][10]; static dStage_roomStatus_c mStatus[0x40]; @@ -917,6 +937,12 @@ static s32 dStage_stagInfo_GetSaveTbl(stage_stag_info_class* param_0); void dStage_restartRoom(u32 roomParam, u32 mode, int param_2); struct cBgS_GndChk; int dStage_RoomCheck(cBgS_GndChk* gndChk); +void dStage_dt_c_roomReLoader(void* i_data, dStage_dt_c* stageDt, int param_2); +void dStage_dt_c_roomLoader(void* i_data, dStage_dt_c* stageDt, int param_2); + +inline bool dStage_roomRead_dt_c_ChkBg(u8 param_0) { + return param_0 & 0x80; +} inline s32 dStage_roomRead_dt_c_GetVrboxswitch(roomRead_data_class& data) { return data.field_0x2 & 8; @@ -970,6 +996,10 @@ inline s8 dStage_stagInfo_GetTimeH(stage_stag_info_class* p_info) { return p_info->field_0x0c >> 8; } +inline BOOL dStage_staginfo_GetArchiveHeap(stage_stag_info_class* p_info) { + return p_info->field_0x0a & 0x1000; +} + inline u32 dStage_sclsInfo_getSceneLayer(stage_scls_info_class* p_info) { return p_info->field_0xb & 0xF; } diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index 331228746f..9e0c1dbcf6 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -37,7 +37,7 @@ static void GxFog_set(); static void GxXFog_set(); u8 dKy_pol_argument_get(cBgS_PolyInfo const* i_poly); void dKy_Sound_set(cXyz param_0, int param_1, unsigned int param_2, int param_3); - +void dKy_bg_MAxx_proc(void* param_0); struct LIGHT_INFLUENCE { /* 800CFC7C */ ~LIGHT_INFLUENCE() {} diff --git a/include/d/particle/d_particle.h b/include/d/particle/d_particle.h index b2c122b130..2224e4a00f 100644 --- a/include/d/particle/d_particle.h +++ b/include/d/particle/d_particle.h @@ -344,6 +344,8 @@ public: JKRExpHeap* getResHeap() { return m_resHeap; } + void levelAllForceOnEventMove() { field_0x210.allForceOnEventMove(); } + static void onStatus(u8 status) { mStatus |= status; } static void offStatus(u8 status) { mStatus &= ~status; } static bool isStatus(u8 status) { return mStatus & status; } diff --git a/include/f_op/f_op_scene_mng.h b/include/f_op/f_op_scene_mng.h index b3ecb7503b..1e645f11df 100644 --- a/include/f_op/f_op_scene_mng.h +++ b/include/f_op/f_op_scene_mng.h @@ -26,4 +26,8 @@ inline int fopScnM_LayerID(void* proc) { return fpcM_LayerID(proc); } +inline u32 fopScnM_GetParam(void* proc) { + return fpcM_GetParam(proc); +} + #endif diff --git a/include/f_pc/f_pc_manager.h b/include/f_pc/f_pc_manager.h index 7df7c5bc91..add8006b12 100644 --- a/include/f_pc/f_pc_manager.h +++ b/include/f_pc/f_pc_manager.h @@ -10,6 +10,7 @@ #include "f_pc/f_pc_stdcreate_req.h" #include "f_pc/f_pc_executor.h" #include "f_pc/f_pc_leaf.h" +#include "f_pc/f_pc_layer_iter.h" typedef int (*FastCreateReqFunc)(void*); typedef void (*fpcM_ManagementFunc)(void); @@ -66,6 +67,10 @@ inline BOOL fpcM_IsExecuting(unsigned int id) { return fpcEx_IsExist(id); } +inline void* fpcM_LyJudge(process_node_class* i_node, fpcLyIt_JudgeFunc i_func, void* i_data) { + return fpcLyIt_Judge(&i_node->mLayer, i_func, i_data); +} + void fpcM_Draw(void* pProc); s32 fpcM_DrawIterater(fpcM_DrawIteraterFunc pFunc); s32 fpcM_Execute(void* pProc); diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 5e65b58120..3f9d17c756 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -61,6 +61,10 @@ public: } int remove(J3DModelData* i_modelData) { return i_modelData->removeTexMtxAnimator(mpAnm); } + void entryFrame() { entryFrame(getFrame()); } + void entryFrame(f32 frame) { setFrame(frame); } + + J3DAnmTextureSRTKey* getBtkAnm() const { return mpAnm; } private: /* 0x14 */ J3DAnmTextureSRTKey* mpAnm; @@ -87,6 +91,10 @@ public: } int remove(J3DModelData* i_modelData) { return i_modelData->removeTevRegAnimator(mpAnm); } + void entryFrame() { entryFrame(getFrame()); } + void entryFrame(f32 frame) { setFrame(frame); } + + J3DAnmTevRegKey* getBrkAnm() const { return mpAnm; } private: /* 0x14 */ J3DAnmTevRegKey* mpAnm; @@ -508,6 +516,7 @@ J3DModel* mDoExt_J3DModel__create(J3DModelData* i_modelData, u32 param_1, u32 pa void mDoExt_setAraCacheSize(u32 size); int mDoExt_resIDToIndex(JKRArchive* p_archive, u16 id); void mDoExt_modelEntryDL(J3DModel* i_model); +void mDoExt_setupStageTexture(J3DModelData* i_modelData); struct JUTFont; JUTFont* mDoExt_getMesgFont(); diff --git a/include/m_Do/m_Do_lib.h b/include/m_Do/m_Do_lib.h index 7c51c8b22d..568000f1b4 100644 --- a/include/m_Do/m_Do_lib.h +++ b/include/m_Do/m_Do_lib.h @@ -8,6 +8,15 @@ struct mDoLib_clipper { /* 8001528C */ void setup(f32, f32, f32, f32); + static void changeFar(f32 far) { + mClipper.setFar(far); + mClipper.calcViewFrustum(); + } + + static u32 clip(const Mtx m, const Vec* param_1, const Vec* param_2) { + return mClipper.clip(m, (Vec*)param_1, (Vec*)param_2); + } + static J3DUClipper mClipper; static f32 mSystemFar; static f32 mFovyRate; diff --git a/rel/d/a/d_a_bg/Makefile b/rel/d/a/d_a_bg/Makefile index 4790e03295..e655d9c8ff 100644 --- a/rel/d/a/d_a_bg/Makefile +++ b/rel/d/a/d_a_bg/Makefile @@ -17,6 +17,7 @@ M3_O_FILES := \ M3_LIBS := \ M3_CFLAGS := \ + -pool off \ -sdata 0 \ -sdata2 0 \ diff --git a/rel/d/a/d_a_bg/d_a_bg.cpp b/rel/d/a/d_a_bg/d_a_bg.cpp index 13e34c4874..2b0ba11195 100644 --- a/rel/d/a/d_a_bg/d_a_bg.cpp +++ b/rel/d/a/d_a_bg/d_a_bg.cpp @@ -4,201 +4,76 @@ // #include "rel/d/a/d_a_bg/d_a_bg.h" +#include "MSL_C/MSL_Common/Src/mem.h" +#include "d/bg/d_bg_w_kcol.h" +#include "d/com/d_com_inf_game.h" +#include "d/com/d_com_static.h" +#include "d/d_demo.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "m_Do/m_Do_lib.h" // // Types: // -struct mDoMtx_stack_c { - static u8 now[48]; -}; - -struct mDoLib_clipper { - static u8 mClipper[92]; -}; - -struct J3DMaterialTable {}; - -struct J3DAnmTextureSRTKey {}; - -struct mDoExt_btkAnm { - /* 8000D63C */ void init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16); - /* 8000D6D8 */ void entry(J3DMaterialTable*, f32); -}; - -struct J3DAnmTevRegKey {}; - -struct mDoExt_brkAnm { - /* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16); - /* 8000D7A8 */ void entry(J3DMaterialTable*, f32); -}; - -struct mDoExt_baseAnm { - /* 8000D428 */ void play(); -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daSus_c { - struct room_c { - /* 800311FC */ void reset(); - }; - - static u8 mRoom[256]; -}; - struct daGrass_c { - /* 800319C8 */ void deleteRoomGrass(int); - /* 80031A20 */ void deleteRoomFlower(int); + /* 800319C8 */ static void deleteRoomGrass(int); + /* 80031A20 */ static void deleteRoomFlower(int); }; -struct daBg_c { - /* 80457BF8 */ void setArcName(); - /* 804582B8 */ void createHeap(); - /* 80458788 */ ~daBg_c(); - /* 804588C4 */ void draw(); - /* 8045906C */ void create(); -}; - -struct J3DModelData {}; - -struct daBg_btkAnm_c { - /* 80457F34 */ void create(J3DModelData*, J3DAnmTextureSRTKey*, int); +class daBg_btkAnm_c { +public: + /* 80457F34 */ int create(J3DModelData*, J3DAnmTextureSRTKey*, int); /* 80458088 */ void entry(J3DModelData*); /* 804580CC */ void play(); + + void entryFrame() { mpBtk->entryFrame(); } + void playspeed(f32 speed) { mpBtk->setPlaySpeed(speed); } + + /* 0x0 */ mDoExt_btkAnm* mpBtk; + /* 0x4 */ u8 field_0x4; }; -struct daBg_brkAnm_c { - /* 804580F0 */ void create(J3DModelData*, J3DAnmTevRegKey*, int); +class daBg_brkAnm_c { +public: + /* 804580F0 */ int create(J3DModelData*, J3DAnmTevRegKey*, int); /* 80458230 */ void entry(J3DModelData*); /* 80458274 */ void play(); + + void entryFrame() { mpBrk->entryFrame(); } + void entryFrame(f32 frame) { mpBrk->entryFrame(frame); } + f32 getEndFrame() { return mpBrk->getEndFrame(); } + + /* 0x0 */ mDoExt_brkAnm* mpBrk; + /* 0x4 */ u8 field_0x4; }; -struct dSv_event_c { - /* 800349BC */ void isEventBit(u16) const; -}; +struct daBg_unkData { + /* 0x00 */ J3DModel* mpBgModel; + /* 0x04 */ daBg_btkAnm_c* mpBgBtk; + /* 0x08 */ daBg_brkAnm_c* mpBgBrk; + /* 0x0C */ dKy_tevstr_c* mpTevStr; + /* 0x10 */ f32 mBtkAnmSpeed; +}; // Size: 0x14 -struct dStage_roomControl_c { - /* 800243B0 */ void getMemoryBlock(int); +class daBg_c : public fopAc_ac_c { +public: + /* 80457BF8 */ const char* setArcName(); + /* 804582B8 */ int createHeap(); + /* 80458788 */ ~daBg_c(); + /* 804588C4 */ int draw(); + /* 8045906C */ int create(); - static u8 mStatus[65792]; -}; + inline int execute(); -struct dKy_tevstr_c {}; - -struct cXyz {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C37C */ void getRes(char const*, char const*, dRes_info_c*, int); -}; - -struct dDemo_c { - static u8 m_frame[4]; -}; - -struct dBgW_Base {}; - -struct dBgWKCol { - /* 8007E6F4 */ dBgWKCol(); - /* 8007E804 */ void create(void*, void*); -}; - -struct dBgW { - /* 8007B970 */ dBgW(); -}; - -struct dBgS { - /* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*); -}; - -struct cBgD_t {}; - -struct cBgW { - /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]); -}; - -struct cBgS { - /* 80074250 */ void Release(dBgW_Base*); -}; - -struct Vec {}; - -struct JUTNameTab { - /* 802DEAF8 */ void getName(u16) const; -}; - -struct JKRHeap {}; - -struct JKRSolidHeap { - /* 802D0A24 */ void create(u32, JKRHeap*, bool); - /* 802D0BF4 */ void adjustSize(); -}; - -struct J3DUClipper { - /* 8027378C */ void calcViewFrustum(); - /* 80273A44 */ void clip(f32 const (*)[4], Vec*, Vec*) const; -}; - -struct J3DTexNoAnm { - /* 80457E20 */ ~J3DTexNoAnm(); - /* 80457E68 */ J3DTexNoAnm(); - /* 8045933C */ void calc(u16*) const; -}; - -struct J3DTexMtxAnm { - /* 80457E8C */ ~J3DTexMtxAnm(); - /* 80457EC8 */ J3DTexMtxAnm(); -}; - -struct J3DTevKColorAnm { - /* 80457D78 */ ~J3DTevKColorAnm(); - /* 80457DB4 */ J3DTevKColorAnm(); -}; - -struct J3DTevColorAnm { - /* 80457DCC */ ~J3DTevColorAnm(); - /* 80457E08 */ J3DTevColorAnm(); -}; - -struct J3DModel {}; - -struct J3DMaterialAnm { - /* 8032C320 */ void initialize(); -}; - -struct J3DMatColorAnm { - /* 80457EE0 */ ~J3DMatColorAnm(); - /* 80457F1C */ J3DMatColorAnm(); -}; - -struct J3DLightObj { - /* 80458750 */ J3DLightObj(); -}; - -struct J3DLightInfo { - /* 803256C4 */ void operator=(J3DLightInfo const&); -}; - -struct J3DFrameCtrl { - /* 803283FC */ void init(s16); - /* 80458040 */ ~J3DFrameCtrl(); -}; - -struct J3DAnmTexPattern { - /* 8032AF50 */ void getTexNo(u16, u16*) const; -}; +private: + /* 0x568 */ u8 field_0x568[0x570 - 0x568]; + /* 0x570 */ daBg_unkData mBgData[6]; + /* 0x5E8 */ dBgW* mpBgW; + /* 0x5EC */ dBgWKCol* mpKCol; + /* 0x5F0 */ u8 field_0x5f0; + /* 0x5F0 */ u8 field_0x5f1; +}; // Size: 0x5F4 // // Forward References: @@ -285,8 +160,6 @@ extern "C" void __as__12J3DLightInfoFRC12J3DLightInfo(); extern "C" void init__12J3DFrameCtrlFs(); extern "C" void getTexNo__16J3DAnmTexPatternCFUsPUs(); extern "C" void initialize__14J3DMaterialAnmFv(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); extern "C" void __construct_array(); extern "C" void _savegpr_15(); extern "C" void _savegpr_20(); @@ -298,45 +171,31 @@ extern "C" void _restgpr_20(); extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_29(); -extern "C" void memcmp(); -extern "C" void strcmp(); -extern "C" void strncpy(); -extern "C" extern u8 const j3dDefaultLightInfo[52]; extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" extern void* __vt__14J3DMaterialAnm[4]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" u8 mClipper__14mDoLib_clipper[92]; extern "C" u8 mStatus__20dStage_roomControl_c[65792]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" u8 mRoom__7daSus_c[256]; -extern "C" extern u8 g_env_light[4880]; -extern "C" extern u8 j3dSys[284]; extern "C" u8 m_frame__7dDemo_c[4]; // // Declarations: // -/* ############################################################################################## */ -/* 804595B8-804595D8 000000 0020+00 1/1 0/0 0/0 .bss arcName$3823 */ -static u8 arcName[32]; - /* 80457BF8-80457C38 000078 0040+00 1/1 0/0 0/0 .text setArcName__6daBg_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBg_c::setArcName() { - nofralloc -#include "asm/rel/d/a/d_a_bg/d_a_bg/setArcName__6daBg_cFv.s" +const char* daBg_c::setArcName() { + static char arcName[32]; + + strncpy(arcName, dComIfG_getRoomArcName(fopAcM_GetParam(this)), sizeof(arcName)); + return arcName; } -#pragma pop /* 80457C38-80457D78 0000B8 0140+00 2/2 0/0 0/0 .text createMatAnm__FP12J3DModelDataUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void createMatAnm(J3DModelData* param_0, u16 param_1) { +static asm int createMatAnm(J3DModelData* param_0, u16 param_1) { nofralloc #include "asm/rel/d/a/d_a_bg/d_a_bg/createMatAnm__FP12J3DModelDataUs.s" } @@ -385,304 +244,31 @@ asm J3DTevColorAnm::J3DTevColorAnm() { /* ############################################################################################## */ /* 80459424-80459468 000000 0042+02 1/1 0/0 0/0 .data * l_modelName$localstatic3$createHeap__6daBg_cFv */ -SECTION_DATA static u8 data_80459424[66 + 2 /* padding */] = { - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x2E, - 0x62, - 0x6D, - 0x64, - 0x00, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x31, - 0x2E, - 0x62, - 0x6D, - 0x64, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x32, - 0x2E, - 0x62, - 0x6D, - 0x64, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x33, - 0x2E, - 0x62, - 0x6D, - 0x64, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x34, - 0x2E, - 0x62, - 0x6D, - 0x64, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x35, - 0x2E, - 0x62, - 0x6D, - 0x64, - 0x00, - /* padding */ - 0x00, - 0x00, +SECTION_DATA static char l_modelName[6][11] = { + "model.bmd", "model1.bmd", "model2.bmd", "model3.bmd", "model4.bmd", "model5.bmd", }; /* 80459468-804594AC 000044 0042+02 1/1 0/0 0/0 .data * l_modelName2$localstatic4$createHeap__6daBg_cFv */ -SECTION_DATA static u8 data_80459468[66 + 2 /* padding */] = { - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x2E, - 0x62, - 0x64, - 0x6C, - 0x00, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x31, - 0x2E, - 0x62, - 0x64, - 0x6C, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x32, - 0x2E, - 0x62, - 0x64, - 0x6C, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x33, - 0x2E, - 0x62, - 0x64, - 0x6C, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x34, - 0x2E, - 0x62, - 0x64, - 0x6C, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x35, - 0x2E, - 0x62, - 0x64, - 0x6C, - 0x00, - /* padding */ - 0x00, - 0x00, +SECTION_DATA static char l_modelName2[6][11] = { + "model.bdl", "model1.bdl", "model2.bdl", "model3.bdl", "model4.bdl", "model5.bdl", }; /* 804594AC-804594F0 000088 0042+02 1/1 0/0 0/0 .data l_btkName$localstatic5$createHeap__6daBg_cFv */ -SECTION_DATA static u8 data_804594AC[66 + 2 /* padding */] = { - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x2E, - 0x62, - 0x74, - 0x6B, - 0x00, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x31, - 0x2E, - 0x62, - 0x74, - 0x6B, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x32, - 0x2E, - 0x62, - 0x74, - 0x6B, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x33, - 0x2E, - 0x62, - 0x74, - 0x6B, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x34, - 0x2E, - 0x62, - 0x74, - 0x6B, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x35, - 0x2E, - 0x62, - 0x74, - 0x6B, - 0x00, - /* padding */ - 0x00, - 0x00, +SECTION_DATA static char l_btkName[6][11] = { + "model.btk", "model1.btk", "model2.btk", "model3.btk", "model4.btk", "model5.btk", }; /* 804594F0-80459534 0000CC 0042+02 1/1 0/0 0/0 .data l_brkName$localstatic6$createHeap__6daBg_cFv */ -SECTION_DATA static u8 data_804594F0[66 + 2 /* padding */] = { - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x2E, - 0x62, - 0x72, - 0x6B, - 0x00, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x31, - 0x2E, - 0x62, - 0x72, - 0x6B, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x32, - 0x2E, - 0x62, - 0x72, - 0x6B, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x33, - 0x2E, - 0x62, - 0x72, - 0x6B, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x34, - 0x2E, - 0x62, - 0x72, - 0x6B, - 0x00, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x6C, - 0x35, - 0x2E, - 0x62, - 0x72, - 0x6B, - 0x00, - /* padding */ - 0x00, - 0x00, +SECTION_DATA static char l_brkName[6][11] = { + "model.brk", "model1.brk", "model2.brk", "model3.brk", "model4.brk", "model5.brk", }; /* 80459534-8045954C 000110 0018+00 1/1 0/0 0/0 .data l_tevStrType$localstatic3$draw__6daBg_cFv */ -SECTION_DATA static u8 data_80459534[24] = { - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x22, - 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, +SECTION_DATA static int l_tevStrType[6] = { + 32, 33, 34, 35, 35, 32, }; /* 8045954C-8045956C -00001 0020+00 1/0 0/0 0/0 .data l_daBg_Method */ @@ -792,20 +378,47 @@ COMPILER_STRIP_GATE(0x80459380, &lit_3900); /* 80457F34-80458040 0003B4 010C+00 1/1 0/0 0/0 .text * create__13daBg_btkAnm_cFP12J3DModelDataP19J3DAnmTextureSRTKeyi */ +// matches with literals +#ifdef NONMATCHING +int daBg_btkAnm_c::create(J3DModelData* i_modelData, J3DAnmTextureSRTKey* i_btk, int i_anmPlay) { + mpBtk = new mDoExt_btkAnm(); + + if (mpBtk == NULL) { + return 0; + } + + if (!mpBtk->init(i_modelData, i_btk, i_anmPlay, -1, 1.0f, 0, -1)) { + return 0; + } + + J3DAnmTextureSRTKey* btk = mpBtk->getBtkAnm(); + for (u16 i = 0; i < btk->getUpdateMaterialNum(); i++) { + u16 matID = btk->getUpdateMaterialID(i); + + if (!createMatAnm(i_modelData, matID)) { + return 0; + } + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daBg_btkAnm_c::create(J3DModelData* param_0, J3DAnmTextureSRTKey* param_1, int param_2) { +asm int daBg_btkAnm_c::create(J3DModelData* param_0, J3DAnmTextureSRTKey* param_1, int param_2) { nofralloc #include "asm/rel/d/a/d_a_bg/d_a_bg/create__13daBg_btkAnm_cFP12J3DModelDataP19J3DAnmTextureSRTKeyi.s" } #pragma pop +#endif /* 80458040-80458088 0004C0 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DFrameCtrl::~J3DFrameCtrl() { +// asm J3DFrameCtrl::~J3DFrameCtrl() { +extern "C" asm void __dt__12J3DFrameCtrlFv() { nofralloc #include "asm/rel/d/a/d_a_bg/d_a_bg/__dt__12J3DFrameCtrlFv.s" } @@ -822,6 +435,13 @@ SECTION_RODATA static u8 const lit_3914[4] = { COMPILER_STRIP_GATE(0x80459384, &lit_3914); /* 80458088-804580CC 000508 0044+00 1/1 0/0 0/0 .text entry__13daBg_btkAnm_cFP12J3DModelData */ +// matches with literals +#ifdef NONMATCHING +void daBg_btkAnm_c::entry(J3DModelData* i_modelData) { + mpBtk->entry(i_modelData, 0.0f); + field_0x4 = 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -830,29 +450,66 @@ asm void daBg_btkAnm_c::entry(J3DModelData* param_0) { #include "asm/rel/d/a/d_a_bg/d_a_bg/entry__13daBg_btkAnm_cFP12J3DModelData.s" } #pragma pop +#endif /* 804580CC-804580F0 00054C 0024+00 1/1 0/0 0/0 .text play__13daBg_btkAnm_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBg_btkAnm_c::play() { - nofralloc -#include "asm/rel/d/a/d_a_bg/d_a_bg/play__13daBg_btkAnm_cFv.s" +void daBg_btkAnm_c::play() { + mpBtk->play(); } -#pragma pop /* 804580F0-80458230 000570 0140+00 1/1 0/0 0/0 .text * create__13daBg_brkAnm_cFP12J3DModelDataP15J3DAnmTevRegKeyi */ +// matches with literals +#ifdef NONMATCHING +int daBg_brkAnm_c::create(J3DModelData* i_modelData, J3DAnmTevRegKey* i_brk, int i_anmPlay) { + mpBrk = new mDoExt_brkAnm(); + + if (mpBrk == NULL) { + return 0; + } + + if (!mpBrk->init(i_modelData, i_brk, i_anmPlay, -1, 1.0f, 0, -1)) { + return 0; + } + + J3DAnmTevRegKey* brk = mpBrk->getBrkAnm(); + for (u16 i = 0; i < brk->getCRegUpdateMaterialNum(); i++) { + u16 matID = brk->getCRegUpdateMaterialID(i); + + if (!createMatAnm(i_modelData, matID)) { + return 0; + } + } + + for (u16 i = 0; i < brk->getKRegUpdateMaterialNum(); i++) { + u16 matID = brk->getKRegUpdateMaterialID(i); + + if (!createMatAnm(i_modelData, matID)) { + return 0; + } + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daBg_brkAnm_c::create(J3DModelData* param_0, J3DAnmTevRegKey* param_1, int param_2) { +asm int daBg_brkAnm_c::create(J3DModelData* param_0, J3DAnmTevRegKey* param_1, int param_2) { nofralloc #include "asm/rel/d/a/d_a_bg/d_a_bg/create__13daBg_brkAnm_cFP12J3DModelDataP15J3DAnmTevRegKeyi.s" } #pragma pop +#endif /* 80458230-80458274 0006B0 0044+00 1/1 0/0 0/0 .text entry__13daBg_brkAnm_cFP12J3DModelData */ +// matches with literals +#ifdef NONMATCHING +void daBg_brkAnm_c::entry(J3DModelData* i_modelData) { + mpBrk->entry(i_modelData, 0.0f); + field_0x4 = 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -861,26 +518,17 @@ asm void daBg_brkAnm_c::entry(J3DModelData* param_0) { #include "asm/rel/d/a/d_a_bg/d_a_bg/entry__13daBg_brkAnm_cFP12J3DModelData.s" } #pragma pop +#endif /* 80458274-80458298 0006F4 0024+00 1/1 0/0 0/0 .text play__13daBg_brkAnm_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBg_brkAnm_c::play() { - nofralloc -#include "asm/rel/d/a/d_a_bg/d_a_bg/play__13daBg_brkAnm_cFv.s" +void daBg_brkAnm_c::play() { + mpBrk->play(); } -#pragma pop /* 80458298-804582B8 000718 0020+00 1/1 0/0 0/0 .text checkCreateHeap__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void checkCreateHeap(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_bg/d_a_bg/checkCreateHeap__FP10fopAc_ac_c.s" +static int checkCreateHeap(fopAc_ac_c* i_this) { + return static_cast(i_this)->createHeap(); } -#pragma pop /* ############################################################################################## */ /* 80459388-8045938C 000014 0004+00 1/1 0/0 0/0 .rodata @4125 */ @@ -900,44 +548,168 @@ SECTION_DEAD static char const* const stringBase_804593C6 = "room.plc"; #pragma pop /* 804582B8-80458750 000738 0498+00 2/2 0/0 1/1 .text createHeap__6daBg_cFv */ +// regalloc +#ifdef NONMATCHING +int daBg_c::createHeap() { + const char* arcName = setArcName(); + s32 prm = fopAcM_GetParam(this); + daBg_unkData* bgData = mBgData; + + for (int i = 0; i < 6; bgData++, i++) { + J3DModelData* modelData = (J3DModelData*)dComIfG_getStageRes(arcName, l_modelName[i]); + if (modelData == NULL) { + modelData = (J3DModelData*)dComIfG_getStageRes(arcName, l_modelName2[i]); + } + + if (modelData != NULL) { + mDoExt_setupStageTexture(modelData); + u32 modelFlags = 0x11000084; + + for (u16 j = 0; j < modelData->getMaterialNum(); j++) { + modelData->getMaterialNodePointer(j)->setMaterialAnm(NULL); + } + + J3DAnmTextureSRTKey* btk = + (J3DAnmTextureSRTKey*)dComIfG_getStageRes(arcName, l_btkName[i]); + if (btk != NULL) { + bgData->mpBgBtk = new daBg_btkAnm_c(); + if (bgData->mpBgBtk == NULL) { + return 0; + } + + if (!bgData->mpBgBtk->create(modelData, btk, TRUE)) { + return 0; + } + + modelFlags |= 0x1200; + } else { + bgData->mpBgBtk = NULL; + } + bgData->mBtkAnmSpeed = -1.0f; + + J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getStageRes(arcName, l_brkName[i]); + if (brk != NULL) { + bgData->mpBgBrk = new daBg_brkAnm_c(); + if (bgData->mpBgBrk == NULL) { + return 0; + } + + if (!bgData->mpBgBrk->create(modelData, brk, TRUE)) { + return 0; + } + } else { + bgData->mpBgBrk = NULL; + } + + for (u16 j = 0; j < modelData->getMaterialNum(); j++) { + const char* name = modelData->getMaterialName()->getName(j); + + if (name[3] == 'M' && name[4] == 'A') { + if (!memcmp(&name[5], &"00", 2)) { + modelFlags |= 0x1200; + } else if (!memcmp(&name[5], &"01", 2)) { + modelFlags |= 0x20000000; + } else if (!memcmp(&name[5], &"12", 2) || !memcmp(&name[5], &"18", 2)) { + field_0x5f0 = 1; + } + } + } + + bgData->mpBgModel = mDoExt_J3DModel__create(modelData, 0, modelFlags); + if (bgData->mpBgModel == NULL) { + return 0; + } + + bgData->mpTevStr = new dKy_tevstr_c(); + if (bgData->mpTevStr == NULL) { + return 0; + } + + dKy_tevstr_init(bgData->mpTevStr, prm, 0xFF); + } + } + + cBgD_t* dzb = (cBgD_t*)dComIfG_getStageRes(arcName, "room.dzb"); + if (dzb != NULL) { + mpKCol = NULL; + mpBgW = new dBgW(); + if (mpBgW == NULL) { + return 0; + } + + if (mpBgW->Set(dzb, 0x20, NULL)) { + return 0; + } + + dStage_roomControl_c::setBgW(prm, (dBgW_base*)mpBgW); + mpBgW->SetPriority(dBgW_Base::PRIORITY_0); + } else { + void* kcl = dComIfG_getStageRes(arcName, "room.kcl"); + void* plc = dComIfG_getStageRes(arcName, "room.plc"); + + if (kcl != NULL && plc != NULL) { + mpBgW = NULL; + mpKCol = new dBgWKCol(); + if (mpKCol == NULL) { + return 0; + } + + mpKCol->create(kcl, plc); + mpKCol->SetPriority(dBgW_Base::PRIORITY_0); + } else { + mpBgW = NULL; + mpKCol = NULL; + } + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daBg_c::createHeap() { +asm int daBg_c::createHeap() { nofralloc #include "asm/rel/d/a/d_a_bg/d_a_bg/createHeap__6daBg_cFv.s" } #pragma pop +#endif /* 80458750-80458788 000BD0 0038+00 1/1 0/0 0/0 .text __ct__11J3DLightObjFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DLightObj::J3DLightObj() { +// asm J3DLightObj::J3DLightObj() { +extern "C" asm void __ct__11J3DLightObjFv() { nofralloc #include "asm/rel/d/a/d_a_bg/d_a_bg/__ct__11J3DLightObjFv.s" } #pragma pop /* 80458788-804588A4 000C08 011C+00 1/1 0/0 0/0 .text __dt__6daBg_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daBg_c::~daBg_c() { - nofralloc -#include "asm/rel/d/a/d_a_bg/d_a_bg/__dt__6daBg_cFv.s" +daBg_c::~daBg_c() { + int roomNo = fopAcM_GetParam(this); + + if (mHeap != NULL && mpBgW != NULL) { + dComIfG_Bgsp().Release(mpBgW); + dStage_roomControl_c::setBgW(roomNo, NULL); + } + + if (mHeap != NULL && mpKCol != NULL) { + dComIfG_Bgsp().Release(mpKCol); + dStage_roomControl_c::setBgW(roomNo, NULL); + } + + daGrass_c::deleteRoomGrass(roomNo); + daGrass_c::deleteRoomFlower(roomNo); + daSus_c::reset(roomNo); + dComIfGp_roomControl_offStatusFlag(roomNo, 0x10); } -#pragma pop /* 804588A4-804588C4 000D24 0020+00 1/0 0/0 0/0 .text daBg_Draw__FP6daBg_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daBg_Draw(daBg_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_bg/d_a_bg/daBg_Draw__FP6daBg_c.s" +static int daBg_Draw(daBg_c* i_this) { + return i_this->draw(); } -#pragma pop /* ############################################################################################## */ /* 8045938C-80459390 000018 0004+00 0/1 0/0 0/0 .rodata @4479 */ @@ -987,64 +759,329 @@ SECTION_DEAD static char const* const stringBase_80459418 = "MA00_Kusa"; #pragma pop /* 804588C4-80458F38 000D44 0674+00 1/1 0/0 0/0 .text draw__6daBg_cFv */ +#ifdef NONMATCHING +int daBg_c::draw() { + int roomNo = fopAcM_GetParam(this); + daBg_unkData* bgData = mBgData; + + dComIfGd_setListBG(); + mDoLib_clipper::changeFar(1000000.0f); + + for (int i = 0; i < 6; bgData++, i++) { + if (bgData->mpBgModel != NULL) { + J3DModelData* modelData = bgData->mpBgModel->getModelData(); + + if (bgData->mpBgBtk != NULL) { + bgData->mpBgBtk->entryFrame(); + } + + if (bgData->mpBgBrk != NULL) { + if (field_0x5f0 == 9) { + bgData->mpBgBrk->entryFrame(bgData->mpBgBrk->getEndFrame()); + } else { + bgData->mpBgBrk->entryFrame(); + } + } + + bgData->mpBgModel->calc(); + + for (u16 j = 0; j < modelData->getShapeNum(); j++) { + J3DShape* shape = modelData->getShapeNodePointer(j); + + if (mDoLib_clipper::clip(j3dSys.getViewMtx(), shape->getMin(), shape->getMax())) { + shape->hide(); + } else { + shape->show(); + } + } + + g_env_light.settingTevStruct(l_tevStrType[i], NULL, bgData->mpTevStr); + g_env_light.setLightTevColorType_MAJI(bgData->mpBgModel, bgData->mpTevStr); + dKy_bg_MAxx_proc(bgData->mpBgModel); + + if (bgData->mpBgModel != NULL) { + modelData = bgData->mpBgModel->getModelData(); + + for (u16 j = 0; j < modelData->getMaterialNum(); j++) { + J3DMaterial* mat = modelData->getMaterialNodePointer(j); + const char* name = modelData->getMaterialName()->getName(j); + + if (!memcmp(&name[3], &"MA12", 4)) { + if (g_env_light.mColPatCurr == 6) { + field_0x5f0 = 0; + } + } else if (!memcmp(&name[3], &"MA18", 4)) { + if (dDemo_c::getFrame() > 1117) { + field_0x5f0 = 0; + } + + if (i_dComIfGs_isEventBit(0x0D04)) { + field_0x5f0 = 9; + } + } else if (!memcmp(&name[3], &"MA15", 4)) { + if (dComIfGs_BossLife_public_Get() == -1) { + field_0x5f0 = 0; + } else { + field_0x5f0 = dComIfGs_BossLife_public_Get() + 1; + } + } else if (!memcmp(&name[3], &"MA09", 4)) { + bgData->mBtkAnmSpeed = 1.0f - (1.0f - g_env_light.mWaterSurfaceShineRate); + } else if (!memcmp(&name[3], &"MA05", 4)) { + bgData->mpTevStr->field_0x378 |= j; + } + + if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") || + !strcmp(dComIfGp_getStartStageName(), "R_SP127")) { + if (!memcmp(&name[3], &"MA00_Enkei_Tree_Color", 21) || + !memcmp(&name[3], &"MA00_Gake", 9) || + !memcmp(&name[3], &"MA00_Kusa", 9)) { + J3DGXColorS10 colorS10; + J3DGXColor color; + + s16 var_r0; + s16 var_r3; + s16 var_r5; + switch (g_env_light.field_0x12fe) { + case 2: + var_r5 = -3; + var_r0 = 0; + var_r3 = -4; + break; + case 3: + var_r5 = 0; + var_r0 = -10; + var_r3 = -13; + break; + case 4: + var_r5 = 18; + var_r0 = 17; + var_r3 = 25; + break; + default: + var_r5 = 0; + var_r0 = 0; + var_r3 = 0; + break; + } + + f32 temp_f2 = bgData->mpTevStr->mColorC0.r / 10.0f; + f32 var_f2 = temp_f2 * temp_f2; + if (var_f2 > 1.0f) { + var_f2 = 1.0f; + } + colorS10.mColor.r = var_r5 * var_f2; + + f32 temp_f2_2 = bgData->mpTevStr->mColorC0.g / 10.0f; + f32 var_f2_2 = temp_f2_2 * temp_f2_2; + if (var_f2_2 > 1.0f) { + var_f2_2 = 1.0f; + } + colorS10.mColor.g = var_r0 * var_f2_2; + + f32 temp_f2_3 = bgData->mpTevStr->mColorC0.b / 10.0f; + f32 var_f2_3 = temp_f2_3 * temp_f2_3; + if (var_f2_3 > 1.0f) { + var_f2_3 = 1.0f; + } + colorS10.mColor.b = var_r3 * var_f2_3; + colorS10.mColor.a = 255; + mat->setTevColor(0, &colorS10); + + color.r = 0; + color.g = 0; + color.b = 0; + color.a = 255; + mat->setTevKColor(0, &color); + } + } + } + + mDoExt_modelEntryDL(bgData->mpBgModel); + dComIfGd_setListBG(); + } + } + } + + dComIfGd_setList(); + g_env_light.settingTevStruct(0x10, NULL, dComIfGp_roomControl_getTevStr(roomNo)); + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daBg_c::draw() { +asm int daBg_c::draw() { nofralloc #include "asm/rel/d/a/d_a_bg/d_a_bg/draw__6daBg_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 804593A4-804593A8 000030 0004+00 1/1 0/0 0/0 .rodata @4524 */ SECTION_RODATA static f32 const lit_4524 = 100.0f; COMPILER_STRIP_GATE(0x804593A4, &lit_4524); +int daBg_c::execute() { + daBg_unkData* bgData = mBgData; + + for (int i = 0; i < 6; i++) { + if (bgData->mpBgBtk != NULL) { + if (field_0x5f1 != 0) { + bgData->mpBgBtk->playspeed((field_0x5f1 - 1) / 100.0f); + } + + if (bgData->mBtkAnmSpeed >= 0.0f) { + bgData->mpBgBtk->playspeed(bgData->mBtkAnmSpeed); + } + bgData->mpBgBtk->play(); + } + + if (bgData->mpBgBrk != NULL && field_0x5f0 == 0) { + bgData->mpBgBrk->play(); + } + + bgData++; + } + + return 1; +} + /* 80458F38-8045901C 0013B8 00E4+00 1/0 0/0 0/0 .text daBg_Execute__FP6daBg_c */ +// matches with literals +#ifdef NONMATCHING +static int daBg_Execute(daBg_c* i_this) { + return i_this->execute(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void daBg_Execute(daBg_c* param_0) { +static asm int daBg_Execute(daBg_c* i_this) { nofralloc #include "asm/rel/d/a/d_a_bg/d_a_bg/daBg_Execute__FP6daBg_c.s" } #pragma pop +#endif /* 8045901C-80459024 00149C 0008+00 1/0 0/0 0/0 .text daBg_IsDelete__FP6daBg_c */ -static bool daBg_IsDelete(daBg_c* param_0) { - return true; +static int daBg_IsDelete(daBg_c* i_this) { + return 1; } /* 80459024-8045904C 0014A4 0028+00 1/0 0/0 0/0 .text daBg_Delete__FP6daBg_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daBg_Delete(daBg_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_bg/d_a_bg/daBg_Delete__FP6daBg_c.s" +static int daBg_Delete(daBg_c* i_this) { + i_this->~daBg_c(); + return 1; } -#pragma pop /* 8045904C-8045906C 0014CC 0020+00 1/0 0/0 0/0 .text daBg_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daBg_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_bg/d_a_bg/daBg_Create__FP10fopAc_ac_c.s" +static int daBg_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); } -#pragma pop /* 8045906C-8045933C 0014EC 02D0+00 1/1 0/0 0/0 .text create__6daBg_cFv */ +// regalloc +#ifdef NONMATCHING +int daBg_c::create() { + int roomNo = fopAcM_GetParam(this); + field_0x5f0 = 0; + field_0x5f1 = 0; + + if (mHeap == NULL) { + if (!fopAcM_CheckCondition(this, 8)) { + new (this) daBg_c(); + fopAcM_OnCondition(this, 8); + } + + orig.mRoomNo = roomNo; + current.mRoomNo = roomNo; + + JKRExpHeap* heap = dStage_roomControl_c::getMemoryBlock(roomNo); + if (heap != NULL) { + mHeap = JKRSolidHeap::create(-1, heap, false); + + JKRHeap* old = mDoExt_setCurrentHeap(mHeap); + createHeap(); + + mDoExt_setCurrentHeap(old); + mHeap->adjustSize(); + } else if (!fopAcM_entrySolidHeap(this, checkCreateHeap, 0x80020040)) { + return cPhs_ERROR_e; + } + + daBg_unkData* bgData = mBgData; + for (int i = 0; i < 6; i++) { + if (bgData->mpBgModel != NULL) { + J3DModelData* modelData = bgData->mpBgModel->getModelData(); + + if (bgData->mpBgBtk != NULL) { + bgData->mpBgBtk->entry(modelData); + } + + if (bgData->mpBgBrk != NULL) { + bgData->mpBgBrk->entry(modelData); + } + } + bgData++; + } + + f32 transX; + f32 transY; + s16 angle; + if (dComIfGp_getMapTrans(roomNo, &transX, &transY, &angle)) { + daBg_unkData* bgData_ = mBgData; + for (int i = 0; i < 6; i++) { + J3DModel* model = bgData_->mpBgModel; + + if (model != NULL) { + mDoMtx_stack_c::transS(transX, 0.0f, transY); + mDoMtx_stack_c::YrotM(angle); + model->i_setBaseTRMtx(mDoMtx_stack_c::get()); + + J3DModelData* modelData = model->getModelData(); + for (u16 j = 0; j < modelData->getMaterialNum(); j++) { + const char* name = modelData->getMaterialName()->getName(j); + + if (name[3] == 'M' && name[4] == 'A' && name[5] == '0' && name[6] == '8') { + modelData->getMaterialNodePointer(j)->getShape()->setTexMtxLoadType( + 0x2000); + } + } + } + bgData_++; + } + } + + if (mpBgW != NULL) { + if (dComIfG_Bgsp().Regist(mpBgW, this)) { + return cPhs_ERROR_e; + } + } + + if (mpKCol != NULL) { + if (dComIfG_Bgsp().Regist(mpKCol, this)) { + return cPhs_ERROR_e; + } + } + + dKy_tevstr_init(dComIfGp_roomControl_getTevStr(roomNo), roomNo, 0xFF); + } + + dComIfGp_roomControl_onStatusFlag(roomNo, 0x10); + return cPhs_COMPLEATE_e; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daBg_c::create() { +asm int daBg_c::create() { nofralloc #include "asm/rel/d/a/d_a_bg/d_a_bg/create__6daBg_cFv.s" } #pragma pop +#endif /* 8045933C-8045936C 0017BC 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */ #pragma push diff --git a/src/d/com/d_com_inf_game.cpp b/src/d/com/d_com_inf_game.cpp index 1c6dfc1dcb..ccf5326297 100644 --- a/src/d/com/d_com_inf_game.cpp +++ b/src/d/com/d_com_inf_game.cpp @@ -1365,10 +1365,10 @@ int dComIfGd_setSimpleShadow(cXyz* i_pos, f32 param_1, f32 param_2, cBgS_PolyInf } /* 8002D1AC-8002D25C 027AEC 00B0+00 0/0 0/0 1/1 .text dComIfGp_getMapTrans__FiPfPfPs */ -int dComIfGp_getMapTrans(int i_roomNo, f32* o_transX, f32* o_transY, s16* o_angle) { +bool dComIfGp_getMapTrans(int i_roomNo, f32* o_transX, f32* o_transY, s16* o_angle) { dStage_Multi_c* multi = dComIfGp_getMulti(); if (multi == NULL) { - return 0; + return false; } dStage_Mult_info* info = multi->mInfo; @@ -1377,12 +1377,12 @@ int dComIfGp_getMapTrans(int i_roomNo, f32* o_transX, f32* o_transY, s16* o_angl *o_transX = info->mTransX; *o_transY = info->mTransY; *o_angle = info->mAngle; - return 1; + return true; } info++; } - return 0; + return false; } /* 8002D25C-8002D2AC 027B9C 0050+00 0/0 3/3 3/3 .text dComIfGp_getRoomCamera__Fi */ diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index dc582d2f9b..a502a41ddc 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -528,7 +528,7 @@ void dStage_roomControl_c::init() { } status->mMemBlockID = -1; - status->field_0x400 = 0; + status->mpBgW = NULL; status++; } diff --git a/src/d/s/d_s_room.cpp b/src/d/s/d_s_room.cpp index 533ade06b0..dee514aed7 100644 --- a/src/d/s/d_s_room.cpp +++ b/src/d/s/d_s_room.cpp @@ -5,24 +5,25 @@ #include "d/s/d_s_room.h" #include "d/com/d_com_inf_game.h" +#include "d/d_procname.h" +#include "d/s/d_s_play.h" #include "dol2asm.h" -#include "dolphin/types.h" #include "f_op/f_op_scene.h" +static bool resetArchiveBank(int param_0); +static bool setArchiveBank(int param_0); + // // Types: // -class room_of_scene_class : public process_node_class { +class room_of_scene_class : public scene_class { public: - /* 0x1AC */ process_method_class* mpProcessMtd; - /* 0x1B0 */ scene_tag_class* field_0x1b0; - /* 0x1B4 */ u8 field_0x1b4[0x10]; /* 0x1C4 */ request_of_phase_process_class field_0x1c4; - /* 0x1CC */ void* field_0x1cc; - /* 0x1D0 */ dStage_roomDt_c* field_0x1d0; + /* 0x1CC */ void* mpDzrRes; + /* 0x1D0 */ dStage_roomDt_c* mpRoomDt; /* 0x1D4 */ s8 field_0x1d4; - /* 0x1D5 */ s8 field_0x1d5; + /* 0x1D5 */ u8 field_0x1d5; /* 0x1D6 */ u8 field_0x1d6[2]; /* 0x1D8 */ u8 field_0x1d8; }; @@ -110,15 +111,14 @@ extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */]; extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */]; extern "C" u8 mArcBankName__20dStage_roomControl_c[4]; extern "C" u8 mArcBankData__20dStage_roomControl_c[4]; -extern "C" extern u8 pauseTimer__9dScnPly_c[4]; // // Declarations: // /* 8025AE1C-8025AE24 25575C 0008+00 1/0 0/0 0/0 .text dScnRoom_Draw__FP19room_of_scene_class */ -static bool dScnRoom_Draw(room_of_scene_class* param_0) { - return true; +static int dScnRoom_Draw(room_of_scene_class* i_this) { + return 1; } /* ############################################################################################## */ @@ -132,21 +132,17 @@ SECTION_DEAD static char const* const stringBase_8039A388 = ""; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void getResetArchiveBank(int param_0, u8 const** param_1) { +static asm int getResetArchiveBank(int param_0, u8 const** param_1) { nofralloc #include "asm/d/s/d_s_room/getResetArchiveBank__FiPPCUc.s" } #pragma pop /* 8025AF24-8025AF4C 255864 0028+00 1/1 0/0 0/0 .text resetArchiveBank__Fi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void resetArchiveBank(int param_0) { - nofralloc -#include "asm/d/s/d_s_room/resetArchiveBank__Fi.s" +static bool resetArchiveBank(int param_0) { + const u8* tmp; + return dStage_roomControl_c::resetArchiveBank(getResetArchiveBank(param_0, &tmp)); } -#pragma pop /* ############################################################################################## */ /* 8039A388-8039A388 0269E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -161,51 +157,44 @@ SECTION_DEAD static char const* const stringBase_8039A39B = "Bank[%d] : %s.arc R #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void setArchiveBank(int param_0) { +static asm bool setArchiveBank(int param_0) { nofralloc #include "asm/d/s/d_s_room/setArchiveBank__Fi.s" } #pragma pop /* 8025B0F0-8025B150 255A30 0060+00 1/1 0/0 0/0 .text objectDeleteJugge__FPvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void objectDeleteJugge(void* param_0, void* param_1) { - nofralloc -#include "asm/d/s/d_s_room/objectDeleteJugge__FPvPv.s" +static int objectDeleteJugge(void* i_obj, void*) { + if (fpcM_GetProfName(i_obj) != PROC_BG) { + if (fopAcM_IsActor(i_obj) && !fopAcM_CheckCondition((fopAc_ac_c*)i_obj, 4)) { + return 0; + } + fpcM_Delete(i_obj); + } + + return 0; } -#pragma pop /* 8025B150-8025B174 255A90 0024+00 1/1 0/0 0/0 .text deleteJugge__FPvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void deleteJugge(void* param_0, void* param_1) { - nofralloc -#include "asm/d/s/d_s_room/deleteJugge__FPvPv.s" +static int deleteJugge(void* i_obj, void*) { + fpcM_Delete(i_obj); + return 0; } -#pragma pop /* 8025B174-8025B194 255AB4 0020+00 1/1 0/0 0/0 .text isCreatingCallback__FP10create_tagPUi */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void isCreatingCallback(create_tag* param_0, unsigned int* param_1) { +static asm void* isCreatingCallback(create_tag* param_0, unsigned int* param_1) { nofralloc #include "asm/d/s/d_s_room/isCreatingCallback__FP10create_tagPUi.s" } #pragma pop /* 8025B194-8025B1D0 255AD4 003C+00 2/2 0/0 0/0 .text isCreating__FUi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void isCreating(unsigned int param_0) { - nofralloc -#include "asm/d/s/d_s_room/isCreating__FUi.s" +static bool isCreating(unsigned int param_0) { + return fpcCtIt_Judge((fpcCtIt_JudgeFunc)isCreatingCallback, ¶m_0); } -#pragma pop /* ############################################################################################## */ /* 8039A388-8039A388 0269E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -225,146 +214,269 @@ static asm void loadDemoArchive(int param_0) { #pragma pop /* 8025B2EC-8025B564 255C2C 0278+00 3/3 0/0 0/0 .text objectSetCheck__FP19room_of_scene_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void objectSetCheck(room_of_scene_class* param_0) { - nofralloc -#include "asm/d/s/d_s_room/objectSetCheck__FP19room_of_scene_class.s" +static bool objectSetCheck(room_of_scene_class* i_this) { + int roomNo = fopScnM_GetParam(i_this); + BOOL status_flag_8 = dComIfGp_roomControl_checkStatusFlag(roomNo, 8); + BOOL status_flag_20 = dComIfGp_roomControl_checkStatusFlag(roomNo, 0x20); + + if (i_this->field_0x1d4 == 0 || (i_this->field_0x1d4 > 0 && !status_flag_8)) { + if (!status_flag_8) { + switch (i_this->field_0x1d4) { + case 0: + if (!resetArchiveBank(roomNo)) { + return 0; + } + i_this->field_0x1d4++; + case 1: + if (!setArchiveBank(roomNo)) { + return 0; + } + + if (i_this->mpDzrRes != NULL) { + loadDemoArchive(roomNo); + } + default: + if (*dStage_roomControl_c::getDemoArcName() != '\0') { + int phase = dComIfG_syncObjectRes(dStage_roomControl_c::getDemoArcName()); + + if (phase >= 0 && phase > 0) { + return 0; + } + } + + fopAcM_create(PROC_BG, roomNo, NULL, -1, NULL, NULL, -1); + dComIfGp_getPEvtManager()->demoInit(); + dComIfGp_getPEvtManager()->roomInit(roomNo); + dStage_dt_c_roomReLoader(i_this->mpDzrRes, i_this->mpRoomDt, roomNo); + dComIfGp_ret_wp_set(roomNo); + i_this->field_0x1d4 = -1; + i_this->field_0x1d5 = 1; + } + } + } else if (status_flag_8) { + if (isCreating(fpcM_LayerID(i_this))) { + return 0; + } + + fpcM_LyJudge(&i_this->mBase, (fpcLyIt_JudgeFunc)deleteJugge, NULL); + g_dComIfG_gameInfo.play.getParticle()->levelAllForceOnEventMove(); + dComIfGs_clearRoomSwitch(dComIfGp_roomControl_getZoneNo(roomNo)); + dComIfGs_clearRoomItem(dComIfGp_roomControl_getZoneNo(roomNo)); + dComIfGp_roomControl_offStatusFlag(roomNo, 0x20); + i_this->field_0x1d4 = 0; + } else if (status_flag_20) { + fpcM_LyJudge(&i_this->mBase, (fpcLyIt_JudgeFunc)objectDeleteJugge, NULL); + g_dComIfG_gameInfo.play.getParticle()->levelAllForceOnEventMove(); + } + + return 1; } -#pragma pop /* 8025B564-8025B674 255EA4 0110+00 1/0 0/0 0/0 .text dScnRoom_Execute__FP19room_of_scene_class */ +#ifdef NONMATCHING +static int dScnRoom_Execute(room_of_scene_class* i_this) { + int roomNo = fopScnM_GetParam(i_this); + + if (dComIfGp_roomControl_checkStatusFlag(roomNo, 2)) { + dComIfGp_roomControl_offStatusFlag(roomNo, 2); + dComIfGp_roomControl_onStatusFlag(roomNo, 1); + } else if (objectSetCheck(i_this)) { + if (dComIfGp_roomControl_checkStatusFlag(roomNo, 4)) { + fopScnM_DeleteReq(i_this); + } else if (i_this->field_0x1d4 < 0 && i_this->field_0x1d5 != 0 && + !i_dComIfGp_event_runCheck() && + (int)fopScnM_GetParam(i_this) == dComIfGp_roomControl_getStayNo()) { + if (isCreating(fpcM_LayerID(i_this))) { + dScnPly_c::setPauseTimer(2); + } else { + i_this->field_0x1d5 = 0; + } + } + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dScnRoom_Execute(room_of_scene_class* param_0) { +static asm int dScnRoom_Execute(room_of_scene_class* param_0) { nofralloc #include "asm/d/s/d_s_room/dScnRoom_Execute__FP19room_of_scene_class.s" } #pragma pop +#endif /* 8025B674-8025B67C 255FB4 0008+00 1/0 0/0 0/0 .text dScnRoom_IsDelete__FP19room_of_scene_class */ -static bool dScnRoom_IsDelete(room_of_scene_class* param_0) { - return true; +static int dScnRoom_IsDelete(room_of_scene_class*) { + return 1; } /* 8025B67C-8025B73C 255FBC 00C0+00 1/1 0/0 0/0 .text isReadRoom__Fi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void isReadRoom(int param_0) { - nofralloc -#include "asm/d/s/d_s_room/isReadRoom__Fi.s" +static bool isReadRoom(int param_0) { + roomRead_class* room = dComIfGp_getStageRoom(); + + if (room == NULL) { + return false; + } + + if (room->field_0x0 <= param_0) { + return false; + } + + roomRead_data_class* roomData = room->field_0x4[dComIfGp_getNextStageRoomNo()]; + u8* tmp = roomData->field_0x4; + + for (int i = 0; i < roomData->field_0x0; i++) { + if (dStage_roomRead_dt_c_ChkBg(*tmp) && + param_0 == dStage_roomRead_dt_c_GetLoadRoomIndex(*tmp)) { + return true; + } + tmp++; + } + + return false; +} + +inline const char* setArcName(room_of_scene_class* i_room) { + return dComIfG_getRoomArcName(fopAcM_GetParam(i_room)); } -#pragma pop /* 8025B73C-8025B870 25607C 0134+00 1/0 0/0 0/0 .text dScnRoom_Delete__FP19room_of_scene_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dScnRoom_Delete(room_of_scene_class* param_0) { - nofralloc -#include "asm/d/s/d_s_room/dScnRoom_Delete__FP19room_of_scene_class.s" +static int dScnRoom_Delete(room_of_scene_class* i_this) { + int roomNo = fopScnM_GetParam(i_this); + dComIfGp_roomControl_setStatusFlag(roomNo, 0); + dComIfGp_roomControl_getStatusRoomDt(roomNo)->mRoomDt.init(); + + if (mDoRst::isReset() || !dComIfGp_isEnableNextStage() || + strcmp(dComIfGp_getNextStageName(), dComIfGp_getStartStageName()) || + (roomNo != dComIfGp_getNextStageRoomNo() && !isReadRoom(roomNo))) { + dComIfG_deleteStageRes(setArcName(i_this)); + + JKRExpHeap* heap = dStage_roomControl_c::getMemoryBlock(roomNo); + if (heap != NULL) { + heap->freeAll(); + } + } + + dComIfGp_roomControl_getStatusRoomDt(roomNo)->mRoomDt.init(); + dComIfGp_getPEvtManager()->roomFinish(roomNo); + return 1; } -#pragma pop /* 8025B870-8025B8A4 2561B0 0034+00 1/0 0/0 0/0 .text phase_0__FP19room_of_scene_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void phase_0(room_of_scene_class* param_0) { - nofralloc -#include "asm/d/s/d_s_room/phase_0__FP19room_of_scene_class.s" +static int phase_0(room_of_scene_class* i_this) { + int roomNo = fopScnM_GetParam(i_this); + dStage_roomControl_c::setStatusProcID(roomNo, fopScnM_GetID(i_this)); + return 2; } -#pragma pop /* 8025B8A4-8025B980 2561E4 00DC+00 1/0 0/0 0/0 .text phase_1__FP19room_of_scene_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void phase_1(room_of_scene_class* param_0) { - nofralloc -#include "asm/d/s/d_s_room/phase_1__FP19room_of_scene_class.s" -} -#pragma pop +static int phase_1(room_of_scene_class* i_this) { + i_this->field_0x1d8 = 1; -/* ############################################################################################## */ -/* 8039A388-8039A388 0269E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039A3CA = "room.dzr"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_8039A3D3 = "\0\0\0\0"; -#pragma pop + int roomNo = fopScnM_GetParam(i_this); + const char* arcName = setArcName(i_this); + + if (dComIfG_syncStageRes(arcName) < 0) { + JKRExpHeap* heap = dStage_roomControl_c::getMemoryBlock(roomNo); + + if (heap != NULL) { + if (heap->getTotalUsedSize() != 0) { + return 0; + } + } else { + stage_stag_info_class* stagInfo = i_dComIfGp_getStage()->getStagInfo(); + + if (dStage_staginfo_GetArchiveHeap(stagInfo) != NULL) { + heap = mDoExt_getArchiveHeap(); + } + } + + if (!dComIfG_setStageRes(arcName, heap)) { + return cPhs_ERROR_e; + } + } + + return 2; +} /* 8025B980-8025BAAC 2562C0 012C+00 1/0 0/0 0/0 .text phase_2__FP19room_of_scene_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void phase_2(room_of_scene_class* param_0) { - nofralloc -#include "asm/d/s/d_s_room/phase_2__FP19room_of_scene_class.s" +static int phase_2(room_of_scene_class* i_this) { + const char* arcName = setArcName(i_this); + int phase = dComIfG_syncStageRes(arcName); + + if (phase < 0) { + return cPhs_ERROR_e; + } + + if (phase != 0) { + return 0; + } + + int roomNo = fopScnM_GetParam(i_this); + if (dComIfGp_roomControl_getZoneNo(roomNo) < 0) { + dComIfGp_roomControl_setZoneNo(roomNo, dComIfGs_createZone(roomNo)); + } + + i_this->mpRoomDt = &dComIfGp_roomControl_getStatusRoomDt(roomNo)->mRoomDt; + i_this->mpRoomDt->setRoomNo(roomNo); + i_this->mpDzrRes = dComIfG_getStageRes(arcName, "room.dzr"); + + if (i_this->mpDzrRes != NULL) { + dStage_dt_c_roomLoader(i_this->mpDzrRes, i_this->mpRoomDt, roomNo); + } + + JKRHeap* old_heap = NULL; + JKRExpHeap* heap = dStage_roomControl_c::getMemoryBlock(roomNo); + + if (heap != NULL) { + old_heap = mDoExt_setCurrentHeap(heap); + } + + if (old_heap != NULL) { + mDoExt_setCurrentHeap(old_heap); + } + + return 2; } -#pragma pop /* 8025BAAC-8025BAC4 2563EC 0018+00 1/1 0/0 0/0 .text setZoneNo__20dStage_roomControl_cFii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dStage_roomControl_c::setZoneNo(int param_0, int param_1) { - nofralloc -#include "asm/d/s/d_s_room/setZoneNo__20dStage_roomControl_cFii.s" +void dStage_roomControl_c::setZoneNo(int i_roomNo, int i_zoneNo) { + mStatus[i_roomNo].mZoneNo = i_zoneNo; } -#pragma pop /* 8025BAC4-8025BAF8 256404 0034+00 1/0 0/0 0/0 .text phase_3__FP19room_of_scene_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void phase_3(room_of_scene_class* param_0) { - nofralloc -#include "asm/d/s/d_s_room/phase_3__FP19room_of_scene_class.s" +static int phase_3(room_of_scene_class* i_this) { + return objectSetCheck(i_this) ? 2 : 0; } -#pragma pop /* 8025BAF8-8025BB48 256438 0050+00 1/0 0/0 0/0 .text phase_4__FP19room_of_scene_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void phase_4(room_of_scene_class* param_0) { - nofralloc -#include "asm/d/s/d_s_room/phase_4__FP19room_of_scene_class.s" -} -#pragma pop +static int phase_4(room_of_scene_class* i_this) { + if (dComIfGp_getPlayer(0) == NULL) { + return 0; + } -/* ############################################################################################## */ -/* 803C3260-803C3274 -00001 0014+00 1/1 0/0 0/0 .data l_method$4056 */ -SECTION_DATA static void* l_method[5] = { - (void*)phase_0__FP19room_of_scene_class, (void*)phase_1__FP19room_of_scene_class, - (void*)phase_2__FP19room_of_scene_class, (void*)phase_3__FP19room_of_scene_class, - (void*)phase_4__FP19room_of_scene_class, -}; + return objectSetCheck(i_this) ? cPhs_COMPLEATE_e : 0; +} /* 8025BB48-8025BB78 256488 0030+00 1/0 0/0 0/0 .text dScnRoom_Create__FP11scene_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dScnRoom_Create(scene_class* param_0) { - nofralloc -#include "asm/d/s/d_s_room/dScnRoom_Create__FP11scene_class.s" +static int dScnRoom_Create(scene_class* i_this) { + static int (*l_method[5])(void*) = { + (int (*)(void*))phase_0, (int (*)(void*))phase_1, (int (*)(void*))phase_2, + (int (*)(void*))phase_3, (int (*)(void*))phase_4, + }; + + room_of_scene_class* room = static_cast(i_this); + return dComLbG_PhaseHandler(&room->field_0x1c4, l_method, i_this); } -#pragma pop /* ############################################################################################## */ /* 803C3274-803C3288 -00001 0014+00 1/0 0/0 0/0 .data l_dScnRoom_Method */ SECTION_DATA static void* l_dScnRoom_Method[5] = { - (void*)dScnRoom_Create__FP11scene_class, - (void*)dScnRoom_Delete__FP19room_of_scene_class, - (void*)dScnRoom_Execute__FP19room_of_scene_class, - (void*)dScnRoom_IsDelete__FP19room_of_scene_class, - (void*)dScnRoom_Draw__FP19room_of_scene_class, + (void*)dScnRoom_Create, (void*)dScnRoom_Delete, (void*)dScnRoom_Execute, + (void*)dScnRoom_IsDelete, (void*)dScnRoom_Draw, }; /* 803C3288-803C32B0 -00001 0028+00 0/0 0/0 1/0 .data g_profile_ROOM_SCENE */ From edcc309734ea8bfcc6592f9306b878b5108ec7b3 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Tue, 3 Jan 2023 17:44:56 -0800 Subject: [PATCH 2/5] remove asm --- Progress.md | 14 +- .../dScnRoom_Create__FP11scene_class.s | 13 -- ...dScnRoom_Delete__FP19room_of_scene_class.s | 80 -------- asm/d/s/d_s_room/deleteJugge__FPvPv.s | 10 - asm/d/s/d_s_room/isCreating__FUi.s | 16 -- asm/d/s/d_s_room/isReadRoom__Fi.s | 55 ------ asm/d/s/d_s_room/objectDeleteJugge__FPvPv.s | 28 --- .../objectSetCheck__FP19room_of_scene_class.s | 173 ------------------ .../phase_0__FP19room_of_scene_class.s | 16 -- .../phase_1__FP19room_of_scene_class.s | 60 ------ .../phase_2__FP19room_of_scene_class.s | 83 --------- .../phase_3__FP19room_of_scene_class.s | 14 -- .../phase_4__FP19room_of_scene_class.s | 23 --- asm/d/s/d_s_room/resetArchiveBank__Fi.s | 11 -- .../setZoneNo__20dStage_roomControl_cFii.s | 7 - asm/rel/d/a/d_a_bg/d_a_bg/__dt__6daBg_cFv.s | 75 -------- .../d_a_bg/checkCreateHeap__FP10fopAc_ac_c.s | 9 - .../d_a_bg/daBg_Create__FP10fopAc_ac_c.s | 9 - .../a/d_a_bg/d_a_bg/daBg_Delete__FP6daBg_c.s | 11 -- .../d/a/d_a_bg/d_a_bg/daBg_Draw__FP6daBg_c.s | 9 - .../a/d_a_bg/d_a_bg/play__13daBg_brkAnm_cFv.s | 10 - .../a/d_a_bg/d_a_bg/play__13daBg_btkAnm_cFv.s | 10 - .../d/a/d_a_bg/d_a_bg/setArcName__6daBg_cFv.s | 17 -- 23 files changed, 7 insertions(+), 746 deletions(-) delete mode 100644 asm/d/s/d_s_room/dScnRoom_Create__FP11scene_class.s delete mode 100644 asm/d/s/d_s_room/dScnRoom_Delete__FP19room_of_scene_class.s delete mode 100644 asm/d/s/d_s_room/deleteJugge__FPvPv.s delete mode 100644 asm/d/s/d_s_room/isCreating__FUi.s delete mode 100644 asm/d/s/d_s_room/isReadRoom__Fi.s delete mode 100644 asm/d/s/d_s_room/objectDeleteJugge__FPvPv.s delete mode 100644 asm/d/s/d_s_room/objectSetCheck__FP19room_of_scene_class.s delete mode 100644 asm/d/s/d_s_room/phase_0__FP19room_of_scene_class.s delete mode 100644 asm/d/s/d_s_room/phase_1__FP19room_of_scene_class.s delete mode 100644 asm/d/s/d_s_room/phase_2__FP19room_of_scene_class.s delete mode 100644 asm/d/s/d_s_room/phase_3__FP19room_of_scene_class.s delete mode 100644 asm/d/s/d_s_room/phase_4__FP19room_of_scene_class.s delete mode 100644 asm/d/s/d_s_room/resetArchiveBank__Fi.s delete mode 100644 asm/d/s/d_s_room/setZoneNo__20dStage_roomControl_cFii.s delete mode 100644 asm/rel/d/a/d_a_bg/d_a_bg/__dt__6daBg_cFv.s delete mode 100644 asm/rel/d/a/d_a_bg/d_a_bg/checkCreateHeap__FP10fopAc_ac_c.s delete mode 100644 asm/rel/d/a/d_a_bg/d_a_bg/daBg_Create__FP10fopAc_ac_c.s delete mode 100644 asm/rel/d/a/d_a_bg/d_a_bg/daBg_Delete__FP6daBg_c.s delete mode 100644 asm/rel/d/a/d_a_bg/d_a_bg/daBg_Draw__FP6daBg_c.s delete mode 100644 asm/rel/d/a/d_a_bg/d_a_bg/play__13daBg_brkAnm_cFv.s delete mode 100644 asm/rel/d/a/d_a_bg/d_a_bg/play__13daBg_btkAnm_cFv.s delete mode 100644 asm/rel/d/a/d_a_bg/d_a_bg/setArcName__6daBg_cFv.s diff --git a/Progress.md b/Progress.md index 112b0fef1c..5f35fe52e3 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 21.473726% | 772312 | 3596544 +.text | 21.920933% | 788396 | 3596544 .ctors | 100.000000% | 448 | 448 .dtors | 100.000000% | 32 | 32 .rodata | 100.000000% | 193856 | 193856 .data | 100.000000% | 197632 | 197632 .sdata | 100.000000% | 1408 | 1408 .sdata2 | 100.000000% | 20832 | 20832 -Total | 29.752439% | 1196248 | 4020672 +Total | 30.152472% | 1212332 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 29.752439% | 1196248 | 4020672 -RELs | 33.301114% | 3829736 | 11500324 -Total | 32.381839% | 5025984 | 15520996 +main.dol | 30.152472% | 1212332 | 4020672 +RELs | 33.305949% | 3830292 | 11500324 +Total | 32.489049% | 5042624 | 15520996 ## RELs @@ -38,7 +38,7 @@ d_a_sq | 35.488722% | 3776 | 10640 d_a_ppolamp | 42.341463% | 1736 | 4100 d_a_demo_item | 33.863165% | 3920 | 11576 d_a_cstaf | 100.000000% | 11860 | 11860 -d_a_bg | 35.526882% | 3304 | 9300 +d_a_bg | 41.505376% | 3860 | 9300 d_a_tboxSw | 100.000000% | 1016 | 1016 d_a_title | 39.558574% | 2796 | 7068 d_a_L7low_dr | 38.905775% | 1536 | 3948 @@ -785,4 +785,4 @@ d_a_b_oh2 | 37.960954% | 2100 | 5532 d_a_b_bq | 28.033347% | 11164 | 39824 d_a_b_zant_sima | 40.995025% | 1648 | 4020 d_a_b_gm | 30.376176% | 11628 | 38280 -Total | 33.301114% | 3829736 | 11500324 +Total | 33.305949% | 3830292 | 11500324 diff --git a/asm/d/s/d_s_room/dScnRoom_Create__FP11scene_class.s b/asm/d/s/d_s_room/dScnRoom_Create__FP11scene_class.s deleted file mode 100644 index cd49035a37..0000000000 --- a/asm/d/s/d_s_room/dScnRoom_Create__FP11scene_class.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8025BB48: -/* 8025BB48 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8025BB4C 7C 08 02 A6 */ mflr r0 -/* 8025BB50 90 01 00 14 */ stw r0, 0x14(r1) -/* 8025BB54 7C 65 1B 78 */ mr r5, r3 -/* 8025BB58 38 65 01 C4 */ addi r3, r5, 0x1c4 -/* 8025BB5C 3C 80 80 3C */ lis r4, l_method@ha /* 0x803C3260@ha */ -/* 8025BB60 38 84 32 60 */ addi r4, r4, l_method@l /* 0x803C3260@l */ -/* 8025BB64 4B DD 3F BD */ bl dComLbG_PhaseHandler__FP30request_of_phase_process_classPPFPv_iPv -/* 8025BB68 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8025BB6C 7C 08 03 A6 */ mtlr r0 -/* 8025BB70 38 21 00 10 */ addi r1, r1, 0x10 -/* 8025BB74 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/dScnRoom_Delete__FP19room_of_scene_class.s b/asm/d/s/d_s_room/dScnRoom_Delete__FP19room_of_scene_class.s deleted file mode 100644 index b72fd3379c..0000000000 --- a/asm/d/s/d_s_room/dScnRoom_Delete__FP19room_of_scene_class.s +++ /dev/null @@ -1,80 +0,0 @@ -lbl_8025B73C: -/* 8025B73C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8025B740 7C 08 02 A6 */ mflr r0 -/* 8025B744 90 01 00 24 */ stw r0, 0x24(r1) -/* 8025B748 39 61 00 20 */ addi r11, r1, 0x20 -/* 8025B74C 48 10 6A 8D */ bl _savegpr_28 -/* 8025B750 7C 7E 1B 78 */ mr r30, r3 -/* 8025B754 83 E3 00 B0 */ lwz r31, 0xb0(r3) -/* 8025B758 38 80 00 00 */ li r4, 0 -/* 8025B75C 3C 60 80 3F */ lis r3, mStatus__20dStage_roomControl_c@ha /* 0x803F6094@ha */ -/* 8025B760 38 63 60 94 */ addi r3, r3, mStatus__20dStage_roomControl_c@l /* 0x803F6094@l */ -/* 8025B764 1C 1F 04 04 */ mulli r0, r31, 0x404 -/* 8025B768 7C 63 02 14 */ add r3, r3, r0 -/* 8025B76C 98 83 03 F4 */ stb r4, 0x3f4(r3) -/* 8025B770 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B774 3B A3 61 C0 */ addi r29, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B778 3B 9D 4E C4 */ addi r28, r29, 0x4ec4 -/* 8025B77C 7F 83 E3 78 */ mr r3, r28 -/* 8025B780 7F E4 FB 78 */ mr r4, r31 -/* 8025B784 4B DC 8C 01 */ bl getStatusRoomDt__20dStage_roomControl_cFi -/* 8025B788 81 83 00 00 */ lwz r12, 0(r3) -/* 8025B78C 81 8C 00 08 */ lwz r12, 8(r12) -/* 8025B790 7D 89 03 A6 */ mtctr r12 -/* 8025B794 4E 80 04 21 */ bctrl -/* 8025B798 80 6D 86 F8 */ lwz r3, mResetData__6mDoRst(r13) -/* 8025B79C 80 03 00 00 */ lwz r0, 0(r3) -/* 8025B7A0 2C 00 00 00 */ cmpwi r0, 0 -/* 8025B7A4 40 82 00 54 */ bne lbl_8025B7F8 -/* 8025B7A8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B7AC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B7B0 88 03 4E 1C */ lbz r0, 0x4e1c(r3) -/* 8025B7B4 7C 00 07 75 */ extsb. r0, r0 -/* 8025B7B8 41 82 00 40 */ beq lbl_8025B7F8 -/* 8025B7BC 38 7D 4E 0E */ addi r3, r29, 0x4e0e -/* 8025B7C0 38 9D 4E 00 */ addi r4, r29, 0x4e00 -/* 8025B7C4 48 10 D1 D1 */ bl strcmp -/* 8025B7C8 2C 03 00 00 */ cmpwi r3, 0 -/* 8025B7CC 40 82 00 2C */ bne lbl_8025B7F8 -/* 8025B7D0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B7D4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B7D8 88 03 4E 18 */ lbz r0, 0x4e18(r3) -/* 8025B7DC 7C 00 07 74 */ extsb r0, r0 -/* 8025B7E0 7C 1F 00 00 */ cmpw r31, r0 -/* 8025B7E4 41 82 00 48 */ beq lbl_8025B82C -/* 8025B7E8 7F E3 FB 78 */ mr r3, r31 -/* 8025B7EC 4B FF FE 91 */ bl isReadRoom__Fi -/* 8025B7F0 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8025B7F4 40 82 00 38 */ bne lbl_8025B82C -lbl_8025B7F8: -/* 8025B7F8 80 7E 00 B0 */ lwz r3, 0xb0(r30) -/* 8025B7FC 4B DD 3C C1 */ bl dComIfG_getRoomArcName__Fi -/* 8025B800 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B804 38 84 61 C0 */ addi r4, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B808 3C 84 00 02 */ addis r4, r4, 2 -/* 8025B80C 38 84 D4 F8 */ addi r4, r4, -11016 -/* 8025B810 38 A0 00 40 */ li r5, 0x40 -/* 8025B814 4B DE 09 81 */ bl deleteRes__14dRes_control_cFPCcP11dRes_info_ci -/* 8025B818 7F E3 FB 78 */ mr r3, r31 -/* 8025B81C 4B DC 8B 95 */ bl getMemoryBlock__20dStage_roomControl_cFi -/* 8025B820 28 03 00 00 */ cmplwi r3, 0 -/* 8025B824 41 82 00 08 */ beq lbl_8025B82C -/* 8025B828 48 07 2D A5 */ bl freeAll__7JKRHeapFv -lbl_8025B82C: -/* 8025B82C 7F 83 E3 78 */ mr r3, r28 -/* 8025B830 7F E4 FB 78 */ mr r4, r31 -/* 8025B834 4B DC 8B 51 */ bl getStatusRoomDt__20dStage_roomControl_cFi -/* 8025B838 81 83 00 00 */ lwz r12, 0(r3) -/* 8025B83C 81 8C 00 08 */ lwz r12, 8(r12) -/* 8025B840 7D 89 03 A6 */ mtctr r12 -/* 8025B844 4E 80 04 21 */ bctrl -/* 8025B848 38 7D 4F F8 */ addi r3, r29, 0x4ff8 -/* 8025B84C 7F E4 FB 78 */ mr r4, r31 -/* 8025B850 4B DE B1 9D */ bl roomFinish__16dEvent_manager_cFi -/* 8025B854 38 60 00 01 */ li r3, 1 -/* 8025B858 39 61 00 20 */ addi r11, r1, 0x20 -/* 8025B85C 48 10 69 C9 */ bl _restgpr_28 -/* 8025B860 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8025B864 7C 08 03 A6 */ mtlr r0 -/* 8025B868 38 21 00 20 */ addi r1, r1, 0x20 -/* 8025B86C 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/deleteJugge__FPvPv.s b/asm/d/s/d_s_room/deleteJugge__FPvPv.s deleted file mode 100644 index fa3ac8592e..0000000000 --- a/asm/d/s/d_s_room/deleteJugge__FPvPv.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8025B150: -/* 8025B150 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8025B154 7C 08 02 A6 */ mflr r0 -/* 8025B158 90 01 00 14 */ stw r0, 0x14(r1) -/* 8025B15C 4B DC 6F BD */ bl fpcM_Delete__FPv -/* 8025B160 38 60 00 00 */ li r3, 0 -/* 8025B164 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8025B168 7C 08 03 A6 */ mtlr r0 -/* 8025B16C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8025B170 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/isCreating__FUi.s b/asm/d/s/d_s_room/isCreating__FUi.s deleted file mode 100644 index 2241b0d1cd..0000000000 --- a/asm/d/s/d_s_room/isCreating__FUi.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_8025B194: -/* 8025B194 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8025B198 7C 08 02 A6 */ mflr r0 -/* 8025B19C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8025B1A0 90 61 00 08 */ stw r3, 8(r1) -/* 8025B1A4 3C 60 80 26 */ lis r3, isCreatingCallback__FP10create_tagPUi@ha /* 0x8025B174@ha */ -/* 8025B1A8 38 63 B1 74 */ addi r3, r3, isCreatingCallback__FP10create_tagPUi@l /* 0x8025B174@l */ -/* 8025B1AC 38 81 00 08 */ addi r4, r1, 8 -/* 8025B1B0 4B DC 58 55 */ bl fpcCtIt_Judge__FPFPvPv_PvPv -/* 8025B1B4 30 03 FF FF */ addic r0, r3, -1 -/* 8025B1B8 7C 00 19 10 */ subfe r0, r0, r3 -/* 8025B1BC 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 8025B1C0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8025B1C4 7C 08 03 A6 */ mtlr r0 -/* 8025B1C8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8025B1CC 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/isReadRoom__Fi.s b/asm/d/s/d_s_room/isReadRoom__Fi.s deleted file mode 100644 index 02d1c8c2b1..0000000000 --- a/asm/d/s/d_s_room/isReadRoom__Fi.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_8025B67C: -/* 8025B67C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8025B680 7C 08 02 A6 */ mflr r0 -/* 8025B684 90 01 00 14 */ stw r0, 0x14(r1) -/* 8025B688 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8025B68C 7C 7F 1B 78 */ mr r31, r3 -/* 8025B690 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B694 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B698 85 83 4E 20 */ lwzu r12, 0x4e20(r3) -/* 8025B69C 81 8C 00 30 */ lwz r12, 0x30(r12) -/* 8025B6A0 7D 89 03 A6 */ mtctr r12 -/* 8025B6A4 4E 80 04 21 */ bctrl -/* 8025B6A8 28 03 00 00 */ cmplwi r3, 0 -/* 8025B6AC 40 82 00 0C */ bne lbl_8025B6B8 -/* 8025B6B0 38 60 00 00 */ li r3, 0 -/* 8025B6B4 48 00 00 74 */ b lbl_8025B728 -lbl_8025B6B8: -/* 8025B6B8 80 03 00 00 */ lwz r0, 0(r3) -/* 8025B6BC 7C 00 F8 00 */ cmpw r0, r31 -/* 8025B6C0 41 81 00 0C */ bgt lbl_8025B6CC -/* 8025B6C4 38 60 00 00 */ li r3, 0 -/* 8025B6C8 48 00 00 60 */ b lbl_8025B728 -lbl_8025B6CC: -/* 8025B6CC 80 83 00 04 */ lwz r4, 4(r3) -/* 8025B6D0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B6D4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B6D8 88 03 4E 18 */ lbz r0, 0x4e18(r3) -/* 8025B6DC 7C 00 07 74 */ extsb r0, r0 -/* 8025B6E0 54 00 10 3A */ slwi r0, r0, 2 -/* 8025B6E4 7C 64 00 2E */ lwzx r3, r4, r0 -/* 8025B6E8 80 83 00 04 */ lwz r4, 4(r3) -/* 8025B6EC 88 03 00 00 */ lbz r0, 0(r3) -/* 8025B6F0 7C 09 03 A6 */ mtctr r0 -/* 8025B6F4 2C 00 00 00 */ cmpwi r0, 0 -/* 8025B6F8 40 81 00 2C */ ble lbl_8025B724 -lbl_8025B6FC: -/* 8025B6FC 88 64 00 00 */ lbz r3, 0(r4) -/* 8025B700 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18 -/* 8025B704 41 82 00 18 */ beq lbl_8025B71C -/* 8025B708 54 60 06 BE */ clrlwi r0, r3, 0x1a -/* 8025B70C 7C 1F 00 00 */ cmpw r31, r0 -/* 8025B710 40 82 00 0C */ bne lbl_8025B71C -/* 8025B714 38 60 00 01 */ li r3, 1 -/* 8025B718 48 00 00 10 */ b lbl_8025B728 -lbl_8025B71C: -/* 8025B71C 38 84 00 01 */ addi r4, r4, 1 -/* 8025B720 42 00 FF DC */ bdnz lbl_8025B6FC -lbl_8025B724: -/* 8025B724 38 60 00 00 */ li r3, 0 -lbl_8025B728: -/* 8025B728 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8025B72C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8025B730 7C 08 03 A6 */ mtlr r0 -/* 8025B734 38 21 00 10 */ addi r1, r1, 0x10 -/* 8025B738 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/objectDeleteJugge__FPvPv.s b/asm/d/s/d_s_room/objectDeleteJugge__FPvPv.s deleted file mode 100644 index 7e54f03071..0000000000 --- a/asm/d/s/d_s_room/objectDeleteJugge__FPvPv.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_8025B0F0: -/* 8025B0F0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8025B0F4 7C 08 02 A6 */ mflr r0 -/* 8025B0F8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8025B0FC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8025B100 7C 7F 1B 78 */ mr r31, r3 -/* 8025B104 A8 03 00 0E */ lha r0, 0xe(r3) -/* 8025B108 2C 00 02 DC */ cmpwi r0, 0x2dc -/* 8025B10C 41 82 00 2C */ beq lbl_8025B138 -/* 8025B110 4B DB DB D1 */ bl fopAc_IsActor__FPv -/* 8025B114 2C 03 00 00 */ cmpwi r3, 0 -/* 8025B118 41 82 00 18 */ beq lbl_8025B130 -/* 8025B11C 80 1F 04 A0 */ lwz r0, 0x4a0(r31) -/* 8025B120 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d -/* 8025B124 40 82 00 0C */ bne lbl_8025B130 -/* 8025B128 38 60 00 00 */ li r3, 0 -/* 8025B12C 48 00 00 10 */ b lbl_8025B13C -lbl_8025B130: -/* 8025B130 7F E3 FB 78 */ mr r3, r31 -/* 8025B134 4B DC 6F E5 */ bl fpcM_Delete__FPv -lbl_8025B138: -/* 8025B138 38 60 00 00 */ li r3, 0 -lbl_8025B13C: -/* 8025B13C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8025B140 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8025B144 7C 08 03 A6 */ mtlr r0 -/* 8025B148 38 21 00 10 */ addi r1, r1, 0x10 -/* 8025B14C 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/objectSetCheck__FP19room_of_scene_class.s b/asm/d/s/d_s_room/objectSetCheck__FP19room_of_scene_class.s deleted file mode 100644 index 56e7c24b1a..0000000000 --- a/asm/d/s/d_s_room/objectSetCheck__FP19room_of_scene_class.s +++ /dev/null @@ -1,173 +0,0 @@ -lbl_8025B2EC: -/* 8025B2EC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8025B2F0 7C 08 02 A6 */ mflr r0 -/* 8025B2F4 90 01 00 24 */ stw r0, 0x24(r1) -/* 8025B2F8 39 61 00 20 */ addi r11, r1, 0x20 -/* 8025B2FC 48 10 6E E1 */ bl _savegpr_29 -/* 8025B300 7C 7D 1B 78 */ mr r29, r3 -/* 8025B304 83 C3 00 B0 */ lwz r30, 0xb0(r3) -/* 8025B308 3C 60 80 3F */ lis r3, mStatus__20dStage_roomControl_c@ha /* 0x803F6094@ha */ -/* 8025B30C 38 63 60 94 */ addi r3, r3, mStatus__20dStage_roomControl_c@l /* 0x803F6094@l */ -/* 8025B310 1C 1E 04 04 */ mulli r0, r30, 0x404 -/* 8025B314 7F E3 02 14 */ add r31, r3, r0 -/* 8025B318 8C 1F 03 F4 */ lbzu r0, 0x3f4(r31) -/* 8025B31C 54 04 07 38 */ rlwinm r4, r0, 0, 0x1c, 0x1c -/* 8025B320 54 03 06 B4 */ rlwinm r3, r0, 0, 0x1a, 0x1a -/* 8025B324 88 BD 01 D4 */ lbz r5, 0x1d4(r29) -/* 8025B328 7C A0 07 75 */ extsb. r0, r5 -/* 8025B32C 41 82 00 14 */ beq lbl_8025B340 -/* 8025B330 7C A0 07 75 */ extsb. r0, r5 -/* 8025B334 40 81 01 28 */ ble lbl_8025B45C -/* 8025B338 2C 04 00 00 */ cmpwi r4, 0 -/* 8025B33C 40 82 01 20 */ bne lbl_8025B45C -lbl_8025B340: -/* 8025B340 2C 04 00 00 */ cmpwi r4, 0 -/* 8025B344 40 82 02 04 */ bne lbl_8025B548 -/* 8025B348 7C A0 07 74 */ extsb r0, r5 -/* 8025B34C 2C 00 00 01 */ cmpwi r0, 1 -/* 8025B350 41 82 00 38 */ beq lbl_8025B388 -/* 8025B354 40 80 00 60 */ bge lbl_8025B3B4 -/* 8025B358 2C 00 00 00 */ cmpwi r0, 0 -/* 8025B35C 40 80 00 08 */ bge lbl_8025B364 -/* 8025B360 48 00 00 54 */ b lbl_8025B3B4 -lbl_8025B364: -/* 8025B364 7F C3 F3 78 */ mr r3, r30 -/* 8025B368 4B FF FB BD */ bl resetArchiveBank__Fi -/* 8025B36C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8025B370 40 82 00 0C */ bne lbl_8025B37C -/* 8025B374 38 60 00 00 */ li r3, 0 -/* 8025B378 48 00 01 D4 */ b lbl_8025B54C -lbl_8025B37C: -/* 8025B37C 88 7D 01 D4 */ lbz r3, 0x1d4(r29) -/* 8025B380 38 03 00 01 */ addi r0, r3, 1 -/* 8025B384 98 1D 01 D4 */ stb r0, 0x1d4(r29) -lbl_8025B388: -/* 8025B388 7F C3 F3 78 */ mr r3, r30 -/* 8025B38C 4B FF FB C1 */ bl setArchiveBank__Fi -/* 8025B390 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8025B394 40 82 00 0C */ bne lbl_8025B3A0 -/* 8025B398 38 60 00 00 */ li r3, 0 -/* 8025B39C 48 00 01 B0 */ b lbl_8025B54C -lbl_8025B3A0: -/* 8025B3A0 80 1D 01 CC */ lwz r0, 0x1cc(r29) -/* 8025B3A4 28 00 00 00 */ cmplwi r0, 0 -/* 8025B3A8 41 82 00 0C */ beq lbl_8025B3B4 -/* 8025B3AC 7F C3 F3 78 */ mr r3, r30 -/* 8025B3B0 4B FF FE 21 */ bl loadDemoArchive__Fi -lbl_8025B3B4: -/* 8025B3B4 3C 60 80 40 */ lis r3, mDemoArcName__20dStage_roomControl_c@ha /* 0x80406194@ha */ -/* 8025B3B8 8C 03 61 94 */ lbzu r0, mDemoArcName__20dStage_roomControl_c@l(r3) /* 0x80406194@l */ -/* 8025B3BC 7C 00 07 75 */ extsb. r0, r0 -/* 8025B3C0 41 82 00 30 */ beq lbl_8025B3F0 -/* 8025B3C4 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B3C8 38 84 61 C0 */ addi r4, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B3CC 3C 84 00 02 */ addis r4, r4, 2 -/* 8025B3D0 38 A0 00 80 */ li r5, 0x80 -/* 8025B3D4 38 84 C2 F8 */ addi r4, r4, -15624 -/* 8025B3D8 4B DE 0D 89 */ bl syncRes__14dRes_control_cFPCcP11dRes_info_ci -/* 8025B3DC 2C 03 00 00 */ cmpwi r3, 0 -/* 8025B3E0 41 80 00 10 */ blt lbl_8025B3F0 -/* 8025B3E4 40 81 00 0C */ ble lbl_8025B3F0 -/* 8025B3E8 38 60 00 00 */ li r3, 0 -/* 8025B3EC 48 00 01 60 */ b lbl_8025B54C -lbl_8025B3F0: -/* 8025B3F0 38 60 02 DC */ li r3, 0x2dc -/* 8025B3F4 7F C4 F3 78 */ mr r4, r30 -/* 8025B3F8 38 A0 00 00 */ li r5, 0 -/* 8025B3FC 38 C0 FF FF */ li r6, -1 -/* 8025B400 38 E0 00 00 */ li r7, 0 -/* 8025B404 39 00 00 00 */ li r8, 0 -/* 8025B408 39 20 FF FF */ li r9, -1 -/* 8025B40C 4B DB E9 8D */ bl fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc -/* 8025B410 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B414 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B418 3B E3 4F F8 */ addi r31, r3, 0x4ff8 -/* 8025B41C 7F E3 FB 78 */ mr r3, r31 -/* 8025B420 4B DE B4 69 */ bl demoInit__16dEvent_manager_cFv -/* 8025B424 7F E3 FB 78 */ mr r3, r31 -/* 8025B428 7F C4 F3 78 */ mr r4, r30 -/* 8025B42C 4B DE B4 D9 */ bl roomInit__16dEvent_manager_cFi -/* 8025B430 80 7D 01 CC */ lwz r3, 0x1cc(r29) -/* 8025B434 80 9D 01 D0 */ lwz r4, 0x1d0(r29) -/* 8025B438 7F C5 F3 78 */ mr r5, r30 -/* 8025B43C 4B DC B7 F9 */ bl dStage_dt_c_roomReLoader__FPvP11dStage_dt_ci -/* 8025B440 7F C3 07 74 */ extsb r3, r30 -/* 8025B444 4B DD 40 BD */ bl dComIfGp_ret_wp_set__FSc -/* 8025B448 38 00 FF FF */ li r0, -1 -/* 8025B44C 98 1D 01 D4 */ stb r0, 0x1d4(r29) -/* 8025B450 38 00 00 01 */ li r0, 1 -/* 8025B454 98 1D 01 D5 */ stb r0, 0x1d5(r29) -/* 8025B458 48 00 00 F0 */ b lbl_8025B548 -lbl_8025B45C: -/* 8025B45C 2C 04 00 00 */ cmpwi r4, 0 -/* 8025B460 41 82 00 B8 */ beq lbl_8025B518 -/* 8025B464 80 6D 87 C0 */ lwz r3, g_fpcNd_type(r13) -/* 8025B468 80 9D 00 B4 */ lwz r4, 0xb4(r29) -/* 8025B46C 4B DC 51 E1 */ bl fpcBs_Is_JustOfType__Fii -/* 8025B470 2C 03 00 00 */ cmpwi r3, 0 -/* 8025B474 41 82 00 0C */ beq lbl_8025B480 -/* 8025B478 80 7D 00 C8 */ lwz r3, 0xc8(r29) -/* 8025B47C 48 00 00 08 */ b lbl_8025B484 -lbl_8025B480: -/* 8025B480 38 60 FF FF */ li r3, -1 -lbl_8025B484: -/* 8025B484 4B FF FD 11 */ bl isCreating__FUi -/* 8025B488 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8025B48C 41 82 00 0C */ beq lbl_8025B498 -/* 8025B490 38 60 00 00 */ li r3, 0 -/* 8025B494 48 00 00 B8 */ b lbl_8025B54C -lbl_8025B498: -/* 8025B498 38 7D 00 BC */ addi r3, r29, 0xbc -/* 8025B49C 3C 80 80 26 */ lis r4, deleteJugge__FPvPv@ha /* 0x8025B150@ha */ -/* 8025B4A0 38 84 B1 50 */ addi r4, r4, deleteJugge__FPvPv@l /* 0x8025B150@l */ -/* 8025B4A4 38 A0 00 00 */ li r5, 0 -/* 8025B4A8 4B DC 67 81 */ bl fpcLyIt_Judge__FP11layer_classPFPvPv_PvPv -/* 8025B4AC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B4B0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B4B4 80 63 5D 3C */ lwz r3, 0x5d3c(r3) -/* 8025B4B8 38 63 02 10 */ addi r3, r3, 0x210 -/* 8025B4BC 4B DF 04 2D */ bl allForceOnEventMove__Q213dPa_control_c7level_cFv -/* 8025B4C0 7F C3 F3 78 */ mr r3, r30 -/* 8025B4C4 4B DD 24 ED */ bl getZoneNo__20dStage_roomControl_cFi -/* 8025B4C8 54 64 28 34 */ slwi r4, r3, 5 -/* 8025B4CC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B4D0 38 03 61 C0 */ addi r0, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B4D4 7C 60 22 14 */ add r3, r0, r4 -/* 8025B4D8 38 63 09 B6 */ addi r3, r3, 0x9b6 -/* 8025B4DC 4B DD 98 11 */ bl clearRoomSwitch__13dSv_zoneBit_cFv -/* 8025B4E0 7F C3 F3 78 */ mr r3, r30 -/* 8025B4E4 4B DD 24 CD */ bl getZoneNo__20dStage_roomControl_cFi -/* 8025B4E8 54 64 28 34 */ slwi r4, r3, 5 -/* 8025B4EC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B4F0 38 03 61 C0 */ addi r0, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B4F4 7C 60 22 14 */ add r3, r0, r4 -/* 8025B4F8 38 63 09 B6 */ addi r3, r3, 0x9b6 -/* 8025B4FC 4B DD 97 FD */ bl clearRoomItem__13dSv_zoneBit_cFv -/* 8025B500 88 1F 00 00 */ lbz r0, 0(r31) -/* 8025B504 54 00 06 F2 */ rlwinm r0, r0, 0, 0x1b, 0x19 -/* 8025B508 98 1F 00 00 */ stb r0, 0(r31) -/* 8025B50C 38 00 00 00 */ li r0, 0 -/* 8025B510 98 1D 01 D4 */ stb r0, 0x1d4(r29) -/* 8025B514 48 00 00 34 */ b lbl_8025B548 -lbl_8025B518: -/* 8025B518 2C 03 00 00 */ cmpwi r3, 0 -/* 8025B51C 41 82 00 2C */ beq lbl_8025B548 -/* 8025B520 38 7D 00 BC */ addi r3, r29, 0xbc -/* 8025B524 3C 80 80 26 */ lis r4, objectDeleteJugge__FPvPv@ha /* 0x8025B0F0@ha */ -/* 8025B528 38 84 B0 F0 */ addi r4, r4, objectDeleteJugge__FPvPv@l /* 0x8025B0F0@l */ -/* 8025B52C 38 A0 00 00 */ li r5, 0 -/* 8025B530 4B DC 66 F9 */ bl fpcLyIt_Judge__FP11layer_classPFPvPv_PvPv -/* 8025B534 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B538 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B53C 80 63 5D 3C */ lwz r3, 0x5d3c(r3) -/* 8025B540 38 63 02 10 */ addi r3, r3, 0x210 -/* 8025B544 4B DF 03 A5 */ bl allForceOnEventMove__Q213dPa_control_c7level_cFv -lbl_8025B548: -/* 8025B548 38 60 00 01 */ li r3, 1 -lbl_8025B54C: -/* 8025B54C 39 61 00 20 */ addi r11, r1, 0x20 -/* 8025B550 48 10 6C D9 */ bl _restgpr_29 -/* 8025B554 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8025B558 7C 08 03 A6 */ mtlr r0 -/* 8025B55C 38 21 00 20 */ addi r1, r1, 0x20 -/* 8025B560 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/phase_0__FP19room_of_scene_class.s b/asm/d/s/d_s_room/phase_0__FP19room_of_scene_class.s deleted file mode 100644 index ac837c1b22..0000000000 --- a/asm/d/s/d_s_room/phase_0__FP19room_of_scene_class.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_8025B870: -/* 8025B870 80 03 00 B0 */ lwz r0, 0xb0(r3) -/* 8025B874 28 03 00 00 */ cmplwi r3, 0 -/* 8025B878 41 82 00 0C */ beq lbl_8025B884 -/* 8025B87C 80 83 00 04 */ lwz r4, 4(r3) -/* 8025B880 48 00 00 08 */ b lbl_8025B888 -lbl_8025B884: -/* 8025B884 38 80 FF FF */ li r4, -1 -lbl_8025B888: -/* 8025B888 3C 60 80 3F */ lis r3, mStatus__20dStage_roomControl_c@ha /* 0x803F6094@ha */ -/* 8025B88C 38 63 60 94 */ addi r3, r3, mStatus__20dStage_roomControl_c@l /* 0x803F6094@l */ -/* 8025B890 1C 00 04 04 */ mulli r0, r0, 0x404 -/* 8025B894 7C 63 02 14 */ add r3, r3, r0 -/* 8025B898 90 83 03 FC */ stw r4, 0x3fc(r3) -/* 8025B89C 38 60 00 02 */ li r3, 2 -/* 8025B8A0 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/phase_1__FP19room_of_scene_class.s b/asm/d/s/d_s_room/phase_1__FP19room_of_scene_class.s deleted file mode 100644 index a3349536be..0000000000 --- a/asm/d/s/d_s_room/phase_1__FP19room_of_scene_class.s +++ /dev/null @@ -1,60 +0,0 @@ -lbl_8025B8A4: -/* 8025B8A4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8025B8A8 7C 08 02 A6 */ mflr r0 -/* 8025B8AC 90 01 00 24 */ stw r0, 0x24(r1) -/* 8025B8B0 39 61 00 20 */ addi r11, r1, 0x20 -/* 8025B8B4 48 10 69 29 */ bl _savegpr_29 -/* 8025B8B8 38 00 00 01 */ li r0, 1 -/* 8025B8BC 98 03 01 D8 */ stb r0, 0x1d8(r3) -/* 8025B8C0 83 A3 00 B0 */ lwz r29, 0xb0(r3) -/* 8025B8C4 7F A3 EB 78 */ mr r3, r29 -/* 8025B8C8 4B DD 3B F5 */ bl dComIfG_getRoomArcName__Fi -/* 8025B8CC 7C 7F 1B 78 */ mr r31, r3 -/* 8025B8D0 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B8D4 38 84 61 C0 */ addi r4, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B8D8 3F C4 00 02 */ addis r30, r4, 2 -/* 8025B8DC 38 9E D4 F8 */ addi r4, r30, -11016 -/* 8025B8E0 38 A0 00 40 */ li r5, 0x40 -/* 8025B8E4 3B DE C2 F8 */ addi r30, r30, -15624 -/* 8025B8E8 4B DE 08 79 */ bl syncRes__14dRes_control_cFPCcP11dRes_info_ci -/* 8025B8EC 2C 03 00 00 */ cmpwi r3, 0 -/* 8025B8F0 40 80 00 74 */ bge lbl_8025B964 -/* 8025B8F4 7F A3 EB 78 */ mr r3, r29 -/* 8025B8F8 4B DC 8A B9 */ bl getMemoryBlock__20dStage_roomControl_cFi -/* 8025B8FC 7C 7D 1B 79 */ or. r29, r3, r3 -/* 8025B900 41 82 00 18 */ beq lbl_8025B918 -/* 8025B904 48 07 44 61 */ bl getTotalUsedSize__10JKRExpHeapCFv -/* 8025B908 2C 03 00 00 */ cmpwi r3, 0 -/* 8025B90C 41 82 00 38 */ beq lbl_8025B944 -/* 8025B910 38 60 00 00 */ li r3, 0 -/* 8025B914 48 00 00 54 */ b lbl_8025B968 -lbl_8025B918: -/* 8025B918 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B91C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B920 85 83 4E 20 */ lwzu r12, 0x4e20(r3) -/* 8025B924 81 8C 00 BC */ lwz r12, 0xbc(r12) -/* 8025B928 7D 89 03 A6 */ mtctr r12 -/* 8025B92C 4E 80 04 21 */ bctrl -/* 8025B930 A0 03 00 0A */ lhz r0, 0xa(r3) -/* 8025B934 54 00 04 E7 */ rlwinm. r0, r0, 0, 0x13, 0x13 -/* 8025B938 41 82 00 0C */ beq lbl_8025B944 -/* 8025B93C 4B DB 34 B1 */ bl mDoExt_getArchiveHeap__Fv -/* 8025B940 7C 7D 1B 78 */ mr r29, r3 -lbl_8025B944: -/* 8025B944 7F C3 F3 78 */ mr r3, r30 -/* 8025B948 7F E4 FB 78 */ mr r4, r31 -/* 8025B94C 7F A5 EB 78 */ mr r5, r29 -/* 8025B950 4B DE 0C 6D */ bl setStageRes__14dRes_control_cFPCcP7JKRHeap -/* 8025B954 2C 03 00 00 */ cmpwi r3, 0 -/* 8025B958 40 82 00 0C */ bne lbl_8025B964 -/* 8025B95C 38 60 00 05 */ li r3, 5 -/* 8025B960 48 00 00 08 */ b lbl_8025B968 -lbl_8025B964: -/* 8025B964 38 60 00 02 */ li r3, 2 -lbl_8025B968: -/* 8025B968 39 61 00 20 */ addi r11, r1, 0x20 -/* 8025B96C 48 10 68 BD */ bl _restgpr_29 -/* 8025B970 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8025B974 7C 08 03 A6 */ mtlr r0 -/* 8025B978 38 21 00 20 */ addi r1, r1, 0x20 -/* 8025B97C 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/phase_2__FP19room_of_scene_class.s b/asm/d/s/d_s_room/phase_2__FP19room_of_scene_class.s deleted file mode 100644 index 97890b2831..0000000000 --- a/asm/d/s/d_s_room/phase_2__FP19room_of_scene_class.s +++ /dev/null @@ -1,83 +0,0 @@ -lbl_8025B980: -/* 8025B980 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8025B984 7C 08 02 A6 */ mflr r0 -/* 8025B988 90 01 00 24 */ stw r0, 0x24(r1) -/* 8025B98C 39 61 00 20 */ addi r11, r1, 0x20 -/* 8025B990 48 10 68 49 */ bl _savegpr_28 -/* 8025B994 7C 7C 1B 78 */ mr r28, r3 -/* 8025B998 80 63 00 B0 */ lwz r3, 0xb0(r3) -/* 8025B99C 4B DD 3B 21 */ bl dComIfG_getRoomArcName__Fi -/* 8025B9A0 7C 7F 1B 78 */ mr r31, r3 -/* 8025B9A4 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B9A8 38 84 61 C0 */ addi r4, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B9AC 3C 84 00 02 */ addis r4, r4, 2 -/* 8025B9B0 3B C4 D4 F8 */ addi r30, r4, -11016 -/* 8025B9B4 7F C4 F3 78 */ mr r4, r30 -/* 8025B9B8 38 A0 00 40 */ li r5, 0x40 -/* 8025B9BC 4B DE 07 A5 */ bl syncRes__14dRes_control_cFPCcP11dRes_info_ci -/* 8025B9C0 2C 03 00 00 */ cmpwi r3, 0 -/* 8025B9C4 40 80 00 0C */ bge lbl_8025B9D0 -/* 8025B9C8 38 60 00 05 */ li r3, 5 -/* 8025B9CC 48 00 00 C8 */ b lbl_8025BA94 -lbl_8025B9D0: -/* 8025B9D0 41 82 00 0C */ beq lbl_8025B9DC -/* 8025B9D4 38 60 00 00 */ li r3, 0 -/* 8025B9D8 48 00 00 BC */ b lbl_8025BA94 -lbl_8025B9DC: -/* 8025B9DC 83 BC 00 B0 */ lwz r29, 0xb0(r28) -/* 8025B9E0 7F A3 EB 78 */ mr r3, r29 -/* 8025B9E4 4B DD 1F CD */ bl getZoneNo__20dStage_roomControl_cFi -/* 8025B9E8 2C 03 00 00 */ cmpwi r3, 0 -/* 8025B9EC 40 80 00 20 */ bge lbl_8025BA0C -/* 8025B9F0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025B9F4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025B9F8 7F A4 EB 78 */ mr r4, r29 -/* 8025B9FC 4B DD 97 A9 */ bl createZone__10dSv_info_cFi -/* 8025BA00 7C 64 1B 78 */ mr r4, r3 -/* 8025BA04 7F A3 EB 78 */ mr r3, r29 -/* 8025BA08 48 00 00 A5 */ bl setZoneNo__20dStage_roomControl_cFii -lbl_8025BA0C: -/* 8025BA0C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025BA10 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025BA14 38 63 4E C4 */ addi r3, r3, 0x4ec4 -/* 8025BA18 7F A4 EB 78 */ mr r4, r29 -/* 8025BA1C 4B DC 89 69 */ bl getStatusRoomDt__20dStage_roomControl_cFi -/* 8025BA20 90 7C 01 D0 */ stw r3, 0x1d0(r28) -/* 8025BA24 80 7C 01 D0 */ lwz r3, 0x1d0(r28) -/* 8025BA28 9B A3 00 04 */ stb r29, 4(r3) -/* 8025BA2C 7F E3 FB 78 */ mr r3, r31 -/* 8025BA30 3C 80 80 3A */ lis r4, d_s_d_s_room__stringBase0@ha /* 0x8039A388@ha */ -/* 8025BA34 38 84 A3 88 */ addi r4, r4, d_s_d_s_room__stringBase0@l /* 0x8039A388@l */ -/* 8025BA38 38 84 00 42 */ addi r4, r4, 0x42 -/* 8025BA3C 7F C5 F3 78 */ mr r5, r30 -/* 8025BA40 38 C0 00 40 */ li r6, 0x40 -/* 8025BA44 4B DE 09 39 */ bl getRes__14dRes_control_cFPCcPCcP11dRes_info_ci -/* 8025BA48 90 7C 01 CC */ stw r3, 0x1cc(r28) -/* 8025BA4C 80 7C 01 CC */ lwz r3, 0x1cc(r28) -/* 8025BA50 28 03 00 00 */ cmplwi r3, 0 -/* 8025BA54 41 82 00 10 */ beq lbl_8025BA64 -/* 8025BA58 80 9C 01 D0 */ lwz r4, 0x1d0(r28) -/* 8025BA5C 7F A5 EB 78 */ mr r5, r29 -/* 8025BA60 4B DC B1 5D */ bl dStage_dt_c_roomLoader__FPvP11dStage_dt_ci -lbl_8025BA64: -/* 8025BA64 3B C0 00 00 */ li r30, 0 -/* 8025BA68 7F A3 EB 78 */ mr r3, r29 -/* 8025BA6C 4B DC 89 45 */ bl getMemoryBlock__20dStage_roomControl_cFi -/* 8025BA70 28 03 00 00 */ cmplwi r3, 0 -/* 8025BA74 41 82 00 0C */ beq lbl_8025BA80 -/* 8025BA78 4B DB 37 55 */ bl mDoExt_setCurrentHeap__FP7JKRHeap -/* 8025BA7C 7C 7E 1B 78 */ mr r30, r3 -lbl_8025BA80: -/* 8025BA80 28 1E 00 00 */ cmplwi r30, 0 -/* 8025BA84 41 82 00 0C */ beq lbl_8025BA90 -/* 8025BA88 7F C3 F3 78 */ mr r3, r30 -/* 8025BA8C 4B DB 37 41 */ bl mDoExt_setCurrentHeap__FP7JKRHeap -lbl_8025BA90: -/* 8025BA90 38 60 00 02 */ li r3, 2 -lbl_8025BA94: -/* 8025BA94 39 61 00 20 */ addi r11, r1, 0x20 -/* 8025BA98 48 10 67 8D */ bl _restgpr_28 -/* 8025BA9C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8025BAA0 7C 08 03 A6 */ mtlr r0 -/* 8025BAA4 38 21 00 20 */ addi r1, r1, 0x20 -/* 8025BAA8 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/phase_3__FP19room_of_scene_class.s b/asm/d/s/d_s_room/phase_3__FP19room_of_scene_class.s deleted file mode 100644 index 8e6f745cd0..0000000000 --- a/asm/d/s/d_s_room/phase_3__FP19room_of_scene_class.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8025BAC4: -/* 8025BAC4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8025BAC8 7C 08 02 A6 */ mflr r0 -/* 8025BACC 90 01 00 14 */ stw r0, 0x14(r1) -/* 8025BAD0 4B FF F8 1D */ bl objectSetCheck__FP19room_of_scene_class -/* 8025BAD4 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 8025BAD8 20 00 00 00 */ subfic r0, r0, 0 -/* 8025BADC 7C 60 01 10 */ subfe r3, r0, r0 -/* 8025BAE0 38 00 00 02 */ li r0, 2 -/* 8025BAE4 7C 03 18 38 */ and r3, r0, r3 -/* 8025BAE8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8025BAEC 7C 08 03 A6 */ mtlr r0 -/* 8025BAF0 38 21 00 10 */ addi r1, r1, 0x10 -/* 8025BAF4 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/phase_4__FP19room_of_scene_class.s b/asm/d/s/d_s_room/phase_4__FP19room_of_scene_class.s deleted file mode 100644 index 53def58b1a..0000000000 --- a/asm/d/s/d_s_room/phase_4__FP19room_of_scene_class.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_8025BAF8: -/* 8025BAF8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8025BAFC 7C 08 02 A6 */ mflr r0 -/* 8025BB00 90 01 00 14 */ stw r0, 0x14(r1) -/* 8025BB04 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8025BB08 38 84 61 C0 */ addi r4, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8025BB0C 80 04 5D AC */ lwz r0, 0x5dac(r4) -/* 8025BB10 28 00 00 00 */ cmplwi r0, 0 -/* 8025BB14 40 82 00 0C */ bne lbl_8025BB20 -/* 8025BB18 38 60 00 00 */ li r3, 0 -/* 8025BB1C 48 00 00 1C */ b lbl_8025BB38 -lbl_8025BB20: -/* 8025BB20 4B FF F7 CD */ bl objectSetCheck__FP19room_of_scene_class -/* 8025BB24 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 8025BB28 20 00 00 00 */ subfic r0, r0, 0 -/* 8025BB2C 7C 60 01 10 */ subfe r3, r0, r0 -/* 8025BB30 38 00 00 04 */ li r0, 4 -/* 8025BB34 7C 03 18 38 */ and r3, r0, r3 -lbl_8025BB38: -/* 8025BB38 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8025BB3C 7C 08 03 A6 */ mtlr r0 -/* 8025BB40 38 21 00 10 */ addi r1, r1, 0x10 -/* 8025BB44 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/resetArchiveBank__Fi.s b/asm/d/s/d_s_room/resetArchiveBank__Fi.s deleted file mode 100644 index 9a44e03035..0000000000 --- a/asm/d/s/d_s_room/resetArchiveBank__Fi.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8025AF24: -/* 8025AF24 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8025AF28 7C 08 02 A6 */ mflr r0 -/* 8025AF2C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8025AF30 38 81 00 08 */ addi r4, r1, 8 -/* 8025AF34 4B FF FE F1 */ bl getResetArchiveBank__FiPPCUc -/* 8025AF38 4B DC 9A 1D */ bl resetArchiveBank__20dStage_roomControl_cFi -/* 8025AF3C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8025AF40 7C 08 03 A6 */ mtlr r0 -/* 8025AF44 38 21 00 10 */ addi r1, r1, 0x10 -/* 8025AF48 4E 80 00 20 */ blr diff --git a/asm/d/s/d_s_room/setZoneNo__20dStage_roomControl_cFii.s b/asm/d/s/d_s_room/setZoneNo__20dStage_roomControl_cFii.s deleted file mode 100644 index 132cb04b12..0000000000 --- a/asm/d/s/d_s_room/setZoneNo__20dStage_roomControl_cFii.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_8025BAAC: -/* 8025BAAC 3C A0 80 3F */ lis r5, mStatus__20dStage_roomControl_c@ha /* 0x803F6094@ha */ -/* 8025BAB0 38 A5 60 94 */ addi r5, r5, mStatus__20dStage_roomControl_c@l /* 0x803F6094@l */ -/* 8025BAB4 1C 03 04 04 */ mulli r0, r3, 0x404 -/* 8025BAB8 7C 65 02 14 */ add r3, r5, r0 -/* 8025BABC 98 83 03 F7 */ stb r4, 0x3f7(r3) -/* 8025BAC0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_bg/d_a_bg/__dt__6daBg_cFv.s b/asm/rel/d/a/d_a_bg/d_a_bg/__dt__6daBg_cFv.s deleted file mode 100644 index 1bffa7803c..0000000000 --- a/asm/rel/d/a/d_a_bg/d_a_bg/__dt__6daBg_cFv.s +++ /dev/null @@ -1,75 +0,0 @@ -lbl_80458788: -/* 80458788 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8045878C 7C 08 02 A6 */ mflr r0 -/* 80458790 90 01 00 24 */ stw r0, 0x24(r1) -/* 80458794 39 61 00 20 */ addi r11, r1, 0x20 -/* 80458798 4B F0 9A 45 */ bl _savegpr_29 -/* 8045879C 7C 7D 1B 79 */ or. r29, r3, r3 -/* 804587A0 7C 9E 23 78 */ mr r30, r4 -/* 804587A4 41 82 00 E4 */ beq lbl_80458888 -/* 804587A8 83 FD 00 B0 */ lwz r31, 0xb0(r29) -/* 804587AC 80 1D 00 F0 */ lwz r0, 0xf0(r29) -/* 804587B0 28 00 00 00 */ cmplwi r0, 0 -/* 804587B4 41 82 00 38 */ beq lbl_804587EC -/* 804587B8 80 9D 05 E8 */ lwz r4, 0x5e8(r29) -/* 804587BC 28 04 00 00 */ cmplwi r4, 0 -/* 804587C0 41 82 00 2C */ beq lbl_804587EC -/* 804587C4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 804587C8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 804587CC 38 63 0F 38 */ addi r3, r3, 0xf38 -/* 804587D0 4B C1 BA 81 */ bl Release__4cBgSFP9dBgW_Base -/* 804587D4 38 80 00 00 */ li r4, 0 -/* 804587D8 3C 60 80 3F */ lis r3, mStatus__20dStage_roomControl_c@ha /* 0x803F6094@ha */ -/* 804587DC 38 63 60 94 */ addi r3, r3, mStatus__20dStage_roomControl_c@l /* 0x803F6094@l */ -/* 804587E0 1C 1F 04 04 */ mulli r0, r31, 0x404 -/* 804587E4 7C 63 02 14 */ add r3, r3, r0 -/* 804587E8 90 83 04 00 */ stw r4, 0x400(r3) -lbl_804587EC: -/* 804587EC 80 1D 00 F0 */ lwz r0, 0xf0(r29) -/* 804587F0 28 00 00 00 */ cmplwi r0, 0 -/* 804587F4 41 82 00 38 */ beq lbl_8045882C -/* 804587F8 80 9D 05 EC */ lwz r4, 0x5ec(r29) -/* 804587FC 28 04 00 00 */ cmplwi r4, 0 -/* 80458800 41 82 00 2C */ beq lbl_8045882C -/* 80458804 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80458808 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8045880C 38 63 0F 38 */ addi r3, r3, 0xf38 -/* 80458810 4B C1 BA 41 */ bl Release__4cBgSFP9dBgW_Base -/* 80458814 38 80 00 00 */ li r4, 0 -/* 80458818 3C 60 80 3F */ lis r3, mStatus__20dStage_roomControl_c@ha /* 0x803F6094@ha */ -/* 8045881C 38 63 60 94 */ addi r3, r3, mStatus__20dStage_roomControl_c@l /* 0x803F6094@l */ -/* 80458820 1C 1F 04 04 */ mulli r0, r31, 0x404 -/* 80458824 7C 63 02 14 */ add r3, r3, r0 -/* 80458828 90 83 04 00 */ stw r4, 0x400(r3) -lbl_8045882C: -/* 8045882C 7F E3 FB 78 */ mr r3, r31 -/* 80458830 4B BD 91 99 */ bl deleteRoomGrass__9daGrass_cFi -/* 80458834 7F E3 FB 78 */ mr r3, r31 -/* 80458838 4B BD 91 E9 */ bl deleteRoomFlower__9daGrass_cFi -/* 8045883C 57 E4 10 3A */ slwi r4, r31, 2 -/* 80458840 3C 60 80 42 */ lis r3, mRoom__7daSus_c@ha /* 0x8042447C@ha */ -/* 80458844 38 03 44 7C */ addi r0, r3, mRoom__7daSus_c@l /* 0x8042447C@l */ -/* 80458848 7C 60 22 14 */ add r3, r0, r4 -/* 8045884C 4B BD 89 B1 */ bl reset__Q27daSus_c6room_cFv -/* 80458850 3C 60 80 3F */ lis r3, mStatus__20dStage_roomControl_c@ha /* 0x803F6094@ha */ -/* 80458854 38 63 60 94 */ addi r3, r3, mStatus__20dStage_roomControl_c@l /* 0x803F6094@l */ -/* 80458858 1C 1F 04 04 */ mulli r0, r31, 0x404 -/* 8045885C 7C 63 02 14 */ add r3, r3, r0 -/* 80458860 88 03 03 F4 */ lbz r0, 0x3f4(r3) -/* 80458864 54 00 07 34 */ rlwinm r0, r0, 0, 0x1c, 0x1a -/* 80458868 98 03 03 F4 */ stb r0, 0x3f4(r3) -/* 8045886C 7F A3 EB 78 */ mr r3, r29 -/* 80458870 38 80 00 00 */ li r4, 0 -/* 80458874 4B BC 04 19 */ bl __dt__10fopAc_ac_cFv -/* 80458878 7F C0 07 35 */ extsh. r0, r30 -/* 8045887C 40 81 00 0C */ ble lbl_80458888 -/* 80458880 7F A3 EB 78 */ mr r3, r29 -/* 80458884 4B E7 64 B9 */ bl __dl__FPv -lbl_80458888: -/* 80458888 7F A3 EB 78 */ mr r3, r29 -/* 8045888C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80458890 4B F0 99 99 */ bl _restgpr_29 -/* 80458894 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80458898 7C 08 03 A6 */ mtlr r0 -/* 8045889C 38 21 00 20 */ addi r1, r1, 0x20 -/* 804588A0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_bg/d_a_bg/checkCreateHeap__FP10fopAc_ac_c.s b/asm/rel/d/a/d_a_bg/d_a_bg/checkCreateHeap__FP10fopAc_ac_c.s deleted file mode 100644 index 203ab6019d..0000000000 --- a/asm/rel/d/a/d_a_bg/d_a_bg/checkCreateHeap__FP10fopAc_ac_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80458298: -/* 80458298 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8045829C 7C 08 02 A6 */ mflr r0 -/* 804582A0 90 01 00 14 */ stw r0, 0x14(r1) -/* 804582A4 48 00 00 15 */ bl createHeap__6daBg_cFv -/* 804582A8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804582AC 7C 08 03 A6 */ mtlr r0 -/* 804582B0 38 21 00 10 */ addi r1, r1, 0x10 -/* 804582B4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_bg/d_a_bg/daBg_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/d_a_bg/d_a_bg/daBg_Create__FP10fopAc_ac_c.s deleted file mode 100644 index 69923933a5..0000000000 --- a/asm/rel/d/a/d_a_bg/d_a_bg/daBg_Create__FP10fopAc_ac_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_8045904C: -/* 8045904C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80459050 7C 08 02 A6 */ mflr r0 -/* 80459054 90 01 00 14 */ stw r0, 0x14(r1) -/* 80459058 48 00 00 15 */ bl create__6daBg_cFv -/* 8045905C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80459060 7C 08 03 A6 */ mtlr r0 -/* 80459064 38 21 00 10 */ addi r1, r1, 0x10 -/* 80459068 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_bg/d_a_bg/daBg_Delete__FP6daBg_c.s b/asm/rel/d/a/d_a_bg/d_a_bg/daBg_Delete__FP6daBg_c.s deleted file mode 100644 index 3733081ca4..0000000000 --- a/asm/rel/d/a/d_a_bg/d_a_bg/daBg_Delete__FP6daBg_c.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80459024: -/* 80459024 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80459028 7C 08 02 A6 */ mflr r0 -/* 8045902C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80459030 38 80 FF FF */ li r4, -1 -/* 80459034 4B FF F7 55 */ bl __dt__6daBg_cFv -/* 80459038 38 60 00 01 */ li r3, 1 -/* 8045903C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80459040 7C 08 03 A6 */ mtlr r0 -/* 80459044 38 21 00 10 */ addi r1, r1, 0x10 -/* 80459048 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_bg/d_a_bg/daBg_Draw__FP6daBg_c.s b/asm/rel/d/a/d_a_bg/d_a_bg/daBg_Draw__FP6daBg_c.s deleted file mode 100644 index 68a59aee1c..0000000000 --- a/asm/rel/d/a/d_a_bg/d_a_bg/daBg_Draw__FP6daBg_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_804588A4: -/* 804588A4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804588A8 7C 08 02 A6 */ mflr r0 -/* 804588AC 90 01 00 14 */ stw r0, 0x14(r1) -/* 804588B0 48 00 00 15 */ bl draw__6daBg_cFv -/* 804588B4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804588B8 7C 08 03 A6 */ mtlr r0 -/* 804588BC 38 21 00 10 */ addi r1, r1, 0x10 -/* 804588C0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_bg/d_a_bg/play__13daBg_brkAnm_cFv.s b/asm/rel/d/a/d_a_bg/d_a_bg/play__13daBg_brkAnm_cFv.s deleted file mode 100644 index 215ce7ea30..0000000000 --- a/asm/rel/d/a/d_a_bg/d_a_bg/play__13daBg_brkAnm_cFv.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_80458274: -/* 80458274 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80458278 7C 08 02 A6 */ mflr r0 -/* 8045827C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80458280 80 63 00 00 */ lwz r3, 0(r3) -/* 80458284 4B BB 51 A5 */ bl play__14mDoExt_baseAnmFv -/* 80458288 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8045828C 7C 08 03 A6 */ mtlr r0 -/* 80458290 38 21 00 10 */ addi r1, r1, 0x10 -/* 80458294 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_bg/d_a_bg/play__13daBg_btkAnm_cFv.s b/asm/rel/d/a/d_a_bg/d_a_bg/play__13daBg_btkAnm_cFv.s deleted file mode 100644 index c4e825febe..0000000000 --- a/asm/rel/d/a/d_a_bg/d_a_bg/play__13daBg_btkAnm_cFv.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_804580CC: -/* 804580CC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804580D0 7C 08 02 A6 */ mflr r0 -/* 804580D4 90 01 00 14 */ stw r0, 0x14(r1) -/* 804580D8 80 63 00 00 */ lwz r3, 0(r3) -/* 804580DC 4B BB 53 4D */ bl play__14mDoExt_baseAnmFv -/* 804580E0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804580E4 7C 08 03 A6 */ mtlr r0 -/* 804580E8 38 21 00 10 */ addi r1, r1, 0x10 -/* 804580EC 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_bg/d_a_bg/setArcName__6daBg_cFv.s b/asm/rel/d/a/d_a_bg/d_a_bg/setArcName__6daBg_cFv.s deleted file mode 100644 index 773ebe228c..0000000000 --- a/asm/rel/d/a/d_a_bg/d_a_bg/setArcName__6daBg_cFv.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_80457BF8: -/* 80457BF8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80457BFC 7C 08 02 A6 */ mflr r0 -/* 80457C00 90 01 00 14 */ stw r0, 0x14(r1) -/* 80457C04 80 63 00 B0 */ lwz r3, 0xb0(r3) -/* 80457C08 4B BD 78 B5 */ bl dComIfG_getRoomArcName__Fi -/* 80457C0C 7C 64 1B 78 */ mr r4, r3 -/* 80457C10 3C 60 80 46 */ lis r3, arcName@ha /* 0x804595B8@ha */ -/* 80457C14 38 63 95 B8 */ addi r3, r3, arcName@l /* 0x804595B8@l */ -/* 80457C18 38 A0 00 20 */ li r5, 0x20 -/* 80457C1C 4B F1 0E CD */ bl strncpy -/* 80457C20 3C 60 80 46 */ lis r3, arcName@ha /* 0x804595B8@ha */ -/* 80457C24 38 63 95 B8 */ addi r3, r3, arcName@l /* 0x804595B8@l */ -/* 80457C28 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80457C2C 7C 08 03 A6 */ mtlr r0 -/* 80457C30 38 21 00 10 */ addi r1, r1, 0x10 -/* 80457C34 4E 80 00 20 */ blr From 5fa8a73aedbe407d85d72f5c15abeadcfa98cd85 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Wed, 4 Jan 2023 23:51:05 -0800 Subject: [PATCH 3/5] d_a_obj_enemy_create OK --- include/f_op/f_op_actor.h | 8 +- include/f_op/f_op_actor_mng.h | 4 + .../d_a_obj_enemy_create.h | 59 ++- .../d_a_obj_enemy_create.cpp | 471 +++++++++--------- rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.cpp | 52 +- 5 files changed, 340 insertions(+), 254 deletions(-) diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index ad64ba223b..fec05717df 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -7,9 +7,15 @@ #include "dolphin/mtx/mtx.h" #include "f_pc/f_pc_leaf.h" +struct actor_method_class { + /* 0x00 */ process_method_class mBase; + /* 0x10 */ process_method_func mpDrawFunc; + /* 0x14 */ u8 field_0x14[0xC]; // Likely padding +}; + struct actor_process_profile_definition { /* 0x00 */ leaf_process_profile_definition mBase; - /* 0x24 */ leafdraw_method_class* mSubMtd; + /* 0x24 */ actor_method_class* mSubMtd; /* 0x28 */ int field_0x28; // mStatus /* 0x2C */ u8 field_0x2c; // mActorType /* 0x2D */ u8 field_0x2d; // mCullType diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index d183ae6dec..78c3c07c2d 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -186,6 +186,10 @@ inline cXyz& fopAcM_GetPosition_p(fopAc_ac_c* pActor) { return pActor->current.pos; } +inline cXyz& fopAcM_GetPosition(fopAc_ac_c* pActor) { + return pActor->current.pos; +} + inline cXyz& fopAcM_GetOldPosition_p(fopAc_ac_c* pActor) { return pActor->next.pos; } diff --git a/include/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.h b/include/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.h index 1bed0ee3e3..64ad81de56 100644 --- a/include/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.h +++ b/include/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.h @@ -1,6 +1,63 @@ #ifndef D_A_OBJ_ENEMY_CREATE_H #define D_A_OBJ_ENEMY_CREATE_H -#include "dolphin/types.h" +#include "d/com/d_com_inf_game.h" + +class daObjE_CREATE_c : public fopAc_ac_c { +public: + /* 80BE31BC */ void NormalAction(); + /* 80BE345C */ void SearchAction(); + /* 80BE34A0 */ void LoopAction(); + /* 80BE3544 */ void Action(); + /* 80BE359C */ int Execute(); + /* 80BE35C0 */ int Delete(); + /* 80BE3618 */ void NameChk(); + /* 80BE3770 */ int create(); + +private: + /* 0x568 */ u8 field_0x568; + /* 0x569 */ u8 mEnemyNum; + /* 0x56A */ u8 mActivateSw; + /* 0x56B */ u8 mDeactivateSw; + /* 0x56C */ u8 mEndLoopSw; + /* 0x56E */ csXyz mEnemyAngle; + /* 0x574 */ s16 mEnemyProcName; + /* 0x578 */ u32 mEnemyParams; + /* 0x57C */ u32* mActorList; + /* 0x580 */ u8 mActionMode; + /* 0x582 */ s16 mKillCheckDelayTimer; + /* 0x584 */ u8 mAction; + /* 0x588 */ u8 unused[12]; +}; // Size: 0x594 + +enum daObjE_EnemyType { + ENEMY_NONE, + ENEMY_KEESE, + ENEMY_RAT, + ENEMY_CHU, + ENEMY_CHU2, + ENEMY_BABY_GOHMA, + ENEMY_BUBBLE, + ENEMY_BOKOBLIN, + ENEMY_LIZALFOS, + ENEMY_SHADOW_BEAST, + ENEMY_SHADOW_VERMIN, + ENEMY_SHADOW_KEESE, + ENEMY_BOKOBLIN2, +}; + +enum daObjE_Action { + ACT_NORMAL, + ACT_SEARCH, + ACT_LOOP, + ACT_DEFAULT = 0xF, +}; + +enum daObjE_Mode { + MODE_CREATE, + MODE_WAIT, + MODE_KILL_CHECK, + MODE_END, +}; #endif /* D_A_OBJ_ENEMY_CREATE_H */ diff --git a/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.cpp b/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.cpp index 3576c1b03f..afa552a998 100644 --- a/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.cpp +++ b/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.cpp @@ -1,280 +1,297 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_obj_enemy_create -// +/* + * d_a_obj_enemy_create.cpp + * Enemy spawner + */ #include "rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "d/d_procname.h" -// -// Types: -// - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct daObjE_CREATE_c { - /* 80BE31BC */ void NormalAction(); - /* 80BE345C */ void SearchAction(); - /* 80BE34A0 */ void LoopAction(); - /* 80BE3544 */ void Action(); - /* 80BE359C */ void Execute(); - /* 80BE35C0 */ void Delete(); - /* 80BE3618 */ void NameChk(); - /* 80BE3770 */ void create(); -}; - -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct csXyz {}; - -struct cXyz {}; - -// -// Forward References: -// - -extern "C" static void daObjE_CREATE_Create__FP10fopAc_ac_c(); -extern "C" static void daObjE_CREATE_Delete__FP15daObjE_CREATE_c(); -extern "C" void NormalAction__15daObjE_CREATE_cFv(); -extern "C" void SearchAction__15daObjE_CREATE_cFv(); -extern "C" void LoopAction__15daObjE_CREATE_cFv(); -extern "C" void Action__15daObjE_CREATE_cFv(); -extern "C" void Execute__15daObjE_CREATE_cFv(); -extern "C" void Delete__15daObjE_CREATE_cFv(); -extern "C" static bool daObjE_CREATE_Draw__FP15daObjE_CREATE_c(); -extern "C" static void daObjE_CREATE_Execute__FP15daObjE_CREATE_c(); -extern "C" void NameChk__15daObjE_CREATE_cFv(); -extern "C" void create__15daObjE_CREATE_cFv(); -extern "C" static bool daObjE_CREATE_IsDelete__FP15daObjE_CREATE_c(); -extern "C" extern void* g_profile_Obj_E_CREATE[12]; - -// -// External References: -// - -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_createChild__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i(); -extern "C" void fpcSch_JudgeByID__FPvPv(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz(); -extern "C" void* __nwa__FUl(); -extern "C" void __dla__FPv(); -extern "C" void _savegpr_25(); -extern "C" void _restgpr_25(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; - -// -// Declarations: -// +extern "C" extern leafdraw_method_class g_fopAc_Method; /* 80BE3178-80BE3198 000078 0020+00 1/0 0/0 0/0 .text daObjE_CREATE_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjE_CREATE_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Create__FP10fopAc_ac_c.s" +static int daObjE_CREATE_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); } -#pragma pop /* 80BE3198-80BE31BC 000098 0024+00 1/0 0/0 0/0 .text daObjE_CREATE_Delete__FP15daObjE_CREATE_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjE_CREATE_Delete(daObjE_CREATE_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Delete__FP15daObjE_CREATE_c.s" +static int daObjE_CREATE_Delete(daObjE_CREATE_c* i_this) { + i_this->Delete(); + return 1; } -#pragma pop - -/* ############################################################################################## */ -/* 80BE3888-80BE388C 000000 0004+00 1/1 0/0 0/0 .rodata @3720 */ -SECTION_RODATA static u8 const lit_3720[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80BE3888, &lit_3720); - -/* 80BE388C-80BE3890 000004 0004+00 0/1 0/0 0/0 .rodata @3721 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3721 = 100.0f; -COMPILER_STRIP_GATE(0x80BE388C, &lit_3721); -#pragma pop - -/* 80BE3890-80BE3898 000008 0004+04 0/1 0/0 0/0 .rodata @3722 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3722[1 + 1 /* padding */] = { - 62000.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80BE3890, &lit_3722); -#pragma pop - -/* 80BE3898-80BE38A0 000010 0008+00 0/1 0/0 0/0 .rodata @3724 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3724[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80BE3898, &lit_3724); -#pragma pop /* 80BE31BC-80BE345C 0000BC 02A0+00 3/3 0/0 0/0 .text NormalAction__15daObjE_CREATE_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjE_CREATE_c::NormalAction() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/NormalAction__15daObjE_CREATE_cFv.s" +void daObjE_CREATE_c::NormalAction() { + cXyz offsetPos(0.0f, 0.0f, 100.0f); + + switch (mActionMode) { + case MODE_CREATE: + if (mActivateSw != 0xFF && dComIfGs_isSwitch(mActivateSw, fopAcM_GetRoomNo(this))) { + int enemyNum = mEnemyNum; + + for (int i = 0; i < enemyNum; i++) { + s16 angle = shape_angle.y + (62000.0f / enemyNum) * i; + + // this cLib_offsetPos call is useless since the result is stored in `offsetPos` + // and `offsetPos` is never used afterward. + // this was probably supposed to be: + // "cLib_offsetPos(¤t.pos, ¤t.pos, angle, &offsetPos)" + cLib_offsetPos(&offsetPos, ¤t.pos, angle, &offsetPos); + s8 roomNo = fopAcM_GetRoomNo(this); + + mActorList[i] = + fopAcM_createChild(mEnemyProcName, fopAcM_GetID(this), mEnemyParams, + ¤t.pos, roomNo, &mEnemyAngle, NULL, -1, NULL); + } + mActionMode++; + mKillCheckDelayTimer = 50; + } + break; + case MODE_WAIT: + mKillCheckDelayTimer--; + if (mKillCheckDelayTimer <= 0) { + mKillCheckDelayTimer = 0; + } + + if (mKillCheckDelayTimer == 0) { + mActionMode++; + } + break; + case MODE_KILL_CHECK: + int killed_num; + int enemyNum = mEnemyNum; + + killed_num = 0; + for (int i = 0; i < enemyNum; i++) { + if (fopAcM_SearchByID(mActorList[i]) == NULL) { + mActorList[i] = 0xFFFFFFFF; + killed_num++; + } + } + + if (killed_num == enemyNum) { + mActionMode++; + if (mDeactivateSw != 0xFF && + !dComIfGs_isSwitch(mDeactivateSw, fopAcM_GetRoomNo(this))) { + dComIfGs_onSwitch(mDeactivateSw, fopAcM_GetRoomNo(this)); + } + + mKillCheckDelayTimer = 100; + } + break; + case MODE_END: + break; + } } -#pragma pop /* 80BE345C-80BE34A0 00035C 0044+00 1/1 0/0 0/0 .text SearchAction__15daObjE_CREATE_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjE_CREATE_c::SearchAction() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/SearchAction__15daObjE_CREATE_cFv.s" +/** + * Moves the enemy spawner position to player position + */ +void daObjE_CREATE_c::SearchAction() { + current.pos = fopAcM_GetPosition(daPy_getPlayerActorClass()); + NormalAction(); } -#pragma pop /* 80BE34A0-80BE3544 0003A0 00A4+00 1/1 0/0 0/0 .text LoopAction__15daObjE_CREATE_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjE_CREATE_c::LoopAction() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/LoopAction__15daObjE_CREATE_cFv.s" +/** + * Starts the enemy spawn loop over again when all enemies are killed. + * If a loop end switch is specified and activated, the loop will end + */ +void daObjE_CREATE_c::LoopAction() { + NormalAction(); + + if (mActionMode == MODE_END) { + mKillCheckDelayTimer--; + if (mKillCheckDelayTimer <= 0) { + mKillCheckDelayTimer = 0; + } + + if (mKillCheckDelayTimer == 0) { + mActionMode = MODE_CREATE; + } + } + + if (mEndLoopSw != 0xFF && dComIfGs_isSwitch(mEndLoopSw, fopAcM_GetRoomNo(this))) { + mAction = ACT_NORMAL; + mActionMode = MODE_KILL_CHECK; + } } -#pragma pop /* 80BE3544-80BE359C 000444 0058+00 1/1 0/0 0/0 .text Action__15daObjE_CREATE_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjE_CREATE_c::Action() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Action__15daObjE_CREATE_cFv.s" +void daObjE_CREATE_c::Action() { + switch (mAction) { + case ACT_NORMAL: + NormalAction(); + break; + case ACT_SEARCH: + SearchAction(); + break; + case ACT_LOOP: + LoopAction(); + break; + } } -#pragma pop /* 80BE359C-80BE35C0 00049C 0024+00 1/1 0/0 0/0 .text Execute__15daObjE_CREATE_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjE_CREATE_c::Execute() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Execute__15daObjE_CREATE_cFv.s" +int daObjE_CREATE_c::Execute() { + Action(); + return 1; } -#pragma pop /* 80BE35C0-80BE35F0 0004C0 0030+00 1/1 0/0 0/0 .text Delete__15daObjE_CREATE_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjE_CREATE_c::Delete() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Delete__15daObjE_CREATE_cFv.s" +int daObjE_CREATE_c::Delete() { + if (mActorList != NULL) { + delete[] mActorList; + } + + return 1; } -#pragma pop /* 80BE35F0-80BE35F8 0004F0 0008+00 1/0 0/0 0/0 .text daObjE_CREATE_Draw__FP15daObjE_CREATE_c */ -static bool daObjE_CREATE_Draw(daObjE_CREATE_c* param_0) { - return true; +static int daObjE_CREATE_Draw(daObjE_CREATE_c* i_this) { + return 1; } /* 80BE35F8-80BE3618 0004F8 0020+00 1/0 0/0 0/0 .text daObjE_CREATE_Execute__FP15daObjE_CREATE_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjE_CREATE_Execute(daObjE_CREATE_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Execute__FP15daObjE_CREATE_c.s" +static int daObjE_CREATE_Execute(daObjE_CREATE_c* i_this) { + return i_this->Execute(); } -#pragma pop - -/* ############################################################################################## */ -/* 80BE38A0-80BE38D4 -00001 0034+00 1/1 0/0 0/0 .data @3838 */ -SECTION_DATA static void* lit_3838[13] = { - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0x154), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0x50), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0x5C), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0x68), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0x7C), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0x90), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0xA8), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0xB4), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0xC0), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0xCC), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0x100), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0x114), - (void*)(((char*)NameChk__15daObjE_CREATE_cFv) + 0x128), -}; /* 80BE3618-80BE3770 000518 0158+00 2/1 0/0 0/0 .text NameChk__15daObjE_CREATE_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjE_CREATE_c::NameChk() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/NameChk__15daObjE_CREATE_cFv.s" +void daObjE_CREATE_c::NameChk() { + int enemyType = fopAcM_GetParam(this) & 0xF; + mEnemyNum = (fopAcM_GetParam(this) >> 4) & 0xF; + mEnemyParams = 0xFFFFFFFF; + mEnemyAngle = shape_angle; + + switch (enemyType) { + case ENEMY_NONE: + break; + case ENEMY_KEESE: + mEnemyProcName = PROC_E_BA; + break; + case ENEMY_RAT: + mEnemyProcName = PROC_E_MS; + break; + case ENEMY_CHU: + mEnemyProcName = PROC_E_SM2; + mEnemyParams = 0xFFFFFF1F; + break; + case ENEMY_CHU2: + mEnemyProcName = PROC_E_SM2; + mEnemyParams = 0xFFFFFF3F; + break; + case ENEMY_BABY_GOHMA: + mEnemyProcName = PROC_E_GM; + mEnemyParams = 0x000AFF02; + break; + case ENEMY_BUBBLE: + mEnemyProcName = PROC_E_BU; + break; + case ENEMY_BOKOBLIN: + mEnemyProcName = PROC_E_OC; + break; + case ENEMY_LIZALFOS: + mEnemyProcName = PROC_E_DN; + break; + case ENEMY_SHADOW_BEAST: + mEnemyProcName = PROC_E_S1; + + if (mEnemyNum == 1) { + mEnemyParams = 0xFFFFFEF0; + } else { + mEnemyParams = (mEnemyNum << 4) | 0xFFFFFE00; + } + break; + case ENEMY_SHADOW_VERMIN: + mEnemyProcName = PROC_E_YG; + mEnemyParams = 0xFFFFFF00; + break; + case ENEMY_SHADOW_KEESE: + mEnemyProcName = PROC_E_YK; + mEnemyParams = 0xFFFFFF01; + break; + case ENEMY_BOKOBLIN2: + mEnemyProcName = PROC_E_OC; + mEnemyParams = 0xFFFF01FF; + mEnemyAngle.set(0x100, shape_angle.y, shape_angle.z); + break; + } } -#pragma pop /* 80BE3770-80BE3878 000670 0108+00 1/1 0/0 0/0 .text create__15daObjE_CREATE_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjE_CREATE_c::create() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/create__15daObjE_CREATE_cFv.s" +int daObjE_CREATE_c::create() { + if (!fopAcM_CheckCondition(this, 8)) { + new (this) kytag05_class(); + fopAcM_OnCondition(this, 8); + } + + NameChk(); + u32 enemyType = fopAcM_GetParam(this) & 0xF; + + mAction = current.angle.x & 0xF; + if (mAction == ACT_DEFAULT) { + mAction = ACT_NORMAL; + } + + current.angle.x = 0; + + if (enemyType == 0 || enemyType == 0xFF) { + return cPhs_ERROR_e; + } + + mEndLoopSw = fopAcM_GetParam(this) >> 0x18; + if (dComIfGs_isSwitch(mEndLoopSw, fopAcM_GetRoomNo(this))) { + return cPhs_ERROR_e; + } + + mActivateSw = fopAcM_GetParam(this) >> 8; + mDeactivateSw = fopAcM_GetParam(this) >> 0x10; + mActorList = new u32[mEnemyNum]; + + if (mActorList == NULL) { + return cPhs_ERROR_e; + } + + return cPhs_COMPLEATE_e; } -#pragma pop /* 80BE3878-80BE3880 000778 0008+00 1/0 0/0 0/0 .text daObjE_CREATE_IsDelete__FP15daObjE_CREATE_c */ -static bool daObjE_CREATE_IsDelete(daObjE_CREATE_c* param_0) { - return true; +static int daObjE_CREATE_IsDelete(daObjE_CREATE_c* i_this) { + return 1; } /* ############################################################################################## */ /* 80BE38D4-80BE38F4 -00001 0020+00 1/0 0/0 0/0 .data l_daObjE_CREATE_Method */ -SECTION_DATA static void* l_daObjE_CREATE_Method[8] = { - (void*)daObjE_CREATE_Create__FP10fopAc_ac_c, - (void*)daObjE_CREATE_Delete__FP15daObjE_CREATE_c, - (void*)daObjE_CREATE_Execute__FP15daObjE_CREATE_c, - (void*)daObjE_CREATE_IsDelete__FP15daObjE_CREATE_c, - (void*)daObjE_CREATE_Draw__FP15daObjE_CREATE_c, - (void*)NULL, - (void*)NULL, - (void*)NULL, +static actor_method_class l_daObjE_CREATE_Method = { + (process_method_func)daObjE_CREATE_Create, (process_method_func)daObjE_CREATE_Delete, + (process_method_func)daObjE_CREATE_Execute, (process_method_func)daObjE_CREATE_IsDelete, + (process_method_func)daObjE_CREATE_Draw, }; /* 80BE38F4-80BE3924 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_E_CREATE */ -SECTION_DATA extern void* g_profile_Obj_E_CREATE[12] = { - (void*)0xFFFFFFFD, (void*)0x0003FFFD, - (void*)0x00680000, (void*)&g_fpcLf_Method, - (void*)0x00000594, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x01CA0000, (void*)&l_daObjE_CREATE_Method, - (void*)0x00040000, (void*)0x000E0000, +extern actor_process_profile_definition g_profile_Obj_E_CREATE = { + -3, + 3, + 0xFFFD, + PROC_Obj_E_CREATE, + 0, + &g_fpcLf_Method.mBase, + sizeof(daObjE_CREATE_c), + 0, + 0, + &g_fopAc_Method, + 0x01CA, + 0, + 0, + &l_daObjE_CREATE_Method, + 0x00040000, + 0x0, + 0xE, + 0, + 0, }; diff --git a/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.cpp b/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.cpp index 93fa5b37fc..c56bee44a9 100644 --- a/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.cpp +++ b/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.cpp @@ -108,37 +108,39 @@ static int daTagMmsg_Execute(daTagMmsg_c* tag) { } /* 80D5BD28-80D5BD30 000488 0008+00 1/0 0/0 0/0 .text daTagMmsg_Draw__FP11daTagMmsg_c */ -static bool daTagMmsg_Draw(daTagMmsg_c* tag) { - return true; +static int daTagMmsg_Draw(daTagMmsg_c* tag) { + return 1; } /* ############################################################################################## */ /* 80D5BD44-80D5BD64 -00001 0020+00 1/0 0/0 0/0 .data l_daTagMmsg_Method */ -// This is probably of type leafdraw_method_class, but I can't get the data to have the right -// padding without these extra NULLs. -static void* l_daTagMmsg_Method[8] = { - daTagMmsg_Create, daTagMmsg_Delete, daTagMmsg_Execute, NULL, daTagMmsg_Draw, NULL, NULL, NULL, +static actor_method_class l_daTagMmsg_Method = { + (process_method_func)daTagMmsg_Create, + (process_method_func)daTagMmsg_Delete, + (process_method_func)daTagMmsg_Execute, + (process_method_func)NULL, + (process_method_func)daTagMmsg_Draw, }; /* 80D5BD64-80D5BD94 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_Mmsg */ extern actor_process_profile_definition g_profile_Tag_Mmsg = { - -3, // mLayerID - 7, // mListID - 0xFFFD, // mListPrio - PROC_Tag_Mmsg, // mProcName - 0, // unkA - &g_fpcLf_Method.mBase, // mSubMtd - sizeof(daTagMmsg_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method, // mSubMtd - 0x00FF, // mPriority - 0, // unk22[0] - 0, // unk22[1] - (leafdraw_method_class*)&l_daTagMmsg_Method, // mSubMtd - 0x00044000, // mStatus - 0x03, // mActorType - 0x0E, // mCullType - 0, // field_0x2e[0] - 0 // field_0x2e[1] + -3, // mLayerID + 7, // mListID + 0xFFFD, // mListPrio + PROC_Tag_Mmsg, // mProcName + 0, // unkA + &g_fpcLf_Method.mBase, // mSubMtd + sizeof(daTagMmsg_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method, // mSubMtd + 0x00FF, // mPriority + 0, // unk22[0] + 0, // unk22[1] + &l_daTagMmsg_Method, // mSubMtd + 0x00044000, // mStatus + 0x03, // mActorType + 0x0E, // mCullType + 0, // field_0x2e[0] + 0 // field_0x2e[1] }; \ No newline at end of file From 3fc4961b9131ae3a0005aa9ba78eb81b95893f9e Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Wed, 4 Jan 2023 23:51:40 -0800 Subject: [PATCH 4/5] remove asm --- Progress.md | 8 +- .../Action__15daObjE_CREATE_cFv.s | 28 --- .../Delete__15daObjE_CREATE_cFv.s | 14 -- .../Execute__15daObjE_CREATE_cFv.s | 10 - .../LoopAction__15daObjE_CREATE_cFv.s | 45 ----- .../NameChk__15daObjE_CREATE_cFv.s | 101 ---------- .../NormalAction__15daObjE_CREATE_cFv.s | 182 ------------------ .../SearchAction__15daObjE_CREATE_cFv.s | 18 -- .../create__15daObjE_CREATE_cFv.s | 74 ------- .../daObjE_CREATE_Create__FP10fopAc_ac_c.s | 9 - ...aObjE_CREATE_Delete__FP15daObjE_CREATE_c.s | 10 - ...ObjE_CREATE_Execute__FP15daObjE_CREATE_c.s | 9 - 12 files changed, 4 insertions(+), 504 deletions(-) delete mode 100644 asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Action__15daObjE_CREATE_cFv.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Delete__15daObjE_CREATE_cFv.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Execute__15daObjE_CREATE_cFv.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/LoopAction__15daObjE_CREATE_cFv.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/NameChk__15daObjE_CREATE_cFv.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/NormalAction__15daObjE_CREATE_cFv.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/SearchAction__15daObjE_CREATE_cFv.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/create__15daObjE_CREATE_cFv.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Create__FP10fopAc_ac_c.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Delete__FP15daObjE_CREATE_c.s delete mode 100644 asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Execute__FP15daObjE_CREATE_c.s diff --git a/Progress.md b/Progress.md index 5f35fe52e3..de4e5c62a2 100644 --- a/Progress.md +++ b/Progress.md @@ -21,8 +21,8 @@ Total | 30.152472% | 1212332 | 4020672 Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- main.dol | 30.152472% | 1212332 | 4020672 -RELs | 33.305949% | 3830292 | 11500324 -Total | 32.489049% | 5042624 | 15520996 +RELs | 33.321461% | 3832076 | 11500324 +Total | 32.500543% | 5044408 | 15520996 ## RELs @@ -235,7 +235,7 @@ d_a_obj_batta | 31.886560% | 5172 | 16220 d_a_obj_udoor | 49.156627% | 1632 | 3320 d_a_obj_damCps | 100.000000% | 504 | 504 d_a_obj_tobyhouse | 34.586466% | 3864 | 11172 -d_a_obj_enemy_create | 36.916549% | 1044 | 2828 +d_a_obj_enemy_create | 100.000000% | 2828 | 2828 d_a_obj_magne_arm | 34.395028% | 7084 | 20596 d_a_obj_TvCdlst | 43.547170% | 2308 | 5300 d_a_obj_lv8OptiLift | 35.768374% | 3212 | 8980 @@ -785,4 +785,4 @@ d_a_b_oh2 | 37.960954% | 2100 | 5532 d_a_b_bq | 28.033347% | 11164 | 39824 d_a_b_zant_sima | 40.995025% | 1648 | 4020 d_a_b_gm | 30.376176% | 11628 | 38280 -Total | 33.305949% | 3830292 | 11500324 +Total | 33.321461% | 3832076 | 11500324 diff --git a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Action__15daObjE_CREATE_cFv.s b/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Action__15daObjE_CREATE_cFv.s deleted file mode 100644 index c725f6e259..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Action__15daObjE_CREATE_cFv.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_80BE3544: -/* 80BE3544 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BE3548 7C 08 02 A6 */ mflr r0 -/* 80BE354C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BE3550 88 03 05 84 */ lbz r0, 0x584(r3) -/* 80BE3554 2C 00 00 01 */ cmpwi r0, 1 -/* 80BE3558 41 82 00 28 */ beq lbl_80BE3580 -/* 80BE355C 40 80 00 10 */ bge lbl_80BE356C -/* 80BE3560 2C 00 00 00 */ cmpwi r0, 0 -/* 80BE3564 40 80 00 14 */ bge lbl_80BE3578 -/* 80BE3568 48 00 00 24 */ b lbl_80BE358C -lbl_80BE356C: -/* 80BE356C 2C 00 00 03 */ cmpwi r0, 3 -/* 80BE3570 40 80 00 1C */ bge lbl_80BE358C -/* 80BE3574 48 00 00 14 */ b lbl_80BE3588 -lbl_80BE3578: -/* 80BE3578 4B FF FC 45 */ bl NormalAction__15daObjE_CREATE_cFv -/* 80BE357C 48 00 00 10 */ b lbl_80BE358C -lbl_80BE3580: -/* 80BE3580 4B FF FE DD */ bl SearchAction__15daObjE_CREATE_cFv -/* 80BE3584 48 00 00 08 */ b lbl_80BE358C -lbl_80BE3588: -/* 80BE3588 4B FF FF 19 */ bl LoopAction__15daObjE_CREATE_cFv -lbl_80BE358C: -/* 80BE358C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BE3590 7C 08 03 A6 */ mtlr r0 -/* 80BE3594 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BE3598 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Delete__15daObjE_CREATE_cFv.s b/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Delete__15daObjE_CREATE_cFv.s deleted file mode 100644 index b98139d33b..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Delete__15daObjE_CREATE_cFv.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80BE35C0: -/* 80BE35C0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BE35C4 7C 08 02 A6 */ mflr r0 -/* 80BE35C8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BE35CC 80 63 05 7C */ lwz r3, 0x57c(r3) -/* 80BE35D0 28 03 00 00 */ cmplwi r3, 0 -/* 80BE35D4 41 82 00 08 */ beq lbl_80BE35DC -/* 80BE35D8 4B 6E B7 89 */ bl __dla__FPv -lbl_80BE35DC: -/* 80BE35DC 38 60 00 01 */ li r3, 1 -/* 80BE35E0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BE35E4 7C 08 03 A6 */ mtlr r0 -/* 80BE35E8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BE35EC 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Execute__15daObjE_CREATE_cFv.s b/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Execute__15daObjE_CREATE_cFv.s deleted file mode 100644 index 51d875aaf4..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/Execute__15daObjE_CREATE_cFv.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_80BE359C: -/* 80BE359C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BE35A0 7C 08 02 A6 */ mflr r0 -/* 80BE35A4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BE35A8 4B FF FF 9D */ bl Action__15daObjE_CREATE_cFv -/* 80BE35AC 38 60 00 01 */ li r3, 1 -/* 80BE35B0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BE35B4 7C 08 03 A6 */ mtlr r0 -/* 80BE35B8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BE35BC 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/LoopAction__15daObjE_CREATE_cFv.s b/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/LoopAction__15daObjE_CREATE_cFv.s deleted file mode 100644 index 0c5c290768..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/LoopAction__15daObjE_CREATE_cFv.s +++ /dev/null @@ -1,45 +0,0 @@ -lbl_80BE34A0: -/* 80BE34A0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BE34A4 7C 08 02 A6 */ mflr r0 -/* 80BE34A8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BE34AC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80BE34B0 7C 7F 1B 78 */ mr r31, r3 -/* 80BE34B4 4B FF FD 09 */ bl NormalAction__15daObjE_CREATE_cFv -/* 80BE34B8 88 1F 05 80 */ lbz r0, 0x580(r31) -/* 80BE34BC 28 00 00 03 */ cmplwi r0, 3 -/* 80BE34C0 40 82 00 38 */ bne lbl_80BE34F8 -/* 80BE34C4 A8 7F 05 82 */ lha r3, 0x582(r31) -/* 80BE34C8 38 03 FF FF */ addi r0, r3, -1 -/* 80BE34CC B0 1F 05 82 */ sth r0, 0x582(r31) -/* 80BE34D0 A8 1F 05 82 */ lha r0, 0x582(r31) -/* 80BE34D4 2C 00 00 00 */ cmpwi r0, 0 -/* 80BE34D8 41 81 00 0C */ bgt lbl_80BE34E4 -/* 80BE34DC 38 00 00 00 */ li r0, 0 -/* 80BE34E0 B0 1F 05 82 */ sth r0, 0x582(r31) -lbl_80BE34E4: -/* 80BE34E4 A8 1F 05 82 */ lha r0, 0x582(r31) -/* 80BE34E8 2C 00 00 00 */ cmpwi r0, 0 -/* 80BE34EC 40 82 00 0C */ bne lbl_80BE34F8 -/* 80BE34F0 38 00 00 00 */ li r0, 0 -/* 80BE34F4 98 1F 05 80 */ stb r0, 0x580(r31) -lbl_80BE34F8: -/* 80BE34F8 88 9F 05 6C */ lbz r4, 0x56c(r31) -/* 80BE34FC 28 04 00 FF */ cmplwi r4, 0xff -/* 80BE3500 41 82 00 30 */ beq lbl_80BE3530 -/* 80BE3504 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80BE3508 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80BE350C 88 1F 04 E2 */ lbz r0, 0x4e2(r31) -/* 80BE3510 7C 05 07 74 */ extsb r5, r0 -/* 80BE3514 4B 45 1E 4D */ bl isSwitch__10dSv_info_cCFii -/* 80BE3518 2C 03 00 00 */ cmpwi r3, 0 -/* 80BE351C 41 82 00 14 */ beq lbl_80BE3530 -/* 80BE3520 38 00 00 00 */ li r0, 0 -/* 80BE3524 98 1F 05 84 */ stb r0, 0x584(r31) -/* 80BE3528 38 00 00 02 */ li r0, 2 -/* 80BE352C 98 1F 05 80 */ stb r0, 0x580(r31) -lbl_80BE3530: -/* 80BE3530 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80BE3534 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BE3538 7C 08 03 A6 */ mtlr r0 -/* 80BE353C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BE3540 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/NameChk__15daObjE_CREATE_cFv.s b/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/NameChk__15daObjE_CREATE_cFv.s deleted file mode 100644 index 2aa4d5dab8..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/NameChk__15daObjE_CREATE_cFv.s +++ /dev/null @@ -1,101 +0,0 @@ -lbl_80BE3618: -/* 80BE3618 80 03 00 B0 */ lwz r0, 0xb0(r3) -/* 80BE361C 54 05 07 3E */ clrlwi r5, r0, 0x1c -/* 80BE3620 54 00 E7 3E */ rlwinm r0, r0, 0x1c, 0x1c, 0x1f -/* 80BE3624 98 03 05 69 */ stb r0, 0x569(r3) -/* 80BE3628 38 00 FF FF */ li r0, -1 -/* 80BE362C 90 03 05 78 */ stw r0, 0x578(r3) -/* 80BE3630 A8 03 04 E4 */ lha r0, 0x4e4(r3) -/* 80BE3634 B0 03 05 6E */ sth r0, 0x56e(r3) -/* 80BE3638 A8 03 04 E6 */ lha r0, 0x4e6(r3) -/* 80BE363C B0 03 05 70 */ sth r0, 0x570(r3) -/* 80BE3640 A8 03 04 E8 */ lha r0, 0x4e8(r3) -/* 80BE3644 B0 03 05 72 */ sth r0, 0x572(r3) -/* 80BE3648 28 05 00 0C */ cmplwi r5, 0xc -/* 80BE364C 4D 81 00 20 */ bgtlr -/* 80BE3650 3C 80 80 BE */ lis r4, lit_3838@ha /* 0x80BE38A0@ha */ -/* 80BE3654 38 84 38 A0 */ addi r4, r4, lit_3838@l /* 0x80BE38A0@l */ -/* 80BE3658 54 A0 10 3A */ slwi r0, r5, 2 -/* 80BE365C 7C 04 00 2E */ lwzx r0, r4, r0 -/* 80BE3660 7C 09 03 A6 */ mtctr r0 -/* 80BE3664 4E 80 04 20 */ bctr -lbl_80BE3668: -/* 80BE3668 38 00 01 EA */ li r0, 0x1ea -/* 80BE366C B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE3670 4E 80 00 20 */ blr -lbl_80BE3674: -/* 80BE3674 38 00 01 E7 */ li r0, 0x1e7 -/* 80BE3678 B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE367C 4E 80 00 20 */ blr -lbl_80BE3680: -/* 80BE3680 38 00 01 BE */ li r0, 0x1be -/* 80BE3684 B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE3688 38 00 FF 1F */ li r0, -225 -/* 80BE368C 90 03 05 78 */ stw r0, 0x578(r3) -/* 80BE3690 4E 80 00 20 */ blr -lbl_80BE3694: -/* 80BE3694 38 00 01 BE */ li r0, 0x1be -/* 80BE3698 B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE369C 38 00 FF 3F */ li r0, -193 -/* 80BE36A0 90 03 05 78 */ stw r0, 0x578(r3) -/* 80BE36A4 4E 80 00 20 */ blr -lbl_80BE36A8: -/* 80BE36A8 38 00 01 BB */ li r0, 0x1bb -/* 80BE36AC B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE36B0 3C 80 00 0B */ lis r4, 0x000B /* 0x000AFF02@ha */ -/* 80BE36B4 38 04 FF 02 */ addi r0, r4, 0xFF02 /* 0x000AFF02@l */ -/* 80BE36B8 90 03 05 78 */ stw r0, 0x578(r3) -/* 80BE36BC 4E 80 00 20 */ blr -lbl_80BE36C0: -/* 80BE36C0 38 00 01 EB */ li r0, 0x1eb -/* 80BE36C4 B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE36C8 4E 80 00 20 */ blr -lbl_80BE36CC: -/* 80BE36CC 38 00 01 FE */ li r0, 0x1fe -/* 80BE36D0 B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE36D4 4E 80 00 20 */ blr -lbl_80BE36D8: -/* 80BE36D8 38 00 01 B3 */ li r0, 0x1b3 -/* 80BE36DC B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE36E0 4E 80 00 20 */ blr -lbl_80BE36E4: -/* 80BE36E4 38 00 01 B4 */ li r0, 0x1b4 -/* 80BE36E8 B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE36EC 88 03 05 69 */ lbz r0, 0x569(r3) -/* 80BE36F0 28 00 00 01 */ cmplwi r0, 1 -/* 80BE36F4 40 82 00 10 */ bne lbl_80BE3704 -/* 80BE36F8 38 00 FE F0 */ li r0, -272 -/* 80BE36FC 90 03 05 78 */ stw r0, 0x578(r3) -/* 80BE3700 4E 80 00 20 */ blr -lbl_80BE3704: -/* 80BE3704 54 04 25 36 */ rlwinm r4, r0, 4, 0x14, 0x1b -/* 80BE3708 38 00 FE 00 */ li r0, -512 -/* 80BE370C 7C 80 03 78 */ or r0, r4, r0 -/* 80BE3710 90 03 05 78 */ stw r0, 0x578(r3) -/* 80BE3714 4E 80 00 20 */ blr -lbl_80BE3718: -/* 80BE3718 38 00 01 FB */ li r0, 0x1fb -/* 80BE371C B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE3720 38 00 FF 00 */ li r0, -256 -/* 80BE3724 90 03 05 78 */ stw r0, 0x578(r3) -/* 80BE3728 4E 80 00 20 */ blr -lbl_80BE372C: -/* 80BE372C 38 00 01 F9 */ li r0, 0x1f9 -/* 80BE3730 B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE3734 38 00 FF 01 */ li r0, -255 -/* 80BE3738 90 03 05 78 */ stw r0, 0x578(r3) -/* 80BE373C 4E 80 00 20 */ blr -lbl_80BE3740: -/* 80BE3740 38 00 01 FE */ li r0, 0x1fe -/* 80BE3744 B0 03 05 74 */ sth r0, 0x574(r3) -/* 80BE3748 3C 80 FF FF */ lis r4, 0xFFFF /* 0xFFFF01FF@ha */ -/* 80BE374C 38 04 01 FF */ addi r0, r4, 0x01FF /* 0xFFFF01FF@l */ -/* 80BE3750 90 03 05 78 */ stw r0, 0x578(r3) -/* 80BE3754 A8 A3 04 E8 */ lha r5, 0x4e8(r3) -/* 80BE3758 A8 83 04 E6 */ lha r4, 0x4e6(r3) -/* 80BE375C 38 00 01 00 */ li r0, 0x100 -/* 80BE3760 B0 03 05 6E */ sth r0, 0x56e(r3) -/* 80BE3764 B0 83 05 70 */ sth r4, 0x570(r3) -/* 80BE3768 B0 A3 05 72 */ sth r5, 0x572(r3) -lbl_80BE376C: -/* 80BE376C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/NormalAction__15daObjE_CREATE_cFv.s b/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/NormalAction__15daObjE_CREATE_cFv.s deleted file mode 100644 index 6d8029eee4..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/NormalAction__15daObjE_CREATE_cFv.s +++ /dev/null @@ -1,182 +0,0 @@ -lbl_80BE31BC: -/* 80BE31BC 94 21 FF 80 */ stwu r1, -0x80(r1) -/* 80BE31C0 7C 08 02 A6 */ mflr r0 -/* 80BE31C4 90 01 00 84 */ stw r0, 0x84(r1) -/* 80BE31C8 DB E1 00 70 */ stfd f31, 0x70(r1) -/* 80BE31CC F3 E1 00 78 */ psq_st f31, 120(r1), 0, 0 /* qr0 */ -/* 80BE31D0 DB C1 00 60 */ stfd f30, 0x60(r1) -/* 80BE31D4 F3 C1 00 68 */ psq_st f30, 104(r1), 0, 0 /* qr0 */ -/* 80BE31D8 39 61 00 60 */ addi r11, r1, 0x60 -/* 80BE31DC 4B 77 EF F1 */ bl _savegpr_25 -/* 80BE31E0 7C 7F 1B 78 */ mr r31, r3 -/* 80BE31E4 3C 60 80 BE */ lis r3, lit_3720@ha /* 0x80BE3888@ha */ -/* 80BE31E8 3B 83 38 88 */ addi r28, r3, lit_3720@l /* 0x80BE3888@l */ -/* 80BE31EC C0 1C 00 00 */ lfs f0, 0(r28) -/* 80BE31F0 D0 01 00 14 */ stfs f0, 0x14(r1) -/* 80BE31F4 D0 01 00 18 */ stfs f0, 0x18(r1) -/* 80BE31F8 C0 1C 00 04 */ lfs f0, 4(r28) -/* 80BE31FC D0 01 00 1C */ stfs f0, 0x1c(r1) -/* 80BE3200 88 1F 05 80 */ lbz r0, 0x580(r31) -/* 80BE3204 2C 00 00 02 */ cmpwi r0, 2 -/* 80BE3208 41 82 01 74 */ beq lbl_80BE337C -/* 80BE320C 40 80 02 28 */ bge lbl_80BE3434 -/* 80BE3210 2C 00 00 00 */ cmpwi r0, 0 -/* 80BE3214 41 82 00 10 */ beq lbl_80BE3224 -/* 80BE3218 40 80 01 28 */ bge lbl_80BE3340 -/* 80BE321C 48 00 02 18 */ b lbl_80BE3434 -/* 80BE3220 48 00 02 14 */ b lbl_80BE3434 -lbl_80BE3224: -/* 80BE3224 88 9F 05 6A */ lbz r4, 0x56a(r31) -/* 80BE3228 28 04 00 FF */ cmplwi r4, 0xff -/* 80BE322C 41 82 02 08 */ beq lbl_80BE3434 -/* 80BE3230 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80BE3234 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80BE3238 88 1F 04 E2 */ lbz r0, 0x4e2(r31) -/* 80BE323C 7C 05 07 74 */ extsb r5, r0 -/* 80BE3240 4B 45 21 21 */ bl isSwitch__10dSv_info_cCFii -/* 80BE3244 2C 03 00 00 */ cmpwi r3, 0 -/* 80BE3248 41 82 01 EC */ beq lbl_80BE3434 -/* 80BE324C 8B 7F 05 69 */ lbz r27, 0x569(r31) -/* 80BE3250 3B 40 00 00 */ li r26, 0 -/* 80BE3254 3B C0 00 00 */ li r30, 0 -/* 80BE3258 CB DC 00 10 */ lfd f30, 0x10(r28) -/* 80BE325C 3F A0 43 30 */ lis r29, 0x4330 -/* 80BE3260 C3 FC 00 08 */ lfs f31, 8(r28) -/* 80BE3264 6F 7C 80 00 */ xoris r28, r27, 0x8000 -/* 80BE3268 48 00 00 B8 */ b lbl_80BE3320 -lbl_80BE326C: -/* 80BE326C 38 61 00 14 */ addi r3, r1, 0x14 -/* 80BE3270 38 9F 04 D0 */ addi r4, r31, 0x4d0 -/* 80BE3274 A8 1F 04 E6 */ lha r0, 0x4e6(r31) -/* 80BE3278 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 80BE327C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80BE3280 93 A1 00 20 */ stw r29, 0x20(r1) -/* 80BE3284 C8 01 00 20 */ lfd f0, 0x20(r1) -/* 80BE3288 EC 40 F0 28 */ fsubs f2, f0, f30 -/* 80BE328C 93 81 00 2C */ stw r28, 0x2c(r1) -/* 80BE3290 93 A1 00 28 */ stw r29, 0x28(r1) -/* 80BE3294 C8 01 00 28 */ lfd f0, 0x28(r1) -/* 80BE3298 EC 00 F0 28 */ fsubs f0, f0, f30 -/* 80BE329C EC 3F 00 24 */ fdivs f1, f31, f0 -/* 80BE32A0 6F 40 80 00 */ xoris r0, r26, 0x8000 -/* 80BE32A4 90 01 00 34 */ stw r0, 0x34(r1) -/* 80BE32A8 93 A1 00 30 */ stw r29, 0x30(r1) -/* 80BE32AC C8 01 00 30 */ lfd f0, 0x30(r1) -/* 80BE32B0 EC 00 F0 28 */ fsubs f0, f0, f30 -/* 80BE32B4 EC 01 00 32 */ fmuls f0, f1, f0 -/* 80BE32B8 EC 02 00 2A */ fadds f0, f2, f0 -/* 80BE32BC FC 00 00 1E */ fctiwz f0, f0 -/* 80BE32C0 D8 01 00 38 */ stfd f0, 0x38(r1) -/* 80BE32C4 80 A1 00 3C */ lwz r5, 0x3c(r1) -/* 80BE32C8 7C 66 1B 78 */ mr r6, r3 -/* 80BE32CC 4B 68 DA F5 */ bl cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz -/* 80BE32D0 88 1F 04 E2 */ lbz r0, 0x4e2(r31) -/* 80BE32D4 7C 07 07 74 */ extsb r7, r0 -/* 80BE32D8 38 00 00 00 */ li r0, 0 -/* 80BE32DC 90 01 00 08 */ stw r0, 8(r1) -/* 80BE32E0 A8 7F 05 74 */ lha r3, 0x574(r31) -/* 80BE32E4 28 1F 00 00 */ cmplwi r31, 0 -/* 80BE32E8 41 82 00 0C */ beq lbl_80BE32F4 -/* 80BE32EC 80 9F 00 04 */ lwz r4, 4(r31) -/* 80BE32F0 48 00 00 08 */ b lbl_80BE32F8 -lbl_80BE32F4: -/* 80BE32F4 38 80 FF FF */ li r4, -1 -lbl_80BE32F8: -/* 80BE32F8 80 BF 05 78 */ lwz r5, 0x578(r31) -/* 80BE32FC 38 DF 04 D0 */ addi r6, r31, 0x4d0 -/* 80BE3300 39 1F 05 6E */ addi r8, r31, 0x56e -/* 80BE3304 39 20 00 00 */ li r9, 0 -/* 80BE3308 39 40 FF FF */ li r10, -1 -/* 80BE330C 4B 43 6B E5 */ bl fopAcM_createChild__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i -/* 80BE3310 80 9F 05 7C */ lwz r4, 0x57c(r31) -/* 80BE3314 7C 64 F1 2E */ stwx r3, r4, r30 -/* 80BE3318 3B 5A 00 01 */ addi r26, r26, 1 -/* 80BE331C 3B DE 00 04 */ addi r30, r30, 4 -lbl_80BE3320: -/* 80BE3320 7C 1A D8 00 */ cmpw r26, r27 -/* 80BE3324 41 80 FF 48 */ blt lbl_80BE326C -/* 80BE3328 88 7F 05 80 */ lbz r3, 0x580(r31) -/* 80BE332C 38 03 00 01 */ addi r0, r3, 1 -/* 80BE3330 98 1F 05 80 */ stb r0, 0x580(r31) -/* 80BE3334 38 00 00 32 */ li r0, 0x32 -/* 80BE3338 B0 1F 05 82 */ sth r0, 0x582(r31) -/* 80BE333C 48 00 00 F8 */ b lbl_80BE3434 -lbl_80BE3340: -/* 80BE3340 A8 7F 05 82 */ lha r3, 0x582(r31) -/* 80BE3344 38 03 FF FF */ addi r0, r3, -1 -/* 80BE3348 B0 1F 05 82 */ sth r0, 0x582(r31) -/* 80BE334C A8 1F 05 82 */ lha r0, 0x582(r31) -/* 80BE3350 2C 00 00 00 */ cmpwi r0, 0 -/* 80BE3354 41 81 00 0C */ bgt lbl_80BE3360 -/* 80BE3358 38 00 00 00 */ li r0, 0 -/* 80BE335C B0 1F 05 82 */ sth r0, 0x582(r31) -lbl_80BE3360: -/* 80BE3360 A8 1F 05 82 */ lha r0, 0x582(r31) -/* 80BE3364 2C 00 00 00 */ cmpwi r0, 0 -/* 80BE3368 40 82 00 CC */ bne lbl_80BE3434 -/* 80BE336C 88 7F 05 80 */ lbz r3, 0x580(r31) -/* 80BE3370 38 03 00 01 */ addi r0, r3, 1 -/* 80BE3374 98 1F 05 80 */ stb r0, 0x580(r31) -/* 80BE3378 48 00 00 BC */ b lbl_80BE3434 -lbl_80BE337C: -/* 80BE337C 8B 7F 05 69 */ lbz r27, 0x569(r31) -/* 80BE3380 3B 40 00 00 */ li r26, 0 -/* 80BE3384 3B 20 00 00 */ li r25, 0 -/* 80BE3388 3B C0 00 00 */ li r30, 0 -/* 80BE338C 3C 60 80 02 */ lis r3, fpcSch_JudgeByID__FPvPv@ha /* 0x80023590@ha */ -/* 80BE3390 3B 83 35 90 */ addi r28, r3, fpcSch_JudgeByID__FPvPv@l /* 0x80023590@l */ -/* 80BE3394 3B A0 FF FF */ li r29, -1 -/* 80BE3398 48 00 00 38 */ b lbl_80BE33D0 -lbl_80BE339C: -/* 80BE339C 80 7F 05 7C */ lwz r3, 0x57c(r31) -/* 80BE33A0 7C 03 F0 2E */ lwzx r0, r3, r30 -/* 80BE33A4 90 01 00 10 */ stw r0, 0x10(r1) -/* 80BE33A8 7F 83 E3 78 */ mr r3, r28 -/* 80BE33AC 38 81 00 10 */ addi r4, r1, 0x10 -/* 80BE33B0 4B 43 64 49 */ bl fopAcIt_Judge__FPFPvPv_PvPv -/* 80BE33B4 28 03 00 00 */ cmplwi r3, 0 -/* 80BE33B8 40 82 00 10 */ bne lbl_80BE33C8 -/* 80BE33BC 80 7F 05 7C */ lwz r3, 0x57c(r31) -/* 80BE33C0 7F A3 F1 2E */ stwx r29, r3, r30 -/* 80BE33C4 3B 5A 00 01 */ addi r26, r26, 1 -lbl_80BE33C8: -/* 80BE33C8 3B 39 00 01 */ addi r25, r25, 1 -/* 80BE33CC 3B DE 00 04 */ addi r30, r30, 4 -lbl_80BE33D0: -/* 80BE33D0 7C 19 D8 00 */ cmpw r25, r27 -/* 80BE33D4 41 80 FF C8 */ blt lbl_80BE339C -/* 80BE33D8 7C 1A D8 00 */ cmpw r26, r27 -/* 80BE33DC 40 82 00 58 */ bne lbl_80BE3434 -/* 80BE33E0 88 7F 05 80 */ lbz r3, 0x580(r31) -/* 80BE33E4 38 03 00 01 */ addi r0, r3, 1 -/* 80BE33E8 98 1F 05 80 */ stb r0, 0x580(r31) -/* 80BE33EC 88 9F 05 6B */ lbz r4, 0x56b(r31) -/* 80BE33F0 28 04 00 FF */ cmplwi r4, 0xff -/* 80BE33F4 41 82 00 38 */ beq lbl_80BE342C -/* 80BE33F8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80BE33FC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80BE3400 88 1F 04 E2 */ lbz r0, 0x4e2(r31) -/* 80BE3404 7C 05 07 74 */ extsb r5, r0 -/* 80BE3408 4B 45 1F 59 */ bl isSwitch__10dSv_info_cCFii -/* 80BE340C 2C 03 00 00 */ cmpwi r3, 0 -/* 80BE3410 40 82 00 1C */ bne lbl_80BE342C -/* 80BE3414 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80BE3418 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80BE341C 88 9F 05 6B */ lbz r4, 0x56b(r31) -/* 80BE3420 88 1F 04 E2 */ lbz r0, 0x4e2(r31) -/* 80BE3424 7C 05 07 74 */ extsb r5, r0 -/* 80BE3428 4B 45 1D D9 */ bl onSwitch__10dSv_info_cFii -lbl_80BE342C: -/* 80BE342C 38 00 00 64 */ li r0, 0x64 -/* 80BE3430 B0 1F 05 82 */ sth r0, 0x582(r31) -lbl_80BE3434: -/* 80BE3434 E3 E1 00 78 */ psq_l f31, 120(r1), 0, 0 /* qr0 */ -/* 80BE3438 CB E1 00 70 */ lfd f31, 0x70(r1) -/* 80BE343C E3 C1 00 68 */ psq_l f30, 104(r1), 0, 0 /* qr0 */ -/* 80BE3440 CB C1 00 60 */ lfd f30, 0x60(r1) -/* 80BE3444 39 61 00 60 */ addi r11, r1, 0x60 -/* 80BE3448 4B 77 ED D1 */ bl _restgpr_25 -/* 80BE344C 80 01 00 84 */ lwz r0, 0x84(r1) -/* 80BE3450 7C 08 03 A6 */ mtlr r0 -/* 80BE3454 38 21 00 80 */ addi r1, r1, 0x80 -/* 80BE3458 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/SearchAction__15daObjE_CREATE_cFv.s b/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/SearchAction__15daObjE_CREATE_cFv.s deleted file mode 100644 index 7471e805fd..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/SearchAction__15daObjE_CREATE_cFv.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_80BE345C: -/* 80BE345C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BE3460 7C 08 02 A6 */ mflr r0 -/* 80BE3464 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BE3468 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80BE346C 38 84 61 C0 */ addi r4, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80BE3470 80 84 5D AC */ lwz r4, 0x5dac(r4) -/* 80BE3474 C0 04 04 D0 */ lfs f0, 0x4d0(r4) -/* 80BE3478 D0 03 04 D0 */ stfs f0, 0x4d0(r3) -/* 80BE347C C0 04 04 D4 */ lfs f0, 0x4d4(r4) -/* 80BE3480 D0 03 04 D4 */ stfs f0, 0x4d4(r3) -/* 80BE3484 C0 04 04 D8 */ lfs f0, 0x4d8(r4) -/* 80BE3488 D0 03 04 D8 */ stfs f0, 0x4d8(r3) -/* 80BE348C 4B FF FD 31 */ bl NormalAction__15daObjE_CREATE_cFv -/* 80BE3490 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BE3494 7C 08 03 A6 */ mtlr r0 -/* 80BE3498 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BE349C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/create__15daObjE_CREATE_cFv.s b/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/create__15daObjE_CREATE_cFv.s deleted file mode 100644 index 5e960771eb..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/create__15daObjE_CREATE_cFv.s +++ /dev/null @@ -1,74 +0,0 @@ -lbl_80BE3770: -/* 80BE3770 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BE3774 7C 08 02 A6 */ mflr r0 -/* 80BE3778 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BE377C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80BE3780 7C 7F 1B 78 */ mr r31, r3 -/* 80BE3784 80 03 04 A0 */ lwz r0, 0x4a0(r3) -/* 80BE3788 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 80BE378C 40 82 00 1C */ bne lbl_80BE37A8 -/* 80BE3790 28 1F 00 00 */ cmplwi r31, 0 -/* 80BE3794 41 82 00 08 */ beq lbl_80BE379C -/* 80BE3798 4B 43 53 CD */ bl __ct__10fopAc_ac_cFv -lbl_80BE379C: -/* 80BE379C 80 1F 04 A0 */ lwz r0, 0x4a0(r31) -/* 80BE37A0 60 00 00 08 */ ori r0, r0, 8 -/* 80BE37A4 90 1F 04 A0 */ stw r0, 0x4a0(r31) -lbl_80BE37A8: -/* 80BE37A8 7F E3 FB 78 */ mr r3, r31 -/* 80BE37AC 4B FF FE 6D */ bl NameChk__15daObjE_CREATE_cFv -/* 80BE37B0 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80BE37B4 54 03 07 3E */ clrlwi r3, r0, 0x1c -/* 80BE37B8 A8 1F 04 DC */ lha r0, 0x4dc(r31) -/* 80BE37BC 54 00 07 3E */ clrlwi r0, r0, 0x1c -/* 80BE37C0 98 1F 05 84 */ stb r0, 0x584(r31) -/* 80BE37C4 88 1F 05 84 */ lbz r0, 0x584(r31) -/* 80BE37C8 28 00 00 0F */ cmplwi r0, 0xf -/* 80BE37CC 40 82 00 0C */ bne lbl_80BE37D8 -/* 80BE37D0 38 00 00 00 */ li r0, 0 -/* 80BE37D4 98 1F 05 84 */ stb r0, 0x584(r31) -lbl_80BE37D8: -/* 80BE37D8 38 00 00 00 */ li r0, 0 -/* 80BE37DC B0 1F 04 DC */ sth r0, 0x4dc(r31) -/* 80BE37E0 28 03 00 00 */ cmplwi r3, 0 -/* 80BE37E4 41 82 00 0C */ beq lbl_80BE37F0 -/* 80BE37E8 28 03 00 FF */ cmplwi r3, 0xff -/* 80BE37EC 40 82 00 0C */ bne lbl_80BE37F8 -lbl_80BE37F0: -/* 80BE37F0 38 60 00 05 */ li r3, 5 -/* 80BE37F4 48 00 00 70 */ b lbl_80BE3864 -lbl_80BE37F8: -/* 80BE37F8 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80BE37FC 54 00 46 3E */ srwi r0, r0, 0x18 -/* 80BE3800 98 1F 05 6C */ stb r0, 0x56c(r31) -/* 80BE3804 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80BE3808 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80BE380C 88 9F 05 6C */ lbz r4, 0x56c(r31) -/* 80BE3810 88 1F 04 E2 */ lbz r0, 0x4e2(r31) -/* 80BE3814 7C 05 07 74 */ extsb r5, r0 -/* 80BE3818 4B 45 1B 49 */ bl isSwitch__10dSv_info_cCFii -/* 80BE381C 2C 03 00 00 */ cmpwi r3, 0 -/* 80BE3820 41 82 00 0C */ beq lbl_80BE382C -/* 80BE3824 38 60 00 05 */ li r3, 5 -/* 80BE3828 48 00 00 3C */ b lbl_80BE3864 -lbl_80BE382C: -/* 80BE382C 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80BE3830 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80BE3834 98 1F 05 6A */ stb r0, 0x56a(r31) -/* 80BE3838 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80BE383C 54 00 86 3E */ rlwinm r0, r0, 0x10, 0x18, 0x1f -/* 80BE3840 98 1F 05 6B */ stb r0, 0x56b(r31) -/* 80BE3844 88 1F 05 69 */ lbz r0, 0x569(r31) -/* 80BE3848 54 03 10 3A */ slwi r3, r0, 2 -/* 80BE384C 4B 6E B4 79 */ bl __nwa__FUl -/* 80BE3850 90 7F 05 7C */ stw r3, 0x57c(r31) -/* 80BE3854 80 1F 05 7C */ lwz r0, 0x57c(r31) -/* 80BE3858 7C 00 00 34 */ cntlzw r0, r0 -/* 80BE385C 54 03 D9 7E */ srwi r3, r0, 5 -/* 80BE3860 38 63 00 04 */ addi r3, r3, 4 -lbl_80BE3864: -/* 80BE3864 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80BE3868 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BE386C 7C 08 03 A6 */ mtlr r0 -/* 80BE3870 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BE3874 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Create__FP10fopAc_ac_c.s deleted file mode 100644 index 59ed359211..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Create__FP10fopAc_ac_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80BE3178: -/* 80BE3178 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BE317C 7C 08 02 A6 */ mflr r0 -/* 80BE3180 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BE3184 48 00 05 ED */ bl create__15daObjE_CREATE_cFv -/* 80BE3188 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BE318C 7C 08 03 A6 */ mtlr r0 -/* 80BE3190 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BE3194 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Delete__FP15daObjE_CREATE_c.s b/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Delete__FP15daObjE_CREATE_c.s deleted file mode 100644 index 8b1cec1bb7..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Delete__FP15daObjE_CREATE_c.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_80BE3198: -/* 80BE3198 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BE319C 7C 08 02 A6 */ mflr r0 -/* 80BE31A0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BE31A4 48 00 04 1D */ bl Delete__15daObjE_CREATE_cFv -/* 80BE31A8 38 60 00 01 */ li r3, 1 -/* 80BE31AC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BE31B0 7C 08 03 A6 */ mtlr r0 -/* 80BE31B4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BE31B8 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Execute__FP15daObjE_CREATE_c.s b/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Execute__FP15daObjE_CREATE_c.s deleted file mode 100644 index 6a24d00e55..0000000000 --- a/asm/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create/daObjE_CREATE_Execute__FP15daObjE_CREATE_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80BE35F8: -/* 80BE35F8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BE35FC 7C 08 02 A6 */ mflr r0 -/* 80BE3600 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BE3604 4B FF FF 99 */ bl Execute__15daObjE_CREATE_cFv -/* 80BE3608 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BE360C 7C 08 03 A6 */ mtlr r0 -/* 80BE3610 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BE3614 4E 80 00 20 */ blr From 7303100d9b6374ee2ec235a1b752fb512e7e4eaa Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Thu, 5 Jan 2023 00:07:47 -0800 Subject: [PATCH 5/5] small fix --- rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.cpp b/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.cpp index afa552a998..ac5e2d9529 100644 --- a/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.cpp +++ b/rel/d/a/obj/d_a_obj_enemy_create/d_a_obj_enemy_create.cpp @@ -225,7 +225,7 @@ void daObjE_CREATE_c::NameChk() { /* 80BE3770-80BE3878 000670 0108+00 1/1 0/0 0/0 .text create__15daObjE_CREATE_cFv */ int daObjE_CREATE_c::create() { if (!fopAcM_CheckCondition(this, 8)) { - new (this) kytag05_class(); + new (this) daObjE_CREATE_c(); fopAcM_OnCondition(this, 8); }