diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/code_801DBE90.cpp | 214 | ||||
-rw-r--r-- | src/code_801DCE6C.cpp | 14 |
2 files changed, 76 insertions, 152 deletions
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);
diff --git a/src/code_801DCE6C.cpp b/src/code_801DCE6C.cpp index f7a4471..8bf56a7 100644 --- a/src/code_801DCE6C.cpp +++ b/src/code_801DCE6C.cpp @@ -5,13 +5,11 @@ extern "C" {
-//internal
char* func_801DCE6C(gUnkClass4* p1)
{
return p1->unk7;
}
-//internal
char* func_801DCE74(gUnkClass4* p1)
{
return p1->unk2;
@@ -22,16 +20,6 @@ gUnkClass4::gUnkClass4(void) memset(this, 0, sizeof(gUnkClass4));
}
-
-
-
-
-
-
-
-
-
-
-
+// ...
} //extern "C"
|