From 1f79672cc57db6176590219ec5e34bb6e077f03c Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 27 Oct 2020 14:06:50 -0400 Subject: match up to func_801DC5FC --- asm/code_801DBE90_asm.s | 238 ------------------------------------------------ include/SDK/DVD/dvd.h | 1 - include/SDK/DVD/dvdfs.h | 29 ++++++ include/SDK/dvd.h | 1 + src/code_801DBE90.cpp | 99 ++++++++++++++++---- 5 files changed, 112 insertions(+), 256 deletions(-) create mode 100644 include/SDK/DVD/dvdfs.h diff --git a/asm/code_801DBE90_asm.s b/asm/code_801DBE90_asm.s index b18d5b0..6d5ffeb 100644 --- a/asm/code_801DBE90_asm.s +++ b/asm/code_801DBE90_asm.s @@ -2,244 +2,6 @@ .section .text, "ax" # 0x80006980 - 0x803E1E60 -.global func_801DC2D0 -func_801DC2D0: -/* 801DC2D0 001D7F30 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 801DC2D4 001D7F34 7C 08 02 A6 */ mflr r0 -/* 801DC2D8 001D7F38 90 01 00 14 */ stw r0, 0x14(r1) -/* 801DC2DC 001D7F3C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 801DC2E0 001D7F40 93 C1 00 08 */ stw r30, 8(r1) -/* 801DC2E4 001D7F44 7C 7E 1B 78 */ mr r30, r3 -/* 801DC2E8 001D7F48 88 0D A0 5E */ lbz r0, lbl_8063F31E-_SDA_BASE_(r13) -/* 801DC2EC 001D7F4C 2C 00 00 00 */ cmpwi r0, 0 -/* 801DC2F0 001D7F50 40 82 00 0C */ bne lbl_801DC2FC -/* 801DC2F4 001D7F54 38 60 00 00 */ li r3, 0 -/* 801DC2F8 001D7F58 48 00 00 70 */ b lbl_801DC368 -lbl_801DC2FC: -/* 801DC2FC 001D7F5C 4B FF FF 69 */ bl func_801DC264 -/* 801DC300 001D7F60 4B FF FB D1 */ bl func_801DBED0 -/* 801DC304 001D7F64 2C 03 00 00 */ cmpwi r3, 0 -/* 801DC308 001D7F68 7C 7F 1B 78 */ mr r31, r3 -/* 801DC30C 001D7F6C 40 82 00 0C */ bne lbl_801DC318 -/* 801DC310 001D7F70 38 60 00 00 */ li r3, 0 -/* 801DC314 001D7F74 48 00 00 54 */ b lbl_801DC368 -lbl_801DC318: -/* 801DC318 001D7F78 80 6D A0 78 */ lwz r3, lbl_8063F338-_SDA_BASE_(r13) -/* 801DC31C 001D7F7C 2C 03 00 00 */ cmpwi r3, 0 -/* 801DC320 001D7F80 41 82 00 20 */ beq lbl_801DC340 -/* 801DC324 001D7F84 7F C4 F3 78 */ mr r4, r30 -/* 801DC328 001D7F88 7F E5 FB 78 */ mr r5, r31 -/* 801DC32C 001D7F8C 48 00 0C 49 */ bl func_801DCF74 -/* 801DC330 001D7F90 2C 03 00 00 */ cmpwi r3, 0 -/* 801DC334 001D7F94 41 82 00 0C */ beq lbl_801DC340 -/* 801DC338 001D7F98 7F E3 FB 78 */ mr r3, r31 -/* 801DC33C 001D7F9C 48 00 00 2C */ b lbl_801DC368 -lbl_801DC340: -/* 801DC340 001D7FA0 7F C3 F3 78 */ mr r3, r30 -/* 801DC344 001D7FA4 38 9F 00 04 */ addi r4, r31, 4 -/* 801DC348 001D7FA8 48 0A B6 E5 */ bl DVDOpen -/* 801DC34C 001D7FAC 2C 03 00 00 */ cmpwi r3, 0 -/* 801DC350 001D7FB0 40 82 00 14 */ bne lbl_801DC364 -/* 801DC354 001D7FB4 7F E3 FB 78 */ mr r3, r31 -/* 801DC358 001D7FB8 4B FF FC 09 */ bl func_801DBF60 -/* 801DC35C 001D7FBC 38 60 00 00 */ li r3, 0 -/* 801DC360 001D7FC0 48 00 00 08 */ b lbl_801DC368 -lbl_801DC364: -/* 801DC364 001D7FC4 7F E3 FB 78 */ mr r3, r31 -lbl_801DC368: -/* 801DC368 001D7FC8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 801DC36C 001D7FCC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 801DC370 001D7FD0 83 C1 00 08 */ lwz r30, 8(r1) -/* 801DC374 001D7FD4 7C 08 03 A6 */ mtlr r0 -/* 801DC378 001D7FD8 38 21 00 10 */ addi r1, r1, 0x10 -/* 801DC37C 001D7FDC 4E 80 00 20 */ blr - -.global func_801DC380 -func_801DC380: -/* 801DC380 001D7FE0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 801DC384 001D7FE4 7C 08 02 A6 */ mflr r0 -/* 801DC388 001D7FE8 90 01 00 14 */ stw r0, 0x14(r1) -/* 801DC38C 001D7FEC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 801DC390 001D7FF0 7C 7F 1B 78 */ mr r31, r3 -/* 801DC394 001D7FF4 88 0D A0 5E */ lbz r0, lbl_8063F31E-_SDA_BASE_(r13) -/* 801DC398 001D7FF8 2C 00 00 00 */ cmpwi r0, 0 -/* 801DC39C 001D7FFC 40 82 00 0C */ bne lbl_801DC3A8 -/* 801DC3A0 001D8000 38 60 00 00 */ li r3, 0 -/* 801DC3A4 001D8004 48 00 00 44 */ b lbl_801DC3E8 -lbl_801DC3A8: -/* 801DC3A8 001D8008 80 6D A0 78 */ lwz r3, lbl_8063F338-_SDA_BASE_(r13) -/* 801DC3AC 001D800C 2C 03 00 00 */ cmpwi r3, 0 -/* 801DC3B0 001D8010 41 82 00 1C */ beq lbl_801DC3CC -/* 801DC3B4 001D8014 7F E4 FB 78 */ mr r4, r31 -/* 801DC3B8 001D8018 48 00 0B 91 */ bl func_801DCF48 -/* 801DC3BC 001D801C 2C 03 00 00 */ cmpwi r3, 0 -/* 801DC3C0 001D8020 41 82 00 0C */ beq lbl_801DC3CC -/* 801DC3C4 001D8024 38 60 00 01 */ li r3, 1 -/* 801DC3C8 001D8028 48 00 00 20 */ b lbl_801DC3E8 -lbl_801DC3CC: -/* 801DC3CC 001D802C 7F E3 FB 78 */ mr r3, r31 -/* 801DC3D0 001D8030 48 0A B2 ED */ bl DVDConvertPathToEntrynum -/* 801DC3D4 001D8034 2C 03 FF FF */ cmpwi r3, -1 -/* 801DC3D8 001D8038 40 82 00 0C */ bne lbl_801DC3E4 -/* 801DC3DC 001D803C 38 60 00 00 */ li r3, 0 -/* 801DC3E0 001D8040 48 00 00 08 */ b lbl_801DC3E8 -lbl_801DC3E4: -/* 801DC3E4 001D8044 38 60 00 01 */ li r3, 1 -lbl_801DC3E8: -/* 801DC3E8 001D8048 80 01 00 14 */ lwz r0, 0x14(r1) -/* 801DC3EC 001D804C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 801DC3F0 001D8050 7C 08 03 A6 */ mtlr r0 -/* 801DC3F4 001D8054 38 21 00 10 */ addi r1, r1, 0x10 -/* 801DC3F8 001D8058 4E 80 00 20 */ blr - -.global func_801DC3FC -func_801DC3FC: -/* 801DC3FC 001D805C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 801DC400 001D8060 7C 08 02 A6 */ mflr r0 -/* 801DC404 001D8064 90 01 00 24 */ stw r0, 0x24(r1) -/* 801DC408 001D8068 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 801DC40C 001D806C 7C DF 33 78 */ mr r31, r6 -/* 801DC410 001D8070 93 C1 00 18 */ stw r30, 0x18(r1) -/* 801DC414 001D8074 7C BE 2B 78 */ mr r30, r5 -/* 801DC418 001D8078 93 A1 00 14 */ stw r29, 0x14(r1) -/* 801DC41C 001D807C 7C 9D 23 78 */ mr r29, r4 -/* 801DC420 001D8080 93 81 00 10 */ stw r28, 0x10(r1) -/* 801DC424 001D8084 7C 7C 1B 78 */ mr r28, r3 -/* 801DC428 001D8088 88 0D A0 5E */ lbz r0, lbl_8063F31E-_SDA_BASE_(r13) -/* 801DC42C 001D808C 2C 00 00 00 */ cmpwi r0, 0 -/* 801DC430 001D8090 40 82 00 0C */ bne lbl_801DC43C -/* 801DC434 001D8094 38 60 FF FF */ li r3, -1 -/* 801DC438 001D8098 48 00 00 98 */ b lbl_801DC4D0 -lbl_801DC43C: -/* 801DC43C 001D809C 4B FF FE 29 */ bl func_801DC264 -/* 801DC440 001D80A0 2C 1C 00 00 */ cmpwi r28, 0 -/* 801DC444 001D80A4 40 82 00 0C */ bne lbl_801DC450 -/* 801DC448 001D80A8 38 60 FF FF */ li r3, -1 -/* 801DC44C 001D80AC 48 00 00 84 */ b lbl_801DC4D0 -lbl_801DC450: -/* 801DC450 001D80B0 57 A0 06 FF */ clrlwi. r0, r29, 0x1b -/* 801DC454 001D80B4 41 82 00 0C */ beq lbl_801DC460 -/* 801DC458 001D80B8 38 60 FF FF */ li r3, -1 -/* 801DC45C 001D80BC 48 00 00 74 */ b lbl_801DC4D0 -lbl_801DC460: -/* 801DC460 001D80C0 57 C0 06 FF */ clrlwi. r0, r30, 0x1b -/* 801DC464 001D80C4 41 82 00 0C */ beq lbl_801DC470 -/* 801DC468 001D80C8 38 60 FF FF */ li r3, -1 -/* 801DC46C 001D80CC 48 00 00 64 */ b lbl_801DC4D0 -lbl_801DC470: -/* 801DC470 001D80D0 57 E0 07 BF */ clrlwi. r0, r31, 0x1e -/* 801DC474 001D80D4 41 82 00 0C */ beq lbl_801DC480 -/* 801DC478 001D80D8 38 60 FF FF */ li r3, -1 -/* 801DC47C 001D80DC 48 00 00 54 */ b lbl_801DC4D0 -lbl_801DC480: -/* 801DC480 001D80E0 80 6D A0 78 */ lwz r3, lbl_8063F338-_SDA_BASE_(r13) -/* 801DC484 001D80E4 2C 03 00 00 */ cmpwi r3, 0 -/* 801DC488 001D80E8 41 82 00 30 */ beq lbl_801DC4B8 -/* 801DC48C 001D80EC 88 1C 00 01 */ lbz r0, 1(r28) -/* 801DC490 001D80F0 2C 00 00 00 */ cmpwi r0, 0 -/* 801DC494 001D80F4 41 82 00 24 */ beq lbl_801DC4B8 -/* 801DC498 001D80F8 7F 84 E3 78 */ mr r4, r28 -/* 801DC49C 001D80FC 7F A5 EB 78 */ mr r5, r29 -/* 801DC4A0 001D8100 7F C6 F3 78 */ mr r6, r30 -/* 801DC4A4 001D8104 7F E7 FB 78 */ mr r7, r31 -/* 801DC4A8 001D8108 48 00 0B DD */ bl func_801DD084 -/* 801DC4AC 001D810C 2C 03 00 00 */ cmpwi r3, 0 -/* 801DC4B0 001D8110 40 81 00 08 */ ble lbl_801DC4B8 -/* 801DC4B4 001D8114 48 00 00 1C */ b lbl_801DC4D0 -lbl_801DC4B8: -/* 801DC4B8 001D8118 7F A4 EB 78 */ mr r4, r29 -/* 801DC4BC 001D811C 7F C5 F3 78 */ mr r5, r30 -/* 801DC4C0 001D8120 7F E6 FB 78 */ mr r6, r31 -/* 801DC4C4 001D8124 38 7C 00 04 */ addi r3, r28, 4 -/* 801DC4C8 001D8128 38 E0 00 02 */ li r7, 2 -/* 801DC4CC 001D812C 48 0A BA D9 */ bl DVDReadPrio -lbl_801DC4D0: -/* 801DC4D0 001D8130 80 01 00 24 */ lwz r0, 0x24(r1) -/* 801DC4D4 001D8134 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 801DC4D8 001D8138 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 801DC4DC 001D813C 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 801DC4E0 001D8140 83 81 00 10 */ lwz r28, 0x10(r1) -/* 801DC4E4 001D8144 7C 08 03 A6 */ mtlr r0 -/* 801DC4E8 001D8148 38 21 00 20 */ addi r1, r1, 0x20 -/* 801DC4EC 001D814C 4E 80 00 20 */ blr - -.global func_801DC4F0 -func_801DC4F0: -/* 801DC4F0 001D8150 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 801DC4F4 001D8154 7C 08 02 A6 */ mflr r0 -/* 801DC4F8 001D8158 90 01 00 24 */ stw r0, 0x24(r1) -/* 801DC4FC 001D815C 39 61 00 20 */ addi r11, r1, 0x20 -/* 801DC500 001D8160 4B FE AC 29 */ bl _savegpr_27 -/* 801DC504 001D8164 88 0D A0 5E */ lbz r0, lbl_8063F31E-_SDA_BASE_(r13) -/* 801DC508 001D8168 7C 7B 1B 78 */ mr r27, r3 -/* 801DC50C 001D816C 7C 9C 23 78 */ mr r28, r4 -/* 801DC510 001D8170 7C BD 2B 78 */ mr r29, r5 -/* 801DC514 001D8174 2C 00 00 00 */ cmpwi r0, 0 -/* 801DC518 001D8178 7C DE 33 78 */ mr r30, r6 -/* 801DC51C 001D817C 7C FF 3B 78 */ mr r31, r7 -/* 801DC520 001D8180 40 82 00 0C */ bne lbl_801DC52C -/* 801DC524 001D8184 38 60 00 00 */ li r3, 0 -/* 801DC528 001D8188 48 00 00 BC */ b lbl_801DC5E4 -lbl_801DC52C: -/* 801DC52C 001D818C 4B FF FD 39 */ bl func_801DC264 -/* 801DC530 001D8190 2C 1B 00 00 */ cmpwi r27, 0 -/* 801DC534 001D8194 40 82 00 0C */ bne lbl_801DC540 -/* 801DC538 001D8198 38 60 00 00 */ li r3, 0 -/* 801DC53C 001D819C 48 00 00 A8 */ b lbl_801DC5E4 -lbl_801DC540: -/* 801DC540 001D81A0 57 80 06 FF */ clrlwi. r0, r28, 0x1b -/* 801DC544 001D81A4 93 FB 00 44 */ stw r31, 0x44(r27) -/* 801DC548 001D81A8 41 82 00 0C */ beq lbl_801DC554 -/* 801DC54C 001D81AC 38 60 00 00 */ li r3, 0 -/* 801DC550 001D81B0 48 00 00 94 */ b lbl_801DC5E4 -lbl_801DC554: -/* 801DC554 001D81B4 57 A0 06 FF */ clrlwi. r0, r29, 0x1b -/* 801DC558 001D81B8 41 82 00 0C */ beq lbl_801DC564 -/* 801DC55C 001D81BC 38 60 00 00 */ li r3, 0 -/* 801DC560 001D81C0 48 00 00 84 */ b lbl_801DC5E4 -lbl_801DC564: -/* 801DC564 001D81C4 57 C0 07 BF */ clrlwi. r0, r30, 0x1e -/* 801DC568 001D81C8 41 82 00 0C */ beq lbl_801DC574 -/* 801DC56C 001D81CC 38 60 00 00 */ li r3, 0 -/* 801DC570 001D81D0 48 00 00 74 */ b lbl_801DC5E4 -lbl_801DC574: -/* 801DC574 001D81D4 93 9B 00 48 */ stw r28, 0x48(r27) -/* 801DC578 001D81D8 93 BB 00 4C */ stw r29, 0x4c(r27) -/* 801DC57C 001D81DC 80 6D A0 78 */ lwz r3, lbl_8063F338-_SDA_BASE_(r13) -/* 801DC580 001D81E0 2C 03 00 00 */ cmpwi r3, 0 -/* 801DC584 001D81E4 41 82 00 34 */ beq lbl_801DC5B8 -/* 801DC588 001D81E8 88 1B 00 01 */ lbz r0, 1(r27) -/* 801DC58C 001D81EC 2C 00 00 00 */ cmpwi r0, 0 -/* 801DC590 001D81F0 41 82 00 28 */ beq lbl_801DC5B8 -/* 801DC594 001D81F4 7F 64 DB 78 */ mr r4, r27 -/* 801DC598 001D81F8 7F 85 E3 78 */ mr r5, r28 -/* 801DC59C 001D81FC 7F A6 EB 78 */ mr r6, r29 -/* 801DC5A0 001D8200 7F C7 F3 78 */ mr r7, r30 -/* 801DC5A4 001D8204 48 00 0C 7D */ bl func_801DD220 -/* 801DC5A8 001D8208 2C 03 00 00 */ cmpwi r3, 0 -/* 801DC5AC 001D820C 41 82 00 0C */ beq lbl_801DC5B8 -/* 801DC5B0 001D8210 38 60 00 01 */ li r3, 1 -/* 801DC5B4 001D8214 48 00 00 30 */ b lbl_801DC5E4 -lbl_801DC5B8: -/* 801DC5B8 001D8218 3C E0 80 1E */ lis r7, lbl_801DBFEC@ha -/* 801DC5BC 001D821C 7F 84 E3 78 */ mr r4, r28 -/* 801DC5C0 001D8220 7F A5 EB 78 */ mr r5, r29 -/* 801DC5C4 001D8224 7F C6 F3 78 */ mr r6, r30 -/* 801DC5C8 001D8228 38 7B 00 04 */ addi r3, r27, 4 -/* 801DC5CC 001D822C 38 E7 BF EC */ addi r7, r7, lbl_801DBFEC@l -/* 801DC5D0 001D8230 39 00 00 02 */ li r8, 2 -/* 801DC5D4 001D8234 48 0A B8 E9 */ bl DVDReadAsyncPrio -/* 801DC5D8 001D8238 7C 03 00 D0 */ neg r0, r3 -/* 801DC5DC 001D823C 7C 00 1B 78 */ or r0, r0, r3 -/* 801DC5E0 001D8240 54 03 0F FE */ srwi r3, r0, 0x1f -lbl_801DC5E4: -/* 801DC5E4 001D8244 39 61 00 20 */ addi r11, r1, 0x20 -/* 801DC5E8 001D8248 4B FE AB 8D */ bl _restgpr_27 -/* 801DC5EC 001D824C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 801DC5F0 001D8250 7C 08 03 A6 */ mtlr r0 -/* 801DC5F4 001D8254 38 21 00 20 */ addi r1, r1, 0x20 -/* 801DC5F8 001D8258 4E 80 00 20 */ blr - .global func_801DC5FC func_801DC5FC: /* 801DC5FC 001D825C 94 21 FF E0 */ stwu r1, -0x20(r1) diff --git a/include/SDK/DVD/dvd.h b/include/SDK/DVD/dvd.h index 7a45e89..09a6c79 100644 --- a/include/SDK/DVD/dvd.h +++ b/include/SDK/DVD/dvd.h @@ -13,7 +13,6 @@ typedef struct DVDDiskID u8 unk7; } DVDDiskID; - DVDDiskID* DVDGetCurrentDiskID(void); void DVDInit(void); diff --git a/include/SDK/DVD/dvdfs.h b/include/SDK/DVD/dvdfs.h new file mode 100644 index 0000000..8f95a94 --- /dev/null +++ b/include/SDK/DVD/dvdfs.h @@ -0,0 +1,29 @@ +#ifndef POKEREVO_DVDFS_H +#define POKEREVO_DVDFS_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct DVDFileInfo DVDFileInfo; + +typedef void (*DVDCallback)(s32 result, DVDFileInfo* fileInfo); + +struct DVDFileInfo +{ + u8 unk0[0x40]; + void (*unk40)(s32, void*); // TODO: not a DVDFileCallback bc an unkClass* is passed as 2nd param + void* unk44; //data cache start addr to invalidate + u32 unk48; // data cache region size +}; + +BOOL DVDOpen(const char*, DVDFileInfo*); +s32 DVDConvertPathToEntrynum(const char* fileName); +s32 DVDReadPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, s32 prio); +s32 DVDReadAsyncPrio(DVDFileInfo* fileInfo, void* addr, s32 length, s32 offset, DVDCallback callback, s32 prio); + +#ifdef __cplusplus +} +#endif + +#endif //POKEREVO_DVDFS_H diff --git a/include/SDK/dvd.h b/include/SDK/dvd.h index 0bab0b6..d2cc09e 100644 --- a/include/SDK/dvd.h +++ b/include/SDK/dvd.h @@ -7,6 +7,7 @@ extern "C" { #include "SDK/DVD/dvd.h" #include "SDK/DVD/dvdFatal.h" +#include "SDK/DVD/dvdfs.h" #ifdef __cplusplus } diff --git a/src/code_801DBE90.cpp b/src/code_801DBE90.cpp index 319f894..10a6e29 100644 --- a/src/code_801DBE90.cpp +++ b/src/code_801DBE90.cpp @@ -10,16 +10,6 @@ namespace { - struct unkClass; - typedef void (*funcPtr)(u32, unkClass*); - - struct unkClass2 - { - u8 unk0[0x40]; - funcPtr unk40; - void* unk44; //data cache start addr to invalidate - u32 unk48; // data cache region size - }; //TODO: header/source struct unkClass @@ -27,7 +17,7 @@ namespace u8 unk0; u8 unk1; u8 unk2[0x2]; - unkClass2 unk4; + DVDFileInfo unk4; }; @@ -53,7 +43,6 @@ extern size_t lbl_8063F320; extern unkClass* lbl_8063F324; extern u32 lbl_8063F328; extern u32 lbl_8063F32C; - extern gUnkClass4* lbl_8063F338; extern u8 lbl_804917F0[0x40]; @@ -75,8 +64,14 @@ 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); @@ -179,7 +174,7 @@ void func_801DBF60(unkClass* p1) #ifdef NONMATCHING2 //static -unkClass* func_801DBF98(unkClass2* p1) +unkClass* func_801DBF98(DVDFileInfo* p1) { unkClass* r4 = lbl_8063F324; size_t i = 0; @@ -190,7 +185,7 @@ unkClass* func_801DBF98(unkClass2* p1) return 0; } #else -asm unkClass* func_801DBF98(unkClass2* p1) +asm unkClass* func_801DBF98(DVDFileInfo* p1) { /* 801DBF98 001D7BF8 80 AD A0 64 */ lwz r5, lbl_8063F324 /* 801DBF9C 001D7BFC 38 C0 00 00 */ li r6, 0 @@ -221,7 +216,7 @@ lbl_801DBFE4: #endif //static -void lbl_801DBFEC(u32 p1, unkClass2* p2) +void func_801DBFEC(s32 p1, DVDFileInfo* p2) { if (lbl_8063F31F == 0) { unkClass* r31 = func_801DBF98(p2); @@ -233,7 +228,7 @@ void lbl_801DBFEC(u32 p1, unkClass2* p2) } //static -void lbl_801DC068(u32 p1, unkClass2* p2) +void lbl_801DC068(s32 p1, DVDFileInfo* p2) { if (lbl_8063F31F == 0) { unkClass* r3 = func_801DBF98(p2); @@ -308,9 +303,79 @@ void func_801DC264(void) } } +// DVDOpen wrapper? +unkClass* func_801DC2D0(const char* fileName) +{ + if (!lbl_8063F31E) + return NULL; + func_801DC264(); + unkClass* r31 = func_801DBED0(); + if (!r31) + return NULL; + if (lbl_8063F338 && func_801DCF74(lbl_8063F338, fileName, r31)) + return r31; + if (!DVDOpen(fileName, &r31->unk4)) { + func_801DBF60(r31); + return NULL; + } + return r31; +} +// indicate whether fileName exists +BOOL func_801DC380(const char* fileName) +{ + if (!lbl_8063F31E) + return FALSE; + if (lbl_8063F338 && func_801DCF48(lbl_8063F338, fileName)) + return TRUE; + if (DVDConvertPathToEntrynum(fileName) == -1) + return FALSE; + return TRUE; +} +// DVDReadPrio wrapper +s32 func_801DC3FC(unkClass* p1, void* addr, s32 length, s32 offset) +{ + if (!lbl_8063F31E) + return -1; + func_801DC264(); + if (!p1) + return -1; + if ((u32)addr & 0x1F) + return -1; + if (length & 0x1F) + return -1; + if (offset & 0x3) + return -1; + + if (lbl_8063F338 && p1->unk1) { + s32 r3 = func_801DD084(lbl_8063F338, p1, addr, length, offset); + if (r3 > 0) + return r3; + } + return DVDReadPrio(&p1->unk4, addr, length, offset, 2); +} +BOOL func_801DC4F0(unkClass* p1, void* p2, s32 p3, s32 p4, void (*p5)(s32, void*)) +{ + if (!lbl_8063F31E) + return FALSE; + func_801DC264(); + if (!p1) + return FALSE; + p1->unk4.unk40 = p5; + if ((u32)p2 & 0x1F) + return FALSE; + if (p3 & 0x1F) + return FALSE; + if (p4 & 0x3) + return FALSE; + p1->unk4.unk44 = p2; + 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; +} -- cgit v1.2.3