summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax <mparisi@stevens.edu>2020-10-21 18:41:27 -0400
committerMax <mparisi@stevens.edu>2020-10-21 18:41:27 -0400
commit64b05c65e12cb8b5e1d49b9f7bf07c2be482aa14 (patch)
tree9c1a47a2d27543286853b319ecd015c76e202fbf
parentcaaaee2fc3c4de6e88b1c0edc92819917b63e258 (diff)
match func_801DBA8C
-rw-r--r--asm/code_801DB81C_asm.s53
-rw-r--r--asm/ctors_2.s2
-rw-r--r--asm/sbss_2.s6
-rw-r--r--src/code_801DB81C.cpp96
4 files changed, 52 insertions, 105 deletions
diff --git a/asm/code_801DB81C_asm.s b/asm/code_801DB81C_asm.s
index 496da65..4ea72fe 100644
--- a/asm/code_801DB81C_asm.s
+++ b/asm/code_801DB81C_asm.s
@@ -1,56 +1,3 @@
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
-
-.global func_801DBA8C
-func_801DBA8C:
-/* 801DBA8C 001D76EC 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DBA90 001D76F0 7C 08 02 A6 */ mflr r0
-/* 801DBA94 001D76F4 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DBA98 001D76F8 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DBA9C 001D76FC 93 C1 00 08 */ stw r30, 8(r1)
-/* 801DBAA0 001D7700 88 0D A0 44 */ lbz r0, lbl_8063F304-_SDA_BASE_(r13)
-/* 801DBAA4 001D7704 2C 00 00 00 */ cmpwi r0, 0
-/* 801DBAA8 001D7708 41 82 00 5C */ beq lbl_801DBB04
-/* 801DBAAC 001D770C 3F C0 80 49 */ lis r30, lbl_80491370@ha
-/* 801DBAB0 001D7710 3B E0 00 1F */ li r31, 0x1f
-/* 801DBAB4 001D7714 3B DE 13 70 */ addi r30, r30, lbl_80491370@l
-lbl_801DBAB8:
-/* 801DBAB8 001D7718 88 1E 00 00 */ lbz r0, 0(r30)
-/* 801DBABC 001D771C 28 00 00 FF */ cmplwi r0, 0xff
-/* 801DBAC0 001D7720 41 82 00 2C */ beq lbl_801DBAEC
-/* 801DBAC4 001D7724 81 9E 00 04 */ lwz r12, 4(r30)
-/* 801DBAC8 001D7728 2C 0C 00 00 */ cmpwi r12, 0
-/* 801DBACC 001D772C 41 82 00 20 */ beq lbl_801DBAEC
-/* 801DBAD0 001D7730 80 6D A0 3C */ lwz r3, lbl_8063F2FC-_SDA_BASE_(r13)
-/* 801DBAD4 001D7734 54 00 4B EC */ rlwinm r0, r0, 9, 0xf, 0x16
-/* 801DBAD8 001D7738 88 BE 00 01 */ lbz r5, 1(r30)
-/* 801DBADC 001D773C 7C 83 02 14 */ add r4, r3, r0
-/* 801DBAE0 001D7740 38 60 00 01 */ li r3, 1
-/* 801DBAE4 001D7744 7D 89 03 A6 */ mtctr r12
-/* 801DBAE8 001D7748 4E 80 04 21 */ bctrl
-lbl_801DBAEC:
-/* 801DBAEC 001D774C 2C 1F 00 00 */ cmpwi r31, 0
-/* 801DBAF0 001D7750 3B FF FF FF */ addi r31, r31, -1
-/* 801DBAF4 001D7754 3B DE 00 08 */ addi r30, r30, 8
-/* 801DBAF8 001D7758 40 82 FF C0 */ bne lbl_801DBAB8
-/* 801DBAFC 001D775C 38 00 00 00 */ li r0, 0
-/* 801DBB00 001D7760 98 0D A0 44 */ stb r0, lbl_8063F304-_SDA_BASE_(r13)
-lbl_801DBB04:
-/* 801DBB04 001D7764 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DBB08 001D7768 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DBB0C 001D776C 83 C1 00 08 */ lwz r30, 8(r1)
-/* 801DBB10 001D7770 7C 08 03 A6 */ mtlr r0
-/* 801DBB14 001D7774 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DBB18 001D7778 4E 80 00 20 */ blr
-
-.global func_801DBB1C
-func_801DBB1C:
-/* 801DBB1C 001D777C 38 A0 00 01 */ li r5, 1
-/* 801DBB20 001D7780 38 6D A0 30 */ addi r3, r13, lbl_8063F2F0-_SDA_BASE_
-/* 801DBB24 001D7784 38 80 00 04 */ li r4, 4
-/* 801DBB28 001D7788 38 00 00 00 */ li r0, 0
-/* 801DBB2C 001D778C 98 AD A0 30 */ stb r5, lbl_8063F2F0-_SDA_BASE_(r13)
-/* 801DBB30 001D7790 B0 83 00 02 */ sth r4, 2(r3)
-/* 801DBB34 001D7794 98 03 00 04 */ stb r0, 4(r3)
-/* 801DBB38 001D7798 4E 80 00 20 */ blr
diff --git a/asm/ctors_2.s b/asm/ctors_2.s
index fe55fc5..bc10cf0 100644
--- a/asm/ctors_2.s
+++ b/asm/ctors_2.s
@@ -2,7 +2,7 @@
.section .ctors, "wa" # 0x803E1E60 - 0x803E22A0
-.4byte func_801DBB1C, func_801DBE70
+.4byte func_801DBE70
.4byte func_801DCE4C, func_801DD5A8, func_801DD8A0, func_801DDF58
.4byte func_801DF020, func_801E07C8, func_801E07F0, func_801E0A34
.4byte func_801E4308, func_801E472C, func_801E5F5C, func_801E6BD8
diff --git a/asm/sbss_2.s b/asm/sbss_2.s
index c95a099..ebb2f35 100644
--- a/asm/sbss_2.s
+++ b/asm/sbss_2.s
@@ -1,8 +1,8 @@
.section .sbss, "wa" # 0x80474F00 - 0x80643050
-.global lbl_8063F2F0
-lbl_8063F2F0:
- .skip 0x8
+.global lbl_8063F2F6
+lbl_8063F2F6:
+ .skip 0x2
.global lbl_8063F2F8
lbl_8063F2F8:
.skip 0x4
diff --git a/src/code_801DB81C.cpp b/src/code_801DB81C.cpp
index efe7ade..d7de4dd 100644
--- a/src/code_801DB81C.cpp
+++ b/src/code_801DB81C.cpp
@@ -24,7 +24,7 @@ extern u32 lbl_8063F300;
extern u8 lbl_8063F304;
extern u32 lbl_8063F308;
-
+unkStruct gUnk8063F2F0(1, 4, 0);
//static
@@ -32,8 +32,7 @@ void func_801DB81C(u8 p1);
static void func_801DB92C(u8 p1, u8 p2, u32 p3);
u32 func_801DB978(u8 p1);
void func_801DB9FC(void);
-
-
+void func_801DBA8C(void);
#ifdef NONMATCHING
// 1. wrong instruction order: loading lbl_80491370@ha before 0
@@ -57,7 +56,6 @@ void func_801DB81C(u8 p1)
lbl_8063F304 = 0;
}
#else
-#define _SDA_BASE_ 0x806452C0;
asm void func_801DB81C(u8 p1)
{
nofralloc
@@ -201,61 +199,63 @@ asm u32 func_801DB978(u8 p1)
}
#pragma peephole on
#endif
-/*
+
void func_801DB9FC(void)
{
- u32 i, j;
+ u32 i;
+ short j;
+ unsigned short new_var;
+ char new_var2;
+ u32 *new_var3;
+ u32 new_var4;
+ u32 *new_var5;
+ new_var = 0xff;
if (lbl_8063F304 != 1) {
+ new_var2 = 9;
i = 31, j = 0;
- do
- {
- u8 r0 = lbl_80491370[j].unk0;
- if (r0 != 0xff && lbl_80491370[j].unk4)
- lbl_80491370[j].unk4(0, lbl_8063F2FC + (r0 << 9), lbl_80491370[j].unk1);
+ new_var3 = &i;
+ new_var5 = &new_var4;
+ do {
+ unsigned char r0 = lbl_80491370[j].unk0;
+ new_var4 = *new_var3;
+ if ((((u32) r0) != new_var) && lbl_80491370[j].unk4) {
+ lbl_80491370[j].unk4(0, lbl_8063F2FC + (r0 << new_var2), lbl_80491370[j].unk1);
+ }
+
+ i = *new_var5;
j++;
- } while (i-- != 0);
+ } while ((i--) != 0);
lbl_8063F304 = 1;
}
}
-*/
-void func_801DB9FC(void)
+
+void func_801DBA8C(void)
{
- u32 i;
- short j;
- unsigned short new_var;
- char new_var2;
- u32 *new_var3;
- u32 new_var4;
- u32 *new_var5;
- new_var = 0xff;
- if (lbl_8063F304 != 1)
- {
- new_var2 = 9;
- i = 31, j = 0;
- new_var3 = &i;
- new_var5 = &new_var4;
- do
- {
- unsigned char r0 = lbl_80491370[j].unk0;
- new_var4 = *new_var3;
- if ((((u32) r0) != new_var) && lbl_80491370[j].unk4)
- {
- lbl_80491370[j].unk4(0, lbl_8063F2FC + (r0 << new_var2), lbl_80491370[j].unk1);
- }
+ u32 i;
+ short j;
+ unsigned short new_var;
+ char new_var2;
+ u32 *new_var3;
+ u32 new_var4;
+ u32 *new_var5;
+ new_var = 0xff;
+ if (lbl_8063F304 != 0) {
+ new_var2 = 9;
+ i = 31, j = 0;
+ new_var3 = &i;
+ new_var5 = &new_var4;
+ do {
+ unsigned char r0 = lbl_80491370[j].unk0;
+ new_var4 = *new_var3;
+ if ((((u32) r0) != new_var) && lbl_80491370[j].unk4) {
+ lbl_80491370[j].unk4(1, lbl_8063F2FC + (r0 << new_var2), lbl_80491370[j].unk1);
+ }
- i = *new_var5;
- j++;
- }
- while ((i--) != 0);
- do
- {
- lbl_8063F304 = 1;
+ i = *new_var5;
+ j++;
+ } while ((i--) != 0);
+ lbl_8063F304 = 0;
}
- while (0);
- }
-
}
-
-
}