From adf65faa28a15a597d384b66f94bbb6538ee213c Mon Sep 17 00:00:00 2001 From: Pheenoh Date: Sun, 10 Jan 2021 02:25:21 -0500 Subject: [PATCH] dStage_startStage_c::set OK --- asm/d/com/inf/d_com_inf_game.s | 2 +- include/d/d_stage/asm/func_80023E28.s | 2 +- include/d/d_stage/asm/func_80025014.s | 2 +- include/d/d_stage/d_stage.h | 4 +++- include/functions.h | 4 ++-- include/m_Do/m_Do_Reset/m_Do_Reset.h | 2 ++ include/variables.h | 3 +-- src/d/d_stage.cpp | 33 ++++++++++++++++++++------- 8 files changed, 36 insertions(+), 16 deletions(-) diff --git a/asm/d/com/inf/d_com_inf_game.s b/asm/d/com/inf/d_com_inf_game.s index 52ea814c193..f5d4474716a 100644 --- a/asm/d/com/inf/d_com_inf_game.s +++ b/asm/d/com/inf/d_com_inf_game.s @@ -2471,7 +2471,7 @@ lbl_8002D4EC: /* 8002D500 0002A440 7F 06 C3 78 */ mr r6, r24 /* 8002D504 0002A444 7F 47 D3 78 */ mr r7, r26 /* 8002D508 0002A448 7F 88 E3 78 */ mr r8, r28 -/* 8002D50C 0002A44C 4B FF 69 1D */ bl dStage_nextStage_c_NS_set +/* 8002D50C 0002A44C 4B FF 69 1D */ bl set__18dStage_nextStage_cFPCcScsScScUc /* 8002D510 0002A450 80 01 00 08 */ lwz r0, 8(r1) /* 8002D514 0002A454 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 8002D518 0002A458 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l diff --git a/include/d/d_stage/asm/func_80023E28.s b/include/d/d_stage/asm/func_80023E28.s index b2b073207f5..5e98d0f8665 100644 --- a/include/d/d_stage/asm/func_80023E28.s +++ b/include/d/d_stage/asm/func_80023E28.s @@ -10,7 +10,7 @@ /* 80023E4C 00020D8C 98 03 00 0E */ stb r0, 0xe(r3) /* 80023E50 00020D90 99 03 00 0F */ stb r8, 0xf(r3) /* 80023E54 00020D94 99 23 00 10 */ stb r9, 0x10(r3) -/* 80023E58 00020D98 48 00 03 45 */ bl dStage_startStage_c_NS_set +/* 80023E58 00020D98 48 00 03 45 */ bl set__19dStage_startStage_cFPCcScsSc /* 80023E5C 00020D9C 7F E3 FB 78 */ mr r3, r31 /* 80023E60 00020DA0 3C 80 80 38 */ lis r4, lbl_80378A50@ha /* 80023E64 00020DA4 38 84 8A 50 */ addi r4, r4, lbl_80378A50@l diff --git a/include/d/d_stage/asm/func_80025014.s b/include/d/d_stage/asm/func_80025014.s index 8c6bdf83d32..a14f1521b4c 100644 --- a/include/d/d_stage/asm/func_80025014.s +++ b/include/d/d_stage/asm/func_80025014.s @@ -152,7 +152,7 @@ lbl_80025208: /* 80025240 00022180 A8 C6 4E 08 */ lha r6, 0x4e08(r6) /* 80025244 00022184 88 07 4E 0B */ lbz r0, 0x4e0b(r7) /* 80025248 00022188 7C 07 07 74 */ extsb r7, r0 -/* 8002524C 0002218C 4B FF EF 51 */ bl dStage_startStage_c_NS_set +/* 8002524C 0002218C 4B FF EF 51 */ bl set__19dStage_startStage_cFPCcScsSc /* 80025250 00022190 7F C3 F3 78 */ mr r3, r30 /* 80025254 00022194 7F A4 EB 78 */ mr r4, r29 /* 80025258 00022198 4B FF FC A5 */ bl dStage_actorCreate diff --git a/include/d/d_stage/d_stage.h b/include/d/d_stage/d_stage.h index 32f1aa2e216..14894bb3c6e 100644 --- a/include/d/d_stage/d_stage.h +++ b/include/d/d_stage/d_stage.h @@ -344,6 +344,7 @@ private: #pragma pack(push, 1) class dStage_nextStage_c { public: +void set(const char*, s8, s16, s8, s8, u8); private: u8 field_0x0; u8 field_0x1; @@ -359,7 +360,7 @@ private: u8 field_0xb; u8 field_0xc; u8 field_0xd; - u8 enabled; + s8 enabled; u8 wipe; u8 wipe_speed; }; @@ -368,6 +369,7 @@ private: #pragma pack(push, 1) class dStage_startStage_c { public: +void set(const char*, s8, s16, s8); private: /* 0x0 */ char mStage[8]; /* 0x8 */ s16 mPoint; diff --git a/include/functions.h b/include/functions.h index b9ee7b90e00..ebc837f57ac 100644 --- a/include/functions.h +++ b/include/functions.h @@ -6196,7 +6196,7 @@ void dStage_getName2(void); void dStage_infoCreate(void); void dStage_initRoomKeepDoorInfo(void); void dStage_isBossStage(void); -void dStage_nextStage_c_NS_set(void); +void set__18dStage_nextStage_cFPCcScsScScUc(void); void dStage_roomControl_c_NS_SetTimePass(void); void dStage_roomControl_c_NS_createMemoryBlock(void); void dStage_roomControl_c_NS_destroyMemoryBlock(void); @@ -6218,7 +6218,7 @@ void dStage_roomStatus_c_NS_dtor(void); void dStage_searchName(void); void dStage_setLayerTagName(void); void dStage_stagInfo_GetParticleNo(void); -void dStage_startStage_c_NS_set(void); +void set__19dStage_startStage_cFPCcScsSc(const char*, s8, s16, s8); void dStage_tgscInfoInit(void); void dSvBit_HIO_c_NS_init(void); void dTres_c_NS_addData(void); diff --git a/include/m_Do/m_Do_Reset/m_Do_Reset.h b/include/m_Do/m_Do_Reset/m_Do_Reset.h index 90e60c006b5..31aff4572ec 100644 --- a/include/m_Do/m_Do_Reset/m_Do_Reset.h +++ b/include/m_Do/m_Do_Reset/m_Do_Reset.h @@ -26,4 +26,6 @@ struct mDoRst { void mDoRst_reset(int p1, u32 p2, int p3); void mDoRst_resetCallBack(int p1, void* p2); +extern ResetData* m_Do_Reset_NS_mDoRst_NS_mResetData; + #endif \ No newline at end of file diff --git a/include/variables.h b/include/variables.h index b12d923b9ba..a7ff78cae27 100644 --- a/include/variables.h +++ b/include/variables.h @@ -59,8 +59,7 @@ extern u8 __ct__12dSv_memory_cFv; extern u8 __ct__13dSv_memory2_cFv; extern u8 lbl_803D3420; extern u8 lbl_80450B0C; -struct ResetData; -extern ResetData* m_Do_Reset_NS_mDoRst_NS_mResetData; +//struct ResetData; extern u8 lbl_80450B08; extern u8 lbl_803DB420; extern u8 main01__Fv; diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index 582176c846a..ded9fd40276 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -4,15 +4,32 @@ #include "d/d_com/d_com_inf_game/d_com_inf_game.h" #include "f/f_pc/f_pc_stdcreate_req.h" #include "global.h" +#include "m_Do/m_Do_Reset/m_Do_Reset.h" -extern "C" { // set__18dStage_nextStage_cFPCcScsScScUc -// dStage_nextStage_c::set(const char*, char, short, char, char, unsigned char) -asm void dStage_nextStage_c_NS_set(void) { +// +#ifdef NONMATCHING +void dStage_nextStage_c::set(const char* param_1, s8 param_2, s16 param_3, s8 param_4, s8 param_5, + u8 param_6) { + if (!enabled) { + enabled = 1; + wipe = param_5; + wipe_speed = param_6; + set__19dStage_startStage_cFPCcScsSc(param_1, param_2, param_3, param_4); + if (!strcmp(param_1, lbl_80378A50)) { + m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x0 = 1; + } + } +} +#else +asm void dStage_nextStage_c::set(const char* param_1, s8 param_2, s16 param_3, s8 param_4, + s8 param_5, u8 param_6) { nofralloc #include "d/d_stage/asm/func_80023E28.s" } +#endif +extern "C" { // dStage_SetErrorRoom__Fv // dStage_SetErrorRoom(void) asm void dStage_SetErrorRoom(void) { @@ -85,11 +102,11 @@ asm void func_80024174(void) { #include "d/d_stage/asm/func_80024174.s" } -// set__19dStage_startStage_cFPCcScsSc -// dStage_startStage_c::set(const char*, char, short, char) -asm void dStage_startStage_c_NS_set(void) { - nofralloc -#include "d/d_stage/asm/func_8002419C.s" +void dStage_startStage_c::set(const char* i_Stage, s8 i_RoomNo, s16 i_Point, s8 i_Layer) { + strcpy(mStage,i_Stage); + mRoomNo = i_RoomNo; + mPoint = i_Point; + mLayer = i_Layer; } // init__20dStage_roomControl_cFv