From 47a1bdea8872c79dd2cd7d75ca7f254b9ed13170 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 29 Oct 2020 14:27:37 -0400 Subject: match up to func_801DCFE4, add string.h and stdlib.h, add types.h to Makefile include path, and move GameSpy under DWC --- src/code_801DCE6C.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 5 deletions(-) (limited to 'src/code_801DCE6C.cpp') diff --git a/src/code_801DCE6C.cpp b/src/code_801DCE6C.cpp index 8bf56a7..866f9a9 100644 --- a/src/code_801DCE6C.cpp +++ b/src/code_801DCE6C.cpp @@ -1,16 +1,22 @@ -#include "types.h" #include "ctorStruct.h" #include "code_801DCE6C.h" -#include "Runtime/__mem.h" +#include + +// NAND wrapper class + extern "C" { + +// TODO: convert to class member functions -char* func_801DCE6C(gUnkClass4* p1) +//static +char* func_801DCE6C(gUnkClass6* p1) { return p1->unk7; } -char* func_801DCE74(gUnkClass4* p1) +//static +char* func_801DCE74(gUnkClass6* p1) { return p1->unk2; } @@ -20,6 +26,42 @@ gUnkClass4::gUnkClass4(void) memset(this, 0, sizeof(gUnkClass4)); } -// ... +// search the array +//static +gUnkClass6* func_801DCEB4(gUnkClass4* p1, const char* p2) +{ + char sp8[13]; // 0xD ~ 0x10 byte struct + memcpy(&sp8, p2, 12); + sp8[12] = '\0'; + + gUnkClass6* p = p1->arr; + for (s32 i = 0; i < 8; p++, i++) + if (p->unk0 && !p->unk1 && !strcmp(func_801DCE6C(p), sp8)) + return p; + + return NULL; +} + +// just indicate if search succeeded +BOOL func_801DCF48(gUnkClass4* p1, const char* p2) +{ + return func_801DCEB4(p1, p2) != NULL; +} + +BOOL func_801DCF74(gUnkClass4* p1, const char* fileName, gUnkClass5* fp) +{ + gUnkClass6* r31 = func_801DCEB4(p1, fileName); + if (r31 && NANDOpen(func_801DCE74(r31), &r31->unk48, 1) == 0) { + fp->unk4.unk3C = r31; + fp->unk1 = 1; + return TRUE; + } + return FALSE; +} + + + + + } //extern "C" -- cgit v1.2.3