From dde4e741d7424f7f1d4e5a323fb9778ea37b7239 Mon Sep 17 00:00:00 2001 From: Pheenoh Date: Thu, 22 Dec 2022 15:27:33 -0700 Subject: [PATCH] dTimer_c::end --- include/d/com/d_com_inf_game.h | 4 ++++ include/d/d_timer.h | 8 +++++--- src/d/d_timer.cpp | 23 +++++++++++++++++++++-- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 3e1779f381..ca67de5fdc 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -2560,6 +2560,10 @@ inline int dComIfG_getTimerNowTimeMs() { return g_dComIfG_gameInfo.play.getTimerNowTimeMs(); } +inline int dComIfG_setTimerNowTimeMs(int time) { + g_dComIfG_gameInfo.play.setTimerNowTimeMs(time); +} + inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, const dKy_tevstr_c* param_3, const csXyz* param_4, const cXyz* param_5, u8 param_6, dPa_levelEcallBack* param_7, diff --git a/include/d/d_timer.h b/include/d/d_timer.h index 569bedfe62..14eef713cf 100644 --- a/include/d/d_timer.h +++ b/include/d/d_timer.h @@ -60,13 +60,15 @@ private: /* 0x108 */ request_of_phase_process_class mPhase; /* 0x110 */ OSTime mTime1; /* 0x118 */ OSTime mTime2; - /* 0x120 */ u8 field_0x120[16]; + /* 0x120 */ OSTime mTime6; + /* 0x128 */ u8 field_0x128; /* 0x130 */ OSTime mTime3; /* 0x138 */ OSTime mTime5; /* 0x140 */ OSTime mLimitTime; /* 0x148 */ u8 field_0x148[12]; /* 0x154 */ int mTimerMode; - /* 0x158 */ u8 field_0x158[12]; + /* 0x158 */ int field_0x158; + /* 0x15C */ u8 field_0x15c[8]; /* 0x164 */ u8 mSeIdx; /* 0x165 */ u8 field_0x165[3]; /* 0x168 */ s16 field_0x168; @@ -88,7 +90,7 @@ public: /* 8025D708 */ bool stock_start(); /* 8025D7E8 */ int stop(u8); /* 8025D86C */ int restart(u8); - /* 8025D920 */ void end(int); + /* 8025D920 */ int end(int); /* 8025D9E0 */ int deleteRequest(); /* 8025D9F0 */ int getTimeMs(); /* 8025DA54 */ int getLimitTimeMs(); diff --git a/src/d/d_timer.cpp b/src/d/d_timer.cpp index c25872b679..f149252e7b 100644 --- a/src/d/d_timer.cpp +++ b/src/d/d_timer.cpp @@ -316,8 +316,7 @@ int dTimer_c::restart(u8 param_0) { return 0; } else { mTime2 = dLib_time_c::getTime(); - OSTime tmp = mTime2 - mTime3; - mTime5 += tmp; + mTime5 += mTime2 - mTime3; field_0x16A = 0; field_0x16B = 0; return 1; @@ -326,6 +325,25 @@ int dTimer_c::restart(u8 param_0) { } /* 8025D920-8025D9E0 258260 00C0+00 0/0 1/1 0/0 .text end__8dTimer_cFi */ +#ifndef NONMATCHING +int dTimer_c::end(int param_0) { + int ret; + if (mDeleteCheck != 4) { + ret = 0; + + } else { + mTime6 = dLib_time_c::getTime(); + mDeleteCheck = 6; + dComIfG_setTimerNowTimeMs((mTime6 - mTime1 - mTime5) / OS_TIMER_CLOCK_MS); + if (param_0 != -1) { + field_0x158 = param_0; + } + ret = 1; + } + + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -334,6 +352,7 @@ asm void dTimer_c::end(int param_0) { #include "asm/d/d_timer/end__8dTimer_cFi.s" } #pragma pop +#endif /* 8025D9E0-8025D9F0 258320 0010+00 0/0 1/1 0/0 .text deleteRequest__8dTimer_cFv */ int dTimer_c::deleteRequest() {