summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax <mparisi@stevens.edu>2020-10-27 18:07:56 -0400
committerMax <mparisi@stevens.edu>2020-10-27 18:07:56 -0400
commitdfcd7d75a33c3706f0c0f3e58efd564fc578d8ec (patch)
tree92311769f041480f8ce723e56055516437a4c11c
parent126972af1a4ff9084cd48f9c57eb07f3951e5086 (diff)
match 801DC9CC
-rw-r--r--asm/code_801DBE90_asm.s136
-rw-r--r--asm/data_2.s3
-rw-r--r--src/code_801DBE90.cpp86
3 files changed, 79 insertions, 146 deletions
diff --git a/asm/code_801DBE90_asm.s b/asm/code_801DBE90_asm.s
index 09793a7..683d1b1 100644
--- a/asm/code_801DBE90_asm.s
+++ b/asm/code_801DBE90_asm.s
@@ -2,142 +2,6 @@
.section .text, "ax" # 0x80006980 - 0x803E1E60
-.global func_801DC9CC
-func_801DC9CC:
-/* 801DC9CC 001D862C 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DC9D0 001D8630 7C 08 02 A6 */ mflr r0
-/* 801DC9D4 001D8634 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DC9D8 001D8638 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DC9DC 001D863C 4B FF FE 01 */ bl func_801DC7DC
-/* 801DC9E0 001D8640 80 0D A0 68 */ lwz r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DC9E4 001D8644 7C 7F 1B 78 */ mr r31, r3
-/* 801DC9E8 001D8648 28 00 00 0A */ cmplwi r0, 0xa
-/* 801DC9EC 001D864C 41 81 01 C0 */ bgt lbl_801DCBAC
-/* 801DC9F0 001D8650 3C 80 80 42 */ lis r4, lbl_8042330C@ha
-/* 801DC9F4 001D8654 54 00 10 3A */ slwi r0, r0, 2
-/* 801DC9F8 001D8658 38 84 33 0C */ addi r4, r4, lbl_8042330C@l
-/* 801DC9FC 001D865C 7C 84 00 2E */ lwzx r4, r4, r0
-/* 801DCA00 001D8660 7C 89 03 A6 */ mtctr r4
-/* 801DCA04 001D8664 4E 80 04 20 */ bctr
-/* 801DCA08 001D8668 4B FF FE 81 */ bl func_801DC888
-/* 801DCA0C 001D866C 48 00 01 A0 */ b lbl_801DCBAC
-/* 801DCA10 001D8670 38 60 00 01 */ li r3, 1
-/* 801DCA14 001D8674 4B FF FE D5 */ bl func_801DC8E8
-/* 801DCA18 001D8678 38 00 00 02 */ li r0, 2
-/* 801DCA1C 001D867C 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCA20 001D8680 48 00 01 8C */ b lbl_801DCBAC
-/* 801DCA24 001D8684 2C 03 00 0B */ cmpwi r3, 0xb
-/* 801DCA28 001D8688 40 82 00 1C */ bne lbl_801DCA44
-/* 801DCA2C 001D868C 4B FF FE D5 */ bl func_801DC900
-/* 801DCA30 001D8690 38 60 00 04 */ li r3, 4
-/* 801DCA34 001D8694 4B FF FE B5 */ bl func_801DC8E8
-/* 801DCA38 001D8698 38 00 00 08 */ li r0, 8
-/* 801DCA3C 001D869C 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCA40 001D86A0 48 00 01 6C */ b lbl_801DCBAC
-lbl_801DCA44:
-/* 801DCA44 001D86A4 2C 03 00 05 */ cmpwi r3, 5
-/* 801DCA48 001D86A8 41 82 01 64 */ beq lbl_801DCBAC
-/* 801DCA4C 001D86AC 4B FF FE DD */ bl func_801DC928
-/* 801DCA50 001D86B0 2C 03 00 00 */ cmpwi r3, 0
-/* 801DCA54 001D86B4 41 82 01 58 */ beq lbl_801DCBAC
-/* 801DCA58 001D86B8 4B FF FE A9 */ bl func_801DC900
-/* 801DCA5C 001D86BC 38 00 00 00 */ li r0, 0
-/* 801DCA60 001D86C0 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCA64 001D86C4 48 00 01 48 */ b lbl_801DCBAC
-/* 801DCA68 001D86C8 38 60 00 02 */ li r3, 2
-/* 801DCA6C 001D86CC 4B FF FE 7D */ bl func_801DC8E8
-/* 801DCA70 001D86D0 38 00 00 04 */ li r0, 4
-/* 801DCA74 001D86D4 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCA78 001D86D8 48 00 01 34 */ b lbl_801DCBAC
-/* 801DCA7C 001D86DC 2C 03 00 0B */ cmpwi r3, 0xb
-/* 801DCA80 001D86E0 40 82 00 1C */ bne lbl_801DCA9C
-/* 801DCA84 001D86E4 4B FF FE 7D */ bl func_801DC900
-/* 801DCA88 001D86E8 38 60 00 04 */ li r3, 4
-/* 801DCA8C 001D86EC 4B FF FE 5D */ bl func_801DC8E8
-/* 801DCA90 001D86F0 38 00 00 08 */ li r0, 8
-/* 801DCA94 001D86F4 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCA98 001D86F8 48 00 01 14 */ b lbl_801DCBAC
-lbl_801DCA9C:
-/* 801DCA9C 001D86FC 2C 03 00 04 */ cmpwi r3, 4
-/* 801DCAA0 001D8700 41 82 01 0C */ beq lbl_801DCBAC
-/* 801DCAA4 001D8704 4B FF FE 85 */ bl func_801DC928
-/* 801DCAA8 001D8708 2C 03 00 00 */ cmpwi r3, 0
-/* 801DCAAC 001D870C 41 82 01 00 */ beq lbl_801DCBAC
-/* 801DCAB0 001D8710 4B FF FE 51 */ bl func_801DC900
-/* 801DCAB4 001D8714 38 00 00 00 */ li r0, 0
-/* 801DCAB8 001D8718 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCABC 001D871C 48 00 00 F0 */ b lbl_801DCBAC
-/* 801DCAC0 001D8720 38 60 00 03 */ li r3, 3
-/* 801DCAC4 001D8724 4B FF FE 25 */ bl func_801DC8E8
-/* 801DCAC8 001D8728 38 00 00 06 */ li r0, 6
-/* 801DCACC 001D872C 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCAD0 001D8730 48 00 00 DC */ b lbl_801DCBAC
-/* 801DCAD4 001D8734 2C 03 00 0B */ cmpwi r3, 0xb
-/* 801DCAD8 001D8738 40 82 00 1C */ bne lbl_801DCAF4
-/* 801DCADC 001D873C 4B FF FE 25 */ bl func_801DC900
-/* 801DCAE0 001D8740 38 60 00 04 */ li r3, 4
-/* 801DCAE4 001D8744 4B FF FE 05 */ bl func_801DC8E8
-/* 801DCAE8 001D8748 38 00 00 08 */ li r0, 8
-/* 801DCAEC 001D874C 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCAF0 001D8750 48 00 00 BC */ b lbl_801DCBAC
-lbl_801DCAF4:
-/* 801DCAF4 001D8754 2C 03 00 06 */ cmpwi r3, 6
-/* 801DCAF8 001D8758 41 82 00 B4 */ beq lbl_801DCBAC
-/* 801DCAFC 001D875C 4B FF FE 2D */ bl func_801DC928
-/* 801DCB00 001D8760 2C 03 00 00 */ cmpwi r3, 0
-/* 801DCB04 001D8764 41 82 00 A8 */ beq lbl_801DCBAC
-/* 801DCB08 001D8768 4B FF FD F9 */ bl func_801DC900
-/* 801DCB0C 001D876C 38 00 00 00 */ li r0, 0
-/* 801DCB10 001D8770 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCB14 001D8774 48 00 00 98 */ b lbl_801DCBAC
-/* 801DCB18 001D8778 38 60 00 04 */ li r3, 4
-/* 801DCB1C 001D877C 4B FF FD CD */ bl func_801DC8E8
-/* 801DCB20 001D8780 38 00 00 08 */ li r0, 8
-/* 801DCB24 001D8784 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCB28 001D8788 48 00 00 84 */ b lbl_801DCBAC
-/* 801DCB2C 001D878C 2C 03 00 05 */ cmpwi r3, 5
-/* 801DCB30 001D8790 40 82 00 1C */ bne lbl_801DCB4C
-/* 801DCB34 001D8794 4B FF FD CD */ bl func_801DC900
-/* 801DCB38 001D8798 38 60 00 01 */ li r3, 1
-/* 801DCB3C 001D879C 4B FF FD AD */ bl func_801DC8E8
-/* 801DCB40 001D87A0 38 00 00 02 */ li r0, 2
-/* 801DCB44 001D87A4 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCB48 001D87A8 48 00 00 64 */ b lbl_801DCBAC
-lbl_801DCB4C:
-/* 801DCB4C 001D87AC 2C 03 00 04 */ cmpwi r3, 4
-/* 801DCB50 001D87B0 40 82 00 1C */ bne lbl_801DCB6C
-/* 801DCB54 001D87B4 4B FF FD AD */ bl func_801DC900
-/* 801DCB58 001D87B8 38 60 00 02 */ li r3, 2
-/* 801DCB5C 001D87BC 4B FF FD 8D */ bl func_801DC8E8
-/* 801DCB60 001D87C0 38 00 00 04 */ li r0, 4
-/* 801DCB64 001D87C4 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCB68 001D87C8 48 00 00 44 */ b lbl_801DCBAC
-lbl_801DCB6C:
-/* 801DCB6C 001D87CC 2C 03 00 0B */ cmpwi r3, 0xb
-/* 801DCB70 001D87D0 41 82 00 10 */ beq lbl_801DCB80
-/* 801DCB74 001D87D4 4B FF FD B5 */ bl func_801DC928
-/* 801DCB78 001D87D8 2C 03 00 00 */ cmpwi r3, 0
-/* 801DCB7C 001D87DC 40 82 00 10 */ bne lbl_801DCB8C
-lbl_801DCB80:
-/* 801DCB80 001D87E0 38 1F FF FC */ addi r0, r31, -4
-/* 801DCB84 001D87E4 28 00 00 01 */ cmplwi r0, 1
-/* 801DCB88 001D87E8 41 81 00 24 */ bgt lbl_801DCBAC
-lbl_801DCB8C:
-/* 801DCB8C 001D87EC 4B FF FD 75 */ bl func_801DC900
-/* 801DCB90 001D87F0 38 00 00 00 */ li r0, 0
-/* 801DCB94 001D87F4 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-/* 801DCB98 001D87F8 48 00 00 14 */ b lbl_801DCBAC
-/* 801DCB9C 001D87FC 38 60 00 05 */ li r3, 5
-/* 801DCBA0 001D8800 4B FF FD 49 */ bl func_801DC8E8
-/* 801DCBA4 001D8804 38 00 00 0A */ li r0, 0xa
-/* 801DCBA8 001D8808 90 0D A0 68 */ stw r0, lbl_8063F328-_SDA_BASE_(r13)
-lbl_801DCBAC:
-/* 801DCBAC 001D880C 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DCBB0 001D8810 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DCBB4 001D8814 7C 08 03 A6 */ mtlr r0
-/* 801DCBB8 001D8818 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DCBBC 001D881C 4E 80 00 20 */ blr
-
.global func_801DCBC0
func_801DCBC0:
/* 801DCBC0 001D8820 94 21 FF E0 */ stwu r1, -0x20(r1)
diff --git a/asm/data_2.s b/asm/data_2.s
index 3939f73..38d3f37 100644
--- a/asm/data_2.s
+++ b/asm/data_2.s
@@ -2,9 +2,6 @@
.section .data, "wa" # 0x80405D60 - 0x80474F00
-.global lbl_8042330C
-lbl_8042330C:
- .incbin "baserom.dol", 0x41F40C, 0x2C
.global lbl_80423338
lbl_80423338:
.incbin "baserom.dol", 0x41F438, 0x20
diff --git a/src/code_801DBE90.cpp b/src/code_801DBE90.cpp
index 3826f7d..8f8386f 100644
--- a/src/code_801DBE90.cpp
+++ b/src/code_801DBE90.cpp
@@ -46,7 +46,7 @@ extern unkClass* lbl_8063F324;
extern u32 lbl_8063F328;
extern u32 lbl_8063F32C;
-extern void (*lbl_8063F330)(void);
+extern void (*lbl_8063F330)(u32);
extern void (*lbl_8063F334)(void);
extern gUnkClass4* lbl_8063F338;
@@ -458,8 +458,7 @@ BOOL func_801DC7F8(unkClass* p1, s32 offset, void (*p3)(s32, void*))
//static
void func_801DC888(s32 p1)
{
- switch (p1)
- {
+ switch (p1) {
case -1:
lbl_8063F328 = 9;
break;
@@ -481,10 +480,10 @@ void func_801DC888(s32 p1)
}
//static
-void func_801DC8E8(void)
+void func_801DC8E8(u32 p1)
{
if (lbl_8063F330)
- lbl_8063F330();
+ lbl_8063F330(p1);
}
//static
@@ -518,9 +517,82 @@ BOOL func_801DC928(void)
}
//static
-func_801DC9CC(u32 p1, u32 p2)
+void func_801DC9CC(u32 p1, u32)
{
-
+ s32 driveStatus = func_801DC7DC();
+ switch (lbl_8063F328) {
+ case 0:
+ func_801DC888(driveStatus);
+ break;
+ case 1:
+ func_801DC8E8(1);
+ lbl_8063F328 = 2;
+ break;
+ case 2:
+ if (driveStatus == 11) {
+ func_801DC900();
+ func_801DC8E8(4);
+ lbl_8063F328 = 8;
+ } else if (driveStatus != 5 && func_801DC928()) {
+ func_801DC900();
+ lbl_8063F328 = 0;
+ }
+ break;
+ case 3:
+ func_801DC8E8(2);
+ lbl_8063F328 = 4;
+ break;
+ case 4:
+ if (driveStatus == 11) {
+ func_801DC900();
+ func_801DC8E8(4);
+ lbl_8063F328 = 8;
+ } else if (driveStatus != 4 && func_801DC928()) {
+ func_801DC900();
+ lbl_8063F328 = 0;
+ }
+ break;
+ case 5:
+ func_801DC8E8(3);
+ lbl_8063F328 = 6;
+ break;
+ case 6:
+ if (driveStatus == 11) {
+ func_801DC900();
+ func_801DC8E8(4);
+ lbl_8063F328 = 8;
+ } else if (driveStatus != 6 && func_801DC928()) {
+ func_801DC900();
+ lbl_8063F328 = 0;
+ }
+ break;
+ case 7:
+ func_801DC8E8(4);
+ lbl_8063F328 = 8;
+ break;
+ case 8:
+ if (driveStatus == 5) {
+ func_801DC900();
+ func_801DC8E8(1);
+ lbl_8063F328 = 2;
+ } else if (driveStatus == 4) {
+ func_801DC900();
+ func_801DC8E8(2);
+ lbl_8063F328 = 4;
+ } else if ((driveStatus != 11 && func_801DC928()) || (u32)(driveStatus-4) <= 1) {
+ func_801DC900();
+ lbl_8063F328 = 0;
+ }
+ break;
+ case 9:
+ func_801DC8E8(5);
+ lbl_8063F328 = 10;
+ break;
+ case 10:
+ break;
+ default:
+ break;
+ }
}