mirror of
https://github.com/zeldaret/tp
synced 2026-05-25 07:23:14 -04:00
189 lines
5.2 KiB
C++
189 lines
5.2 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: m_Do/m_Do_Reset
|
|
//
|
|
|
|
#include "m_Do/m_Do_Reset.h"
|
|
#include "JSystem/JAudio2/JASDvdThread.h"
|
|
#include "JSystem/JUtility/JUTGamePad.h"
|
|
#include "JSystem/JUtility/JUTVideo.h"
|
|
#include "JSystem/JUtility/JUTXfb.h"
|
|
#include "SSystem/SComponent/c_API_controller_pad.h"
|
|
#include "dol2asm.h"
|
|
#include "dolphin/gx/GX.h"
|
|
#include "dolphin/types.h"
|
|
#include "m_Do/m_Do_audio.h"
|
|
#include "m_Do/m_Do_DVDError.h"
|
|
#include "m_Do/m_Do_MemCard.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
extern "C" static void my_OSCancelAlarmAll__Fv();
|
|
extern "C" static void destroyVideo__Fv();
|
|
extern "C" void mDoRst_reset__FiUli();
|
|
extern "C" void mDoRst_resetCallBack__FiPv();
|
|
extern "C" u32 getResetData__6mDoRstFv();
|
|
extern "C" extern char const* const m_Do_m_Do_Reset__stringBase0;
|
|
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void mDoDvdErr_ThdCleanup__Fv();
|
|
extern "C" void cAPICPad_recalibrate__Fv();
|
|
extern "C" void pause__13JASTaskThreadFb();
|
|
extern "C" void getThreadPointer__6JASDvdFv();
|
|
extern "C" void hasReset__10Z2AudioMgrCFv();
|
|
extern "C" void destroyManager__8JUTVideoFv();
|
|
extern "C" void clearIndex__6JUTXfbFv();
|
|
extern "C" void LCDisable();
|
|
extern "C" void VIWaitForRetrace();
|
|
extern "C" void VIFlush();
|
|
extern "C" void GXFlush();
|
|
extern "C" void GXAbortFrame();
|
|
extern "C" void GXDrawDone();
|
|
extern "C" void _savegpr_27();
|
|
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
|
|
extern "C" u8 sCallback__Q210JUTGamePad13C3ButtonReset[4];
|
|
extern "C" u8 sCallbackArg__Q210JUTGamePad13C3ButtonReset[4 + 4 /* padding */];
|
|
extern "C" u8 sManager__6JUTXfb[4 + 4 /* padding */];
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
static void my_OSCancelAlarmAll() {
|
|
/* empty function */
|
|
}
|
|
|
|
static void destroyVideo() {
|
|
JUTVideo::destroyManager();
|
|
GXSetDrawDoneCallback(NULL);
|
|
VISetBlack(1);
|
|
VIFlush();
|
|
VIWaitForRetrace();
|
|
return;
|
|
}
|
|
|
|
/* 80450C78-80450C80 000178 0004+04 3/2 42/42 2/2 .sbss mResetData__6mDoRst */
|
|
mDoRstData* mDoRst::mResetData;
|
|
|
|
/* 80015614-8001574C 00FF54 0138+00 0/0 3/3 0/0 .text mDoRst_reset__FiUli */
|
|
void mDoRst_reset(int param_0, u32 param_1, int param_2) {
|
|
JUTXfb::getManager()->clearIndex();
|
|
mDoDvdErr_ThdCleanup();
|
|
cAPICPad_recalibrate();
|
|
|
|
if (mDoAud_zelAudio_c::isInitFlag()) {
|
|
bool audioReset;
|
|
do {
|
|
audioReset = Z2AudioMgr::getInterface()->hasReset();
|
|
} while (!audioReset);
|
|
}
|
|
|
|
if (DVDGetDriveStatus() == DVD_STATE_BUSY) {
|
|
OSAttention("DVD_STATE_BUSY\n");
|
|
}
|
|
|
|
JASTaskThread* task_thread = JASDvd::getThreadPointer();
|
|
if (task_thread != NULL) {
|
|
task_thread->pause(true);
|
|
OSThread* thread = task_thread->getThreadRecord();
|
|
if (thread != NULL) {
|
|
OSSuspendThread(thread);
|
|
OSDetachThread(thread);
|
|
OSCancelThread(thread);
|
|
}
|
|
}
|
|
|
|
VIWaitForRetrace();
|
|
VIWaitForRetrace();
|
|
|
|
OSThread* gxThread = GXGetCurrentGXThread();
|
|
s32 enable = OSDisableInterrupts();
|
|
|
|
if (gxThread != OSGetCurrentThread()) {
|
|
OSCancelThread(gxThread);
|
|
GXSetCurrentGXThread();
|
|
}
|
|
|
|
GXFlush();
|
|
GXAbortFrame();
|
|
GXDrawDone();
|
|
OSRestoreInterrupts(enable);
|
|
destroyVideo();
|
|
|
|
while (!mDoMemCd_isCardCommNone()) {
|
|
VIWaitForRetrace();
|
|
}
|
|
|
|
my_OSCancelAlarmAll();
|
|
LCDisable();
|
|
OSSetSaveRegion(mDoRst::mResetData, (u8*)&mDoRst::getResetData + 0x18);
|
|
OSResetSystem(param_0, param_1, param_2);
|
|
|
|
do {
|
|
VIWaitForRetrace();
|
|
} while (true);
|
|
}
|
|
|
|
/* 8001574C-800157F4 01008C 00A8+00 0/0 3/3 0/0 .text mDoRst_resetCallBack__FiPv */
|
|
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 (DVDCheckDisk() == 0 && DVDGetDriveStatus() != DVD_STATE_FATAL_ERROR) {
|
|
mDoRst::onReturnToMenu();
|
|
}
|
|
mDoRst::onReset();
|
|
}
|
|
}
|
|
|
|
/* 800157F4-800157FC -00001 0008+00 0/0 0/0 0/0 .text getResetData__6mDoRstFv */
|
|
mDoRstData* mDoRst::getResetData() {
|
|
return mResetData;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80450C80-80450C88 -00001 0008+00 0/0 6/6 0/0 .sbss None */
|
|
/* 80450C80 0001+00 data_80450C80 None */
|
|
/* 80450C81 0007+00 data_80450C81 None */
|
|
// most of these are probably fake
|
|
#pragma push
|
|
#pragma force_active on
|
|
u8 struct_80450C7C;
|
|
u8 struct_80450C7D;
|
|
u8 struct_80450C7E;
|
|
u8 struct_80450C7F;
|
|
|
|
bool SyncWidthSound;
|
|
u8 sDefaultDirection;
|
|
|
|
u8 struct_80450C82;
|
|
u8 struct_80450C83;
|
|
u8 struct_80450C84;
|
|
u8 struct_80450C85;
|
|
u8 struct_80450C86;
|
|
u8 struct_80450C87;
|
|
#pragma pop
|
|
|
|
/* 80450C88-80450C90 000188 0008+00 0/0 2/2 0/0 .sbss None */
|
|
bool mDoDvdErr_initialized;
|
|
|
|
/* 80374198-80374198 0007F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|