summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-03-30 13:06:58 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-03-30 13:06:58 -0400
commite8b47004b3e429a6d322853631b2375408d9563c (patch)
tree6ccbabab5d2f4a02e043a5fc751fda9acd934671
parent9007978827e723c6d4fb4978ae8dc94f8a3900ab (diff)
through nonmatching sub_80B90C0
-rw-r--r--asm/contest_effect.s129
-rw-r--r--src/contest_effect.c105
2 files changed, 103 insertions, 131 deletions
diff --git a/asm/contest_effect.s b/asm/contest_effect.s
index 6808c9204..22d116663 100644
--- a/asm/contest_effect.s
+++ b/asm/contest_effect.s
@@ -5,135 +5,6 @@
.text
- thumb_func_start sub_80B9038
-sub_80B9038: @ 80B9038
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r7, 0
- movs r5, 0
- ldr r4, _080B907C @ =gSharedMem + 0x192D0
- ldr r0, _080B9080 @ =gContestMoves
- mov r9, r0
- movs r6, 0
-_080B9052:
- ldrb r0, [r4, 0x11]
- adds r0, r4
- adds r1, r5, r4
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bls _080B909A
- adds r0, r4, 0
- subs r0, 0x70
- adds r0, r6, r0
- ldrh r0, [r0, 0x6]
- lsls r0, 3
- add r0, r9
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- lsrs r0, 29
- cmp r8, r0
- bne _080B9084
- movs r0, 0x28
- b _080B9086
- .align 2, 0
-_080B907C: .4byte gSharedMem + 0x192D0
-_080B9080: .4byte gContestMoves
-_080B9084:
- movs r0, 0xA
-_080B9086:
- strh r0, [r4, 0x4]
- strb r5, [r4, 0x8]
- movs r0, 0xFF
- strb r0, [r4, 0x9]
- bl sub_80B9120
- lsls r0, 24
- cmp r0, 0
- beq _080B909A
- adds r7, 0x1
-_080B909A:
- adds r6, 0x1C
- adds r5, 0x1
- cmp r5, 0x3
- ble _080B9052
- cmp r7, 0
- bne _080B90B0
- ldr r0, _080B90BC @ =gSharedMem + 0x192D0
- ldrb r0, [r0, 0x11]
- movs r1, 0x36
- bl SetContestantStatusUnk14
-_080B90B0:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B90BC: .4byte gSharedMem + 0x192D0
- thumb_func_end sub_80B9038
-
- thumb_func_start sub_80B90C0
-sub_80B90C0: @ 80B90C0
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080B90EC @ =gSharedMem + 0x192D0
- adds r0, r2, 0
- adds r0, 0xD
- adds r0, r3, r0
- movs r1, 0x1
- strb r1, [r0]
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- subs r2, 0x70
- adds r2, r0, r2
- ldrb r1, [r2, 0x10]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080B90F0
- adds r0, r3, 0
- movs r1, 0x2D
- b _080B9116
- .align 2, 0
-_080B90EC: .4byte gSharedMem + 0x192D0
-_080B90F0:
- ldrb r0, [r2, 0x12]
- cmp r0, 0
- bne _080B910E
- ldrb r1, [r2, 0xB]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B911A
- ldrb r1, [r2, 0xC]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- bne _080B911A
- movs r0, 0x1
- b _080B911C
-_080B910E:
- subs r0, 0x1
- strb r0, [r2, 0x12]
- adds r0, r3, 0
- movs r1, 0x2C
-_080B9116:
- bl SetContestantStatusUnk13
-_080B911A:
- movs r0, 0
-_080B911C:
- pop {r1}
- bx r1
- thumb_func_end sub_80B90C0
-
thumb_func_start sub_80B9120
sub_80B9120: @ 80B9120
push {r4-r7,lr}
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