From c4dcd29c7708fc02463cf7e921f31ab404d88843 Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 27 Oct 2020 20:37:19 -0400 Subject: match all of code_801DBE90 --- src/code_801DBE90.cpp | 148 +++++++++++--------------------------------------- 1 file changed, 33 insertions(+), 115 deletions(-) (limited to 'src/code_801DBE90.cpp') diff --git a/src/code_801DBE90.cpp b/src/code_801DBE90.cpp index 7e49642..be5efba 100644 --- a/src/code_801DBE90.cpp +++ b/src/code_801DBE90.cpp @@ -38,7 +38,7 @@ extern char lbl_8063D6E4[8]; extern char lbl_8063D6EC[8]; extern s32 lbl_8063D6F4; - +static ctorStruct gUnk8063F318(1, 4, 0); extern u8 lbl_8063F31E; extern u8 lbl_8063F31F; extern size_t lbl_8063F320; @@ -104,129 +104,41 @@ void func_801DBEA0(void) lbl_8063F324[i].unk0 = 0; } -#ifdef NONMATCHING //static unkClass *func_801DBED0(void) { - - OSDisableInterrupts(); - - unkClass *r31 = 0; - size_t i; - for (i = 0; i < lbl_8063F320; i++) - { - if (lbl_8063F324[i].unk0 != 1) - { - lbl_8063F324[i].unk0 = 1; - lbl_8063F324[i].unk1 = 0; - r31 = &lbl_8063F324[i]; - break; + BOOL enable = OSDisableInterrupts(); + unkClass* r31 = NULL; + size_t i; + for (i = 0; i < lbl_8063F320; i++) { + if (lbl_8063F324[i].unk0 != 1) { + lbl_8063F324[i].unk0 = 1; + lbl_8063F324[i].unk1 = 0; + r31 = &lbl_8063F324[i]; + break; + } } - - } - - - OSRestoreInterrupts(); + OSRestoreInterrupts(enable); return r31; - - -} -#else -asm unkClass* func_801DBED0(void) -{ -nofralloc -/* 801DBED0 001D7B30 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 801DBED4 001D7B34 7C 08 02 A6 */ mflr r0 -/* 801DBED8 001D7B38 90 01 00 14 */ stw r0, 0x14(r1) -/* 801DBEDC 001D7B3C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 801DBEE0 001D7B40 48 09 28 7D */ bl OSDisableInterrupts -/* 801DBEE4 001D7B44 80 ED A0 64 */ lwz r7, lbl_8063F324 -/* 801DBEE8 001D7B48 3B E0 00 00 */ li r31, 0 -/* 801DBEEC 001D7B4C 80 0D A0 60 */ lwz r0, lbl_8063F320 -/* 801DBEF0 001D7B50 38 A0 00 00 */ li r5, 0 -/* 801DBEF4 001D7B54 7C E4 3B 78 */ mr r4, r7 -/* 801DBEF8 001D7B58 7C 09 03 A6 */ mtctr r0 -/* 801DBEFC 001D7B5C 28 00 00 00 */ cmplwi r0, 0 -/* 801DBF00 001D7B60 40 81 00 44 */ ble lbl_801DBF44 -lbl_801DBF04: -/* 801DBF04 001D7B64 88 04 00 00 */ lbz r0, 0(r4) -/* 801DBF08 001D7B68 28 00 00 01 */ cmplwi r0, 1 -/* 801DBF0C 001D7B6C 41 82 00 2C */ beq lbl_801DBF38 -/* 801DBF10 001D7B70 1C C5 00 50 */ mulli r6, r5, 0x50 -/* 801DBF14 001D7B74 38 00 00 01 */ li r0, 1 -/* 801DBF18 001D7B78 38 A0 00 00 */ li r5, 0 -/* 801DBF1C 001D7B7C 7C 07 31 AE */ stbx r0, r7, r6 -/* 801DBF20 001D7B80 80 0D A0 64 */ lwz r0, lbl_8063F324 -/* 801DBF24 001D7B84 7C 80 32 14 */ add r4, r0, r6 -/* 801DBF28 001D7B88 98 A4 00 01 */ stb r5, 1(r4) -/* 801DBF2C 001D7B8C 80 0D A0 64 */ lwz r0, lbl_8063F324 -/* 801DBF30 001D7B90 7F E0 32 14 */ add r31, r0, r6 -/* 801DBF34 001D7B94 48 00 00 10 */ b lbl_801DBF44 -lbl_801DBF38: -/* 801DBF38 001D7B98 38 84 00 50 */ addi r4, r4, 0x50 -/* 801DBF3C 001D7B9C 38 A5 00 01 */ addi r5, r5, 1 -/* 801DBF40 001D7BA0 42 00 FF C4 */ bdnz lbl_801DBF04 -lbl_801DBF44: -/* 801DBF44 001D7BA4 48 09 28 41 */ bl OSRestoreInterrupts -/* 801DBF48 001D7BA8 7F E3 FB 78 */ mr r3, r31 -/* 801DBF4C 001D7BAC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 801DBF50 001D7BB0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 801DBF54 001D7BB4 7C 08 03 A6 */ mtlr r0 -/* 801DBF58 001D7BB8 38 21 00 10 */ addi r1, r1, 0x10 -/* 801DBF5C 001D7BBC 4E 80 00 20 */ blr -} -#pragma peephole on -#endif +} + //static void func_801DBF60(unkClass* p1) { - OSDisableInterrupts(); + BOOL enable = OSDisableInterrupts(); p1->unk0 = 0; - OSRestoreInterrupts(); + OSRestoreInterrupts(enable); } -#ifdef NONMATCHING2 //static unkClass* func_801DBF98(DVDFileInfo* p1) { - unkClass* r4 = lbl_8063F324; - size_t i = 0; - for (; i < lbl_8063F320; r4++, i++) { - if (r4->unk0 != 0 && &r4->unk4 == p1) + for (size_t i = 0; i < lbl_8063F320; i++) { + if (lbl_8063F324[i].unk0 && &lbl_8063F324[i].unk4 == p1) return &lbl_8063F324[i]; } - return 0; + return NULL; } -#else -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 -/* 801DBFA0 001D7C00 80 0D A0 60 */ lwz r0, lbl_8063F320 -/* 801DBFA4 001D7C04 7C A4 2B 78 */ mr r4, r5 -/* 801DBFA8 001D7C08 7C 09 03 A6 */ mtctr r0 -/* 801DBFAC 001D7C0C 28 00 00 00 */ cmplwi r0, 0 -/* 801DBFB0 001D7C10 40 81 00 34 */ ble lbl_801DBFE4 -lbl_801DBFB4: -/* 801DBFB4 001D7C14 88 04 00 00 */ lbz r0, 0(r4) -/* 801DBFB8 001D7C18 2C 00 00 00 */ cmpwi r0, 0 -/* 801DBFBC 001D7C1C 41 82 00 1C */ beq lbl_801DBFD8 -/* 801DBFC0 001D7C20 38 04 00 04 */ addi r0, r4, 4 -/* 801DBFC4 001D7C24 7C 00 18 40 */ cmplw r0, r3 -/* 801DBFC8 001D7C28 40 82 00 10 */ bne lbl_801DBFD8 -/* 801DBFCC 001D7C2C 1C 06 00 50 */ mulli r0, r6, 0x50 -/* 801DBFD0 001D7C30 7C 65 02 14 */ add r3, r5, r0 -/* 801DBFD4 001D7C34 4E 80 00 20 */ blr -lbl_801DBFD8: -/* 801DBFD8 001D7C38 38 84 00 50 */ addi r4, r4, 0x50 -/* 801DBFDC 001D7C3C 38 C6 00 01 */ addi r6, r6, 1 -/* 801DBFE0 001D7C40 42 00 FF D4 */ bdnz lbl_801DBFB4 -lbl_801DBFE4: -/* 801DBFE4 001D7C44 38 60 00 00 */ li r3, 0 -/* 801DBFE8 001D7C48 4E 80 00 20 */ blr -} -#pragma peephole on -#endif //static void func_801DBFEC(s32 p1, DVDFileInfo* p2) @@ -302,9 +214,9 @@ BOOL func_801DC0C8(size_t p1, u32 p2) //static void func_801DC264(void) { - BOOL r31 = OSDisableInterrupts(); - OSRestoreInterrupts(); - if (r31) { + BOOL enable = OSDisableInterrupts(); + OSRestoreInterrupts(enable); + if (enable) { while (TRUE) { func_801DC9CC(lbl_8063F32C, 0); if (lbl_8063F328 == 0) @@ -506,9 +418,9 @@ void func_801DC918(s32 p1, DVDCommandBlock*) //static BOOL func_801DC928(void) { - BOOL r31 = OSDisableInterrupts(); - OSRestoreInterrupts(); - if (!r31) + BOOL enable = OSDisableInterrupts(); + OSRestoreInterrupts(enable); + if (!enable) return TRUE; OSInitSemaphore(&lbl_80491830, 0); lbl_8063D6F4 = -1; @@ -678,8 +590,14 @@ u32 func_801DCDC4(void) } } +void func_801DCE38(void) +{ + lbl_8063F31F = 1; +} - - +u8 func_801DCE44(void) +{ + return lbl_8063F31F; +} } //extern "C" -- cgit v1.2.3