summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-03-29 15:50:16 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-03-29 15:50:16 -0400
commit90556b6b3eabc0a90cf7fdcf54826e362053f4c0 (patch)
tree7ccb9e9c3256a03967f3bf0a0d0eafdd14151c3b
parent18e6512599ad5a52ee0046f2504a7b357cc80894 (diff)
ContestEffect_26
-rw-r--r--asm/contest_effect.s248
-rw-r--r--include/contest.h2
-rw-r--r--src/contest.c1
-rw-r--r--src/contest_ai.c3
-rw-r--r--src/contest_effect.c75
5 files changed, 77 insertions, 252 deletions
diff --git a/asm/contest_effect.s b/asm/contest_effect.s
index b3d865b3d..cbab264d5 100644
--- a/asm/contest_effect.s
+++ b/asm/contest_effect.s
@@ -5,254 +5,6 @@
.text
- thumb_func_start ContestEffect_26
-ContestEffect_26: @ 80B8310
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- movs r0, 0
- mov r9, r0
- movs r1, 0
- str r1, [sp, 0x18]
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0x5
- bl memset
- movs r6, 0
- movs r4, 0
- add r2, sp, 0x10
- mov r8, r2
- add r3, sp, 0x8
- mov r10, r3
- ldr r5, _080B8384 @ =gSharedMem + 0x192D0
- adds r7, r5, 0
- subs r7, 0x70
-_080B8340:
- ldrb r0, [r5, 0x11]
- adds r0, r5
- adds r1, r6, r5
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _080B836E
- ldrb r1, [r7, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080B836E
- lsls r0, r6, 24
- lsrs r0, 24
- bl Contest_IsMonsTurnDisabled
- lsls r0, 24
- cmp r0, 0
- bne _080B836E
- mov r1, sp
- adds r0, r1, r4
- strb r6, [r0]
- adds r4, 0x1
-_080B836E:
- adds r7, 0x1C
- adds r6, 0x1
- cmp r6, 0x3
- ble _080B8340
- cmp r4, 0x1
- bne _080B8388
- movs r0, 0x3C
- mov r2, r8
- strh r0, [r2]
- b _080B83B6
- .align 2, 0
-_080B8384: .4byte gSharedMem + 0x192D0
-_080B8388:
- cmp r4, 0x2
- bne _080B8396
- movs r0, 0x1E
- mov r3, r8
- strh r0, [r3]
- strh r0, [r3, 0x2]
- b _080B83B6
-_080B8396:
- cmp r4, 0x3
- bne _080B83A6
- movs r0, 0x14
- mov r7, r8
- strh r0, [r7]
- strh r0, [r7, 0x2]
- strh r0, [r7, 0x4]
- b _080B83B6
-_080B83A6:
- mov r1, r8
- movs r2, 0
- mov r0, r8
- adds r0, 0x6
-_080B83AE:
- strh r2, [r0]
- subs r0, 0x2
- cmp r0, r1
- bge _080B83AE
-_080B83B6:
- movs r6, 0
- movs r7, 0
- mov r4, r10
-_080B83BC:
- ldr r0, _080B83F0 @ =gSharedMem + 0x19260
- adds r5, r7, r0
- ldrb r1, [r5, 0x15]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080B83FC
- lsls r0, r6, 24
- lsrs r0, 24
- bl sub_80B214C
- lsls r0, 24
- cmp r0, 0
- beq _080B83FC
- ldr r1, _080B83F4 @ =gContestMoves
- ldrh r0, [r5, 0x8]
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x2]
- ldr r1, _080B83F8 @ =gComboStarterLookupTable
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- b _080B83FE
- .align 2, 0
-_080B83F0: .4byte gSharedMem + 0x19260
-_080B83F4: .4byte gContestMoves
-_080B83F8: .4byte gComboStarterLookupTable
-_080B83FC:
- movs r0, 0
-_080B83FE:
- strh r0, [r4]
- ldr r5, _080B8494 @ =gSharedMem + 0x19260
- adds r0, r7, r5
- ldrb r0, [r0, 0xD]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0xA
- bl __divsi3
- lsls r0, 24
- asrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 1
- ldrh r0, [r4]
- subs r0, r1
- strh r0, [r4]
- adds r7, 0x1C
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _080B83BC
- mov r2, r8
- movs r3, 0
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _080B84CA
- movs r6, 0
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _080B84CA
- adds r5, 0x7D
- mov r4, sp
-_080B8442:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r6, 1
- add r1, r8
- movs r7, 0
- ldrsh r2, [r1, r7]
- ldrb r3, [r4]
- lsls r1, r3, 1
- add r1, r10
- movs r7, 0
- ldrsh r1, [r1, r7]
- adds r2, r1
- cmp r0, r2
- bge _080B8498
- adds r0, r3, 0
- bl sub_80B90C0
- lsls r0, 24
- cmp r0, 0
- beq _080B84A2
- ldrb r0, [r4]
- bl sub_80B157C
- ldrb r0, [r4]
- movs r1, 0xA
- bl SetContestantStatusUnk13
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- b _080B849C
- .align 2, 0
-_080B8494: .4byte gSharedMem + 0x19260
-_080B8498:
- movs r0, 0x1
- str r0, [sp, 0x18]
-_080B849C:
- ldr r1, [sp, 0x18]
- cmp r1, 0
- beq _080B84B8
-_080B84A2:
- movs r2, 0
- str r2, [sp, 0x18]
- ldrb r0, [r4]
- movs r1, 0x3C
- bl SetContestantStatusUnk13
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_080B84B8:
- ldrb r0, [r4]
- adds r0, r5
- movs r1, 0x1
- strb r1, [r0]
- adds r4, 0x1
- adds r6, 0x1
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _080B8442
-_080B84CA:
- ldr r4, _080B84F4 @ =gSharedMem + 0x192D0
- ldrb r0, [r4, 0x11]
- movs r1, 0xB
- bl SetContestantStatusUnk13
- mov r3, r9
- cmp r3, 0
- bne _080B84E2
- ldrb r0, [r4, 0x11]
- movs r1, 0x36
- bl SetContestantStatusUnk14
-_080B84E2:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B84F4: .4byte gSharedMem + 0x192D0
- thumb_func_end ContestEffect_26
-
thumb_func_start ContestEffect_27
ContestEffect_27: @ 80B84F8
push {r4-r7,lr}
diff --git a/include/contest.h b/include/contest.h
index 24f3331b7..6e3d64cd1 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -280,5 +280,7 @@ extern u8 gUnknown_0203869B;
void SetContestantStatusUnk13(u8 a, u8 b);
void SetContestantStatusUnk14(u8 a, u8 b);
void sub_80B157C(u8 p);
+bool8 Contest_IsMonsTurnDisabled(u8 a);
+bool8 sub_80B214C(u8 a);
#endif // GUARD_CONTEST_H
diff --git a/src/contest.c b/src/contest.c
index 77455e882..686b01476 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -201,7 +201,6 @@ void sub_80AF1B8(void);
void sub_80AF2A0(u8);
void sub_80AF2FC(void);
void sub_80AF3C0(void);
-bool8 Contest_IsMonsTurnDisabled(u8);
s16 sub_80AF688(u8);
void DetermineFinalStandings(void);
bool8 sub_80AF828(s32, s32, struct UnknownContestStruct6 *);
diff --git a/src/contest_ai.c b/src/contest_ai.c
index 63894635b..8fce9d15f 100644
--- a/src/contest_ai.c
+++ b/src/contest_ai.c
@@ -5,9 +5,6 @@
#include "contest_effect.h"
#include "ewram.h"
-extern bool8 sub_80B214C(u8);
-extern bool8 Contest_IsMonsTurnDisabled(u8);
-
extern u16 gSpecialVar_ContestCategory;
extern u8 *gAIScriptPtr;
diff --git a/src/contest_effect.c b/src/contest_effect.c
index c38cb2f96..bbd56493b 100644
--- a/src/contest_effect.c
+++ b/src/contest_effect.c
@@ -301,3 +301,78 @@ void ContestEffect_25(void)
if (!r4)
SetContestantStatusUnk14(shared192D0.unk11, 0x36);
}
+
+void ContestEffect_26(void)
+{
+ u8 r9 = 0;
+ bool32 sp18 = FALSE;
+ u8 sp00[5];
+ int r6;
+ int r4;
+ s16 sp08[4];
+ s16 sp10[4];
+
+ memset(sp00, 0xFF, ARRAY_COUNT(sp00));
+ for (r6 = 0, r4 = 0; r6 < 4; r6++)
+ {
+ if (shared192D0.unk0[shared192D0.unk11] < shared192D0.unk0[r6] &&
+ !sContestantStatus[r6].unkC_0 && !Contest_IsMonsTurnDisabled(r6))
+ sp00[r4++] = r6;
+ }
+
+ if (r4 == 1)
+ {
+ sp10[0] = 60;
+ }
+ else if (r4 == 2)
+ {
+ sp10[0] = 30;
+ sp10[1] = 30;
+ }
+ else if (r4 == 3)
+ {
+ sp10[0] = 20;
+ sp10[1] = 20;
+ sp10[2] = 20;
+ }
+ else
+ {
+ for (r6 = 0; r6 < 4; r6++)
+ sp10[r6] = 0;
+ }
+ for (r6 = 0; r6 < 4; r6++)
+ {
+ if (sContestantStatus[r6].unk15_4 && sub_80B214C(r6))
+ sp08[r6] = gComboStarterLookupTable[gContestMoves[sContestantStatus[r6].prevMove].comboStarterId] * 10;
+ else
+ sp08[r6] = 0;
+ sp08[r6] -= (sContestantStatus[r6].unkD / 10) * 10;
+ }
+ if (sp10[0] != 0)
+ {
+ for (r6 = 0; sp00[r6] != 0xFF; r6++)
+ {
+ if (Random() % 100 < sp10[r6] + sp08[sp00[r6]])
+ {
+ if (sub_80B90C0(sp00[r6]))
+ {
+ sub_80B157C(sp00[r6]);
+ SetContestantStatusUnk13(sp00[r6], 10);
+ r9++;
+ } else
+ sp18 = TRUE;
+ } else
+ sp18 = TRUE;
+ if (sp18)
+ {
+ sp18 = FALSE;
+ SetContestantStatusUnk13(sp00[r6], 60);
+ r9++;
+ }
+ shared192D0.unkD[sp00[r6]] = 1;
+ }
+ }
+ SetContestantStatusUnk13(shared192D0.unk11, 11);
+ if (r9 == 0)
+ SetContestantStatusUnk14(shared192D0.unk11, 0x36);
+}