summaryrefslogtreecommitdiff
path: root/src/code_8092334.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-07-07 11:39:34 -0500
committerSeth Barberee <seth.barberee@gmail.com>2021-07-07 11:39:34 -0500
commit6aa475c6310c609743a9a2005e7942050c396865 (patch)
tree18be7369829badfef35a6c337005e875049027e5 /src/code_8092334.c
parentf308c79eba1ba8e6bc2134529a2e4f4f21c9c2c2 (diff)
Sese's vacation work
Diffstat (limited to 'src/code_8092334.c')
-rw-r--r--src/code_8092334.c160
1 files changed, 160 insertions, 0 deletions
diff --git a/src/code_8092334.c b/src/code_8092334.c
new file mode 100644
index 0000000..e5a8334
--- /dev/null
+++ b/src/code_8092334.c
@@ -0,0 +1,160 @@
+#include "global.h"
+#include "memory.h"
+#include "item.h"
+
+struct unkStruct_8094924
+{
+ // size: 0x10?
+ u8 *unk0; // head?
+ u8 *unk4; // tail?
+ u32 unk8;
+ u32 unkC;
+};
+
+s16 sub_8094828(u16 r0, u8 itemIndex)
+{
+ if(itemIndex != 0)
+ {
+ if(GetItemType(itemIndex) == ITEM_TYPE_ORB)
+ return 0x223;
+ else
+ return 0x224;
+ }
+ else
+ {
+ return r0;
+ }
+}
+
+void sub_809485C(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
+{
+ r0->unk0 = r1;
+ r0->unk8 = 0;
+ r0->unkC = 0;
+ r0->unk4 = &r1[size];
+}
+
+void sub_809486C(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
+{
+ r0->unk0 = r1;
+ r0->unk8 = 0;
+ r0->unkC = 0;
+ r0->unk4 = &r1[size];
+ MemoryClear8(r1, size);
+}
+
+void nullsub_102(struct unkStruct_8094924 *r0)
+{
+
+}
+
+void sub_809488C(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
+{
+ s32 r5;
+ u8 *r6;
+
+ r5 = 0;
+ r6 = r1;
+
+
+ if(size != 0)
+ {
+ while(size != 0)
+ {
+ if(( *(r6) >> r5) & 1)
+ {
+ *r0->unk0 |= (1 << r0->unk8);
+ }
+ r5++;
+ if(r5 == 8)
+ {
+ r6++;
+ r5 = 0;
+ }
+ r0->unk8++;
+ if(r0->unk8 == 8)
+ {
+ r0->unk0++;
+ r0->unk8 = 0;
+ }
+ r0->unkC++;
+ size--;
+ }
+ }
+}
+
+// Unused
+NAKED
+void sub_80948E4(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
+{
+ asm_unified("\tpush {r4-r6,lr}\n"
+ "\tadds r4, r0, 0\n"
+ "\tadds r5, r2, 0\n"
+ "\tadds r6, r1, 0\n"
+ "\tcmp r5, 0\n"
+ "\tbeq _0809491C\n"
+"_080948F0:\n"
+ "\tldrb r1, [r6]\n"
+ "\tldr r0, [r4, 0x8]\n"
+ "\tlsls r1, r0\n"
+ "\tldr r3, [r4]\n"
+ "\tldrb r2, [r3]\n"
+ "\tadds r0, r1, 0\n"
+ "\torrs r0, r2\n"
+ "\tstrb r0, [r3]\n"
+ "\tldr r2, [r4]\n"
+ "\tadds r0, r2, 0x1\n"
+ "\tstr r0, [r4]\n"
+ "\tasrs r1, 8\n"
+ "\tldrb r0, [r2, 0x1]\n"
+ "\torrs r1, r0\n"
+ "\tstrb r1, [r2, 0x1]\n"
+ "\tadds r6, 0x1\n"
+ "\tldr r0, [r4, 0xC]\n"
+ "\tadds r0, 0x8\n"
+ "\tstr r0, [r4, 0xC]\n"
+ "\tsubs r5, 0x1\n"
+ "\tcmp r5, 0\n"
+ "\tbne _080948F0\n"
+"_0809491C:\n"
+ "\tpop {r4-r6}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+
+void sub_8094924(struct unkStruct_8094924 *r0, u8 *r1, s32 size)
+{
+ s32 r6;
+ u8 *r2;
+
+ r6 = 0;
+ r2 = r1;
+
+
+ if(size != 0)
+ {
+ while(size != 0)
+ {
+ if(r6 == 0)
+ *r2 = 0;
+ if(( *(r0->unk0) >> r0->unk8) & 1)
+ {
+ *r2 |= (1 << r6);
+ }
+ r6++;
+ if(r6 == 8)
+ {
+ r2++;
+ r6 = 0;
+ }
+ r0->unk8++;
+ if(r0->unk8 == 8)
+ {
+ r0->unk0++;
+ r0->unk8 = 0;
+ }
+ r0->unkC++;
+ size--;
+ }
+ }
+}