From 047d52bd174f2b8553b9f2958a98639d6dc3e4ec Mon Sep 17 00:00:00 2001 From: Max Date: Fri, 23 Oct 2020 01:52:33 -0400 Subject: match func_801DBD00 --- asm/code_801DBB3C_asm.s | 33 --------------------------------- include/code_801DBB3C.h | 6 +++--- src/code_801DBB3C.cpp | 26 ++++++++++++++++++-------- 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); + } } -*/ + } -- cgit v1.2.3