summaryrefslogtreecommitdiff
path: root/src/m_Do/m_Do_Reset.cpp
diff options
context:
space:
mode:
authorJcw87 <Jcw87@users.noreply.github.com>2026-01-18 17:59:57 -0800
committerGitHub <noreply@github.com>2026-01-18 17:59:57 -0800
commit87a3705039533b309a04baaaa0f99010b5d71c00 (patch)
tree2dc2beb45a2b7b6a1738126a0c11c966c66a535c /src/m_Do/m_Do_Reset.cpp
parent52a1e1363a4b91bc49f7994a553d16b90d969619 (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.cpp79
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();
}