diff options
| author | Jcw87 <Jcw87@users.noreply.github.com> | 2026-01-18 17:59:57 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-18 17:59:57 -0800 |
| commit | 87a3705039533b309a04baaaa0f99010b5d71c00 (patch) | |
| tree | 2dc2beb45a2b7b6a1738126a0c11c966c66a535c /src/m_Do/m_Do_Reset.cpp | |
| parent | 52a1e1363a4b91bc49f7994a553d16b90d969619 (diff) | |
m_Do debug (#3052)
* m_Do debug
* m_Do wii data
Diffstat (limited to 'src/m_Do/m_Do_Reset.cpp')
| -rw-r--r-- | src/m_Do/m_Do_Reset.cpp | 79 |
1 files changed, 59 insertions, 20 deletions
diff --git a/src/m_Do/m_Do_Reset.cpp b/src/m_Do/m_Do_Reset.cpp index a19ca6ff99..5d7fc36d88 100644 --- a/src/m_Do/m_Do_Reset.cpp +++ b/src/m_Do/m_Do_Reset.cpp @@ -11,8 +11,13 @@ #include "dolphin/gx.h" #include "m_Do/m_Do_audio.h" #include "m_Do/m_Do_DVDError.h" +#include "m_Do/m_Do_ext.h" #include "m_Do/m_Do_MemCard.h" +#if !PLATFORM_GCN +#include "revolution/os.h" +#endif + static void my_OSCancelAlarmAll() {} static void destroyVideo() { @@ -26,16 +31,15 @@ static void destroyVideo() { mDoRstData* mDoRst::mResetData; -void mDoRst_reset(int param_0, u32 param_1, int param_2) { +void mDoRst_reset(int reset, u32 resetCode, int forceMenu) { + JUT_ASSERT(83, mDoExt_GetCurrentRunningThread() != 0); JUTXfb::getManager()->clearIndex(); mDoDvdErr_ThdCleanup(); cAPICPad_recalibrate(); if (mDoAud_zelAudio_c::isInitFlag()) { - bool audioReset; do { - audioReset = Z2AudioMgr::getInterface()->hasReset(); - } while (!audioReset); + } while (!Z2AudioMgr::getInterface()->hasReset()); } if (DVDGetDriveStatus() == DVD_STATE_BUSY) { @@ -76,33 +80,68 @@ void mDoRst_reset(int param_0, u32 param_1, int param_2) { my_OSCancelAlarmAll(); LCDisable(); +#if PLATFORM_GCN OSSetSaveRegion(mDoRst::mResetData, (u8*)&mDoRst::getResetData + 0x18); - OSResetSystem(param_0, param_1, param_2); + OSResetSystem(reset, resetCode, forceMenu); +#else + if (reset == 2) { + OSShutdownSystem(); + } else if (reset == 0) { + OSRestart(resetCode); + } else { + OSReturnToMenu(); + } +#endif do { VIWaitForRetrace(); } while (true); } +void checkDiskCallback(s32 result, DVDCommandBlock* block) { + block->userData = (void*)result; +} + void mDoRst_resetCallBack(int port, void*) { - if (!mDoRst::isReset()) { - if (port == -1) { - cAPICPad_recalibrate(); - } else { - if (mDoRst::is3ButtonReset()) { - JUTGamePad::C3ButtonReset::sResetOccurred = false; - JUTGamePad::C3ButtonReset::sCallback = mDoRst_resetCallBack; - JUTGamePad::C3ButtonReset::sCallbackArg = NULL; - return; - } - mDoRst::on3ButtonReset(); - mDoRst::set3ButtonResetPort(port); - cAPICPad_recalibrate(); + if (mDoRst::isReset()) { + return; + } + if (port == -1) { + cAPICPad_recalibrate(); + } else { + if (mDoRst::is3ButtonReset()) { +#if PLATFORM_GCN + JUTGamePad::C3ButtonReset::sResetOccurred = false; + JUTGamePad::C3ButtonReset::sCallback = mDoRst_resetCallBack; + JUTGamePad::C3ButtonReset::sCallbackArg = NULL; +#endif + return; } + mDoRst::on3ButtonReset(); + mDoRst::set3ButtonResetPort(port); + cAPICPad_recalibrate(); + } - if (DVDCheckDisk() == 0 && DVDGetDriveStatus() != DVD_STATE_FATAL_ERROR) { + int check; +#if PLATFORM_GCN + check = DVDCheckDisk(); +#else + DVDCommandBlock block; + block.userData = (void*)-1; + while (DVDCheckDiskAsync(&block, checkDiskCallback)); + do { + check = (int)block.userData; + } while (check == -1); +#endif + if (check == 0) { + s32 status = DVDGetDriveStatus(); + if (status != DVD_STATE_FATAL_ERROR) { mDoRst::onReturnToMenu(); } - mDoRst::onReset(); } + mDoRst::onReset(); +} + +void mDoRst_shutdownCallBack() { + mDoRst::onShutdown(); } |
