From 585b88fcba1dc639c859288a3df7f21a3b17bd4a Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 27 Oct 2020 22:42:39 -0400 Subject: add headers and cleanup --- src/code_801DBE90.cpp | 214 ++++++++++++++++++-------------------------------- 1 file changed, 75 insertions(+), 139 deletions(-) (limited to 'src/code_801DBE90.cpp') diff --git a/src/code_801DBE90.cpp b/src/code_801DBE90.cpp index be5efba..70253ac 100644 --- a/src/code_801DBE90.cpp +++ b/src/code_801DBE90.cpp @@ -7,108 +7,61 @@ #include "SDK/nand.h" #include "code_801DAAE0.h" #include "code_801DCE6C.h" - -namespace -{ - - //TODO: header/source - struct unkClass - { - u8 unk0; // file open flag? - u8 unk1; - u8 unk2[0x2]; - DVDFileInfo unk4; - }; - - - - -} - - - - - -//TODO: internal linkage - -// .sdata -extern char* lbl_8063D6D8; -extern char* lbl_8063D6E0; -extern char lbl_8063D6E4[8]; -extern char lbl_8063D6EC[8]; -extern s32 lbl_8063D6F4; - +#include "code_80223C54.h" +#include "code_80224104.h" +#include "code_80249BC8.h" +#include "code_801DBE90.h" + +static void* func_801DBE90(u32 size); +static void func_801DBEA0(void); +static gUnkClass5 *func_801DBED0(void); +static void func_801DBF60(gUnkClass5* p1); +static gUnkClass5* func_801DBF98(DVDFileInfo* p1); +static void func_801DBFEC(s32 p1, DVDFileInfo* p2); +static void func_801DC068(s32 p1, DVDFileInfo* p2); +static void func_801DC264(void); +static s32 func_801DC7DC(void); +static void func_801DC888(s32 p1); +static void func_801DC8E8(u32 p1); +static void func_801DC900(void); +static void func_801DC918(s32 p1, DVDCommandBlock*); +static BOOL func_801DC928(void); +static void func_801DC9CC(u32 p1, u32); + +static u8 lbl_804917F0[0x40]; +static OSSemaphore lbl_80491830; +static DVDCommandBlock lbl_80491840; +static const char* lbl_8063D6D8 = "RPBE"; +static const char* lbl_8063D6E0 = "01"; static ctorStruct gUnk8063F318(1, 4, 0); -extern u8 lbl_8063F31E; -extern u8 lbl_8063F31F; -extern size_t lbl_8063F320; -extern unkClass* lbl_8063F324; -extern s32 lbl_8063F328; -extern u32 lbl_8063F32C; - -extern void (*lbl_8063F330)(u32); -extern void (*lbl_8063F334)(void); - -extern gUnkClass4* lbl_8063F338; - -extern u8 lbl_804917F0[0x40]; -extern OSSemaphore lbl_80491830; -extern DVDCommandBlock lbl_80491840; - -extern void* lbl_8063F600; // initialized in func_8022410C - +static u8 lbl_8063F31E; +static u8 lbl_8063F31F; +static size_t lbl_8063F320; +static gUnkClass5* lbl_8063F324; +static s32 lbl_8063F328; +static u32 lbl_8063F32C; +static void (*lbl_8063F330)(u32); +static void (*lbl_8063F334)(void); +static gUnkClass4* lbl_8063F338; extern "C" { - -//extern -extern MEMHeapHandle lbl_8063E8EC; -s32 func_80249BC8(void); -// code_80223C54 -u32 func_80223FD0(u32, u32, u32, void (*)(u32, u32)); - -void func_801DC9CC(u32, u32); -void func_8022408C(u32, const char*); -u32 func_802245C4(void*); -void func_80224588(void*); - -//static -u32 func_801DCF74(gUnkClass4*, const char*, unkClass*); -//static -u32 func_801DCF48(gUnkClass4*, const char*); -//static -s32 func_801DD084(gUnkClass4* p1, unkClass* p2, void* addr, s32 length, s32 offset); - -void* func_801DD220(gUnkClass4*, unkClass*, void*, s32, s32); - -u32 func_801DCFE4(gUnkClass4*, unkClass*); - -u32 func_801DD03C(gUnkClass4*, unkClass*, u32*); -BOOL func_801DD294(gUnkClass4*, const char*, u32); - - - -// TODO: return type -//static -void* func_801DBE90(u32 size) +static void* func_801DBE90(u32 size) { -// void* func_801DAD08(MEMHeapHandle heap, u32 size, int alignment) return func_801DAD08(lbl_8063E8EC, size, 0x20); } -//static -void func_801DBEA0(void) +static void func_801DBEA0(void) { for (size_t i = 0; i < lbl_8063F320; i++) lbl_8063F324[i].unk0 = 0; } -//static -unkClass *func_801DBED0(void) +static gUnkClass5 *func_801DBED0(void) { BOOL enable = OSDisableInterrupts(); - unkClass* r31 = NULL; + gUnkClass5* r31 = NULL; size_t i; for (i = 0; i < lbl_8063F320; i++) { if (lbl_8063F324[i].unk0 != 1) { @@ -122,16 +75,14 @@ unkClass *func_801DBED0(void) return r31; } -//static -void func_801DBF60(unkClass* p1) +static void func_801DBF60(gUnkClass5* p1) { BOOL enable = OSDisableInterrupts(); p1->unk0 = 0; OSRestoreInterrupts(enable); } -//static -unkClass* func_801DBF98(DVDFileInfo* p1) +static gUnkClass5* func_801DBF98(DVDFileInfo* p1) { for (size_t i = 0; i < lbl_8063F320; i++) { if (lbl_8063F324[i].unk0 && &lbl_8063F324[i].unk4 == p1) @@ -140,11 +91,10 @@ unkClass* func_801DBF98(DVDFileInfo* p1) return NULL; } -//static -void func_801DBFEC(s32 p1, DVDFileInfo* p2) +static void func_801DBFEC(s32 p1, DVDFileInfo* p2) { if (lbl_8063F31F == 0) { - unkClass* r31 = func_801DBF98(p2); + gUnkClass5* r31 = func_801DBF98(p2); if (r31 && r31->unk4.unk40) { DCInvalidateRange(r31->unk4.unk44, r31->unk4.unk48); r31->unk4.unk40(p1, r31); @@ -152,11 +102,10 @@ void func_801DBFEC(s32 p1, DVDFileInfo* p2) } } -//static -void func_801DC068(s32 p1, DVDFileInfo* p2) +static void func_801DC068(s32 p1, DVDFileInfo* p2) { if (lbl_8063F31F == 0) { - unkClass* r3 = func_801DBF98(p2); + gUnkClass5* r3 = func_801DBF98(p2); if (r3 && r3->unk4.unk40) r3->unk4.unk40(p1, r3); } @@ -172,7 +121,7 @@ BOOL func_801DC0C8(size_t p1, u32 p2) if (!lbl_8063F338) lbl_8063F338 = new gUnkClass4; lbl_8063F320 = p1; - lbl_8063F324 = (unkClass*)func_801DBE90(p1 * sizeof(unkClass)); + lbl_8063F324 = (gUnkClass5*)func_801DBE90(p1 * sizeof(gUnkClass5)); if (!lbl_8063F324) return FALSE; func_801DBEA0(); @@ -181,13 +130,13 @@ BOOL func_801DC0C8(size_t p1, u32 p2) if (p2) { switch (func_80249BC8()) { case 0: - lbl_8063D6D8 = lbl_8063D6E4; + lbl_8063D6D8 = "RPBE"; break; case 1: - lbl_8063D6D8 = lbl_8063D6E4; + lbl_8063D6D8 = "RPBE"; break; case 2: - lbl_8063D6D8 = lbl_8063D6EC; + lbl_8063D6D8 = "RPBP"; break; default: break; @@ -211,8 +160,7 @@ BOOL func_801DC0C8(size_t p1, u32 p2) return TRUE; } -//static -void func_801DC264(void) +static void func_801DC264(void) { BOOL enable = OSDisableInterrupts(); OSRestoreInterrupts(enable); @@ -228,13 +176,12 @@ void func_801DC264(void) } } -// DVDOpen wrapper? -unkClass* func_801DC2D0(const char* fileName) +gUnkClass5* func_801DC2D0(const char* fileName) { if (!lbl_8063F31E) return NULL; func_801DC264(); - unkClass* r31 = func_801DBED0(); + gUnkClass5* r31 = func_801DBED0(); if (!r31) return NULL; if (lbl_8063F338 && func_801DCF74(lbl_8063F338, fileName, r31)) @@ -246,7 +193,6 @@ unkClass* func_801DC2D0(const char* fileName) return r31; } -// indicate whether fileName exists BOOL func_801DC380(const char* fileName) { if (!lbl_8063F31E) @@ -258,8 +204,7 @@ BOOL func_801DC380(const char* fileName) return TRUE; } -// DVDReadPrio wrapper -s32 func_801DC3FC(unkClass* p1, void* addr, s32 length, s32 offset) +s32 func_801DC3FC(gUnkClass5* p1, void* addr, s32 length, s32 offset) { if (!lbl_8063F31E) return -1; @@ -281,7 +226,7 @@ s32 func_801DC3FC(unkClass* p1, void* addr, s32 length, s32 offset) return DVDReadPrio(&p1->unk4, addr, length, offset, 2); } -BOOL func_801DC4F0(unkClass* p1, void* p2, s32 p3, s32 p4, void (*p5)(s32, void*)) +BOOL func_801DC4F0(gUnkClass5* p1, void* p2, u32 p3, s32 p4, void (*p5)(s32, void*)) { if (!lbl_8063F31E) return FALSE; @@ -300,11 +245,10 @@ BOOL func_801DC4F0(unkClass* p1, void* p2, s32 p3, s32 p4, void (*p5)(s32, void* p1->unk4.unk48 = p3; if (lbl_8063F338 && p1->unk1 && func_801DD220(lbl_8063F338, p1, p2, p3, p4)) return TRUE; - return DVDReadAsyncPrio(&p1->unk4, p2, p3, p4, &func_801DBFEC, 2) != 0; + return DVDReadAsyncPrio(&p1->unk4, p2, (s32)p3, p4, &func_801DBFEC, 2) != 0; } -// DVDReadPrio wrapper -s32 func_801DC5FC(unkClass* p1, void* addr, s32 length, s32 offset, s32 prio) +s32 func_801DC5FC(gUnkClass5* p1, void* addr, s32 length, s32 offset, s32 prio) { if (!lbl_8063F31E) return -1; @@ -323,7 +267,7 @@ s32 func_801DC5FC(unkClass* p1, void* addr, s32 length, s32 offset, s32 prio) return DVDReadPrio(&p1->unk4, addr, length, offset, prio); } -BOOL func_801DC6C4(unkClass* p1) +BOOL func_801DC6C4(gUnkClass5* p1) { if (!lbl_8063F31E) return FALSE; @@ -339,27 +283,25 @@ BOOL func_801DC6C4(unkClass* p1) return result; } -// get file size -size_t func_801DC760(unkClass* p1) +size_t func_801DC760(gUnkClass5* p1) { - size_t sp8; + size_t fileSz; if (!lbl_8063F31E) return 0; func_801DC264(); if (!p1) return 0; - if (lbl_8063F338 && func_801DD03C(lbl_8063F338, p1, &sp8)) - return sp8; + if (lbl_8063F338 && func_801DD03C(lbl_8063F338, p1, &fileSz)) + return fileSz; return p1->unk4.unk34; } -//static -s32 func_801DC7DC(void) +static s32 func_801DC7DC(void) { return (!lbl_8063F31E) ? -1 : DVDGetDriveStatus(); } -BOOL func_801DC7F8(unkClass* p1, s32 offset, void (*p3)(s32, void*)) +BOOL func_801DC7F8(gUnkClass5* p1, s32 offset, void (*p3)(s32, void*)) { if (!lbl_8063F31E) return FALSE; @@ -370,8 +312,7 @@ BOOL func_801DC7F8(unkClass* p1, s32 offset, void (*p3)(s32, void*)) return DVDSeekAsyncPrio(&p1->unk4, offset, &func_801DC068, 2) != 0; } -//static -void func_801DC888(s32 p1) +static void func_801DC888(s32 p1) { switch (p1) { case -1: @@ -394,29 +335,26 @@ void func_801DC888(s32 p1) } } -//static -void func_801DC8E8(u32 p1) +static void func_801DC8E8(u32 p1) { if (lbl_8063F330) lbl_8063F330(p1); } -//static -void func_801DC900(void) +static void func_801DC900(void) { if (lbl_8063F334) lbl_8063F334(); } -//static -void func_801DC918(s32 p1, DVDCommandBlock*) +static s32 lbl_8063D6F4 = -1; +static void func_801DC918(s32 p1, DVDCommandBlock*) { lbl_8063D6F4 = p1; OSSignalSemaphore(&lbl_80491830); } -//static -BOOL func_801DC928(void) +static BOOL func_801DC928(void) { BOOL enable = OSDisableInterrupts(); OSRestoreInterrupts(enable); @@ -431,8 +369,7 @@ BOOL func_801DC928(void) return lbl_8063D6F4 != 0; } -//static -void func_801DC9CC(u32 p1, u32) +static void func_801DC9CC(u32, u32) { s32 driveStatus = func_801DC7DC(); switch (lbl_8063F328) { @@ -510,12 +447,11 @@ void func_801DC9CC(u32 p1, u32) } } -// Load entire file contents into buffer u8* func_801DCBC0(const char* fileName, u32* fileSz) { if (!func_801DC380(fileName)) return NULL; - unkClass* fp = func_801DC2D0(fileName); + gUnkClass5* fp = func_801DC2D0(fileName); if (!fp) return NULL; size_t size = (func_801DC760(fp) + 0x1F) & ~0x1F; @@ -524,7 +460,7 @@ u8* func_801DCBC0(const char* fileName, u32* fileSz) u8* buf = (u8*)func_801DAD64(size); if (!buf) return NULL; - size_t bytesRead = func_801DC3FC(fp, buf, size, 0); + s32 bytesRead = func_801DC3FC(fp, buf, (s32)size, 0); if (bytesRead != size) { func_801DAEA4(buf); return NULL; @@ -539,7 +475,7 @@ void* func_801DCCAC(const char* fileName, MEMHeapHandle heap, u32* fileSz) { if (!func_801DC380(fileName)) return NULL; - unkClass* fp = func_801DC2D0(fileName); + gUnkClass5* fp = func_801DC2D0(fileName); if (!fp) return NULL; size_t size = (func_801DC760(fp) + 0x1F) & ~0x1F; @@ -548,7 +484,7 @@ void* func_801DCCAC(const char* fileName, MEMHeapHandle heap, u32* fileSz) u8* buf = (u8*)func_801DAC94(heap, size); if (!buf) return NULL; - size_t bytesRead = func_801DC3FC(fp, buf, size, 0); + s32 bytesRead = func_801DC3FC(fp, buf, (s32)size, 0); if (bytesRead != size) { func_801DAD48(heap, buf); return NULL; @@ -559,7 +495,7 @@ void* func_801DCCAC(const char* fileName, MEMHeapHandle heap, u32* fileSz) return buf; } -u32 func_801DCD94(const char* fileName) +BOOL func_801DCD94(const char* fileName) { if (lbl_8063F338) return func_801DD294(lbl_8063F338, fileName, 0); -- cgit v1.2.3