summaryrefslogtreecommitdiff
path: root/src/contest_effect.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/contest_effect.c')
-rw-r--r--src/contest_effect.c105
1 files changed, 103 insertions, 2 deletions
diff --git a/src/contest_effect.c b/src/contest_effect.c
index d5e9ca2e4..e28334b12 100644
--- a/src/contest_effect.c
+++ b/src/contest_effect.c
@@ -3,9 +3,9 @@
#include "random.h"
#include "contest.h"
-u8 sub_80B9120(void);
-bool8 sub_80B90C0(u8);
void sub_80B9038(u8);
+bool8 sub_80B90C0(u8);
+u8 sub_80B9120(void);
s16 sub_80B9224(s16);
s16 sub_80B9268(s16);
@@ -1003,3 +1003,104 @@ void ContestEffect_47(void)
SetContestantStatusUnk13(shared192D0.unk11, 61);
}
}
+
+void sub_80B9038(u8 category)
+{
+ int i;
+ int r7 = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.unk0[shared192D0.unk11] > shared192D0.unk0[i])
+ {
+ if (category == gContestMoves[sContestantStatus[i].currMove].contestCategory)
+ shared192D0.unk4 = 40;
+ else
+ shared192D0.unk4 = 10;
+ shared192D0.unk8[0] = i;
+ shared192D0.unk8[1] = 0xFF;
+ if (sub_80B9120())
+ r7++;
+ }
+ }
+
+ if (r7 == 0)
+ SetContestantStatusUnk14(shared192D0.unk11, 0x36);
+}
+
+#ifdef NONMATCHING
+bool8 sub_80B90C0(u8 i)
+{
+ shared192D0.unkD[i] = 1;
+ if (sContestantStatus[i].unk10_1)
+ SetContestantStatusUnk13(i, 45);
+ else if (sContestantStatus[i].unk12 == 0)
+ {
+ if (sContestantStatus[i].unkB_7 || sContestantStatus[i].unkC_1)
+ return FALSE;
+ return TRUE;
+ }
+ else
+ {
+ sContestantStatus[i].unk12--;
+ SetContestantStatusUnk13(i, 44);
+ }
+ return FALSE;
+}
+#else
+__attribute__((naked)) bool8 sub_80B90C0(u8 i)
+{
+ asm_unified("\tpush {lr}\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tldr r2, _080B90EC @ =gSharedMem + 0x192D0\n"
+ "\tadds r0, r2, 0\n"
+ "\tadds r0, 0xD\n"
+ "\tadds r0, r3, r0\n"
+ "\tmovs r1, 0x1\n"
+ "\tstrb r1, [r0]\n"
+ "\tlsls r0, r3, 3\n"
+ "\tsubs r0, r3\n"
+ "\tlsls r0, 2\n"
+ "\tsubs r2, 0x70\n"
+ "\tadds r2, r0, r2\n"
+ "\tldrb r1, [r2, 0x10]\n"
+ "\tmovs r0, 0x2\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080B90F0\n"
+ "\tadds r0, r3, 0\n"
+ "\tmovs r1, 0x2D\n"
+ "\tb _080B9116\n"
+ "\t.align 2, 0\n"
+ "_080B90EC: .4byte gSharedMem + 0x192D0\n"
+ "_080B90F0:\n"
+ "\tldrb r0, [r2, 0x12]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080B910E\n"
+ "\tldrb r1, [r2, 0xB]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080B911A\n"
+ "\tldrb r1, [r2, 0xC]\n"
+ "\tmovs r0, 0x6\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080B911A\n"
+ "\tmovs r0, 0x1\n"
+ "\tb _080B911C\n"
+ "_080B910E:\n"
+ "\tsubs r0, 0x1\n"
+ "\tstrb r0, [r2, 0x12]\n"
+ "\tadds r0, r3, 0\n"
+ "\tmovs r1, 0x2C\n"
+ "_080B9116:\n"
+ "\tbl SetContestantStatusUnk13\n"
+ "_080B911A:\n"
+ "\tmovs r0, 0\n"
+ "_080B911C:\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+}
+#endif