summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2020-10-21 23:08:58 -0500
committerSeth Barberee <seth.barberee@gmail.com>2020-10-21 23:08:58 -0500
commitba5da3812f851b4c7ee2830705b7854d4318200e (patch)
tree368849b81e0fe6a4ef5c4e504747307922066c07
parente1f9c17e3569e666d81f9d20fb9d57d4cd614eb0 (diff)
pretty simple decomp of funcs
-rw-r--r--asm/code_8041AD0.s431
-rw-r--r--src/code_8041AD0.c265
-rw-r--r--src/code_80428A0.c2
3 files changed, 264 insertions, 434 deletions
diff --git a/asm/code_8041AD0.s b/asm/code_8041AD0.s
index 6ddeb36..c7ad98b 100644
--- a/asm/code_8041AD0.s
+++ b/asm/code_8041AD0.s
@@ -5,437 +5,6 @@
.text
- thumb_func_start sub_8041C94
-sub_8041C94:
- push {lr}
- ldr r1, _08041CA4
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- .align 2, 0
-_08041CA4: .4byte 0x00000171
- thumb_func_end sub_8041C94
-
- thumb_func_start sub_8041CA8
-sub_8041CA8:
- push {lr}
- movs r1, 0x7
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041CA8
-
- thumb_func_start sub_8041CB8
-sub_8041CB8:
- push {lr}
- ldr r1, _08041CC8
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- .align 2, 0
-_08041CC8: .4byte 0x0000018b
- thumb_func_end sub_8041CB8
-
- thumb_func_start sub_8041CCC
-sub_8041CCC:
- push {lr}
- movs r1, 0xC5
- lsls r1, 1
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041CCC
-
- thumb_func_start sub_8041CDC
-sub_8041CDC:
- push {lr}
- movs r1, 0x5
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041CDC
-
- thumb_func_start sub_8041CEC
-sub_8041CEC:
- push {lr}
- ldr r1, _08041CF8
- bl sub_80421C0
- pop {r0}
- bx r0
- .align 2, 0
-_08041CF8: .4byte 0x0000019d
- thumb_func_end sub_8041CEC
-
- thumb_func_start nullsub_74
-nullsub_74:
- bx lr
- thumb_func_end nullsub_74
-
- thumb_func_start sub_8041D00
-sub_8041D00:
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- movs r1, 0x2F
- movs r2, 0x1
- bl sub_804151C
- adds r0, r4, 0
- movs r1, 0x30
- movs r2, 0x1
- bl sub_804151C
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8041D00
-
- thumb_func_start nullsub_75
-nullsub_75:
- bx lr
- thumb_func_end nullsub_75
-
- thumb_func_start nullsub_76
-nullsub_76:
- bx lr
- thumb_func_end nullsub_76
-
- thumb_func_start nullsub_77
-nullsub_77:
- bx lr
- thumb_func_end nullsub_77
-
- thumb_func_start nullsub_78
-nullsub_78:
- bx lr
- thumb_func_end nullsub_78
-
- thumb_func_start nullsub_79
-nullsub_79:
- bx lr
- thumb_func_end nullsub_79
-
- thumb_func_start nullsub_80
-nullsub_80:
- bx lr
- thumb_func_end nullsub_80
-
- thumb_func_start sub_8041D38
-sub_8041D38:
- push {lr}
- movs r1, 0x21
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041D38
-
- thumb_func_start sub_8041D48
-sub_8041D48:
- push {lr}
- ldr r1, _08041D54
- bl sub_80421C0
- pop {r0}
- bx r0
- .align 2, 0
-_08041D54: .4byte 0x00000191
- thumb_func_end sub_8041D48
-
- thumb_func_start nullsub_81
-nullsub_81:
- bx lr
- thumb_func_end nullsub_81
-
- thumb_func_start sub_8041D5C
-sub_8041D5C:
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8042768
- lsls r0, 24
- cmp r0, 0
- beq _08041D7E
- ldr r0, [r4, 0x70]
- movs r1, 0x89
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- movs r2, 0x1
- movs r3, 0xB
- bl sub_803ED30
-_08041D7E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8041D5C
-
- thumb_func_start sub_8041D84
-sub_8041D84:
- push {lr}
- ldr r1, _08041D90
- bl sub_80421C0
- pop {r0}
- bx r0
- .align 2, 0
-_08041D90: .4byte 0x0000019f
- thumb_func_end sub_8041D84
-
- thumb_func_start nullsub_82
-nullsub_82:
- bx lr
- thumb_func_end nullsub_82
-
- thumb_func_start nullsub_83
-nullsub_83:
- bx lr
- thumb_func_end nullsub_83
-
- thumb_func_start sub_8041D9C
-sub_8041D9C:
- push {lr}
- ldr r1, _08041DAC
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- .align 2, 0
-_08041DAC: .4byte 0x00000131
- thumb_func_end sub_8041D9C
-
- thumb_func_start sub_8041DB0
-sub_8041DB0:
- push {lr}
- movs r1, 0x30
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041DB0
-
- thumb_func_start nullsub_84
-nullsub_84:
- bx lr
- thumb_func_end nullsub_84
-
- thumb_func_start nullsub_85
-nullsub_85:
- bx lr
- thumb_func_end nullsub_85
-
- thumb_func_start nullsub_204
-nullsub_204:
- bx lr
- thumb_func_end nullsub_204
-
- thumb_func_start nullsub_86
-nullsub_86:
- bx lr
- thumb_func_end nullsub_86
-
- thumb_func_start nullsub_87
-nullsub_87:
- bx lr
- thumb_func_end nullsub_87
-
- thumb_func_start nullsub_88
-nullsub_88:
- bx lr
- thumb_func_end nullsub_88
-
- thumb_func_start sub_8041DD8
-sub_8041DD8:
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- asrs r5, r1, 16
- movs r1, 0xE
- bl sub_8071858
- lsls r0, 24
- cmp r0, 0
- beq _08041DF8
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x1
- bl sub_804151C
- b _08041E02
-_08041DF8:
- adds r0, r4, 0
- movs r1, 0xE
- movs r2, 0x1
- bl sub_804151C
-_08041E02:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8041DD8
-
- thumb_func_start nullsub_89
-nullsub_89:
- bx lr
- thumb_func_end nullsub_89
-
- thumb_func_start sub_8041E0C
-sub_8041E0C:
- push {lr}
- movs r1, 0x41
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041E0C
-
- thumb_func_start sub_8041E1C
-sub_8041E1C:
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x8F
- lsls r1, 1
- movs r2, 0x1
- bl sub_804151C
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r4, 0
- bl sub_80421C0
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8041E1C
-
- thumb_func_start sub_8041E3C
-sub_8041E3C:
- push {lr}
- movs r1, 0xD7
- lsls r1, 1
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041E3C
-
- thumb_func_start sub_8041E4C
-sub_8041E4C:
- push {lr}
- ldr r1, _08041E5C
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- .align 2, 0
-_08041E5C: .4byte 0x000001b1
- thumb_func_end sub_8041E4C
-
- thumb_func_start sub_8041E60
-sub_8041E60:
- push {lr}
- ldr r1, _08041E70
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- .align 2, 0
-_08041E70: .4byte 0x000001a9
- thumb_func_end sub_8041E60
-
- thumb_func_start sub_8041E74
-sub_8041E74:
- push {lr}
- movs r1, 0xC9
- lsls r1, 1
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041E74
-
- thumb_func_start sub_8041E84
-sub_8041E84:
- push {lr}
- movs r1, 0xC7
- lsls r1, 1
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041E84
-
- thumb_func_start sub_8041E94
-sub_8041E94:
- push {lr}
- movs r1, 0xC8
- lsls r1, 1
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041E94
-
- thumb_func_start sub_8041EA4
-sub_8041EA4:
- push {lr}
- movs r1, 0x15
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041EA4
-
- thumb_func_start sub_8041EB4
-sub_8041EB4:
- push {lr}
- ldr r1, _08041EC4
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- .align 2, 0
-_08041EC4: .4byte 0x00000171
- thumb_func_end sub_8041EB4
-
- thumb_func_start sub_8041EC8
-sub_8041EC8:
- push {lr}
- ldr r1, _08041ED4
- bl sub_80421C0
- pop {r0}
- bx r0
- .align 2, 0
-_08041ED4: .4byte 0x00000197
- thumb_func_end sub_8041EC8
-
- thumb_func_start sub_8041ED8
-sub_8041ED8:
- push {lr}
- ldr r1, _08041EE4
- bl sub_80421C0
- pop {r0}
- bx r0
- .align 2, 0
-_08041EE4: .4byte 0x00000197
- thumb_func_end sub_8041ED8
-
- thumb_func_start sub_8041EE8
-sub_8041EE8:
- push {lr}
- movs r1, 0x15
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041EE8
-
- thumb_func_start sub_8041EF8
-sub_8041EF8:
- push {lr}
- movs r1, 0xF
- movs r2, 0x1
- bl sub_804151C
- pop {r0}
- bx r0
- thumb_func_end sub_8041EF8
-
thumb_func_start sub_8041F08
sub_8041F08:
push {lr}
diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c
index 050f756..6cf8ae0 100644
--- a/src/code_8041AD0.c
+++ b/src/code_8041AD0.c
@@ -1,8 +1,18 @@
#include "global.h"
-extern void sub_804151C(u32 r0, u32 r1, u32 r2);
+struct unkStruct_8041D5C
+{
+ u8 padding[0x70];
+ u8 *unk70[100];
+};
+
+extern void sub_803ED30(u8, struct unkStruct_8041D5C *r0, u8, u8);
+extern void sub_804151C(u32 r0, u32 r1, u8 r2);
extern void sub_80421C0(u32 r0, u32 r1);
-extern void sub_806CDD4(u32 r0, u8, u8);
+extern u8 sub_8042768(void);
+extern void sub_806CDD4(u32 r0, u8, u32);
+extern u8 sub_8071858(u32, u8);
+
void sub_8041AD0(u32 r0)
{
@@ -181,3 +191,254 @@ void nullsub_72(void)
void nullsub_73(void)
{
}
+
+void sub_8041C94(u32 r0)
+{
+ sub_804151C(r0, 0x171, 1);
+}
+
+void sub_8041CA8(u32 r0)
+{
+ sub_804151C(r0, 7, 1);
+}
+
+void sub_8041CB8(u32 r0)
+{
+ sub_804151C(r0, 0x18b, 1);
+}
+
+void sub_8041CCC(u32 r0)
+{
+ sub_804151C(r0, 0xC5 << 1, 1);
+}
+
+void sub_8041CDC(u32 r0)
+{
+ sub_804151C(r0, 5, 1);
+}
+
+void sub_8041CEC(u32 r0)
+{
+ sub_80421C0(r0, 0x19d);
+}
+
+void nullsub_74(void)
+{
+}
+
+void sub_8041D00(u32 r0, u32 r1)
+{
+ sub_804151C(r1, 0x2F, 1);
+ sub_804151C(r0, 0x30, 1);
+}
+
+void nullsub_75(void)
+{
+}
+
+void nullsub_76(void)
+{
+}
+
+void nullsub_77(void)
+{
+}
+
+void nullsub_78(void)
+{
+}
+
+void nullsub_79(void)
+{
+}
+
+void nullsub_80(void)
+{
+}
+
+void sub_8041D38(u32 r0)
+{
+ sub_804151C(r0, 0x21, 1);
+}
+
+void sub_8041D48(u32 r0)
+{
+ sub_80421C0(r0, 0x191);
+}
+
+void nullsub_81(void)
+{
+}
+
+void sub_8041D5C(struct unkStruct_8041D5C *r0)
+{
+ u8 *temp;
+ if(sub_8042768() == 0)
+ {
+ return;
+ }
+ temp = *r0->unk70;
+ sub_803ED30(temp[0x89 << 1] , r0, 1, 0xB);
+}
+
+void sub_8041D84(u32 r0)
+{
+ sub_80421C0(r0, 0x19f);
+}
+
+void nullsub_82(void)
+{
+}
+
+void nullsub_83(void)
+{
+}
+
+void sub_8041D9C(u32 r0)
+{
+ sub_804151C(r0, 0x131, 1);
+}
+
+void sub_8041DB0(u32 r0)
+{
+ sub_804151C(r0, 0x30, 1);
+}
+
+void nullsub_84(void)
+{
+}
+
+void nullsub_85(void)
+{
+}
+
+void nullsub_204(void)
+{
+}
+
+void nullsub_86(void)
+{
+}
+
+void nullsub_87(void)
+{
+}
+
+void nullsub_88(void)
+{
+}
+
+#ifndef NONMATCHING
+NAKED
+#endif
+// TODO r1 is doing an lsr instead of an asr... maybe a signed arg?
+void sub_8041DD8(u32 r0, u16 r1)
+{
+#ifdef NONMATCHING
+ if(sub_8071858(r0, 0xE) != 0)
+ {
+ sub_804151C(r0, r1, 1);
+ return;
+ }
+ sub_804151C(r0, 0xE, 1);
+#else
+ asm_unified("\tpush {r4,r5,lr}\n"
+ "\tadds r4, r0, 0\n"
+ "\tlsls r1, 16\n"
+ "\tasrs r5, r1, 16\n"
+ "\tmovs r1, 0xE\n"
+ "\tbl sub_8071858\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08041DF8\n"
+ "\tadds r0, r4, 0\n"
+ "\tadds r1, r5, 0\n"
+ "\tmovs r2, 0x1\n"
+ "\tbl sub_804151C\n"
+ "\tb _08041E02\n"
+"_08041DF8:\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0xE\n"
+ "\tmovs r2, 0x1\n"
+ "\tbl sub_804151C\n"
+"_08041E02:\n"
+ "\tpop {r4,r5}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+#endif
+}
+
+void nullsub_89(void)
+{
+}
+
+void sub_8041E0C(u32 r0)
+{
+ sub_804151C(r0, 0x41, 1);
+}
+
+void sub_8041E1C(u32 r0)
+{
+ sub_804151C(r0, 0x8F << 1, 1);
+ sub_80421C0(r0, 0xCE << 1);
+}
+
+void sub_8041E3C(u32 r0)
+{
+ sub_804151C(r0, 0xD7 << 1, 1);
+}
+
+void sub_8041E4C(u32 r0)
+{
+ sub_804151C(r0, 0x1b1, 1);
+}
+
+void sub_8041E60(u32 r0)
+{
+ sub_804151C(r0, 0x1a9, 1);
+}
+
+void sub_8041E74(u32 r0)
+{
+ sub_804151C(r0, 0xC9 << 1, 1);
+}
+
+void sub_8041E84(u32 r0)
+{
+ sub_804151C(r0, 0xC7 << 1, 1);
+}
+
+void sub_8041E94(u32 r0)
+{
+ sub_804151C(r0, 0xC8 << 1, 1);
+}
+
+void sub_8041EA4(u32 r0)
+{
+ sub_804151C(r0, 0x15, 1);
+}
+
+void sub_8041EB4(u32 r0)
+{
+ sub_804151C(r0, 0x171, 1);
+}
+
+void sub_8041EC8(u32 r0)
+{
+ sub_80421C0(r0, 0x197);
+}
+
+void sub_8041ED8(u32 r0)
+{
+ sub_80421C0(r0, 0x197);
+}
+
+void sub_8041EE8(u32 r0)
+{
+ sub_804151C(r0, 0x15, 1);
+}
+
+void sub_8041EF8(u32 r0)
+{
+ sub_804151C(r0, 0xF, 1);
+}
diff --git a/src/code_80428A0.c b/src/code_80428A0.c
index eab25f3..08599b7 100644
--- a/src/code_80428A0.c
+++ b/src/code_80428A0.c
@@ -1,6 +1,6 @@
#include "global.h"
-extern void sub_804151C(u32 r0, u32 r1, u32 r2);
+extern void sub_804151C(u32 r0, u32 r1, u8 r2);
extern void sub_803E708(u32 r0, u32 r1);
extern void sub_80416A4(u32 r0, u32 r1, u32 r2);
extern void sub_80421C0(u32 r0, u32 r1);