summaryrefslogtreecommitdiff
path: root/src/code_801DB040.cpp
diff options
context:
space:
mode:
authorMax <mparisi@stevens.edu>2020-10-20 12:06:12 -0400
committerMax <mparisi@stevens.edu>2020-10-20 12:06:12 -0400
commitb369377d00bb0333a1928139e3902bdbd75da9a2 (patch)
tree1b0f789ac4f76a1d3e52ddcf93935c7d886195da /src/code_801DB040.cpp
parenta9936229e778d9ec4679b6cd3961c2d70431e8b2 (diff)
match func_801DB07C
Diffstat (limited to 'src/code_801DB040.cpp')
-rw-r--r--src/code_801DB040.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/code_801DB040.cpp b/src/code_801DB040.cpp
index 61b2d05..02094f0 100644
--- a/src/code_801DB040.cpp
+++ b/src/code_801DB040.cpp
@@ -16,8 +16,8 @@ struct unkClass
u32 unk10;
u32 unk14;
FuncPtr unk18;
- unkClass* unk1C;
- unkClass* unk20;
+ unkClass* unk1C; //next?
+ unkClass* unk20; //prev?
};
extern void func_801DBD00(u32 p1, unkClass* p2);
@@ -30,6 +30,7 @@ namespace
//unkStruct gUnk8063F2E0(1, 4, 0);
}
+// head of doubly linked list
extern unkClass* lbl_8063F2E8; //TODO: rename/define/internalize
extern u32 lbl_8063F2EC; //TODO: rename/define/internalize
@@ -40,7 +41,7 @@ extern u32 lbl_8063F2EC; //TODO: rename/define/internalize
//static
unkClass* func_801DB040(u32 p1, u32 p2);
-unkClass* func_801DB07C(unkClass* p1, u32 p2);
+unkClass* func_801DB07C(unkClass* p1, BOOL p2);
//static
unkClass* func_801DB040(u32 p1, u32 p2)
@@ -51,7 +52,7 @@ unkClass* func_801DB040(u32 p1, u32 p2)
return NULL;
}
-unkClass* func_801DB07C(unkClass* p1, u32 p2)
+unkClass* func_801DB07C(unkClass* p1, BOOL p2)
{
unkClass* r31;
if (p1->unk18 && p1->unk18(p1->unkC, p1->unk10, p1->unk14) == 0)
@@ -67,16 +68,18 @@ unkClass* func_801DB07C(unkClass* p1, u32 p2)
}
p1->unkC = NULL;
r31 = p1->unk1C;
+ // TODO: remove p1 from doubly linked list?
if (p2) {
unkClass* r3 = p1->unk20;
if (r3)
r3->unk1C = r31;
else
- lbl_8063F2E8 = r31;
+ lbl_8063F2E8 = r31; // set new head
if (r31)
r31->unk20 = p1->unk20;
+ // TODO: free p1?
func_801DBD00(lbl_8063F2EC, p1);
}
return r31;