summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorErin Moon <erin@hecke.rs>2020-12-25 19:59:52 -0600
committerGitHub <noreply@github.com>2020-12-25 20:59:52 -0500
commit58fc83c4f804e72019dc9ccbcc389affe7a9f3ed (patch)
treed287ca8be8511f1a826b1d62aa6461ab1a76fcf4 /include
parent22bda03652efbecd77e1fa3597dfdecee768ec06 (diff)
m_Do_Reset: OK (#35)
* m_Do_Reset: split and (some) decomp decompiles: - my_OSCancelAlarmAll() - destroyVideo() * mDoRst::reset(): decompile, plus some supporting code * split DVD* functions to dvd.h * mDoRst::resetCallBack(): decompile
Diffstat (limited to 'include')
-rw-r--r--include/JSystem/JKernel/JKRDvdFile/JKRDvdFile.h1
-rw-r--r--include/JSystem/JUtility/JUTXfb/JUTXfb.h21
-rw-r--r--include/dolphin/types.h2
-rw-r--r--include/dvd/dvd.h44
-rw-r--r--include/functions.h69
-rw-r--r--include/m_Do/m_Do_Reset/m_Do_Reset.h32
-rw-r--r--include/m_Do/m_Do_main/asm/func_80006454.s24
-rw-r--r--include/os/OS.h8
-rw-r--r--include/variables.h18
9 files changed, 184 insertions, 35 deletions
diff --git a/include/JSystem/JKernel/JKRDvdFile/JKRDvdFile.h b/include/JSystem/JKernel/JKRDvdFile/JKRDvdFile.h
index bca06b8e06..6d9b7384e3 100644
--- a/include/JSystem/JKernel/JKRDvdFile/JKRDvdFile.h
+++ b/include/JSystem/JKernel/JKRDvdFile/JKRDvdFile.h
@@ -3,6 +3,7 @@
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRFile/JKRFile.h"
+#include "dvd/dvd.h"
#include "global.h"
class DVDFileInfo;
diff --git a/include/JSystem/JUtility/JUTXfb/JUTXfb.h b/include/JSystem/JUtility/JUTXfb/JUTXfb.h
new file mode 100644
index 0000000000..3cf89bc431
--- /dev/null
+++ b/include/JSystem/JUtility/JUTXfb/JUTXfb.h
@@ -0,0 +1,21 @@
+#ifndef __JUTILITY_JUTXFB_JUTXFB_H__
+#define __JUTILITY_JUTXFB_JUTXFB_H__
+
+#include "dolphin/types.h"
+
+class JUTXfb {
+public:
+ void clearIndex();
+private:
+ void * xfb_buffer[3];
+ bool is_xfb_allocated[3];
+ u8 padding_1;
+ s32 num_xfbs;
+ s16 active_xfb_index;
+ s16 last_drawn_xfb_index;
+ s16 next_xfb_buffer;
+ u8 padding_2[2];
+ s32 field_0x1c;
+};
+
+#endif \ No newline at end of file
diff --git a/include/dolphin/types.h b/include/dolphin/types.h
index 57efce338f..ab7eff70c6 100644
--- a/include/dolphin/types.h
+++ b/include/dolphin/types.h
@@ -31,4 +31,6 @@ typedef int BOOL;
#define NULL (0)
+#define INT32_MAX (0x7fffffff)
+
#endif \ No newline at end of file
diff --git a/include/dvd/dvd.h b/include/dvd/dvd.h
new file mode 100644
index 0000000000..f5563d5430
--- /dev/null
+++ b/include/dvd/dvd.h
@@ -0,0 +1,44 @@
+#ifndef __DVD_H__
+#define __DVD_H__
+
+extern "C" {
+
+typedef enum DVDState {
+ DVD_STATE_END = 0x0,
+ DVD_STATE_BUSY = 0x1,
+ DVD_STATE_WAITING = 0x2,
+ DVD_STATE_COVER_CLOSED = 0x3,
+ DVD_STATE_NO_DISK = 0x4,
+ DVD_STATE_COVER_OPEN = 0x5,
+ DVD_STATE_WRONG_DISK = 0x6,
+ DVD_STATE_MOTOR_STOPPED = 0x7,
+ DVD_STATE_IGNORED = 0x8,
+ DVD_STATE_CANCELED = 0xa, // lmao they skipped 9
+ DVD_STATE_RETRY = 0xb,
+ DVD_STATE_FATAL_ERROR = -1,
+ __DVD_STATE_ENUM_FORCE_S32 = INT32_MAX,
+} DVDState;
+}
+
+class DVDFileInfo;
+extern "C" {
+ s32 DVDOpen(const char*, u8[48]);
+ s32 DVDClose(u8[48]);
+ void DVDReadPrio(void);
+ void DVDGetCurrentDiskID(void);
+ s32 DVDFastOpen(long, u8[48]);
+ int DVDGetCommandBlockStatus(u8[48]);
+ s32 DVDReadAsyncPrio(u8[48], void*, long, long, void(*)(long,DVDFileInfo*), long);
+ void DVDConvertPathToEntrynum(void);
+ DVDState DVDGetDriveStatus(void);
+ s32 DVDCheckDisk(void);
+
+ void DVDChangeDir(void);
+ void DVDCloseDir(void);
+ void DVDOpenDir(void);
+ void DVDReadDir(void);
+
+}
+
+
+#endif \ No newline at end of file
diff --git a/include/functions.h b/include/functions.h
index e32a1ae78a..43109edd73 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -1,3 +1,5 @@
+#include "os/OS.h"
+
extern "C" {
void J2DScreen_NS_draw(void);
void PSMTXCopy(void);
@@ -62,7 +64,8 @@ extern "C" {
void setBombNum__24dSv_player_item_record_cFUcUc(void);
void setItem__17dSv_player_item_cFiUc(void);
void dMeter2Info_c_NS_getString(void);
- void Z2AudioMgr_NS_setOutputMode(u32,unsigned long);
+ void Z2AudioMgr_NS_setOutputMode(void*,unsigned long);
+ u32 Z2AudioMgr_NS_hasReset(void*);
void dComIfG_play_c_NS_getNowVibration(void);
void setInitEventBit(void);
void daObjCarry_c_NS_clrSaveFlag(void);
@@ -169,7 +172,6 @@ extern "C" {
void JUTWarningConsole_f(void);
void func_803621CC(void);
- void VIWaitForRetrace(void);
void func_80361C24(void);
void _restgpr_26(void);
@@ -251,24 +253,14 @@ extern "C" {
void DCStoreRangeNoSync(void);
void __RAS_OSDisableInterrupts_begin(void);
u8 dComIfGs_getBottleMax(void);
+
+
+ void mDoDvdErr_ThdCleanup(void);
}
-// DVD
-class DVDFileInfo;
-extern "C" {
- s32 DVDOpen(const char*, u8[48]);
- s32 DVDClose(u8[48]);
- void DVDReadPrio(void);
- void DVDGetCurrentDiskID(void);
- s32 DVDFastOpen(long, u8[48]);
- int DVDGetCommandBlockStatus(u8[48]);
- s32 DVDReadAsyncPrio(u8[48], void*, long, long, void(*)(long,DVDFileInfo*), long);
- void DVDConvertPathToEntrynum(void);
-
- void DVDChangeDir(void);
- void DVDCloseDir(void);
- void DVDOpenDir(void);
- void DVDReadDir(void);
+class mDoCPd_c;
+extern "C" {
+ void cAPICPad_recalibrate(void);
}
// JSystem/JSupport/JSUList
@@ -366,6 +358,19 @@ extern void GXSetBlendMode(u32, u32, u32, u32);
extern void GXSetVtxAttrFmt(u32, u32, u32, u32, u32);
extern void GXClearVtxDesc();
extern void GXSetVtxDesc(u32, u32);
+typedef void (* GXDrawDoneCallback)(void);
+extern void GXSetDrawDoneCallback(GXDrawDoneCallback);
+extern void GXDrawDone(void);
+extern void GXAbortFrame(void);
+extern void GXFlush(void);
+extern OSThread* GXSetCurrentGXThread(void);
+extern OSThread* GXGetCurrentGXThread(void);
+}
+
+extern "C" {
+void VIWaitForRetrace(void);
+void VISetBlack(s32);
+void VIFlush(void);
}
extern "C" {
@@ -894,4 +899,30 @@ extern "C" {
void mainRamToAram__7JKRAramFPUcUlUl15JKRExpandSwitchUlP7JKRHeapiPUl(void);
void nextSrcData__FPUc(void);
void run__7JKRAramFv(void);
-}; \ No newline at end of file
+};
+
+// JSystem/JUtility/JUTVideo
+class JUTVideo;
+extern "C" {
+ void JUTVideo_NS_destroyManager(void);
+}
+
+// JSystem/JAudio2/JASTaskThread
+struct JASTaskThread {
+ u8 unk0[0x2c];
+ OSThread* thread;
+};
+extern "C" {
+ s32 JASTaskThread_NS_pause(JASTaskThread*, bool);
+}
+
+// JSystem/JAudio2/JASDvdThread
+extern "C" {
+ JASTaskThread* JASDvd_NS_getThreadPointer(void);
+}
+
+// m_Do_Rst
+extern "C" {
+ void getResetData__6mDoRstFv(void);
+ void resetCallBack__6mDoRstFiPv(void);
+} \ No newline at end of file
diff --git a/include/m_Do/m_Do_Reset/m_Do_Reset.h b/include/m_Do/m_Do_Reset/m_Do_Reset.h
new file mode 100644
index 0000000000..6603198b50
--- /dev/null
+++ b/include/m_Do/m_Do_Reset/m_Do_Reset.h
@@ -0,0 +1,32 @@
+#ifndef __M_DO_RESET_H__
+#define __M_DO_RESET_H__
+
+#include "dolphin/types.h"
+
+extern "C" {
+// void my_OSCancelAlarmAll(void);
+}
+
+struct ResetData {
+ s32 field_0x0;
+ u32 field_0x4;
+ s32 field_0x8;
+ s32 pad_index;
+ u8 field_0x10;
+ u8 field_0x11;
+ u8 field_0x12;
+ u8 field_0x13;
+ u8 field_0x14;
+ u8 field_0x15;
+ u8 field_0x16;
+ u8 field_0x17;
+};
+extern ResetData* m_Do_Reset_NS_mDoRst_NS_mResetData;
+
+struct mDoRst {
+ ResetData* getResetData();
+ static void reset(s32 p1, u32 p2, s32 p3);
+ static void resetCallBack(int p1, void* p2);
+};
+
+#endif \ No newline at end of file
diff --git a/include/m_Do/m_Do_main/asm/func_80006454.s b/include/m_Do/m_Do_main/asm/func_80006454.s
index 8c188e8d07..a2418cd88c 100644
--- a/include/m_Do/m_Do_main/asm/func_80006454.s
+++ b/include/m_Do/m_Do_main/asm/func_80006454.s
@@ -15,7 +15,7 @@
/* 8000648C 000033CC 38 60 00 18 */ li r3, 0x18
/* 80006490 000033D0 38 80 00 04 */ li r4, 4
/* 80006494 000033D4 48 33 4E 19 */ bl OSAllocFromArenaLo
-/* 80006498 000033D8 90 6D 86 F8 */ stw r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 80006498 000033D8 90 6D 86 F8 */ stw r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 8000649C 000033DC 28 03 00 00 */ cmplwi r3, 0
/* 800064A0 000033E0 40 82 00 08 */ bne lbl_800064A8
lbl_800064A4:
@@ -25,28 +25,28 @@ lbl_800064A8:
/* 800064AC 000033EC 54 60 0F FF */ rlwinm. r0, r3, 1, 0x1f, 0x1f
/* 800064B0 000033F0 40 82 00 64 */ bne lbl_80006514
/* 800064B4 000033F4 38 80 00 00 */ li r4, 0
-/* 800064B8 000033F8 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 800064B8 000033F8 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 800064BC 000033FC 90 83 00 00 */ stw r4, 0(r3)
-/* 800064C0 00003400 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 800064C0 00003400 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 800064C4 00003404 90 83 00 04 */ stw r4, 4(r3)
-/* 800064C8 00003408 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 800064C8 00003408 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 800064CC 0000340C 90 83 00 04 */ stw r4, 4(r3)
-/* 800064D0 00003410 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 800064D0 00003410 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 800064D4 00003414 90 83 00 08 */ stw r4, 8(r3)
/* 800064D8 00003418 38 00 FF FF */ li r0, -1
-/* 800064DC 0000341C 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 800064DC 0000341C 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 800064E0 00003420 90 03 00 0C */ stw r0, 0xc(r3)
-/* 800064E4 00003424 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 800064E4 00003424 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 800064E8 00003428 98 83 00 12 */ stb r4, 0x12(r3)
-/* 800064EC 0000342C 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 800064EC 0000342C 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 800064F0 00003430 98 83 00 13 */ stb r4, 0x13(r3)
-/* 800064F4 00003434 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 800064F4 00003434 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 800064F8 00003438 98 83 00 14 */ stb r4, 0x14(r3)
-/* 800064FC 0000343C 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 800064FC 0000343C 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 80006500 00003440 98 83 00 15 */ stb r4, 0x15(r3)
-/* 80006504 00003444 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 80006504 00003444 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 80006508 00003448 98 83 00 10 */ stb r4, 0x10(r3)
-/* 8000650C 0000344C 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
+/* 8000650C 0000344C 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 80006510 00003450 98 83 00 11 */ stb r4, 0x11(r3)
lbl_80006514:
/* 80006514 00003454 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha
diff --git a/include/os/OS.h b/include/os/OS.h
index 02d0cb7ead..b9e7db00a9 100644
--- a/include/os/OS.h
+++ b/include/os/OS.h
@@ -107,7 +107,7 @@ extern "C" {
void OSSetSoundMode(OSSoundMode mode);
void OSReportInit(void);
- void OSAttention(char *msg);
+ void OSAttention(char *msg, ...);
void OSPanic(char *file, s32 line, char* fmt, ...);
void OSReport(char *fmt, ...);
void OSReport_Error(char* fmt, ...);
@@ -143,6 +143,12 @@ extern "C" {
s32 OSDisableInterrupts();
s32 OSEnableInterrupts();
s32 OSRestoreInterrupts(s32 level);
+
+ void OSResetSystem(s32 param_1, u32 param_2, s32 param_3);
+
+ void OSSetSaveRegion(void* start, void* end);
+
+ void LCDisable(void);
};
#endif \ No newline at end of file
diff --git a/include/variables.h b/include/variables.h
index f50ca99472..d111695026 100644
--- a/include/variables.h
+++ b/include/variables.h
@@ -7,7 +7,7 @@ extern u8 lbl_803A7270[24];
extern u8 lbl_80430188[16];
extern u8 lbl_80379235[16];
extern char lbl_803739A0[0x310];
-extern u32 lbl_80451368;
+extern void* lbl_80451368;
extern u32 lbl_804514E0;
extern u8 lbl_803C3384;
extern u8 lbl_803DD2E8;
@@ -52,7 +52,7 @@ extern u8 lbl_803DD2D8;
extern u8 lbl_80450B18;
extern u8 lbl_803D32E0;
extern u8 lbl_80450BBC;
-extern u8 lbl_803EAF40;
+extern u8 lbl_803EAF40[];
extern u8 lbl_80450B34;
extern u8 lbl_80450B00;
extern u8 lbl_80450C80;
@@ -61,7 +61,6 @@ extern u8 __ct__12dSv_memory_cFv;
extern u8 __ct__13dSv_memory2_cFv;
extern u8 lbl_803D3420;
extern u8 lbl_80450B0C;
-extern u8 lbl_80450C78;
extern u8 lbl_80450B08;
extern u8 lbl_803DB420;
extern u8 main01__Fv;
@@ -76,6 +75,7 @@ extern u8 lbl_804539FC;
extern u8 lbl_803BB498;
extern float lbl_804550E8;
extern float lbl_804550EC;
+extern u8 lbl_80450C90;
#define _SDA_BASE_(dummy) 0
#define _SDA2_BASE_(dummy) 0
@@ -373,3 +373,15 @@ extern u8 lbl_804342DC; // JKRAram::sAramCommandList
extern u8 lbl_804342E8; // JKernel::decompMutex (static?)
extern u8 lbl_804508B8; // JKRAram::sSZSBufferSize
extern u8 lbl_803CC128; // JKRAram::sMessageBuffer
+
+// m_Do_Reset
+// func_80015614
+#include "JSystem/JUtility/JUTXfb/JUTXfb.h"
+extern JUTXfb* lbl_80451550;
+extern u8 lbl_80450BB8;
+extern char lbl_80374198[16];
+// func_8001574C
+extern bool lbl_80451501;
+extern void* lbl_804514EC; // JUTGamePad::C3ButtonReset::sCallback
+extern u32 lbl_804514F0; // JUTGamePad::C3ButtonReset::sCallbackArg
+extern u32 lbl_803ECF00; \ No newline at end of file