diff options
| author | Erin Moon <erin@hecke.rs> | 2020-12-25 19:59:52 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-25 20:59:52 -0500 |
| commit | 58fc83c4f804e72019dc9ccbcc389affe7a9f3ed (patch) | |
| tree | d287ca8be8511f1a826b1d62aa6461ab1a76fcf4 /include | |
| parent | 22bda03652efbecd77e1fa3597dfdecee768ec06 (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.h | 1 | ||||
| -rw-r--r-- | include/JSystem/JUtility/JUTXfb/JUTXfb.h | 21 | ||||
| -rw-r--r-- | include/dolphin/types.h | 2 | ||||
| -rw-r--r-- | include/dvd/dvd.h | 44 | ||||
| -rw-r--r-- | include/functions.h | 69 | ||||
| -rw-r--r-- | include/m_Do/m_Do_Reset/m_Do_Reset.h | 32 | ||||
| -rw-r--r-- | include/m_Do/m_Do_main/asm/func_80006454.s | 24 | ||||
| -rw-r--r-- | include/os/OS.h | 8 | ||||
| -rw-r--r-- | include/variables.h | 18 |
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 |
