summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax <mparisi@stevens.edu>2020-10-23 01:52:33 -0400
committerMax <mparisi@stevens.edu>2020-10-23 01:52:33 -0400
commit047d52bd174f2b8553b9f2958a98639d6dc3e4ec (patch)
tree87c56c385b21d8c0a4ce42d3c33cf3521cdcdf55
parentcabc694f5a8b403648532bb8cf42cf88f1272e5f (diff)
match func_801DBD00
-rw-r--r--asm/code_801DBB3C_asm.s33
-rw-r--r--include/code_801DBB3C.h6
-rw-r--r--src/code_801DBB3C.cpp26
3 files changed, 21 insertions, 44 deletions
diff --git a/asm/code_801DBB3C_asm.s b/asm/code_801DBB3C_asm.s
index a9ea533..970f84a 100644
--- a/asm/code_801DBB3C_asm.s
+++ b/asm/code_801DBB3C_asm.s
@@ -2,39 +2,6 @@
.section .text, "ax" # 0x80006980 - 0x803E1E60
-.global func_801DBD00
-func_801DBD00:
-/* 801DBD00 001D7960 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 801DBD04 001D7964 7C 08 02 A6 */ mflr r0
-/* 801DBD08 001D7968 2C 04 00 00 */ cmpwi r4, 0
-/* 801DBD0C 001D796C 90 01 00 24 */ stw r0, 0x24(r1)
-/* 801DBD10 001D7970 93 E1 00 1C */ stw r31, 0x1c(r1)
-/* 801DBD14 001D7974 93 C1 00 18 */ stw r30, 0x18(r1)
-/* 801DBD18 001D7978 93 A1 00 14 */ stw r29, 0x14(r1)
-/* 801DBD1C 001D797C 7C 7D 1B 78 */ mr r29, r3
-/* 801DBD20 001D7980 41 82 00 38 */ beq lbl_801DBD58
-/* 801DBD24 001D7984 80 03 00 18 */ lwz r0, 0x18(r3)
-/* 801DBD28 001D7988 3B C4 FF FC */ addi r30, r4, -4
-/* 801DBD2C 001D798C 90 04 FF FC */ stw r0, -4(r4)
-/* 801DBD30 001D7990 80 83 00 00 */ lwz r4, 0(r3)
-/* 801DBD34 001D7994 38 04 FF FF */ addi r0, r4, -1
-/* 801DBD38 001D7998 90 03 00 00 */ stw r0, 0(r3)
-/* 801DBD3C 001D799C 4B FF FE 01 */ bl func_801DBB3C
-/* 801DBD40 001D79A0 7C 7F 1B 78 */ mr r31, r3
-/* 801DBD44 001D79A4 38 60 00 00 */ li r3, 0
-/* 801DBD48 001D79A8 4B FF FD FD */ bl func_801DBB44
-/* 801DBD4C 001D79AC 93 DD 00 18 */ stw r30, 0x18(r29)
-/* 801DBD50 001D79B0 7F E3 FB 78 */ mr r3, r31
-/* 801DBD54 001D79B4 4B FF FD F1 */ bl func_801DBB44
-lbl_801DBD58:
-/* 801DBD58 001D79B8 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 801DBD5C 001D79BC 83 E1 00 1C */ lwz r31, 0x1c(r1)
-/* 801DBD60 001D79C0 83 C1 00 18 */ lwz r30, 0x18(r1)
-/* 801DBD64 001D79C4 83 A1 00 14 */ lwz r29, 0x14(r1)
-/* 801DBD68 001D79C8 7C 08 03 A6 */ mtlr r0
-/* 801DBD6C 001D79CC 38 21 00 20 */ addi r1, r1, 0x20
-/* 801DBD70 001D79D0 4E 80 00 20 */ blr
-
.global func_801DBD74
func_801DBD74:
/* 801DBD74 001D79D4 94 21 FF F0 */ stwu r1, -0x10(r1)
diff --git a/include/code_801DBB3C.h b/include/code_801DBB3C.h
index 34ffe6a..bbf2c39 100644
--- a/include/code_801DBB3C.h
+++ b/include/code_801DBB3C.h
@@ -17,12 +17,12 @@ struct gUnkClass3
// linked list node free store?
struct gUnkClass2
{
- u32 unk0;
+ u32 unk0; // counter?
u32 unk4;
u8 pad[0x4];
- size_t unkC;
+ size_t unkC; // block size
u8 pad2[0x8];
- gUnkClass3* unk18;
+ gUnkClass3* unk18; // next block?
};
gUnkClass1* func_801DBC58(gUnkClass2* p1);
diff --git a/src/code_801DBB3C.cpp b/src/code_801DBB3C.cpp
index d821a9e..8400bc9 100644
--- a/src/code_801DBB3C.cpp
+++ b/src/code_801DBB3C.cpp
@@ -38,13 +38,13 @@ namespace
extern "C" {
//static
-unkClass* func_801DBB3C(void)
+u32 func_801DBB3C(void)
{
return 0;
}
//static
-void func_801DBB44(unkClass*)
+void func_801DBB44(u32)
{
}
@@ -158,10 +158,10 @@ asm void func_801DBB48(unkClass *p1, u32 p2, u32 p3)
gUnkClass1* func_801DBC58(gUnkClass2* p1)
{
gUnkClass3* r31 = p1->unk18;
- unkClass* r30 = func_801DBB3C();
+ u32 r30 = func_801DBB3C();
func_801DBB44(0);
if (r31) {
- p1->unk18 = r31->unk0;
+ p1->unk18 = r31->unk0; // point unk18 to possible next free block?
goto passCheck;
}
func_801DBB44(r30);
@@ -173,12 +173,22 @@ passCheck:
p1->unk4 = p1->unk0;
return &r31->unk4;
}
-/*
-func_801DBD00
+
+// return node p2 to free store p1
+void func_801DBD00(gUnkClass2* p1, gUnkClass1* p2)
{
-
+ u32 r31;
+ if (p2) {
+ gUnkClass3* r30 = (gUnkClass3*)((u8*)p2 - 4);
+ r30->unk0 = p1->unk18;
+ p1->unk0--;
+ r31 = func_801DBB3C();
+ func_801DBB44(0);
+ p1->unk18 = r30;
+ func_801DBB44(r31);
+ }
}
-*/
+
}