diff options
-rw-r--r-- | asm/code_801DBE90_asm.s | 238 | ||||
-rw-r--r-- | include/SDK/DVD/dvd.h | 1 | ||||
-rw-r--r-- | include/SDK/DVD/dvdfs.h | 29 | ||||
-rw-r--r-- | include/SDK/dvd.h | 1 | ||||
-rw-r--r-- | src/code_801DBE90.cpp | 99 |
5 files changed, 112 insertions, 256 deletions
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;
+}
|