diff options
author | Max <mparisi@stevens.edu> | 2020-10-18 00:06:45 -0400 |
---|---|---|
committer | Max <mparisi@stevens.edu> | 2020-10-18 00:06:45 -0400 |
commit | f4bba77e25e70dc342724435af05d3ae1fe19c5b (patch) | |
tree | e49d5a5ff35e7298dfbe6b962459f349e27e12fc | |
parent | 9adc467a131bc8521306defd414ae63ba98d949a (diff) |
match func_801DAB28, func_801DAB30, and func_801DAB78
-rw-r--r-- | asm/code_801DAAE0_asm.s | 69 | ||||
-rw-r--r-- | include/code_801DAAE0.h | 9 | ||||
-rw-r--r-- | src/code_801DAAE0.cpp | 36 |
3 files changed, 44 insertions, 70 deletions
diff --git a/asm/code_801DAAE0_asm.s b/asm/code_801DAAE0_asm.s index 905529f..ede4108 100644 --- a/asm/code_801DAAE0_asm.s +++ b/asm/code_801DAAE0_asm.s @@ -2,75 +2,6 @@ .section .text, "ax" # 0x80006980 - 0x803E1E60
-.global func_801DAB28
-func_801DAB28:
-/* 801DAB28 001D6788 88 6D A0 16 */ lbz r3, lbl_8063F2D6-_SDA_BASE_(r13)
-/* 801DAB2C 001D678C 4E 80 00 20 */ blr
-
-.global func_801DAB30
-func_801DAB30:
-/* 801DAB30 001D6790 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAB34 001D6794 7C 08 02 A6 */ mflr r0
-/* 801DAB38 001D6798 3C 60 80 49 */ lis r3, gUnk804912B0@ha
-/* 801DAB3C 001D679C 38 80 00 00 */ li r4, 0
-/* 801DAB40 001D67A0 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DAB44 001D67A4 38 63 12 B0 */ addi r3, r3, gUnk804912B0@l
-/* 801DAB48 001D67A8 38 A0 00 C0 */ li r5, 0xc0
-/* 801DAB4C 001D67AC 4B E2 95 B9 */ bl memset
-/* 801DAB50 001D67B0 38 60 00 00 */ li r3, 0
-/* 801DAB54 001D67B4 38 00 00 01 */ li r0, 1
-/* 801DAB58 001D67B8 90 6D A0 18 */ stw r3, lbl_8063F2D8-_SDA_BASE_(r13)
-/* 801DAB5C 001D67BC B0 6D A0 1C */ sth r3, lbl_8063F2DC-_SDA_BASE_(r13)
-/* 801DAB60 001D67C0 98 0D A0 16 */ stb r0, lbl_8063F2D6-_SDA_BASE_(r13)
-/* 801DAB64 001D67C4 98 6D A0 17 */ stb r3, lbl_8063F2D7-_SDA_BASE_(r13)
-/* 801DAB68 001D67C8 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DAB6C 001D67CC 7C 08 03 A6 */ mtlr r0
-/* 801DAB70 001D67D0 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAB74 001D67D4 4E 80 00 20 */ blr
-
-.global func_801DAB78
-func_801DAB78:
-/* 801DAB78 001D67D8 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 801DAB7C 001D67DC 7C 08 02 A6 */ mflr r0
-/* 801DAB80 001D67E0 90 01 00 24 */ stw r0, 0x24(r1)
-/* 801DAB84 001D67E4 93 E1 00 1C */ stw r31, 0x1c(r1)
-/* 801DAB88 001D67E8 93 C1 00 18 */ stw r30, 0x18(r1)
-/* 801DAB8C 001D67EC 7C BE 2B 78 */ mr r30, r5
-/* 801DAB90 001D67F0 93 A1 00 14 */ stw r29, 0x14(r1)
-/* 801DAB94 001D67F4 7C 9D 23 78 */ mr r29, r4
-/* 801DAB98 001D67F8 93 81 00 10 */ stw r28, 0x10(r1)
-/* 801DAB9C 001D67FC 7C 7C 1B 78 */ mr r28, r3
-/* 801DABA0 001D6800 4B FF FF 89 */ bl func_801DAB28
-/* 801DABA4 001D6804 2C 03 00 00 */ cmpwi r3, 0
-/* 801DABA8 001D6808 40 82 00 0C */ bne lbl_801DABB4
-/* 801DABAC 001D680C 38 60 00 00 */ li r3, 0
-/* 801DABB0 001D6810 48 00 00 3C */ b lbl_801DABEC
-lbl_801DABB4:
-/* 801DABB4 001D6814 4B FF FF 2D */ bl func_801DAAE0
-/* 801DABB8 001D6818 2C 03 00 00 */ cmpwi r3, 0
-/* 801DABBC 001D681C 7C 7F 1B 78 */ mr r31, r3
-/* 801DABC0 001D6820 40 82 00 0C */ bne lbl_801DABCC
-/* 801DABC4 001D6824 38 60 00 00 */ li r3, 0
-/* 801DABC8 001D6828 48 00 00 24 */ b lbl_801DABEC
-lbl_801DABCC:
-/* 801DABCC 001D682C 7F 83 E3 78 */ mr r3, r28
-/* 801DABD0 001D6830 7F A4 EB 78 */ mr r4, r29
-/* 801DABD4 001D6834 7F C5 F3 78 */ mr r5, r30
-/* 801DABD8 001D6838 48 0B C2 71 */ bl MEMCreateExpHeapEx
-/* 801DABDC 001D683C 38 00 00 01 */ li r0, 1
-/* 801DABE0 001D6840 98 1F 00 00 */ stb r0, 0(r31)
-/* 801DABE4 001D6844 90 7F 00 04 */ stw r3, 4(r31)
-/* 801DABE8 001D6848 93 BF 00 08 */ stw r29, 8(r31)
-lbl_801DABEC:
-/* 801DABEC 001D684C 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 801DABF0 001D6850 83 E1 00 1C */ lwz r31, 0x1c(r1)
-/* 801DABF4 001D6854 83 C1 00 18 */ lwz r30, 0x18(r1)
-/* 801DABF8 001D6858 83 A1 00 14 */ lwz r29, 0x14(r1)
-/* 801DABFC 001D685C 83 81 00 10 */ lwz r28, 0x10(r1)
-/* 801DAC00 001D6860 7C 08 03 A6 */ mtlr r0
-/* 801DAC04 001D6864 38 21 00 20 */ addi r1, r1, 0x20
-/* 801DAC08 001D6868 4E 80 00 20 */ blr
-
.global func_801DAC0C
func_801DAC0C:
/* 801DAC0C 001D686C 80 6D A0 18 */ lwz r3, lbl_8063F2D8-_SDA_BASE_(r13)
diff --git a/include/code_801DAAE0.h b/include/code_801DAAE0.h index e0fb6fe..b27a833 100644 --- a/include/code_801DAAE0.h +++ b/include/code_801DAAE0.h @@ -5,15 +5,22 @@ extern "C" {
#endif
+// TODO: move
+typedef u32 MEMHeapHandle;
+
+
class unkClass
{
public:
u8 unk0;
- u8 unk1[11];
+ MEMHeapHandle unk4;
+ u32 unk8;
};
unkClass* func_801DAAE0(void);
BOOL func_801DAB28(void);
+void func_801DAB30(void);
+MEMHeapHandle func_801DAB78(void* p1, u32 p2, u16 p3);
void* func_801DAD64(size_t);
void func_801DAEA4(void*);
diff --git a/src/code_801DAAE0.cpp b/src/code_801DAAE0.cpp index 0a7a460..2398148 100644 --- a/src/code_801DAAE0.cpp +++ b/src/code_801DAAE0.cpp @@ -7,6 +7,14 @@ extern "C" {
// unkStruct gUnk8063F2D0(1, 4, 0);
+// TODO: move
+extern u8 lbl_8063F2D6;
+extern u8 lbl_8063F2D7;
+extern u32 lbl_8063F2D8;
+extern u16 lbl_8063F2DC;
+void *memset(void *s, int c, size_t n);
+MEMHeapHandle MEMCreateExpHeapEx(void* p1, u32 p2, u16 p3);
+
unkClass gUnk804912B0[16];
@@ -18,4 +26,32 @@ unkClass* func_801DAAE0(void) return NULL;
}
+BOOL func_801DAB28(void)
+{
+ return lbl_8063F2D6;
+}
+
+void func_801DAB30(void)
+{
+ memset(gUnk804912B0, 0, sizeof(gUnk804912B0));
+ lbl_8063F2D8 = 0;
+ lbl_8063F2DC = 0;
+ lbl_8063F2D6 = 1;
+ lbl_8063F2D7 = 0;
+}
+
+MEMHeapHandle func_801DAB78(void* p1, u32 p2, u16 p3)
+{
+ if (!func_801DAB28())
+ return 0;
+ unkClass* r31 = func_801DAAE0();
+ if (!r31)
+ return 0;
+ MEMHeapHandle r3 = MEMCreateExpHeapEx(p1, p2, p3);
+ r31->unk0 = 1;
+ r31->unk4 = r3;
+ r31->unk8 = p2;
+ return r3;
+}
+
}
|