mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-29 15:23:01 -04:00
+61
-22
@@ -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 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();
|
||||
}
|
||||
void checkDiskCallback(s32 result, DVDCommandBlock* block) {
|
||||
block->userData = (void*)result;
|
||||
}
|
||||
|
||||
if (DVDCheckDisk() == 0 && DVDGetDriveStatus() != DVD_STATE_FATAL_ERROR) {
|
||||
void mDoRst_resetCallBack(int port, void*) {
|
||||
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();
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user