diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2024-01-17 03:04:43 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-17 13:04:43 +0200 |
| commit | 772a04851cd945cc28f6651ca03c177899dec631 (patch) | |
| tree | 5172d01305f6a1d73d5bf89e6dfd967a28bef2de /src/d/d_timer.cpp | |
| parent | b27b6b287ce3da6879be917c30159cf48dfabc53 (diff) | |
d_timer / d_bright_check done (#2034)
* d_bright_check mostly fixed
* d_timer done
* remove asm
Diffstat (limited to 'src/d/d_timer.cpp')
| -rw-r--r-- | src/d/d_timer.cpp | 2005 |
1 files changed, 1377 insertions, 628 deletions
diff --git a/src/d/d_timer.cpp b/src/d/d_timer.cpp index 62995ced08..4c8dd71345 100644 --- a/src/d/d_timer.cpp +++ b/src/d/d_timer.cpp @@ -1,199 +1,291 @@ -// -// Generated By: dol2asm -// Translation Unit: d/d_timer -// +/** + * d_timer.cpp + * Minigame HUD Timer / Counter + */ #include "d/d_timer.h" +#include "JSystem/J2DGraph/J2DAnmLoader.h" +#include "JSystem/J2DGraph/J2DGrafContext.h" +#include "JSystem/J2DGraph/J2DScreen.h" +#include "JSystem/J2DGraph/J2DTextBox.h" +#include "JSystem/JKernel/JKRExpHeap.h" +#include "JSystem/JUtility/JUTFont.h" +#include "SSystem/SComponent/c_math.h" #include "d/d_lib.h" #include "d/d_procname.h" +#include "d/meter/d_meter2.h" +#include "d/meter/d_meter2_draw.h" #include "d/meter/d_meter2_info.h" +#include "d/meter/d_meter_HIO.h" +#include "d/pane/d_pane_class.h" #include "dol2asm.h" #include "f_op/f_op_msg_mng.h" #include "m_Do/m_Do_lib.h" -// -// Forward References: -// - -extern "C" void _create__8dTimer_cFv(); -extern "C" void _execute__8dTimer_cFv(); -extern "C" void _draw__8dTimer_cFv(); -extern "C" void _delete__8dTimer_cFv(); -extern "C" void deleteCheck__8dTimer_cFv(); -extern "C" void start__8dTimer_cFi(); -extern "C" void start__8dTimer_cFis(); -extern "C" void stock_start__8dTimer_cFv(); -extern "C" void stock_start__8dTimer_cFs(); -extern "C" void stop__8dTimer_cFUc(); -extern "C" void restart__8dTimer_cFUc(); -extern "C" void end__8dTimer_cFi(); -extern "C" void deleteRequest__8dTimer_cFv(); -extern "C" void getTimeMs__8dTimer_cFv(); -extern "C" void getLimitTimeMs__8dTimer_cFv(); -extern "C" void getRestTimeMs__8dTimer_cFv(); -extern "C" void isStart__8dTimer_cFv(); -extern "C" void __ct__21dDlst_TimerScrnDraw_cFv(); -extern "C" void setHIO__21dDlst_TimerScrnDraw_cFv(); -extern "C" void setScreen__21dDlst_TimerScrnDraw_cFlP10JKRArchive(); -extern "C" void setScreenBase__21dDlst_TimerScrnDraw_cFv(); -extern "C" void setScreenBoatRace__21dDlst_TimerScrnDraw_cFv(); -extern "C" void setScreenRider__21dDlst_TimerScrnDraw_cFv(); -extern "C" void hideDenominator__21dDlst_TimerScrnDraw_cFv(); -extern "C" void deleteScreen__21dDlst_TimerScrnDraw_cFv(); -extern "C" void changeNumberTexture__21dDlst_TimerScrnDraw_cFP7J2DPanei(); -extern "C" void getNumber__21dDlst_TimerScrnDraw_cFi(); -extern "C" void setTimer__21dDlst_TimerScrnDraw_cFi(); -extern "C" void setCounter__21dDlst_TimerScrnDraw_cFUcUc(); -extern "C" void setParentPos__21dDlst_TimerScrnDraw_cFff(); -extern "C" void setTimerPos__21dDlst_TimerScrnDraw_cFff(); -extern "C" void setCounterPos__21dDlst_TimerScrnDraw_cFff(); -extern "C" void setImagePos__21dDlst_TimerScrnDraw_cFff(); -extern "C" void setShowType__21dDlst_TimerScrnDraw_cFUc(); -extern "C" void anime__21dDlst_TimerScrnDraw_cFv(); -extern "C" void closeAnime__21dDlst_TimerScrnDraw_cFv(); -extern "C" void createGetIn__21dDlst_TimerScrnDraw_cF4cXyz(); -extern "C" void createStart__21dDlst_TimerScrnDraw_cFUs(); -extern "C" void draw__21dDlst_TimerScrnDraw_cFv(); -extern "C" void checkStartAnimeEnd__21dDlst_TimerScrnDraw_cFv(); -extern "C" void playBckAnimation__21dDlst_TimerScrnDraw_cFf(); -extern "C" void drawPikari__21dDlst_TimerScrnDraw_cFi(); -extern "C" static void dTimer_Draw__FP8dTimer_c(); -extern "C" static void dTimer_Execute__FP8dTimer_c(); -extern "C" static bool dTimer_IsDelete__FP8dTimer_c(); -extern "C" static void dTimer_Delete__FP8dTimer_c(); -extern "C" static void dTimer_Create__FP9msg_class(); -extern "C" void dTimer_createTimer__FlUlUcUcffff(); -extern "C" void dTimer_createStockTimer__Fv(); -extern "C" void dTimer_createGetIn2D__Fl4cXyz(); -extern "C" static void dTimer_createStart2D__FlUs(); -extern "C" void dTimer_isStart__Fv(); -extern "C" void dTimer_getRestTimeMs__Fv(); -extern "C" void dTimer_show__Fv(); -extern "C" void dTimer_hide__Fv(); -extern "C" void dTimer_isReadyFlag__Fv(); -extern "C" void __dt__21dDlst_TimerScrnDraw_cFv(); -extern "C" void createGetIn__8dTimer_cF4cXyz(); -extern "C" extern char const* const d_d_timer__stringBase0; - -// -// External References: -// - -extern "C" void mDoExt_setCurrentHeap__FP7JKRHeap(); -extern "C" void mDoExt_getMesgFont__Fv(); -extern "C" void mDoLib_project__FP3VecP3Vec(); -extern "C" void fopMsgM_GetAppend__FPv(); -extern "C" void fopMsgM_Delete__FPv(); -extern "C" void fop_Timer_create__FsUcUlUcUcffffPFPv_i(); -extern "C" void fopMsgM_createExpHeap__FUlP7JKRHeap(); -extern "C" void fopMsgM_destroyExpHeap__FP10JKRExpHeap(); -extern "C" void setTimerNowTimeMs__14dComIfG_play_cFi(); -extern "C" void getTimerNowTimeMs__14dComIfG_play_cFv(); -extern "C" void setTimerLimitTimeMs__14dComIfG_play_cFi(); -extern "C" void getTimerLimitTimeMs__14dComIfG_play_cFv(); -extern "C" void setTimerMode__14dComIfG_play_cFi(); -extern "C" void getTimerMode__14dComIfG_play_cFv(); -extern "C" void setTimerType__14dComIfG_play_cFUc(); -extern "C" void getTimerType__14dComIfG_play_cFv(); -extern "C" void setTimerPtr__14dComIfG_play_cFP8dTimer_c(); -extern "C" void getTimerPtr__14dComIfG_play_cFv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void getTime__11dLib_time_cFv(); -extern "C" void getResInfo__14dRes_control_cFPCcP11dRes_info_ci(); -extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c(); -extern "C" void -drawPikari__13dMeter2Draw_cFffPffQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorfUc(); -extern "C" void getString__13dMeter2Info_cFUlPcP14JMSMesgEntry_c(); -extern "C" void dMeter2Info_getNumberTextureName__Fi(); -extern "C" void getStatus__12dMsgObject_cFv(); -extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap(); -extern "C" void paneTrans__8CPaneMgrFff(); -extern "C" void getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs(); -extern "C" void dPaneClass_showNullPane__FP9J2DScreen(); -extern "C" void show__13CPaneMgrAlphaFv(); -extern "C" void hide__13CPaneMgrAlphaFv(); -extern "C" void setAlphaRate__13CPaneMgrAlphaFf(); -extern "C" void cM_rndFX__Ff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void getTotalFreeSize__7JKRHeapFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader(); -extern "C" void getParentPane__7J2DPaneFv(); -extern "C" void animationTransform__7J2DPaneFv(); -extern "C" void __ct__9J2DScreenFv(); -extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive(); -extern "C" void draw__9J2DScreenFffPC14J2DGrafContext(); -extern "C" void getStringPtr__10J2DTextBoxCFv(); -extern "C" void load__20J2DAnmLoaderDataBaseFPCv(); -extern "C" void _savefpr_28(); -extern "C" void _restfpr_28(); -extern "C" void _savegpr_21(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_21(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" void __div2i(); -extern "C" extern void* __vt__12dDlst_base_c[3]; -extern "C" extern u8 g_drawHIO[3880]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 8039A3D8-8039A3D8 026A38 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039A3D8 = "Timer"; -#pragma pop - -/* 80454F40-80454F44 003540 0004+00 10/10 0/0 0/0 .sdata2 @3919 */ -SECTION_SDATA2 static u8 lit_3919[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80454F44-80454F48 003544 0004+00 2/2 0/0 0/0 .sdata2 @3920 */ -SECTION_SDATA2 static f32 lit_3920 = 145.0f; +static int dTimer_createStart2D(s32 param_0, u16 param_1); /* 8025CA0C-8025CF04 25734C 04F8+00 1/1 0/0 0/0 .text _create__8dTimer_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dTimer_c::_create() { - nofralloc -#include "asm/d/d_timer/_create__8dTimer_cFv.s" -} -#pragma pop +int dTimer_c::_create() { + int phase_state = dComIfG_resLoad(&m_phase, "Timer"); + + fopMsg_prm_timer* appen; + if (phase_state == cPhs_COMPLEATE_e) { + appen = (fopMsg_prm_timer*)fopMsgM_GetAppend(this); + if (appen == NULL) { + return cPhs_ERROR_e; + } + + dRes_info_c* resInfo = dComIfG_getObjectResInfo("Timer"); + JUT_ASSERT(resInfo != 0); + dComIfGp_setAllMapArchive(resInfo->getArchive()); + + mp_heap = fopMsgM_createExpHeap(0x11000, NULL); + JKRHeap* prev_heap = mDoExt_setCurrentHeap(mp_heap); + if (mp_heap != NULL) { + mp_heap->getTotalFreeSize(); + + mp_tm_scrn = new dDlst_TimerScrnDraw_c(); + JUT_ASSERT(mp_tm_scrn != 0); + + if (appen->timer_mode == 10) { + mp_tm_scrn->setScreen(dComIfG_getTimerMode(), resInfo->getArchive()); + } else { + mp_tm_scrn->setScreen(appen->timer_mode, resInfo->getArchive()); + } + + mDoExt_setCurrentHeap(prev_heap); + } else { + return cPhs_ERROR_e; + } + } else { + return phase_state; + } + + setShowType(appen->type); + + if (appen->timer_mode == 10) { + m_timer_mode = dComIfG_getTimerMode(); + mLimitTime = OSMillisecondsToTicks((OSTime)dComIfG_getTimerLimitTimeMs()); + + m_time = m_start_time = dLib_time_c::getTime(); + m_start_time -= OSMillisecondsToTicks((OSTime)dComIfG_getTimerNowTimeMs()); + + m_mode = 0; + m_timer_mode = dComIfG_getTimerMode(); + + dComIfG_setTimerNowTimeMs(getTimeMs()); + dComIfG_setTimerLimitTimeMs(getLimitTimeMs()); + dComIfG_setTimerMode(m_timer_mode); + dComIfG_setTimerPtr(this); + + stock_start(10); + + switch (m_timer_mode) { + case 3: + mp_tm_scrn->setTimerTrans(0.0f, 145.0f); + break; + case 4: + mp_tm_scrn->setTimerTrans(0.0f, 145.0f); + break; + case 6: + mp_tm_scrn->setTimerTrans(0.0f, 145.0f); + break; + case 5: + mp_tm_scrn->setTimerTrans(0.0f, 145.0f); + break; + } + } else { + m_timer_mode = appen->timer_mode; + OS_REPORT("limit Ms = %d\n", appen->limit_ms); + + mLimitTime = OSMillisecondsToTicks((OSTime)appen->limit_ms); + m_start_time = 0; + m_time = 0; + m_mode = 0; + + dComIfG_setTimerNowTimeMs(getTimeMs()); + dComIfG_setTimerLimitTimeMs(getLimitTimeMs()); + dComIfG_setTimerMode(m_timer_mode); + dComIfG_setTimerPtr(this); + } + + switch (m_timer_mode) { + case 8: + mp_tm_scrn->hideDenominator(); + field_0x16D = 2; + break; + case 7: + case 2: + field_0x16D = 0; + break; + default: + field_0x16D = 1; + mp_tm_scrn->hideDenominator(); + break; + } -/* ############################################################################################## */ -/* 80454F48-80454F4C 003548 0004+00 3/3 0/0 0/0 .sdata2 @4050 */ -SECTION_SDATA2 static f32 lit_4050 = 25.0f; + mp_tm_scrn->setHIOType(field_0x16D); + + if (mp_tm_scrn->getHIOType() != 0 && field_0x16D == 0) { + f32 var_f0 = 0.0f; + setCounterPos(g_drawHIO.mMiniGame.mTimerPosX_4x3 + var_f0, + g_drawHIO.mMiniGame.mTimerPosY_4x3); + } else { + f32 var_f0 = 0.0f; + setCounterPos(g_drawHIO.mMiniGame.mTimerPosX[field_0x16D] + var_f0, + g_drawHIO.mMiniGame.mTimerPosY[field_0x16D]); + } + + f32 var_f0 = 0.0f; + setImagePos(g_drawHIO.mMiniGame.mIconPosX[field_0x16D] + var_f0, + g_drawHIO.mMiniGame.mIconPosY[field_0x16D]); + setTimerPos(g_drawHIO.mMiniGame.mCounterPosX[field_0x16D], + g_drawHIO.mMiniGame.mCounterPosY[field_0x16D]); + + field_0x120 = 0; + field_0x128 = 0; + field_0x130 = 0; + field_0x138 = 0; + field_0x16A = 0; + field_0x16B = 0; + field_0x158 = 120; + field_0x15c = 0; + m_is_ready = 0; + m_se_idx = 0; + field_0x160 = 0; + + OS_REPORT("\n\n\nm_se_idx = %d\n\n\n", m_se_idx); + return cPhs_COMPLEATE_e; +} /* 8025CF04-8025D33C 257844 0438+00 1/1 0/0 0/0 .text _execute__8dTimer_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dTimer_c::_execute() { - nofralloc -#include "asm/d/d_timer/_execute__8dTimer_cFv.s" +int dTimer_c::_execute() { + if (m_timer_mode == 6 && i_dComIfGs_getLife() == 0) { + fopMsgM_Delete(this); + } + + if (field_0x16A != 1) { + if (dComIfGp_isPauseFlag() || dMsgObject_isTalkNowCheck()) { + stop(2); + } + + field_0x150 = getRestTimeMs(); + + switch (m_mode) { + case 0: + case 1: + case 5: + m_start_time = 0; + m_time = 0; + + if (m_mode == 1 || m_mode == 5) { + if (--field_0x168 <= 0) { + if (m_mode == 5) { + stock_start(); + } else { + start(m_timer_mode); + } + } + } + break; + case 2: + case 3: + if (--field_0x168 <= 0) { + m_mode = 4; + } + + if (m_mode == 2 && mp_tm_scrn->checkStartAnimeEnd()) { + m_mode = 3; + } + break; + case 4: + m_time = dLib_time_c::getTime(); + dComIfG_setTimerNowTimeMs(getTimeMs()); + dComIfG_setTimerLimitTimeMs(getLimitTimeMs()); + + if (getRestTimeMs() <= 0) { + m_time = mLimitTime + m_start_time; + field_0x138 = 0; + dComIfG_setTimerNowTimeMs(getTimeMs()); + } + + if (m_timer_mode == 3 || m_timer_mode == 4 || m_timer_mode == 6 || m_timer_mode == 5) { + f32 pos_y = mp_tm_scrn->getTimerTransY(); + if (pos_y < 145.0f) { + pos_y += 25.0f; + if (pos_y > 145.0f) { + pos_y = 145.0f; + } + + mp_tm_scrn->setTimerTrans(0.0f, pos_y); + } + } + break; + default: + m_time = field_0x120; + } + } else { + if (field_0x16B == 2 && !dComIfGp_isPauseFlag() && !dMsgObject_isTalkNowCheck()) { + restart(2); + } + + if (field_0x16B == 3) { + field_0x168--; + + if (field_0x168 <= 0) { + field_0x168 = 0; + restart(3); + } else if (field_0x168 == g_drawHIO.mMiniGame.field_0x15a) { + mp_tm_scrn->resetCowID(); + + if (m_timer_mode != 3) { + createStart(0x52D); // "GO!" + } + } + } + } + + mp_tm_scrn->setHIO(); + + if (m_mode == 8) { + if (mp_tm_scrn->closeAnime()) { + fopMsgM_Delete(this); + return 1; + } + } else if (m_mode == 6 && field_0x158 > 0) { + field_0x158--; + } + + if (m_mode != 0 && m_mode != 2) { + if (field_0x15c > 5) { + mp_tm_scrn->anime(); + } else { + field_0x15c++; + } + } + + if (m_timer_mode == 2 || m_timer_mode == 7 || m_timer_mode == 3 || m_timer_mode == 4 || + m_timer_mode == 5 || m_timer_mode == 0) + { + mp_tm_scrn->setTimer(getTimeMs()); + } else { + mp_tm_scrn->setTimer(getRestTimeMs()); + } + + mp_tm_scrn->setCounter(dMeter2Info_getNowCount(), dMeter2Info_getMaxCount()); + return 1; } -#pragma pop -/* 8025D33C-8025D3BC 257C7C 0080+00 1/1 0/0 0/0 .text _draw__8dTimer_cFv */ +// Helper functions to set float literal order +static f32 dummyLiteralOrder() { + return 1.0f; +} + +static f32 dummyLiteralOrder2() { + return -1.0f; +} +/* 8025D33C-8025D3BC 257C7C 0080+00 1/1 0/0 0/0 .text _draw__8dTimer_cFv */ int dTimer_c::_draw() { if (dComIfGp_isPauseFlag() || dMsgObject_isTalkNowCheck()) { return 1; @@ -204,69 +296,115 @@ int dTimer_c::_draw() { } /* 8025D3BC-8025D524 257CFC 0168+00 1/1 0/0 0/0 .text _delete__8dTimer_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dTimer_c::_delete() { - nofralloc -#include "asm/d/d_timer/_delete__8dTimer_cFv.s" +int dTimer_c::_delete() { + if (mp_heap != NULL) { + JKRHeap* prev_heap = mDoExt_setCurrentHeap(mp_heap); + mp_heap->getTotalFreeSize(); + + mp_tm_scrn->deleteScreen(); + delete mp_tm_scrn; + mp_tm_scrn = NULL; + + fopMsgM_destroyExpHeap(mp_heap); + mp_heap = NULL; + mDoExt_setCurrentHeap(prev_heap); + } + + if ((m_timer_mode == 3 || m_timer_mode == 4) && m_mode != 8 && m_mode != 7) { + dComIfG_setTimerNowTimeMs(getTimeMs()); + dComIfG_setTimerLimitTimeMs(getLimitTimeMs()); + dComIfG_setTimerMode(m_timer_mode); + } else { + dComIfG_setTimerNowTimeMs(0); + dComIfG_setTimerLimitTimeMs(0); + dComIfG_setTimerMode(-1); + } + + dComIfG_setTimerPtr(NULL); + dComIfG_resDelete(&m_phase, "Timer"); + dComIfGp_setAllMapArchive(NULL); + return 1; } -#pragma pop /* 8025D524-8025D538 257E64 0014+00 0/0 1/1 0/0 .text deleteCheck__8dTimer_cFv */ int dTimer_c::deleteCheck() { - return mDeleteCheck == 7; + return m_mode == 7; } /* 8025D538-8025D618 257E78 00E0+00 1/1 1/1 0/0 .text start__8dTimer_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dTimer_c::start(int param_0) { - nofralloc -#include "asm/d/d_timer/start__8dTimer_cFi.s" +int dTimer_c::start(int i_timer_mode) { + if (m_mode == 0 || m_mode == 1) { + m_mode = 4; + m_time = m_start_time = dLib_time_c::getTime(); + + if (i_timer_mode == 3 || i_timer_mode == 4 || i_timer_mode == 6 || i_timer_mode == 5) { + stop(3); + + if (i_timer_mode != 3) { + createStart(0x515); // "READY?" + field_0x168 = g_drawHIO.mMiniGame.mReadyGo + g_drawHIO.mMiniGame.field_0x15a; + } else { + field_0x168 = g_drawHIO.mMiniGame.field_0x15a; + } + + m_is_ready = 1; + } + return 1; + } + + return 0; } -#pragma pop /* 8025D618-8025D708 257F58 00F0+00 0/0 1/1 0/0 .text start__8dTimer_cFis */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dTimer_c::start(int param_0, s16 param_1) { - nofralloc -#include "asm/d/d_timer/start__8dTimer_cFis.s" +int dTimer_c::start(int i_timer_mode, s16 param_1) { + if (param_1 == -1) { + if (m_mode == 0) { + if (i_timer_mode == 2 || i_timer_mode == 7) { + dTimer_createStart2D(i_timer_mode, 0x3E3); + } + + field_0x168 = g_drawHIO.mMiniGame.mStartPikariDisplayFrames; + m_mode = 4; + m_time = m_start_time = dLib_time_c::getTime(); + + stop(4); + m_mode = 2; + } + return 1; + } else if (m_mode == 0) { + field_0x168 = param_1; + m_mode = 1; + + if (i_timer_mode == 3 || i_timer_mode == 4 || i_timer_mode == 6 || i_timer_mode == 5) { + stop(3); + } + return 1; + } + + return 0; } -#pragma pop /* 8025D708-8025D7C0 258048 00B8+00 1/1 0/0 0/0 .text stock_start__8dTimer_cFv */ -#ifdef NONMATCHING bool dTimer_c::stock_start() { - if (mDeleteCheck == 5) { - mDeleteCheck = 4; + if (m_mode == 5) { + m_mode = 4; + OSTime current_time = dLib_time_c::getTime(); - mTime1 = current_time; - mTime2 = current_time; + m_start_time = current_time; + m_time = current_time; - mTime1 -= OS_TIMER_CLOCK_MS * dComIfG_getTimerNowTimeMs(); + m_start_time -= OSMillisecondsToTicks((OSTime)dComIfG_getTimerNowTimeMs()); + return true; } - return mDeleteCheck == 5; -} -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dTimer_c::stock_start() { - nofralloc -#include "asm/d/d_timer/stock_start__8dTimer_cFv.s" + + return false; } -#pragma pop -#endif /* 8025D7C0-8025D7E8 258100 0028+00 1/1 0/0 0/0 .text stock_start__8dTimer_cFs */ int dTimer_c::stock_start(s16 param_0) { - if (mDeleteCheck == 0) { + if (m_mode == 0) { field_0x168 = param_0; - mDeleteCheck = 5; + m_mode = 5; return 1; } @@ -277,10 +415,10 @@ int dTimer_c::stock_start(s16 param_0) { int dTimer_c::stop(u8 param_0) { if (field_0x16A == 1 || field_0x16B != 0) { return 0; - } else if (mDeleteCheck != 4) { + } else if (m_mode != 4) { return 0; } else { - mTime3 = dLib_time_c::getTime(); + field_0x130 = dLib_time_c::getTime(); field_0x16A = 1; field_0x16B = param_0; return 1; @@ -291,11 +429,11 @@ int dTimer_c::stop(u8 param_0) { int dTimer_c::restart(u8 param_0) { if (field_0x16A != 1 || field_0x16B != param_0) { return 0; - } else if (mDeleteCheck != 4 && mDeleteCheck != 2) { + } else if (m_mode != 4 && m_mode != 2) { return 0; } else { - mTime2 = dLib_time_c::getTime(); - mTime5 += mTime2 - mTime3; + m_time = dLib_time_c::getTime(); + field_0x138 += m_time - field_0x130; field_0x16A = 0; field_0x16B = 0; return 1; @@ -304,13 +442,13 @@ int dTimer_c::restart(u8 param_0) { /* 8025D920-8025D9E0 258260 00C0+00 0/0 1/1 0/0 .text end__8dTimer_cFi */ int dTimer_c::end(int param_0) { - if (mDeleteCheck != 4) { + if (m_mode != 4) { return 0; } - mTime6 = dLib_time_c::getTime(); - mDeleteCheck = 6; - dComIfG_setTimerNowTimeMs((mTime6 - mTime1 - mTime5) / OS_TIMER_CLOCK_MS); + field_0x120 = dLib_time_c::getTime(); + m_mode = 6; + dComIfG_setTimerNowTimeMs(OSTicksToMilliseconds(field_0x120 - m_start_time - field_0x138)); if (param_0 != -1) { field_0x158 = param_0; @@ -321,517 +459,1121 @@ int dTimer_c::end(int param_0) { /* 8025D9E0-8025D9F0 258320 0010+00 0/0 1/1 0/0 .text deleteRequest__8dTimer_cFv */ int dTimer_c::deleteRequest() { - mDeleteCheck = 8; + m_mode = 8; return 1; } /* 8025D9F0-8025DA54 258330 0064+00 3/3 0/0 0/0 .text getTimeMs__8dTimer_cFv */ int dTimer_c::getTimeMs() { - return (mTime2 - mTime1 - mTime5) / OS_TIMER_CLOCK_MS; + return OSTicksToMilliseconds(m_time - m_start_time - field_0x138); } /* 8025DA54-8025DA9C 258394 0048+00 3/3 0/0 0/0 .text getLimitTimeMs__8dTimer_cFv */ int dTimer_c::getLimitTimeMs() { - return mLimitTime / OS_TIMER_CLOCK_MS; + return OSTicksToMilliseconds(mLimitTime); } /* 8025DA9C-8025DB10 2583DC 0074+00 2/2 0/0 1/1 .text getRestTimeMs__8dTimer_cFv */ -#ifdef NONMATCHING -// regs swapped int dTimer_c::getRestTimeMs() { - OSTime tmpTime2 = mTime2 - mTime1 - mTime5; - // OSTime tmpTime = (mTime5) - mLimitTime; - - return (tmpTime2 - mLimitTime) / OS_TIMER_CLOCK_MS; -} -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dTimer_c::getRestTimeMs() { - nofralloc -#include "asm/d/d_timer/getRestTimeMs__8dTimer_cFv.s" + OSTime step0 = m_time - m_start_time - field_0x138; + step0 = mLimitTime - step0; + return OSTicksToMilliseconds(step0); } -#pragma pop -#endif /* 8025DB10-8025DB38 258450 0028+00 1/1 0/0 4/4 .text isStart__8dTimer_cFv */ int dTimer_c::isStart() { - if (field_0x16A != 1 && mDeleteCheck == 4) { + if (field_0x16A != 1 && m_mode == 4) { return 1; } return 0; } -/* ############################################################################################## */ -/* 803C33C0-803C33E4 -00001 0024+00 1/1 0/0 0/0 .data @5239 */ -SECTION_DATA static void* lit_5239[9] = { - (void*)(((char*)createGetIn__21dDlst_TimerScrnDraw_cF4cXyz) + 0x2B8), - (void*)(((char*)createGetIn__21dDlst_TimerScrnDraw_cF4cXyz) + 0x250), - (void*)(((char*)createGetIn__21dDlst_TimerScrnDraw_cF4cXyz) + 0x258), - (void*)(((char*)createGetIn__21dDlst_TimerScrnDraw_cF4cXyz) + 0x260), - (void*)(((char*)createGetIn__21dDlst_TimerScrnDraw_cF4cXyz) + 0x268), - (void*)(((char*)createGetIn__21dDlst_TimerScrnDraw_cF4cXyz) + 0x274), - (void*)(((char*)createGetIn__21dDlst_TimerScrnDraw_cF4cXyz) + 0x280), - (void*)(((char*)createGetIn__21dDlst_TimerScrnDraw_cF4cXyz) + 0x288), - (void*)(((char*)createGetIn__21dDlst_TimerScrnDraw_cF4cXyz) + 0x294), -}; - -/* 803C33E4-803C33F8 -00001 0014+00 1/0 0/0 0/0 .data l_dTimer_Method */ -SECTION_DATA static void* l_dTimer_Method[5] = { - (void*)dTimer_Create__FP9msg_class, (void*)dTimer_Delete__FP8dTimer_c, - (void*)dTimer_Execute__FP8dTimer_c, (void*)dTimer_IsDelete__FP8dTimer_c, - (void*)dTimer_Draw__FP8dTimer_c, -}; - -/* 803C33F8-803C3420 -00001 0028+00 0/0 0/0 1/0 .data g_profile_TIMER */ -SECTION_DATA extern void* g_profile_TIMER[10] = { - (void*)0xFFFFFFFD, (void*)0x000CFFFD, - (void*)0x03150000, (void*)&g_fpcLf_Method, - (void*)0x00000170, (void*)NULL, - (void*)NULL, (void*)&g_fopMsg_Method, - (void*)0x03000000, (void*)&l_dTimer_Method, -}; - -/* 803C3420-803C3430 020540 0010+00 2/2 0/0 0/0 .data __vt__21dDlst_TimerScrnDraw_c */ -SECTION_DATA extern void* __vt__21dDlst_TimerScrnDraw_c[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)draw__21dDlst_TimerScrnDraw_cFv, - (void*)__dt__21dDlst_TimerScrnDraw_cFv, -}; /* 8025DB38-8025DBE0 258478 00A8+00 1/1 0/0 0/0 .text __ct__21dDlst_TimerScrnDraw_cFv */ -#ifdef NONMATCHING dDlst_TimerScrnDraw_c::dDlst_TimerScrnDraw_c() { - mTimerVisible = 0; - field_0x3DD = 0; + field_0x3e2 = 0; + mHIOType = 0; field_0x3D8 = 0; field_0x3CC = -1; field_0x3D0 = -1; field_0x3D4 = 0; - field_0x3B0 = 0; // fix - field_0x3B4 = 0; // fix - field_0x3B8 = 0; // fix - field_0x3BC = 0; // fix + mParentAlpha = g_drawHIO.mMiniGame.field_0x2c[mHIOType]; + mTimerAlpha = g_drawHIO.mMiniGame.mTimerAlpha[mHIOType]; + mCounterAlpha = g_drawHIO.mMiniGame.mCounterAlpha[mHIOType]; + mImageAlpha = g_drawHIO.mMiniGame.mIconAlpha[mHIOType]; field_0x3DE = 0; field_0x3DF = 0; field_0x3E0 = 0; - field_0x3E1 = 1; -} -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dDlst_TimerScrnDraw_c::dDlst_TimerScrnDraw_c() { - nofralloc -#include "asm/d/d_timer/__ct__21dDlst_TimerScrnDraw_cFv.s" + show(); } -#pragma pop -#endif /* 8025DBE0-8025DFBC 258520 03DC+00 1/1 0/0 0/0 .text setHIO__21dDlst_TimerScrnDraw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setHIO() { - nofralloc -#include "asm/d/d_timer/setHIO__21dDlst_TimerScrnDraw_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 8039A3D8-8039A3D8 026A38 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039A3DE = "zelda_game_image_cow_get_in.blo"; -SECTION_DEAD static char const* const stringBase_8039A3FE = "zelda_game_image_cow_get_in.bck"; -#pragma pop +void dDlst_TimerScrnDraw_c::setHIO() { + bool var_r31 = false; + + if (mpParent != NULL) { + setParentPos(g_drawHIO.mMiniGame.field_0x14[mHIOType], + g_drawHIO.mMiniGame.field_0x20[mHIOType]); + + mpParent->scale(g_drawHIO.mMiniGame.field_0x8[mHIOType], + g_drawHIO.mMiniGame.field_0x8[mHIOType]); + + if (field_0x3DF != 0 && field_0x3E0 != 0 && + mParentAlpha != g_drawHIO.mMiniGame.field_0x2c[mHIOType]) + { + if (mpParent != NULL) { + mpParent->setAlphaRate(g_drawHIO.mMiniGame.field_0x2c[mHIOType]); + } + + mParentAlpha = g_drawHIO.mMiniGame.field_0x2c[mHIOType]; + var_r31 = true; + } + } + + if (mpTimeParent != NULL) { + if (field_0x3e2 != 0 && mHIOType == 0) { + setTimerPos(g_drawHIO.mMiniGame.mTimerPosX_4x3, g_drawHIO.mMiniGame.mTimerPosY_4x3); + } else { + setTimerPos(g_drawHIO.mMiniGame.mTimerPosX[mHIOType], + g_drawHIO.mMiniGame.mTimerPosY[mHIOType]); + } + + if (field_0x3e2 != 0 && mHIOType == 0) { + mpTimeParent->scale(g_drawHIO.mMiniGame.mTimerSizeX_4x3, + g_drawHIO.mMiniGame.mTimerSizeY_4x3); + } else { + mpTimeParent->scale(g_drawHIO.mMiniGame.mTimerSizeX[mHIOType], + g_drawHIO.mMiniGame.mTimerSizeY[mHIOType]); + } + + if (field_0x3DF != 0) { + if (mTimerAlpha != g_drawHIO.mMiniGame.mTimerAlpha[mHIOType] || var_r31) { + if (mpTimeParent != NULL) { + mpTimeParent->setAlphaRate(g_drawHIO.mMiniGame.mTimerAlpha[mHIOType] * + mParentAlpha); + } + + mTimerAlpha = g_drawHIO.mMiniGame.mTimerAlpha[mHIOType]; + } + } + } + + if (mpCowParent != NULL) { + setCounterPos(g_drawHIO.mMiniGame.mCounterPosX[mHIOType], + g_drawHIO.mMiniGame.mCounterPosY[mHIOType]); + mpCowParent->scale(g_drawHIO.mMiniGame.mCounterSizeX[mHIOType], + g_drawHIO.mMiniGame.mCounterSizeY[mHIOType]); + + if (field_0x3E0 != 0) { + if (mCounterAlpha != g_drawHIO.mMiniGame.mCounterAlpha[mHIOType] || var_r31) { + if (mpCowParent != NULL) { + mpCowParent->setAlphaRate(g_drawHIO.mMiniGame.mCounterAlpha[mHIOType] * + mParentAlpha); + } + + mCounterAlpha = g_drawHIO.mMiniGame.mCounterAlpha[mHIOType]; + } + } + } + + if (mpImageParent != NULL) { + setImagePos(g_drawHIO.mMiniGame.mIconPosX[mHIOType], + g_drawHIO.mMiniGame.mIconPosY[mHIOType]); + mpImageParent->scale(g_drawHIO.mMiniGame.mIconSizeX[mHIOType], + g_drawHIO.mMiniGame.mIconSizeY[mHIOType]); + + if (field_0x3E0 != 0) { + if (mImageAlpha != g_drawHIO.mMiniGame.mIconAlpha[mHIOType] || var_r31) { + if (mpImageParent != NULL) { + mpImageParent->setAlphaRate(g_drawHIO.mMiniGame.mIconAlpha[mHIOType] * + mParentAlpha); + } + + mImageAlpha = g_drawHIO.mMiniGame.mIconAlpha[mHIOType]; + } + } + } +} /* 8025DFBC-8025E240 2588FC 0284+00 1/1 0/0 0/0 .text * setScreen__21dDlst_TimerScrnDraw_cFlP10JKRArchive */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setScreen(s32 param_0, JKRArchive* param_1) { - nofralloc -#include "asm/d/d_timer/setScreen__21dDlst_TimerScrnDraw_cFlP10JKRArchive.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 8039A3D8-8039A3D8 026A38 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039A41E = "zelda_game_image_cow_game.blo"; -#pragma pop +void dDlst_TimerScrnDraw_c::setScreen(s32 param_0, JKRArchive* i_archive) { + field_0x3C8 = param_0; + mpArchive = i_archive; + + if (field_0x3C8 == 3 || field_0x3C8 == 4) { + setScreenBoatRace(); + } else if (field_0x3C8 == 8) { + setScreenRider(); + } else { + setScreenBase(); + } + + setShowType(3); + + mpGetInScreen = new J2DScreen(); + JUT_ASSERT(mpGetInScreen != 0); + + bool fg = mpGetInScreen->setPriority("zelda_game_image_cow_get_in.blo", 0x20000, mpArchive); + JUT_ASSERT(fg != false); + dPaneClass_showNullPane(mpGetInScreen); + + i_OSInitFastCast(); + mpGetInBck = (J2DAnmTransform*)J2DAnmLoaderDataBase::load( + JKRGetNameResource("zelda_game_image_cow_get_in.bck", mpArchive)); + + mpGetInParent = new CPaneMgr(mpGetInScreen, 'get_in_n', 2, NULL); + JUT_ASSERT(mpGetInParent != 0); + + mpGetInRoot = new CPaneMgr(mpGetInScreen, 'n_all', 0, NULL); + JUT_ASSERT(mpGetInRoot != 0); + + mpGetInText = new CPaneMgr(mpGetInScreen, 'get_in', 0, NULL); + JUT_ASSERT(mpGetInText != 0); + + static_cast<J2DTextBox*>(mpGetInScreen->search('get_in_s'))->setFont(mDoExt_getMesgFont()); + static_cast<J2DTextBox*>(mpGetInScreen->search('get_in'))->setFont(mDoExt_getMesgFont()); + + for (int i = 0; i < 51; i++) { + m_getin_info[i].bck_frame = 0.0f; + m_getin_info[i].pikari_frame = 0.0f; + m_getin_info[i].pos_x = 0; + m_getin_info[i].pos_y = 0; + m_getin_info[i].field_0xc = 0; + m_getin_info[i].field_0xd = 0xFF; + } + + mCowID = 0; + playBckAnimation(0.0f); + mTimerTransY = 0.0f; + mTimerTransX = 0.0f; +} /* 8025E240-8025E66C 258B80 042C+00 1/1 0/0 0/0 .text setScreenBase__21dDlst_TimerScrnDraw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setScreenBase() { - nofralloc -#include "asm/d/d_timer/setScreenBase__21dDlst_TimerScrnDraw_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 8039A3D8-8039A3D8 026A38 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039A43C = "zelda_game_image_zora_kawakudari.blo"; -#pragma pop +void dDlst_TimerScrnDraw_c::setScreenBase() { + mpScreen = new J2DScreen(); + JUT_ASSERT(mpScreen != 0); + + bool fg = mpScreen->setPriority("zelda_game_image_cow_game.blo", 0x20000, mpArchive); + JUT_ASSERT(fg != false); + dPaneClass_showNullPane(mpScreen); + + mpParent = NULL; + + mpCowParent = new CPaneMgr(mpScreen, 'cow_n', 2, NULL); + JUT_ASSERT(mpCowParent != 0); + mpCowParent->setAlphaRate(0.0f); + + mpTimeParent = new CPaneMgr(mpScreen, 'time_n', 2, NULL); + JUT_ASSERT(mpTimeParent != 0); + mpTimeParent->setAlphaRate(0.0f); + + mpImageParent = new CPaneMgr(mpScreen, 'cow_i_n', 2, NULL); + JUT_ASSERT(mpImageParent != 0); + mpImageParent->setAlphaRate(0.0f); + + field_0x5c[0][0] = mpScreen->search('c_n_2'); + field_0x5c[0][1] = mpScreen->search('c_n_2_s'); + field_0x5c[1][0] = mpScreen->search('c_n_1'); + field_0x5c[1][1] = mpScreen->search('c_n_1_s'); + + field_0x6c[0] = static_cast<J2DPicture*>(mpScreen->search('c_n_4')); + field_0x6c[1] = static_cast<J2DPicture*>(mpScreen->search('c_n_4_s')); + field_0x74[0] = static_cast<J2DPicture*>(mpScreen->search('c_n_3')); + field_0x74[1] = static_cast<J2DPicture*>(mpScreen->search('c_n_3_s')); + + mTimerText[0][0] = mpScreen->search('t_n_6'); + mTimerText[0][1] = mpScreen->search('t_n_6_s'); + mTimerText[1][0] = mpScreen->search('t_n_5'); + mTimerText[1][1] = mpScreen->search('t_n_5_s'); + mTimerText[2][0] = mpScreen->search('t_n_4'); + mTimerText[2][1] = mpScreen->search('t_n_4_s'); + mTimerText[3][0] = mpScreen->search('t_n_3'); + mTimerText[3][1] = mpScreen->search('t_n_3_s'); + mTimerText[4][0] = mpScreen->search('t_n_2'); + mTimerText[4][1] = mpScreen->search('t_n_2_s'); + mTimerText[5][0] = mpScreen->search('t_n_1'); + mTimerText[5][1] = mpScreen->search('t_n_1_s'); +} /* 8025E66C-8025E8B8 258FAC 024C+00 1/1 0/0 0/0 .text setScreenBoatRace__21dDlst_TimerScrnDraw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setScreenBoatRace() { - nofralloc -#include "asm/d/d_timer/setScreenBoatRace__21dDlst_TimerScrnDraw_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 8039A3D8-8039A3D8 026A38 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039A461 = "zelda_game_image_rider.blo"; -#pragma pop +void dDlst_TimerScrnDraw_c::setScreenBoatRace() { + mpScreen = new J2DScreen(); + JUT_ASSERT(mpScreen != 0); + + bool fg = mpScreen->setPriority("zelda_game_image_zora_kawakudari.blo", 0x20000, mpArchive); + JUT_ASSERT(fg != false); + dPaneClass_showNullPane(mpScreen); + + mpParent = new CPaneMgr(mpScreen, 'ta_co_n', 2, NULL); + JUT_ASSERT(mpParent != 0); + + mpCowParent = new CPaneMgr(mpScreen, 'num_n', 2, NULL); + JUT_ASSERT(mpCowParent != 0); + mpCowParent->setAlphaRate(0.0f); + + mpTimeParent = NULL; + + mpImageParent = new CPaneMgr(mpScreen, 'target_n', 2, NULL); + JUT_ASSERT(mpImageParent != 0); + mpImageParent->setAlphaRate(0.0f); + + mpScreen->search('w_target')->hide(); + mpScreen->search('target')->show(); + + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + field_0x5c[i][j] = NULL; + } + } + + field_0x6c[0] = static_cast<J2DPicture*>(mpScreen->search('num_1')); + field_0x6c[1] = NULL; + field_0x74[0] = static_cast<J2DPicture*>(mpScreen->search('num_0')); + field_0x74[1] = NULL; + + for (int i = 0; i < 6; i++) { + for (int j = 0; j < 2; j++) { + mTimerText[i][j] = NULL; + } + } +} /* 8025E8B8-8025EB20 2591F8 0268+00 1/1 0/0 0/0 .text setScreenRider__21dDlst_TimerScrnDraw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setScreenRider() { - nofralloc -#include "asm/d/d_timer/setScreenRider__21dDlst_TimerScrnDraw_cFv.s" +void dDlst_TimerScrnDraw_c::setScreenRider() { + mpScreen = new J2DScreen(); + JUT_ASSERT(mpScreen != 0); + + bool fg = mpScreen->setPriority("zelda_game_image_rider.blo", 0x20000, mpArchive); + JUT_ASSERT(fg != false); + dPaneClass_showNullPane(mpScreen); + + mpParent = NULL; + + mpCowParent = new CPaneMgr(mpScreen, 'num_n', 2, NULL); + JUT_ASSERT(mpCowParent != 0); + mpCowParent->setAlphaRate(0.0f); + + mpTimeParent = NULL; + + mpImageParent = new CPaneMgr(mpScreen, 'rid_i_n', 2, NULL); + JUT_ASSERT(mpImageParent != 0); + mpImageParent->setAlphaRate(0.0f); + + field_0x5c[0][0] = mpScreen->search('n_n_2'); + field_0x5c[0][1] = mpScreen->search('n_n_2_s'); + field_0x5c[1][0] = mpScreen->search('n_n_1'); + field_0x5c[1][1] = mpScreen->search('n_n_1_s'); + + field_0x6c[0] = static_cast<J2DPicture*>(mpScreen->search('n_n_4')); + field_0x6c[1] = static_cast<J2DPicture*>(mpScreen->search('n_n_4_s')); + field_0x74[0] = static_cast<J2DPicture*>(mpScreen->search('n_n_3')); + field_0x74[1] = static_cast<J2DPicture*>(mpScreen->search('n_n_3_s')); + + for (int i = 0; i < 6; i++) { + for (int j = 0; j < 2; j++) { + mTimerText[i][j] = NULL; + } + } } -#pragma pop /* 8025EB20-8025EC5C 259460 013C+00 1/1 0/0 0/0 .text hideDenominator__21dDlst_TimerScrnDraw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::hideDenominator() { - nofralloc -#include "asm/d/d_timer/hideDenominator__21dDlst_TimerScrnDraw_cFv.s" +void dDlst_TimerScrnDraw_c::hideDenominator() { + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + if (field_0x5c[i][j] != NULL) { + field_0x5c[i][j]->hide(); + } + } + } + + if (field_0x3C8 == 8) { + mpScreen->search('n_sl_s')->hide(); + mpScreen->search('n_sl')->hide(); + } else { + J2DPane* sl_s = mpScreen->search('c_sl_s'); + J2DPane* sl = mpScreen->search('c_sl'); + + if (sl_s != NULL) { + sl_s->hide(); + } + + if (sl != NULL) { + sl->hide(); + } + } } -#pragma pop /* 8025EC5C-8025EE24 25959C 01C8+00 1/1 0/0 0/0 .text deleteScreen__21dDlst_TimerScrnDraw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::deleteScreen() { - nofralloc -#include "asm/d/d_timer/deleteScreen__21dDlst_TimerScrnDraw_cFv.s" +void dDlst_TimerScrnDraw_c::deleteScreen() { + delete mpScreen; + mpScreen = NULL; + + if (mpParent != NULL) { + delete mpParent; + mpParent = NULL; + } + + if (mpTimeParent != NULL) { + delete mpTimeParent; + mpTimeParent = NULL; + } + + if (mpCowParent != NULL) { + delete mpCowParent; + mpCowParent = NULL; + } + + if (mpImageParent != NULL) { + delete mpImageParent; + mpImageParent = NULL; + } + + delete mpGetInScreen; + mpGetInScreen = NULL; + + delete mpGetInBck; + mpGetInBck = NULL; + + delete mpGetInParent; + mpGetInParent = NULL; + + delete mpGetInRoot; + mpGetInRoot = NULL; + + delete mpGetInText; + mpGetInText = NULL; } -#pragma pop /* 8025EE24-8025EECC 259764 00A8+00 2/2 0/0 0/0 .text * changeNumberTexture__21dDlst_TimerScrnDraw_cFP7J2DPanei */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::changeNumberTexture(J2DPane* param_0, int param_1) { - nofralloc -#include "asm/d/d_timer/changeNumberTexture__21dDlst_TimerScrnDraw_cFP7J2DPanei.s" +void dDlst_TimerScrnDraw_c::changeNumberTexture(J2DPane* i_pane, int i_num) { + if (i_num < 0 || i_num >= 10) { + i_num = 0; + } + + dComIfGp_getMain2DArchive()->getResource('TIMG', getNumber(i_num)); + static_cast<J2DPicture*>(i_pane)->changeTexture(getNumber(i_num), 0); } -#pragma pop /* 8025EECC-8025EEF0 25980C 0024+00 1/1 0/0 0/0 .text getNumber__21dDlst_TimerScrnDraw_cFi */ -const char* dDlst_TimerScrnDraw_c::getNumber(int pIndex) { - return dMeter2Info_getNumberTextureName(pIndex); +const char* dDlst_TimerScrnDraw_c::getNumber(int i_num) { + return dMeter2Info_getNumberTextureName(i_num); } -/* ############################################################################################## */ -/* 80454F4C-80454F50 00354C 0004+00 5/5 0/0 0/0 .sdata2 @4124 */ -SECTION_SDATA2 static f32 lit_4124 = 1.0f; +/* 8025EEF0-8025F180 259830 0290+00 1/1 0/0 0/0 .text setTimer__21dDlst_TimerScrnDraw_cFi + */ +void dDlst_TimerScrnDraw_c::setTimer(int i_time) { + int min; + int sec; + int ms; + dMeter2Info_setTimeMs(i_time); + + sec = (i_time / 1000); + ms = i_time - sec * 1000; + min = sec / 60; + sec = sec - min * 60; + + if (min > 99) { + min = 99; + sec = 59; + ms = 999; + } -/* 80454F50-80454F58 003550 0004+04 3/3 0/0 0/0 .sdata2 @4125 */ -SECTION_SDATA2 static f32 lit_4125[1 + 1 /* padding */] = { - -1.0f, - /* padding */ - 0.0f, -}; + for (int i = 0; i < 2; i++) { + if (mTimerText[0][i] != NULL) { + changeNumberTexture(mTimerText[0][i], min / 10); + } -/* 80454F58-80454F60 003558 0008+00 7/7 0/0 0/0 .sdata2 @4627 */ -SECTION_SDATA2 static f64 lit_4627 = 4503601774854144.0 /* cast s32 to float */; + if (mTimerText[1][i] != NULL) { + changeNumberTexture(mTimerText[1][i], min % 10); + } -/* 8025EEF0-8025F180 259830 0290+00 1/1 0/0 0/0 .text setTimer__21dDlst_TimerScrnDraw_cFi - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setTimer(int param_0) { - nofralloc -#include "asm/d/d_timer/setTimer__21dDlst_TimerScrnDraw_cFi.s" + if (mTimerText[2][i] != NULL) { + changeNumberTexture(mTimerText[2][i], sec / 10); + } + + if (mTimerText[3][i] != NULL) { + changeNumberTexture(mTimerText[3][i], sec % 10); + } + + if (mTimerText[4][i] != NULL) { + changeNumberTexture(mTimerText[4][i], ms / 100); + } + + if (mTimerText[5][i] != NULL) { + changeNumberTexture(mTimerText[5][i], (ms % 100) / 10); + } + } + + if (mpTimeParent != NULL) { + if ((dComIfGp_event_getMode() == 1 && field_0x3DF != 0) || !isVisible()) { + s16 alpha_time = mpTimeParent->getAlphaTimer(); + if (alpha_time < 5) { + f32 temp_f0 = acc(5, 5 - (s16)(alpha_time + 1), 0); + mpTimeParent->setAlphaRate(mParentAlpha * + (temp_f0 * g_drawHIO.mMiniGame.mTimerAlpha[mHIOType])); + mpTimeParent->alphaAnimeStart(alpha_time + 1); + } + } else { + s16 alpha_time = mpTimeParent->getAlphaTimer(); + if (alpha_time > 0) { + f32 temp_f0 = acc(5, 5 - (s16)(alpha_time - 1), 0); + mpTimeParent->setAlphaRate(mParentAlpha * + (temp_f0 * g_drawHIO.mMiniGame.mTimerAlpha[mHIOType])); + mpTimeParent->alphaAnimeStart(alpha_time - 1); + } + } + } } -#pragma pop /* 8025F180-8025FA00 259AC0 0880+00 1/1 0/0 0/0 .text setCounter__21dDlst_TimerScrnDraw_cFUcUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setCounter(u8 param_0, u8 param_1) { - nofralloc -#include "asm/d/d_timer/setCounter__21dDlst_TimerScrnDraw_cFUcUc.s" +void dDlst_TimerScrnDraw_c::setCounter(u8 i_count, u8 i_max) { + bool var_r30 = false; + + if (field_0x3D4 > 0) { + field_0x3D4--; + var_r30 = true; + } + + if (i_count != field_0x3CC || var_r30) { + if (i_count < field_0x3CC) { + field_0x3CC--; + + if (field_0x3C8 == 3 || field_0x3C8 == 4) { + field_0x3D4 = 60; + } + } else if (i_count > field_0x3CC) { + field_0x3CC++; + + if (field_0x3D4 > 0) { + field_0x3D4 = 0; + } + } + + if (field_0x3CC < 0) { + field_0x3CC = 0; + } + + if (field_0x3CC > 99) { + field_0x3CC = 99; + } + + int temp_r29 = field_0x3CC % 10; + int temp_r28 = (field_0x3CC % 100) / 10; + + for (int i = 0; i < 2; i++) { + if (field_0x74[i] != NULL) { + changeNumberTexture(field_0x74[i], temp_r29); + + if (var_r30) { + if (field_0x3D4 > 0) { + field_0x74[i]->setCornerColor(JUtility::TColor(255, 0, 0, 255), + JUtility::TColor(255, 0, 0, 255), + JUtility::TColor(255, 255, 255, 255), + JUtility::TColor(255, 255, 255, 255)); + } else { + field_0x74[i]->setCornerColor(JUtility::TColor(255, 255, 0, 255), + JUtility::TColor(255, 255, 0, 255), + JUtility::TColor(255, 255, 255, 255), + JUtility::TColor(255, 255, 255, 255)); + } + } + } + + if (field_0x6c[i] != NULL) { + changeNumberTexture(field_0x6c[i], temp_r28); + + if (var_r30) { + if (field_0x3D4 > 0) { + field_0x6c[i]->setCornerColor(JUtility::TColor(255, 0, 0, 255), + JUtility::TColor(255, 0, 0, 255), + JUtility::TColor(255, 255, 255, 255), + JUtility::TColor(255, 255, 255, 255)); + } else { + field_0x6c[i]->setCornerColor(JUtility::TColor(255, 255, 0, 255), + JUtility::TColor(255, 255, 0, 255), + JUtility::TColor(255, 255, 255, 255), + JUtility::TColor(255, 255, 255, 255)); + } + } + } + } + } + + if (i_max != field_0x3D0) { + if (i_max < field_0x3D0) { + field_0x3D0--; + } else { + field_0x3D0++; + } + + if (field_0x3D0 < 0) { + field_0x3D0 = 0; + } + + if (field_0x3D0 > 99) { + field_0x3D0 = 99; + } + + int temp_r27 = field_0x3D0 % 10; + int temp_r28_2 = (field_0x3D0 % 100) / 10; + + for (int i = 0; i < 2; i++) { + if (field_0x5c[1][i] != NULL) { + changeNumberTexture(field_0x5c[1][i], temp_r27); + } + + if (field_0x5c[0][i] != NULL) { + changeNumberTexture(field_0x5c[0][i], temp_r28_2); + } + } + } + + if ((dComIfGp_event_getMode() == 1 && field_0x3E0 != 0) || !isVisible()) { + if (mpCowParent != NULL) { + s16 alpha_time = mpCowParent->getAlphaTimer(); + + if (alpha_time < 5) { + alpha_time++; + f32 var_f0 = 1.0f - acc(5, alpha_time, 0); + mpCowParent->setAlphaRate(mParentAlpha * + (var_f0 * g_drawHIO.mMiniGame.mCounterAlpha[mHIOType])); + mpCowParent->alphaAnimeStart(alpha_time); + } + } + + if (mpImageParent != NULL) { + s16 alpha_time = mpImageParent->getAlphaTimer(); + + if (alpha_time < 5) { + alpha_time++; + f32 var_f0 = 1.0f - acc(5, alpha_time, 0); + mpImageParent->setAlphaRate(mParentAlpha * + (var_f0 * g_drawHIO.mMiniGame.mIconAlpha[mHIOType])); + mpImageParent->alphaAnimeStart(alpha_time); + } + } + } else { + if (mpCowParent != NULL) { + s16 alpha_time = mpCowParent->getAlphaTimer(); + + if (alpha_time > 0) { + alpha_time--; + f32 var_f0 = 1.0f - acc(5, alpha_time, 0); + mpCowParent->setAlphaRate(mParentAlpha * + (var_f0 * g_drawHIO.mMiniGame.mCounterAlpha[mHIOType])); + mpCowParent->alphaAnimeStart(alpha_time); + } + } + + if (mpImageParent != NULL) { + s16 alpha_time = mpImageParent->getAlphaTimer(); + + if (alpha_time > 0) { + alpha_time--; + f32 var_f0 = 1.0f - acc(5, alpha_time, 0); + mpImageParent->setAlphaRate(mParentAlpha * + (var_f0 * g_drawHIO.mMiniGame.mIconAlpha[mHIOType])); + mpImageParent->alphaAnimeStart(alpha_time); + } + } + } } -#pragma pop /* 8025FA00-8025FA2C 25A340 002C+00 1/1 0/0 0/0 .text setParentPos__21dDlst_TimerScrnDraw_cFff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setParentPos(f32 param_0, f32 param_1) { - nofralloc -#include "asm/d/d_timer/setParentPos__21dDlst_TimerScrnDraw_cFff.s" +void dDlst_TimerScrnDraw_c::setParentPos(f32 i_posX, f32 i_posY) { + if (mpParent != NULL) { + mpParent->paneTrans(i_posX, i_posY); + } } -#pragma pop /* 8025FA2C-8025FA6C 25A36C 0040+00 4/4 0/0 0/0 .text setTimerPos__21dDlst_TimerScrnDraw_cFff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setTimerPos(f32 param_0, f32 param_1) { - nofralloc -#include "asm/d/d_timer/setTimerPos__21dDlst_TimerScrnDraw_cFff.s" +void dDlst_TimerScrnDraw_c::setTimerPos(f32 i_posX, f32 i_posY) { + if (mpTimeParent != NULL) { + mpTimeParent->paneTrans(i_posX + mTimerTransX, i_posY + mTimerTransY); + } } -#pragma pop /* 8025FA6C-8025FA98 25A3AC 002C+00 4/4 0/0 0/0 .text setCounterPos__21dDlst_TimerScrnDraw_cFff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setCounterPos(f32 param_0, f32 param_1) { - nofralloc -#include "asm/d/d_timer/setCounterPos__21dDlst_TimerScrnDraw_cFff.s" +void dDlst_TimerScrnDraw_c::setCounterPos(f32 i_posX, f32 i_posY) { + if (mpCowParent != NULL) { + mpCowParent->paneTrans(i_posX, i_posY); + } } -#pragma pop /* 8025FA98-8025FAC4 25A3D8 002C+00 4/4 0/0 0/0 .text setImagePos__21dDlst_TimerScrnDraw_cFff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setImagePos(f32 param_0, f32 param_1) { - nofralloc -#include "asm/d/d_timer/setImagePos__21dDlst_TimerScrnDraw_cFff.s" +void dDlst_TimerScrnDraw_c::setImagePos(f32 i_posX, f32 i_posY) { + if (mpImageParent != NULL) { + mpImageParent->paneTrans(i_posX, i_posY); + } } -#pragma pop /* 8025FAC4-8025FB74 25A404 00B0+00 2/2 0/0 0/0 .text setShowType__21dDlst_TimerScrnDraw_cFUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::setShowType(u8 param_0) { - nofralloc -#include "asm/d/d_timer/setShowType__21dDlst_TimerScrnDraw_cFUc.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80454F60-80454F68 003560 0006+02 1/1 0/0 0/0 .sdata2 animeFrame$5017 */ -SECTION_SDATA2 static u8 animeFrame[6 + 2 /* padding */] = { - 0x00, - 0x07, - 0x00, - 0x0F, - 0x00, - 0x16, - /* padding */ - 0x00, - 0x00, -}; +void dDlst_TimerScrnDraw_c::setShowType(u8 i_type) { + dComIfG_setTimerType(i_type); -/* 80454F68-80454F6C 003568 0004+00 3/3 0/0 0/0 .sdata2 @5094 */ -SECTION_SDATA2 static f32 lit_5094 = -50.0f; + if (mpTimeParent != NULL) { + if (i_type & 1) { + mpTimeParent->show(); + } else { + mpTimeParent->hide(); + } + } -/* 8025FB74-8025FF98 25A4B4 0424+00 1/1 0/0 0/0 .text anime__21dDlst_TimerScrnDraw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::anime() { - nofralloc -#include "asm/d/d_timer/anime__21dDlst_TimerScrnDraw_cFv.s" -} -#pragma pop + if (i_type & 2) { + if (mpCowParent != NULL) { + mpCowParent->show(); + } -/* ############################################################################################## */ -/* 80454F6C-80454F70 00356C 0004+00 1/1 0/0 0/0 .sdata2 @5143 */ -SECTION_SDATA2 static f32 lit_5143 = 49.0f; + if (mpImageParent != NULL) { + mpImageParent->show(); + } + } else { + if (mpCowParent != NULL) { + mpCowParent->hide(); + } -/* 8025FF98-802601E4 25A8D8 024C+00 1/1 0/0 0/0 .text closeAnime__21dDlst_TimerScrnDraw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::closeAnime() { - nofralloc -#include "asm/d/d_timer/closeAnime__21dDlst_TimerScrnDraw_cFv.s" + if (mpImageParent != NULL) { + mpImageParent->hide(); + } + } } -#pragma pop -/* ############################################################################################## */ -/* 80454F70-80454F74 003570 0004+00 3/3 0/0 0/0 .sdata2 @5227 */ -SECTION_SDATA2 static f32 lit_5227 = 40.0f; +/* 8025FB74-8025FF98 25A4B4 0424+00 1/1 0/0 0/0 .text anime__21dDlst_TimerScrnDraw_cFv */ +void dDlst_TimerScrnDraw_c::anime() { + static const s16 animeFrame[] = {7, 15, 22}; -/* 80454F74-80454F78 003574 0004+00 2/2 0/0 0/0 .sdata2 @5228 */ -SECTION_SDATA2 static f32 lit_5228 = 60.0f; + if (field_0x3DE == 0) { + if (field_0x3D8 <= animeFrame[2]) { + field_0x3D8++; + } else { + field_0x3DE = 1; + } -/* 80454F78-80454F7C 003578 0004+00 1/1 0/0 0/0 .sdata2 @5229 */ -SECTION_SDATA2 static f32 lit_5229 = -100.0f; + if (field_0x3D8 <= animeFrame[1]) { + f32 temp_f31 = acc(animeFrame[1], field_0x3D8, 0); + f32 temp_f1 = (1.0f - temp_f31) * -50.0f; + + if (mpTimeParent != NULL) { + if (field_0x3e2 != 0 && mHIOType == 0) { + setTimerPos(g_drawHIO.mMiniGame.mTimerPosX_4x3 + temp_f1, + g_drawHIO.mMiniGame.mTimerPosY_4x3); + } else { + setTimerPos(g_drawHIO.mMiniGame.mTimerPosX[mHIOType] + temp_f1, + g_drawHIO.mMiniGame.mTimerPosY[mHIOType]); + } + + mpTimeParent->setAlphaRate(mParentAlpha * + (temp_f31 * g_drawHIO.mMiniGame.mTimerAlpha[mHIOType])); + + if (field_0x3e2 != 0 && mHIOType == 0) { + mpTimeParent->scale(g_drawHIO.mMiniGame.mTimerSizeX_4x3, + g_drawHIO.mMiniGame.mTimerSizeY_4x3); + } else { + mpTimeParent->scale(g_drawHIO.mMiniGame.mTimerSizeX[mHIOType], + g_drawHIO.mMiniGame.mTimerSizeY[mHIOType]); + } + } + + if (field_0x3D8 == animeFrame[1]) { + field_0x3DF = 1; + } + } -/* 80454F7C-80454F80 00357C 0004+00 1/1 0/0 0/0 .sdata2 @5230 */ -SECTION_SDATA2 static f32 lit_5230 = 100.0f; + if (field_0x3D8 > animeFrame[0] && field_0x3D8 <= animeFrame[2]) { + f32 temp_f31 = acc(animeFrame[1], field_0x3D8 - animeFrame[0], 0); + f32 temp_f1 = (1.0f - temp_f31) * -50.0f; + + if (mpCowParent != NULL) { + setCounterPos(g_drawHIO.mMiniGame.mCounterPosX[mHIOType] + temp_f1, + g_drawHIO.mMiniGame.mCounterPosY[mHIOType]); + mpCowParent->setAlphaRate(mParentAlpha * + (temp_f31 * g_drawHIO.mMiniGame.mCounterAlpha[mHIOType])); + mpCowParent->scale(g_drawHIO.mMiniGame.mCounterSizeX[mHIOType], + g_drawHIO.mMiniGame.mCounterSizeY[mHIOType]); + } + + if (mpImageParent != NULL) { + setImagePos(g_drawHIO.mMiniGame.mIconPosX[mHIOType] + temp_f1, + g_drawHIO.mMiniGame.mIconPosY[mHIOType]); + mpImageParent->setAlphaRate(mParentAlpha * + (temp_f31 * g_drawHIO.mMiniGame.mIconAlpha[mHIOType])); + mpImageParent->scale(g_drawHIO.mMiniGame.mIconSizeX[mHIOType], + g_drawHIO.mMiniGame.mIconSizeY[mHIOType]); + } + + if (field_0x3D8 == animeFrame[2]) { + field_0x3E0 = 1; + } + } + } +} -/* 80454F80-80454F84 003580 0004+00 1/1 0/0 0/0 .sdata2 @5231 */ -SECTION_SDATA2 static f32 lit_5231 = 75.0f; +/* 8025FF98-802601E4 25A8D8 024C+00 1/1 0/0 0/0 .text closeAnime__21dDlst_TimerScrnDraw_cFv */ +BOOL dDlst_TimerScrnDraw_c::closeAnime() { + BOOL var_r31 = false; + field_0x3D8++; + + if (field_0x3D8 <= 7) { + f32 temp_f31 = acc(7, field_0x3D8, 0); + f32 temp_f30 = acc(7, 7 - field_0x3D8, 0); + f32 temp_f1 = temp_f31 * -50.0f; + + if (mpTimeParent != NULL) { + if (field_0x3e2 != 0 && mHIOType == 0) { + setTimerPos(g_drawHIO.mMiniGame.mTimerPosX_4x3 + temp_f1, + g_drawHIO.mMiniGame.mTimerPosY_4x3); + } else { + setTimerPos(g_drawHIO.mMiniGame.mTimerPosX[mHIOType] + temp_f1, + g_drawHIO.mMiniGame.mTimerPosY[mHIOType]); + } + + mpTimeParent->setAlphaRate(mParentAlpha * + (temp_f30 * g_drawHIO.mMiniGame.mTimerAlpha[mHIOType])); + } -/* 80454F84-80454F88 003584 0004+00 1/1 0/0 0/0 .sdata2 @5232 */ -SECTION_SDATA2 static f32 lit_5232 = -75.0f; + if (mpCowParent != NULL) { + setCounterPos(g_drawHIO.mMiniGame.mCounterPosX[mHIOType] + temp_f1, + g_drawHIO.mMiniGame.mCounterPosY[mHIOType]); + mpCowParent->setAlphaRate(mParentAlpha * + (temp_f30 * g_drawHIO.mMiniGame.mCounterAlpha[mHIOType])); + } -/* 80454F88-80454F8C 003588 0004+00 1/1 0/0 0/0 .sdata2 @5233 */ -SECTION_SDATA2 static f32 lit_5233 = 200.0f; + if (mpImageParent != NULL) { + setImagePos(g_drawHIO.mMiniGame.mIconPosX[mHIOType] + temp_f1, + g_drawHIO.mMiniGame.mIconPosY[mHIOType]); + mpImageParent->setAlphaRate(mParentAlpha * + (temp_f30 * g_drawHIO.mMiniGame.mIconAlpha[mHIOType])); + } + } -/* 80454F8C-80454F90 00358C 0004+00 1/1 0/0 0/0 .sdata2 @5234 */ -SECTION_SDATA2 static f32 lit_5234 = 150.0f; + if (field_0x3D8 >= 7) { + var_r31 = true; + } -/* 80454F90-80454F94 003590 0004+00 1/1 0/0 0/0 .sdata2 @5235 */ -SECTION_SDATA2 static f32 lit_5235 = 20.0f; + return var_r31; +} /* 802601E4-80260574 25AB24 0390+00 2/1 0/0 0/0 .text createGetIn__21dDlst_TimerScrnDraw_cF4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::createGetIn(cXyz param_0) { - nofralloc -#include "asm/d/d_timer/createGetIn__21dDlst_TimerScrnDraw_cF4cXyz.s" -} -#pragma pop +int dDlst_TimerScrnDraw_c::createGetIn(cXyz i_pos) { + char string[104]; + dMeter2Info_getString(0x3E4, string, NULL); // "GOAT IN!" + strcpy(static_cast<J2DTextBox*>(mpGetInScreen->search('get_in_s'))->getStringPtr(), string); + strcpy(static_cast<J2DTextBox*>(mpGetInScreen->search('get_in'))->getStringPtr(), string); + + if (mCowID < 50) { + m_getin_info[mCowID].bck_frame = 40.0f; + m_getin_info[mCowID].pikari_frame = -1.0f; + + if (g_drawHIO.mMiniGame.mGetInTextLocation == 1) { + m_getin_info[mCowID].pos_x = i_pos.x; + m_getin_info[mCowID].pos_y = i_pos.y; + } else { + u8 spC[50]; + for (int i = 0; i < 50; i++) { + spC[i] = 0; + } + + f32 temp = (f32)g_drawHIO.mMiniGame.mGetInTextAlphaFrames + + ((f32)g_drawHIO.mMiniGame.mGetInTextWaitFrames + 60.0f); + + for (int i = 0; i < mCowID; i++) { + if (m_getin_info[i].bck_frame > 40.0f && m_getin_info[i].bck_frame < temp) { + if (m_getin_info[i].field_0xd != 0xFF) { + spC[m_getin_info[i].field_0xd] = 1; + } + } + } + + for (int i = 0; i < 50; i++) { + if (spC[i] == 0) { + m_getin_info[mCowID].field_0xd = i; + break; + } + } + + f32 pos_x = 0.0f; + f32 pos_y = 0.0f; + switch (m_getin_info[mCowID].field_0xd) { + case 0: + break; + case 1: + pos_x = -100.0f; + break; + case 2: + pos_x = 100.0f; + break; + case 3: + pos_y = 75.0f; + break; + case 4: + pos_x = -100.0f; + pos_y = 75.0f; + break; + case 5: + pos_x = 100.0f; + pos_y = 75.0f; + break; + case 6: + pos_y = -50.0f; + break; + case 7: + pos_x = -100.0f; + pos_y = -75.0f; + break; + case 8: + pos_x = 100.0f; + pos_y = -75.0f; + break; + default: + pos_x = cM_rndFX(200.0f); + pos_y = cM_rndFX(150.0f); + break; + } + + m_getin_info[mCowID].pos_x = pos_x + cM_rndFX(20.0f); + m_getin_info[mCowID].pos_y = pos_y + cM_rndFX(20.0f); + } -/* 80260574-80260690 25AEB4 011C+00 3/3 0/0 0/0 .text createStart__21dDlst_TimerScrnDraw_cFUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 dDlst_TimerScrnDraw_c::createStart(u16 param_0) { - nofralloc -#include "asm/d/d_timer/createStart__21dDlst_TimerScrnDraw_cFUs.s" -} -#pragma pop + m_getin_info[mCowID].field_0xc = 0; + Z2GetAudioMgr()->seStart(Z2SE_SY_COW_GET_IN, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + mCowID++; + return 1; + } -/* ############################################################################################## */ -/* 80454F94-80454F98 003594 0004+00 1/1 0/0 0/0 .sdata2 @5325 */ -SECTION_SDATA2 static f32 lit_5325 = 3.0f / 20.0f; + return 0; +} -/* 80454F98-80454F9C 003598 0004+00 2/2 0/0 0/0 .sdata2 @5326 */ -SECTION_SDATA2 static f32 lit_5326 = 0.5f; +/* 80260574-80260690 25AEB4 011C+00 3/3 0/0 0/0 .text createStart__21dDlst_TimerScrnDraw_cFUs */ +s32 dDlst_TimerScrnDraw_c::createStart(u16 i_messageID) { + char string[112]; + dMeter2Info_getString(i_messageID, string, NULL); + strcpy(static_cast<J2DTextBox*>(mpGetInScreen->search('get_in_s'))->getStringPtr(), string); + strcpy(static_cast<J2DTextBox*>(mpGetInScreen->search('get_in'))->getStringPtr(), string); + + if (mCowID == 0) { + m_getin_info[mCowID].bck_frame = 40.0f; + m_getin_info[mCowID].pikari_frame = -1.0f; + m_getin_info[mCowID].pos_x = 0; + m_getin_info[mCowID].pos_y = 0; + m_getin_info[mCowID].field_0xc = 1; + mCowID++; + return 1; + } -/* 80454F9C-80454FA0 00359C 0004+00 1/1 0/0 0/0 .sdata2 @5327 */ -SECTION_SDATA2 static f32 lit_5327 = 18.0f; + return 0; +} /* 80260690-80260AA8 25AFD0 0418+00 1/0 0/0 0/0 .text draw__21dDlst_TimerScrnDraw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::draw() { - nofralloc -#include "asm/d/d_timer/draw__21dDlst_TimerScrnDraw_cFv.s" +void dDlst_TimerScrnDraw_c::draw() { + J2DGrafContext* graf_ctx = dComIfGp_getCurrentGrafPort(); + graf_ctx->setup2D(); + + mpScreen->draw(0.0f, 0.0f, graf_ctx); + + f32 temp = (f32)g_drawHIO.mMiniGame.mGetInTextAlphaFrames + + ((f32)g_drawHIO.mMiniGame.mGetInTextWaitFrames + 60.0f); + + for (int i = 0; i < 51; i++) { + if (m_getin_info[i].bck_frame > 0.0f && m_getin_info[i].bck_frame < temp) { + f32 var_f29 = 1.0f; + + if (m_getin_info[i].bck_frame < 60.0f) { + m_getin_info[i].bck_frame += g_drawHIO.mMiniGame.mGetInTextAnimSpeed; + if (m_getin_info[i].bck_frame > 60.0f) { + m_getin_info[i].bck_frame = 60.0f; + } + + playBckAnimation(m_getin_info[i].bck_frame); + } else if (m_getin_info[i].bck_frame < g_drawHIO.mMiniGame.mGetInTextWaitFrames + 60.0f) + { + m_getin_info[i].bck_frame++; + playBckAnimation(60.0f); + } else if (m_getin_info[i].bck_frame < temp) { + m_getin_info[i].bck_frame++; + playBckAnimation(60.0f); + + var_f29 = acc(g_drawHIO.mMiniGame.mGetInTextAlphaFrames, + temp - m_getin_info[i].bck_frame, 0); + } + + mpGetInParent->setAlphaRate(var_f29); + + if (g_drawHIO.mMiniGame.mGetInTextLocation == 1) { + mpGetInRoot->translate(m_getin_info[i].pos_x + g_drawHIO.mMiniGame.mGetInTextPosX, + m_getin_info[i].pos_y + g_drawHIO.mMiniGame.mGetInTextPosY); + } else { + f32 temp_f2 = m_getin_info[i].bck_frame - 40.0f; + f32 var_f3 = ((temp_f2 * 0.5f) * temp_f2) * 0.15f; + if (i == 0) { + var_f3 = 0.0f; + } + + mpGetInRoot->paneTrans( + m_getin_info[i].pos_x + g_drawHIO.mMiniGame.mGetInTextPosX, + (m_getin_info[i].pos_y + g_drawHIO.mMiniGame.mGetInTextPosY) - var_f3); + } + + mpGetInRoot->scale(g_drawHIO.mMiniGame.mGetInTextSizeX, + g_drawHIO.mMiniGame.mGetInTextSizeY); + mpGetInScreen->draw(0.0f, 0.0f, graf_ctx); + + if (m_getin_info[i].pikari_frame > 0.0f) { + drawPikari(i); + } else if (m_getin_info[i].pikari_frame == -1.0f) { + if (m_getin_info[i].field_0xc == 0) { + if (m_getin_info[i].bck_frame > g_drawHIO.mMiniGame.mGetInPikariAppearFrames) { + m_getin_info[i].pikari_frame = + 18.0f - g_drawHIO.mMiniGame.mGetInPikariAnimSpeed; + } + } else if (m_getin_info[i].bck_frame > g_drawHIO.mMiniGame.mStartPikariAppearFrames) + { + m_getin_info[i].pikari_frame = + 18.0f - g_drawHIO.mMiniGame.mStartPikariAnimSpeed; + } + } + } + } } -#pragma pop /* 80260AA8-80260AD4 25B3E8 002C+00 1/1 0/0 0/0 .text * checkStartAnimeEnd__21dDlst_TimerScrnDraw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::checkStartAnimeEnd() { - nofralloc -#include "asm/d/d_timer/checkStartAnimeEnd__21dDlst_TimerScrnDraw_cFv.s" +bool dDlst_TimerScrnDraw_c::checkStartAnimeEnd() { + if (m_getin_info[0].field_0xc == 1 && m_getin_info[0].pikari_frame == 0.0f) { + return true; + } + + return false; } -#pragma pop /* 80260AD4-80260B54 25B414 0080+00 2/2 0/0 0/0 .text playBckAnimation__21dDlst_TimerScrnDraw_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::playBckAnimation(f32 param_0) { - nofralloc -#include "asm/d/d_timer/playBckAnimation__21dDlst_TimerScrnDraw_cFf.s" +void dDlst_TimerScrnDraw_c::playBckAnimation(f32 i_frame) { + mpGetInParent->getPanePtr()->setAnimation(mpGetInBck); + mpGetInBck->setFrame(i_frame); + + mpGetInParent->getPanePtr()->animationTransform(); + mpGetInParent->getPanePtr()->setAnimation((J2DAnmTransform*)NULL); } -#pragma pop /* 80260B54-80260F04 25B494 03B0+00 1/1 0/0 0/0 .text drawPikari__21dDlst_TimerScrnDraw_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDlst_TimerScrnDraw_c::drawPikari(int param_0) { - nofralloc -#include "asm/d/d_timer/drawPikari__21dDlst_TimerScrnDraw_cFi.s" +void dDlst_TimerScrnDraw_c::drawPikari(int i_no) { + f32 temp_f28; + f32 anim_frame; + f32 var_f26; + f32 var_f29; + + anim_frame = m_getin_info[i_no].pikari_frame; + Vec center = mpGetInText->getGlobalVtxCenter(false, 0); + char* string = static_cast<J2DTextBox*>(mpGetInText->getPanePtr())->getStringPtr(); + s16 str_idx = 0; + + var_f29 = 0.0f; + var_f26 = 0.0f; + J2DTextBox::TFontSize font_size; + static_cast<J2DTextBox*>(mpGetInText->getPanePtr())->getFontSize(font_size); + JUTFont* font_p = mDoExt_getMesgFont(); + + f32 var_f25 = 1.0f; + for (J2DPane* pane = mpGetInText->getPanePtr(); pane != NULL; pane = pane->getParentPane()) { + var_f25 *= pane->getScaleX(); + } + + for (; string[str_idx] != 0; str_idx++) { + if (str_idx > 0) { + var_f29 += + var_f25 * static_cast<J2DTextBox*>(mpGetInText->getPanePtr())->getCharSpace(); + } + + int c = string[str_idx] & 0xFF; + + var_f29 += + var_f25 * (font_size.mSizeX * ((f32)font_p->getWidth(c) / (f32)font_p->getCellWidth())); + } + + temp_f28 = center.x - (var_f29 / 2); + f32 frame; + + for (str_idx = 0; string[str_idx] != 0; str_idx++) { + if (str_idx > 0) { + var_f26 += + var_f25 * static_cast<J2DTextBox*>(mpGetInText->getPanePtr())->getCharSpace(); + } + + int c = string[str_idx] & 0xFF; + + f32 temp_f24 = + var_f25 * (font_size.mSizeX * ((f32)font_p->getWidth(c) / (f32)font_p->getCellWidth())); + if (c != 0x20 && c != 0x8140) { + frame = anim_frame; + if (m_getin_info[i_no].field_0xc == 0) { + dMeter2Info_getMeterClass()->getMeterDrawPtr()->drawPikari( + (temp_f24 / 2) + (temp_f28 + var_f26), center.y, &frame, + g_drawHIO.mMiniGame.mGetInPikariScale, + g_drawHIO.mMiniGame.mGetInPikariFrontOuter, + g_drawHIO.mMiniGame.mGetInPikariFrontInner, + g_drawHIO.mMiniGame.mGetInPikariBackOuter, + g_drawHIO.mMiniGame.mGetInPikariBackInner, + g_drawHIO.mMiniGame.mGetInPikariAnimSpeed, 0); + } else { + dMeter2Info_getMeterClass()->getMeterDrawPtr()->drawPikari( + (temp_f24 / 2) + (temp_f28 + var_f26), center.y, &frame, + g_drawHIO.mMiniGame.mStartPikariScale, + g_drawHIO.mMiniGame.mStartPikariFrontOuter, + g_drawHIO.mMiniGame.mStartPikariFrontInner, + g_drawHIO.mMiniGame.mStartPikariBackOuter, + g_drawHIO.mMiniGame.mStartPikariBackInner, + g_drawHIO.mMiniGame.mStartPikariAnimSpeed, 0); + } + } + + var_f26 += temp_f24; + } + + m_getin_info[i_no].pikari_frame = frame; } -#pragma pop /* 80260F04-80260F24 25B844 0020+00 1/0 0/0 0/0 .text dTimer_Draw__FP8dTimer_c */ -static void dTimer_Draw(dTimer_c* i_this) { - i_this->_draw(); +static int dTimer_Draw(dTimer_c* i_this) { + return i_this->_draw(); } /* 80260F24-80260F44 25B864 0020+00 1/0 0/0 0/0 .text dTimer_Execute__FP8dTimer_c */ -static void dTimer_Execute(dTimer_c* i_this) { - i_this->_execute(); +static int dTimer_Execute(dTimer_c* i_this) { + return i_this->_execute(); } /* 80260F44-80260F4C 25B884 0008+00 1/0 0/0 0/0 .text dTimer_IsDelete__FP8dTimer_c */ -static bool dTimer_IsDelete(dTimer_c* i_this) { - return true; +static int dTimer_IsDelete(dTimer_c* i_this) { + return 1; } /* 80260F4C-80260F6C 25B88C 0020+00 1/0 0/0 0/0 .text dTimer_Delete__FP8dTimer_c */ -static void dTimer_Delete(dTimer_c* i_this) { - i_this->_delete(); +static int dTimer_Delete(dTimer_c* i_this) { + return i_this->_delete(); } /* 80260F6C-80260F8C 25B8AC 0020+00 1/0 0/0 0/0 .text dTimer_Create__FP9msg_class */ -static void dTimer_Create(msg_class* i_this) { - ((dTimer_c*)i_this)->_create(); +static int dTimer_Create(msg_class* i_this) { + return static_cast<dTimer_c*>(i_this)->_create(); } /* 80260F8C-80261034 25B8CC 00A8+00 0/0 1/1 9/9 .text dTimer_createTimer__FlUlUcUcffff */ -s32 dTimer_createTimer(s32 param_0, u32 param_1, u8 param_2, u8 param_3, f32 param_4, f32 param_5, +s32 dTimer_createTimer(s32 i_mode, u32 i_limitMs, u8 i_type, u8 param_3, f32 param_4, f32 param_5, f32 param_6, f32 param_7) { if (dComIfG_getTimerMode() == -1) { - return fopMsgM_Timer_create(PROC_TIMER, param_0, param_1, param_2, param_3, param_4, - param_5, param_6, param_7, 0); + return fopMsgM_Timer_create(PROC_TIMER, i_mode, i_limitMs, i_type, param_3, param_4, + param_5, param_6, param_7, NULL); } return -1; } -/* ############################################################################################## */ -/* 8039A3D8-8039A3D8 026A38 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039A47C = "F_SP115"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_8039A484 = "\0\0\0"; -#pragma pop - -/* 80454FA0-80454FA4 0035A0 0004+00 1/1 0/0 0/0 .sdata2 @5544 */ -SECTION_SDATA2 static f32 lit_5544 = 221.0f; - -/* 80454FA4-80454FA8 0035A4 0004+00 1/1 0/0 0/0 .sdata2 @5545 */ -SECTION_SDATA2 static f32 lit_5545 = 439.0f; - -/* 80454FA8-80454FAC 0035A8 0004+00 1/1 0/0 0/0 .sdata2 @5546 */ -SECTION_SDATA2 static f32 lit_5546 = 32.0f; - -/* 80454FAC-80454FB0 0035AC 0004+00 1/1 0/0 0/0 .sdata2 @5547 */ -SECTION_SDATA2 static f32 lit_5547 = 419.0f; /* 80261034-80261100 25B974 00CC+00 0/0 1/1 0/0 .text dTimer_createStockTimer__Fv */ s32 dTimer_createStockTimer() { @@ -843,9 +1585,8 @@ s32 dTimer_createStockTimer() { return -1; } else { u8 timer_type = dComIfG_getTimerType(); - return fopMsgM_Timer_create(PROC_TIMER, 10, 0, timer_type, 0, FLOAT_LABEL(lit_5544), - FLOAT_LABEL(lit_5545), FLOAT_LABEL(lit_5546), - FLOAT_LABEL(lit_5547), 0); + return fopMsgM_Timer_create(PROC_TIMER, 10, 0, timer_type, 0, 221.0f, 439.0f, 32.0f, + 419.0f, NULL); } } else { return -1; @@ -853,11 +1594,11 @@ s32 dTimer_createStockTimer() { } /* 80261100-80261188 25BA40 0088+00 0/0 0/0 1/1 .text dTimer_createGetIn2D__Fl4cXyz */ -u32 dTimer_createGetIn2D(s32 param_0, cXyz param_1) { - if (dComIfG_getTimerPtr()) { - cXyz tmp; - mDoLib_project(¶m_1, &tmp); - param_0 = dComIfG_getTimerPtr()->createGetIn(tmp); +u32 dTimer_createGetIn2D(s32 param_0, cXyz i_pos) { + if (dComIfG_getTimerPtr() != NULL) { + cXyz proj_pos; + mDoLib_project(&i_pos, &proj_pos); + param_0 = dComIfG_getTimerPtr()->createGetIn(proj_pos); } else { param_0 = 0; } @@ -867,7 +1608,7 @@ u32 dTimer_createGetIn2D(s32 param_0, cXyz param_1) { /* 80261188-802611F0 25BAC8 0068+00 1/1 0/0 0/0 .text dTimer_createStart2D__FlUs */ static int dTimer_createStart2D(s32 param_0, u16 param_1) { - if (dComIfG_getTimerPtr()) { + if (dComIfG_getTimerPtr() != NULL) { param_0 = dComIfG_getTimerPtr()->createStart(param_1); } else { param_0 = 0; @@ -878,7 +1619,7 @@ static int dTimer_createStart2D(s32 param_0, u16 param_1) { /* 802611F0-80261244 25BB30 0054+00 0/0 0/0 5/5 .text dTimer_isStart__Fv */ int dTimer_isStart() { - if (dComIfG_getTimerPtr()) { + if (dComIfG_getTimerPtr() != NULL) { return dComIfG_getTimerPtr()->isStart(); } @@ -887,7 +1628,7 @@ int dTimer_isStart() { /* 80261244-80261298 25BB84 0054+00 0/0 0/0 2/2 .text dTimer_getRestTimeMs__Fv */ int dTimer_getRestTimeMs() { - if (dComIfG_getTimerPtr()) { + if (dComIfG_getTimerPtr() != NULL) { return dComIfG_getTimerPtr()->getRestTimeMs(); } @@ -896,21 +1637,21 @@ int dTimer_getRestTimeMs() { /* 80261298-802612EC 25BBD8 0054+00 0/0 0/0 2/2 .text dTimer_show__Fv */ void dTimer_show() { - if (dComIfG_getTimerPtr()) { + if (dComIfG_getTimerPtr() != NULL) { dComIfG_getTimerPtr()->show(); } } /* 802612EC-80261340 25BC2C 0054+00 0/0 0/0 2/2 .text dTimer_hide__Fv */ void dTimer_hide() { - if (dComIfG_getTimerPtr()) { + if (dComIfG_getTimerPtr() != NULL) { dComIfG_getTimerPtr()->hide(); } } /* 80261340-80261394 25BC80 0054+00 0/0 0/0 1/1 .text dTimer_isReadyFlag__Fv */ u32 dTimer_isReadyFlag() { - if (dComIfG_getTimerPtr()) { + if (dComIfG_getTimerPtr() != NULL) { return dComIfG_getTimerPtr()->isReadyFlag(); } @@ -918,23 +1659,31 @@ u32 dTimer_isReadyFlag() { } /* 80261394-802613DC 25BCD4 0048+00 1/0 0/0 0/0 .text __dt__21dDlst_TimerScrnDraw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dDlst_TimerScrnDraw_c::~dDlst_TimerScrnDraw_c() { - nofralloc -#include "asm/d/d_timer/__dt__21dDlst_TimerScrnDraw_cFv.s" -} -#pragma pop +dDlst_TimerScrnDraw_c::~dDlst_TimerScrnDraw_c() {} /* 802613DC-8026141C 25BD1C 0040+00 1/1 0/0 0/0 .text createGetIn__8dTimer_cF4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dTimer_c::createGetIn(cXyz param_0) { - nofralloc -#include "asm/d/d_timer/createGetIn__8dTimer_cF4cXyz.s" +int dTimer_c::createGetIn(cXyz i_pos) { + return mp_tm_scrn->createGetIn(i_pos); } -#pragma pop -/* 8039A3D8-8039A3D8 026A38 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 803C33E4-803C33F8 -00001 0014+00 1/0 0/0 0/0 .data l_dTimer_Method */ +static leafdraw_method_class l_dTimer_Method = { + (process_method_func)dTimer_Create, (process_method_func)dTimer_Delete, + (process_method_func)dTimer_Execute, (process_method_func)dTimer_IsDelete, + (process_method_func)dTimer_Draw, +}; + +/* 803C33F8-803C3420 -00001 0028+00 0/0 0/0 1/0 .data g_profile_TIMER */ +extern msg_process_profile_definition g_profile_TIMER = { + fpcLy_CURRENT_e, + 12, + fpcPi_CURRENT_e, + PROC_TIMER, + (process_method_class*)&g_fpcLf_Method, + sizeof(dTimer_c), + 0, + 0, + &g_fopMsg_Method, + 768, + &l_dTimer_Method, +};
\ No newline at end of file |
