diff options
author | Max <mparisi@stevens.edu> | 2020-11-02 11:05:00 -0500 |
---|---|---|
committer | Max <mparisi@stevens.edu> | 2020-11-02 11:05:00 -0500 |
commit | ad63244f06faaf566506dfbba2c8c8e71226180c (patch) | |
tree | aaefa91aab95e65950517af26beb47b56179e893 | |
parent | 5818130a789d0326c52b72b42240aaf16e5ecbe9 (diff) |
start decompiling code_801DD8C0.o
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | asm/NdevExi2A/DebuggerDriver.s (renamed from asm/SDK/NdevExi2A/DebuggerDriver.s) | 0 | ||||
-rw-r--r-- | asm/NdevExi2A/exi2.s (renamed from asm/SDK/NdevExi2A/exi2.s) | 0 | ||||
-rw-r--r-- | asm/code_801DD8C0_asm.s (renamed from asm/code_801DD8C0.s) | 151 | ||||
-rw-r--r-- | include/code_801DD5C8.h | 9 | ||||
-rw-r--r-- | obj_files.mk | 7 | ||||
-rw-r--r-- | src/code_801DAAE0.cpp | 3 | ||||
-rw-r--r-- | src/code_801DBB3C.cpp | 4 | ||||
-rw-r--r-- | src/code_801DD5C8.cpp | 5 | ||||
-rw-r--r-- | src/code_801DD8C0.cpp | 127 |
10 files changed, 150 insertions, 160 deletions
@@ -28,7 +28,7 @@ TARGET := pbr_pal BUILD_DIR := build/$(TARGET) -SRC_DIRS := src src/SDK/OS src/SDK/EXI src/SDK/SI src/SDK/DB src/SDK/VI src/SDK/MTX \ +SRC_DIRS := src src/NdevExi2A src/SDK/OS src/SDK/EXI src/SDK/SI src/SDK/DB src/SDK/VI src/SDK/MTX \ src/SDK/GX src/SDK/DVD src/SDK/AI src/SDK/AX src/SDK/AXFX src/SDK/MEM src/SDK/MIX src/SDK/DSP \ src/SDK/TPL src/SDK/THP src/SDK/KPAD src/SDK/CX src/SDK/PAD src/SDK/WPAD src/SDK/FS src/SDK/IPC \ src/SDK/NdevExi2A src/SDK/USB src/SDK/EUART src/SDK/WUD src/SDK/BTE src/SDK/NAND \ @@ -39,7 +39,7 @@ SRC_DIRS := src src/SDK/OS src/SDK/EXI src/SDK/SI src/SDK/DB src/SDK/VI src/SDK/ src/MSL_C/MSL_Common_Embedded/Math src/MSL_C/PPC_EABI src/Runtime \ src/MetroTRK src/nw4r/db src/nw4r/ut src/nw4r/snd src/nw4r/ut/detail \ src/nw4r/snd/detail src/nw4r/math src/nw4r/lyt src/nw4r/lyt/detail -ASM_DIRS := asm asm/SDK/OS asm/SDK/EXI asm/SDK/SI asm/SDK/DB asm/SDK/VI asm/SDK/MTX \ +ASM_DIRS := asm asm/NdevExi2A asm/SDK/OS asm/SDK/EXI asm/SDK/SI asm/SDK/DB asm/SDK/VI asm/SDK/MTX \ asm/SDK/GX asm/SDK/DVD asm/SDK/AI asm/SDK/AX asm/SDK/AXFX asm/SDK/MEM asm/SDK/MIX asm/SDK/DSP \ asm/SDK/TPL asm/SDK/THP asm/SDK/KPAD asm/SDK/CX asm/SDK/PAD asm/SDK/WPAD asm/SDK/FS asm/SDK/IPC \ asm/SDK/NdevExi2A asm/SDK/USB asm/SDK/EUART asm/SDK/WUD asm/SDK/BTE asm/SDK/NAND \ diff --git a/asm/SDK/NdevExi2A/DebuggerDriver.s b/asm/NdevExi2A/DebuggerDriver.s index bf83ef9..bf83ef9 100644 --- a/asm/SDK/NdevExi2A/DebuggerDriver.s +++ b/asm/NdevExi2A/DebuggerDriver.s diff --git a/asm/SDK/NdevExi2A/exi2.s b/asm/NdevExi2A/exi2.s index d69761e..d69761e 100644 --- a/asm/SDK/NdevExi2A/exi2.s +++ b/asm/NdevExi2A/exi2.s diff --git a/asm/code_801DD8C0.s b/asm/code_801DD8C0_asm.s index a381f03..c4954b5 100644 --- a/asm/code_801DD8C0.s +++ b/asm/code_801DD8C0_asm.s @@ -2,157 +2,6 @@ .section .text, "ax" # 0x80006980 - 0x803E1E60
-.global func_801DD8C0
-func_801DD8C0:
-/* 801DD8C0 001D9520 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DD8C4 001D9524 7C 08 02 A6 */ mflr r0
-/* 801DD8C8 001D9528 2C 04 00 00 */ cmpwi r4, 0
-/* 801DD8CC 001D952C 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DD8D0 001D9530 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DD8D4 001D9534 3B E0 00 00 */ li r31, 0
-/* 801DD8D8 001D9538 93 C1 00 08 */ stw r30, 8(r1)
-/* 801DD8DC 001D953C 7C 7E 1B 78 */ mr r30, r3
-/* 801DD8E0 001D9540 90 83 00 00 */ stw r4, 0(r3)
-/* 801DD8E4 001D9544 93 E3 00 04 */ stw r31, 4(r3)
-/* 801DD8E8 001D9548 41 82 00 54 */ beq lbl_801DD93C
-/* 801DD8EC 001D954C 4B FF D2 3D */ bl func_801DAB28
-/* 801DD8F0 001D9550 2C 03 00 00 */ cmpwi r3, 0
-/* 801DD8F4 001D9554 41 82 00 14 */ beq lbl_801DD908
-/* 801DD8F8 001D9558 80 6D 96 38 */ lwz r3, lbl_8063E8F8-_SDA_BASE_(r13)
-/* 801DD8FC 001D955C 38 80 00 10 */ li r4, 0x10
-/* 801DD900 001D9560 4B FF D3 95 */ bl func_801DAC94
-/* 801DD904 001D9564 48 00 00 08 */ b lbl_801DD90C
-lbl_801DD908:
-/* 801DD908 001D9568 7F E3 FB 78 */ mr r3, r31
-lbl_801DD90C:
-/* 801DD90C 001D956C 2C 03 00 00 */ cmpwi r3, 0
-/* 801DD910 001D9570 41 82 00 28 */ beq lbl_801DD938
-/* 801DD914 001D9574 38 80 00 00 */ li r4, 0
-/* 801DD918 001D9578 38 00 00 0C */ li r0, 0xc
-/* 801DD91C 001D957C 90 83 00 00 */ stw r4, 0(r3)
-/* 801DD920 001D9580 C0 22 95 F0 */ lfs f1, lbl_80641BF0-_SDA2_BASE_(r2)
-/* 801DD924 001D9584 B0 83 00 04 */ sth r4, 4(r3)
-/* 801DD928 001D9588 C0 02 95 F4 */ lfs f0, lbl_80641BF4-_SDA2_BASE_(r2)
-/* 801DD92C 001D958C B0 03 00 06 */ sth r0, 6(r3)
-/* 801DD930 001D9590 D0 23 00 08 */ stfs f1, 8(r3)
-/* 801DD934 001D9594 D0 03 00 0C */ stfs f0, 0xc(r3)
-lbl_801DD938:
-/* 801DD938 001D9598 90 7E 00 04 */ stw r3, 4(r30)
-lbl_801DD93C:
-/* 801DD93C 001D959C 7F C3 F3 78 */ mr r3, r30
-/* 801DD940 001D95A0 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DD944 001D95A4 83 C1 00 08 */ lwz r30, 8(r1)
-/* 801DD948 001D95A8 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DD94C 001D95AC 7C 08 03 A6 */ mtlr r0
-/* 801DD950 001D95B0 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DD954 001D95B4 4E 80 00 20 */ blr
-
-.global func_801DD958
-func_801DD958:
-/* 801DD958 001D95B8 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DD95C 001D95BC 7C 08 02 A6 */ mflr r0
-/* 801DD960 001D95C0 2C 03 00 00 */ cmpwi r3, 0
-/* 801DD964 001D95C4 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DD968 001D95C8 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DD96C 001D95CC 7C 9F 23 78 */ mr r31, r4
-/* 801DD970 001D95D0 93 C1 00 08 */ stw r30, 8(r1)
-/* 801DD974 001D95D4 7C 7E 1B 78 */ mr r30, r3
-/* 801DD978 001D95D8 41 82 00 34 */ beq lbl_801DD9AC
-/* 801DD97C 001D95DC 80 83 00 04 */ lwz r4, 4(r3)
-/* 801DD980 001D95E0 2C 04 00 00 */ cmpwi r4, 0
-/* 801DD984 001D95E4 41 82 00 14 */ beq lbl_801DD998
-/* 801DD988 001D95E8 80 6D 96 38 */ lwz r3, lbl_8063E8F8-_SDA_BASE_(r13)
-/* 801DD98C 001D95EC 4B FF D3 BD */ bl func_801DAD48
-/* 801DD990 001D95F0 38 00 00 00 */ li r0, 0
-/* 801DD994 001D95F4 90 1E 00 04 */ stw r0, 4(r30)
-lbl_801DD998:
-/* 801DD998 001D95F8 2C 1F 00 00 */ cmpwi r31, 0
-/* 801DD99C 001D95FC 40 81 00 10 */ ble lbl_801DD9AC
-/* 801DD9A0 001D9600 80 6D 96 38 */ lwz r3, lbl_8063E8F8-_SDA_BASE_(r13)
-/* 801DD9A4 001D9604 7F C4 F3 78 */ mr r4, r30
-/* 801DD9A8 001D9608 4B FF D3 A1 */ bl func_801DAD48
-lbl_801DD9AC:
-/* 801DD9AC 001D960C 7F C3 F3 78 */ mr r3, r30
-/* 801DD9B0 001D9610 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DD9B4 001D9614 83 C1 00 08 */ lwz r30, 8(r1)
-/* 801DD9B8 001D9618 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DD9BC 001D961C 7C 08 03 A6 */ mtlr r0
-/* 801DD9C0 001D9620 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DD9C4 001D9624 4E 80 00 20 */ blr
-
-.global func_801DD9C8
-func_801DD9C8:
-/* 801DD9C8 001D9628 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DD9CC 001D962C 7C 08 02 A6 */ mflr r0
-/* 801DD9D0 001D9630 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DD9D4 001D9634 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DD9D8 001D9638 7C 7F 1B 78 */ mr r31, r3
-/* 801DD9DC 001D963C 80 83 00 04 */ lwz r4, 4(r3)
-/* 801DD9E0 001D9640 2C 04 00 00 */ cmpwi r4, 0
-/* 801DD9E4 001D9644 41 82 00 9C */ beq lbl_801DDA80
-/* 801DD9E8 001D9648 80 04 00 00 */ lwz r0, 0(r4)
-/* 801DD9EC 001D964C 38 60 00 00 */ li r3, 0
-/* 801DD9F0 001D9650 2C 00 00 00 */ cmpwi r0, 0
-/* 801DD9F4 001D9654 41 82 00 14 */ beq lbl_801DDA08
-/* 801DD9F8 001D9658 A0 04 00 06 */ lhz r0, 6(r4)
-/* 801DD9FC 001D965C 54 00 07 FF */ clrlwi. r0, r0, 0x1f
-/* 801DDA00 001D9660 41 82 00 08 */ beq lbl_801DDA08
-/* 801DDA04 001D9664 38 60 00 01 */ li r3, 1
-lbl_801DDA08:
-/* 801DDA08 001D9668 2C 03 00 00 */ cmpwi r3, 0
-/* 801DDA0C 001D966C 41 82 00 74 */ beq lbl_801DDA80
-/* 801DDA10 001D9670 7C 83 23 78 */ mr r3, r4
-/* 801DDA14 001D9674 4B FF FB B5 */ bl func_801DD5C8
-/* 801DDA18 001D9678 80 7F 00 04 */ lwz r3, 4(r31)
-/* 801DDA1C 001D967C 7F E4 FB 78 */ mr r4, r31
-/* 801DDA20 001D9680 38 A0 00 00 */ li r5, 0
-/* 801DDA24 001D9684 4B FF FD D9 */ bl func_801DD7FC
-/* 801DDA28 001D9688 80 DF 00 04 */ lwz r6, 4(r31)
-/* 801DDA2C 001D968C 38 80 00 01 */ li r4, 1
-/* 801DDA30 001D9690 A0 A6 00 06 */ lhz r5, 6(r6)
-/* 801DDA34 001D9694 54 A0 07 39 */ rlwinm. r0, r5, 0, 0x1c, 0x1c
-/* 801DDA38 001D9698 40 82 00 2C */ bne lbl_801DDA64
-/* 801DDA3C 001D969C 80 06 00 00 */ lwz r0, 0(r6)
-/* 801DDA40 001D96A0 38 60 00 00 */ li r3, 0
-/* 801DDA44 001D96A4 2C 00 00 00 */ cmpwi r0, 0
-/* 801DDA48 001D96A8 41 82 00 10 */ beq lbl_801DDA58
-/* 801DDA4C 001D96AC 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
-/* 801DDA50 001D96B0 41 82 00 08 */ beq lbl_801DDA58
-/* 801DDA54 001D96B4 38 60 00 01 */ li r3, 1
-lbl_801DDA58:
-/* 801DDA58 001D96B8 2C 03 00 00 */ cmpwi r3, 0
-/* 801DDA5C 001D96BC 41 82 00 08 */ beq lbl_801DDA64
-/* 801DDA60 001D96C0 38 80 00 00 */ li r4, 0
-lbl_801DDA64:
-/* 801DDA64 001D96C4 2C 04 00 00 */ cmpwi r4, 0
-/* 801DDA68 001D96C8 41 82 00 18 */ beq lbl_801DDA80
-/* 801DDA6C 001D96CC A0 66 00 06 */ lhz r3, 6(r6)
-/* 801DDA70 001D96D0 54 60 06 F7 */ rlwinm. r0, r3, 0, 0x1b, 0x1b
-/* 801DDA74 001D96D4 40 82 00 0C */ bne lbl_801DDA80
-/* 801DDA78 001D96D8 54 60 04 3C */ rlwinm r0, r3, 0, 0x10, 0x1e
-/* 801DDA7C 001D96DC B0 06 00 06 */ sth r0, 6(r6)
-lbl_801DDA80:
-/* 801DDA80 001D96E0 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DDA84 001D96E4 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DDA88 001D96E8 7C 08 03 A6 */ mtlr r0
-/* 801DDA8C 001D96EC 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DDA90 001D96F0 4E 80 00 20 */ blr
-
-.global func_801DDA94
-func_801DDA94:
-/* 801DDA94 001D96F4 80 63 00 00 */ lwz r3, 0(r3)
-/* 801DDA98 001D96F8 48 00 00 14 */ b lbl_801DDAAC
-lbl_801DDA9C:
-/* 801DDA9C 001D96FC A0 03 00 00 */ lhz r0, 0(r3)
-/* 801DDAA0 001D9700 7C 00 20 40 */ cmplw r0, r4
-/* 801DDAA4 001D9704 4D 82 00 20 */ beqlr
-/* 801DDAA8 001D9708 80 63 00 0C */ lwz r3, 0xc(r3)
-lbl_801DDAAC:
-/* 801DDAAC 001D970C 2C 03 00 00 */ cmpwi r3, 0
-/* 801DDAB0 001D9710 40 82 FF EC */ bne lbl_801DDA9C
-/* 801DDAB4 001D9714 38 60 00 00 */ li r3, 0
-/* 801DDAB8 001D9718 4E 80 00 20 */ blr
-
.global func_801DDABC
func_801DDABC:
/* 801DDABC 001D971C 94 21 FF E0 */ stwu r1, -0x20(r1)
diff --git a/include/code_801DD5C8.h b/include/code_801DD5C8.h index 55499b2..15df23f 100644 --- a/include/code_801DD5C8.h +++ b/include/code_801DD5C8.h @@ -7,18 +7,21 @@ extern "C" { // TODO: identify data structures
+// size == 0x10
struct gUnkClass9
{
u8 pad[0xC];
- void (*unkC)(u32, gUnkClass9*, u32, float);
+ void (*unkC)(void*, gUnkClass9*, u32, float); // TODO: identify 1st parameter
};
+// size >= 0xC
struct gUnkClass8
{
- u8 pad[0x2];
+ u16 unk0; // TODO: this is a guess
u16 unk2;
gUnkClass9* unk4;
float unk8;
+ gUnkClass8* next; // TODO: this is a guess
};
struct gUnkClass7
@@ -31,7 +34,7 @@ struct gUnkClass7 };
void func_801DD5C8(gUnkClass7* p1, float p2);
-void func_801DD7FC(gUnkClass7* p1, u32 p2, u32 p3);
+void func_801DD7FC(gUnkClass7* p1, void* p2, u32 p3);
#ifdef __cplusplus
}
diff --git a/obj_files.mk b/obj_files.mk index a7451e0..d667ec7 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -218,8 +218,8 @@ SPLIT_O_FILES := \ $(BUILD_DIR)/asm/MetroTRK/main.o \ $(BUILD_DIR)/asm/MetroTRK/CircleBuffer.o \ $(BUILD_DIR)/asm/MetroTRK/MWCriticalSection_gc.o \ - $(BUILD_DIR)/asm/SDK/NdevExi2A/DebuggerDriver.o \ - $(BUILD_DIR)/asm/SDK/NdevExi2A/exi2.o \ + $(BUILD_DIR)/asm/NdevExi2A/DebuggerDriver.o \ + $(BUILD_DIR)/asm/NdevExi2A/exi2.o \ $(BUILD_DIR)/src/code_801DAA30.o \ $(BUILD_DIR)/src/code_801DAAE0.o \ $(BUILD_DIR)/src/code_801DB040.o \ @@ -228,7 +228,8 @@ SPLIT_O_FILES := \ $(BUILD_DIR)/src/code_801DBE90.o \ $(BUILD_DIR)/src/code_801DCE6C.o \ $(BUILD_DIR)/src/code_801DD5C8.o \ - $(BUILD_DIR)/asm/code_801DD8C0.o \ + $(BUILD_DIR)/src/code_801DD8C0.o \ + $(BUILD_DIR)/asm/code_801DD8C0_asm.o \ $(BUILD_DIR)/asm/code_801DDF78.o \ $(BUILD_DIR)/asm/code_801DF040.o \ $(BUILD_DIR)/asm/code_801E07E8.o \ diff --git a/src/code_801DAAE0.cpp b/src/code_801DAAE0.cpp index 0db2018..d1b0945 100644 --- a/src/code_801DAAE0.cpp +++ b/src/code_801DAAE0.cpp @@ -98,6 +98,7 @@ u16 func_801DAC90(MEMHeapHandle heap, u16 groupID) return MEMSetGroupIDForExpHeap(heap, groupID);
}
+// "new" used in combination with func_801DAD48
void* func_801DAC94(MEMHeapHandle heap, u32 size)
{
return MEMAllocFromExpHeapEx(heap, size, 32);
@@ -132,6 +133,8 @@ static BOOL func_801DAD1C(MEMHeapHandle heap, void* memBlock, u32 size) return MEMResizeForMBlockExpHeap(heap, memBlock, size) != 0;
}
+// TODO: another "delete" that seems to be called in some destructors
+// see func_8016E5C0 for a destructor that calls both this and operator delete
void func_801DAD48(MEMHeapHandle heap, void* memBlock)
{
if (memBlock)
diff --git a/src/code_801DBB3C.cpp b/src/code_801DBB3C.cpp index bfaa7cd..0092622 100644 --- a/src/code_801DBB3C.cpp +++ b/src/code_801DBB3C.cpp @@ -44,6 +44,7 @@ static void func_801DBB48(gUnkClass2 *p1, size_t nodes, size_t size) r8->unk0 = 0;
}
+// Allocate linked list node from free store
gUnkClass1* func_801DBC58(gUnkClass2* p1)
{
gUnkClass3* r31 = p1->unk18;
@@ -53,6 +54,8 @@ gUnkClass1* func_801DBC58(gUnkClass2* p1) p1->unk18 = r31->unk0;
goto passCheck;
}
+
+failCheck:
func_801DBB44(r30);
return NULL;
passCheck:
@@ -63,6 +66,7 @@ passCheck: return &r31->unk4;
}
+// Return linked list node to free store
void func_801DBD00(gUnkClass2* p1, gUnkClass1* p2)
{
u32 r31;
diff --git a/src/code_801DD5C8.cpp b/src/code_801DD5C8.cpp index f91832a..77c8ae3 100644 --- a/src/code_801DD5C8.cpp +++ b/src/code_801DD5C8.cpp @@ -3,6 +3,9 @@ static ctorStruct gUnk8063F348(1, 4, 0);
+// gUnkClass7.cpp
+// TODO: convert to C++ member functions?
+
extern "C" {
void func_801DD5C8(gUnkClass7* p1, float p2)
@@ -69,7 +72,7 @@ void func_801DD5C8(gUnkClass7* p1, float p2) p1->unk6 |= 0x2;
}
-void func_801DD7FC(gUnkClass7* p1, u32 p2, u32 p3)
+void func_801DD7FC(gUnkClass7* p1, void* p2, u32 p3)
{
if (!p1->unk0 || !(p1->unk6 & 0x2))
return;
diff --git a/src/code_801DD8C0.cpp b/src/code_801DD8C0.cpp new file mode 100644 index 0000000..8636ccc --- /dev/null +++ b/src/code_801DD8C0.cpp @@ -0,0 +1,127 @@ +#include <SDK/mem.h>
+#include "code_801DAAE0.h"
+#include "code_801DD5C8.h"
+
+// TODO: C++
+
+extern "C" {
+
+// TODO: determine file that defines this
+extern MEMHeapHandle lbl_8063E8F8;
+
+struct gUnkClass10
+{
+ gUnkClass8* unk0; // TODO: check type
+ gUnkClass7* unk4;
+};
+
+// TODO: gUnkClass10 constructor?
+gUnkClass10* func_801DD8C0(gUnkClass10* p1, gUnkClass8* p2)
+{
+ p1->unk0 = p2;
+ p1->unk4 = 0;
+ if (p2) {
+ gUnkClass7* r3;
+ if (func_801DAB28())
+ r3 = (gUnkClass7*)func_801DAC94(lbl_8063E8F8, sizeof(gUnkClass7));
+ else
+ r3 = NULL;
+
+ if (r3) {
+ r3->unk0 = NULL;
+ r3->unk4 = 0;
+ r3->unk6 = 0xC;
+ r3->unk8 = 1.0f;
+ r3->unkC = 0.0f;
+ }
+ p1->unk4 = r3;
+ }
+ return p1;
+}
+
+// TODO: Destructor. Get mwcc to generate parts of this function implicitly
+gUnkClass10* func_801DD958(gUnkClass10* p1, s32 p2)
+{
+ if (p1) {
+ if (p1->unk4) {
+ func_801DAD48(lbl_8063E8F8, p1->unk4);
+ p1->unk4 = NULL;
+ }
+ if (p2 > 0)
+ func_801DAD48(lbl_8063E8F8, p1);
+ }
+ return p1;
+}
+
+// NONMATCHING
+void func_801DD9C8(gUnkClass10* p1, float p2)
+{
+ if (p1->unk4) {
+ BOOL flag = FALSE;
+ if (p1->unk4->unk0 && (p1->unk4->unk6 & 0x1))
+ flag = TRUE;
+ if (flag) {
+ func_801DD5C8(p1->unk4, p2);
+ func_801DD7FC(p1->unk4, p1, 0);
+ BOOL flag2 = TRUE; //r4
+ if (!(p1->unk4->unk6 & 0x8)) {
+ BOOL flag3 = FALSE; //r3
+ if (p1->unk4->unk0 && (p1->unk4->unk6 & 0x1)) {
+ flag3 = TRUE;
+ }
+ if (flag3)
+ flag2 = FALSE;
+ if (flag2 && !(p1->unk4->unk6 & 0x10)) {
+ p1->unk4->unk6 &= ~0x1;
+ }
+ }
+ }
+ }
+}
+
+// TODO: assuming gUnkClass8* member here
+//static
+gUnkClass8* func_801DDA94(gUnkClass10* p1, u16 p2)
+{
+ gUnkClass8* p = p1->unk0;
+ while (p) {
+ if (p->unk0 == p2)
+ return p;
+ p = p->next;
+ }
+ return NULL;
+}
+
+func_801DDABC
+{
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+} //extern "C"
|