summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-03-30 12:43:00 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-03-30 12:43:00 -0400
commit9007978827e723c6d4fb4978ae8dc94f8a3900ab (patch)
tree3d4af4c67a74ce4c8f98968f0274de68797bef31
parentb125a4057419ab9efe6dbd1e911abd5de2200b9b (diff)
through ContestEffect_47
-rw-r--r--asm/contest_effect.s203
-rw-r--r--include/contest.h4
-rw-r--r--src/contest_effect.c82
3 files changed, 85 insertions, 204 deletions
diff --git a/asm/contest_effect.s b/asm/contest_effect.s
index 469486a1c..6808c9204 100644
--- a/asm/contest_effect.s
+++ b/asm/contest_effect.s
@@ -5,209 +5,6 @@
.text
- thumb_func_start ContestEffect_44
-ContestEffect_44: @ 80B8EBC
- push {lr}
- ldr r3, _080B8EF0 @ =gContestMoves
- ldr r1, _080B8EF4 @ =gSharedMem + 0x192D0
- ldrb r2, [r1, 0x11]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- subs r1, 0x70
- adds r2, r0, r1
- ldrh r0, [r2, 0x6]
- lsls r0, 3
- adds r0, r3
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- ldr r1, _080B8EF8 @ =gSpecialVar_ContestCategory
- lsrs r0, 29
- ldrh r1, [r1]
- cmp r0, r1
- beq _080B8EEA
- ldrb r0, [r2, 0x11]
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0x11]
-_080B8EEA:
- pop {r0}
- bx r0
- .align 2, 0
-_080B8EF0: .4byte gContestMoves
-_080B8EF4: .4byte gSharedMem + 0x192D0
-_080B8EF8: .4byte gSpecialVar_ContestCategory
- thumb_func_end ContestEffect_44
-
- thumb_func_start ContestEffect_45
-ContestEffect_45: @ 80B8EFC
- push {r4-r7,lr}
- movs r7, 0
- movs r5, 0
- ldr r4, _080B8F34 @ =gSharedMem + 0x192D0
- movs r6, 0
-_080B8F06:
- ldrb r0, [r4, 0x11]
- adds r0, r4
- adds r1, r5, r4
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bls _080B8F52
- adds r0, r4, 0
- subs r0, 0x70
- adds r1, r6, r0
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- cmp r0, 0
- ble _080B8F38
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x4]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- bl sub_80B9268
- b _080B8F3A
- .align 2, 0
-_080B8F34: .4byte gSharedMem + 0x192D0
-_080B8F38:
- movs r0, 0xA
-_080B8F3A:
- 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 _080B8F52
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_080B8F52:
- adds r6, 0x1C
- adds r5, 0x1
- cmp r5, 0x3
- ble _080B8F06
- cmp r7, 0
- bne _080B8F68
- ldr r0, _080B8F78 @ =gSharedMem + 0x192D0
- ldrb r0, [r0, 0x11]
- movs r1, 0x36
- bl SetContestantStatusUnk14
-_080B8F68:
- ldr r0, _080B8F78 @ =gSharedMem + 0x192D0
- ldrb r0, [r0, 0x11]
- movs r1, 0x30
- bl SetContestantStatusUnk13
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8F78: .4byte gSharedMem + 0x192D0
- thumb_func_end ContestEffect_45
-
- thumb_func_start ContestEffect_46
-ContestEffect_46: @ 80B8F7C
- push {r4,lr}
- ldr r0, _080B8F98 @ =gSharedMem + 0x19204
- movs r1, 0x13
- ldrsb r1, [r0, r1]
- cmp r1, 0
- bne _080B8F9C
- movs r4, 0xA
- adds r0, 0xCC
- ldrb r0, [r0, 0x11]
- movs r1, 0x1A
- bl SetContestantStatusUnk13
- b _080B8FDE
- .align 2, 0
-_080B8F98: .4byte gSharedMem + 0x19204
-_080B8F9C:
- cmp r1, 0x1
- bne _080B8FAE
- movs r4, 0x14
- adds r0, 0xCC
- ldrb r0, [r0, 0x11]
- movs r1, 0x1B
- bl SetContestantStatusUnk13
- b _080B8FDE
-_080B8FAE:
- cmp r1, 0x2
- bne _080B8FC0
- movs r4, 0x1E
- adds r0, 0xCC
- ldrb r0, [r0, 0x11]
- movs r1, 0x1C
- bl SetContestantStatusUnk13
- b _080B8FDE
-_080B8FC0:
- cmp r1, 0x3
- bne _080B8FD2
- movs r4, 0x32
- adds r0, 0xCC
- ldrb r0, [r0, 0x11]
- movs r1, 0x1D
- bl SetContestantStatusUnk13
- b _080B8FDE
-_080B8FD2:
- movs r4, 0x3C
- adds r0, 0xCC
- ldrb r0, [r0, 0x11]
- movs r1, 0x1E
- bl SetContestantStatusUnk13
-_080B8FDE:
- ldr r0, _080B8FF4 @ =gSharedMem + 0x192D0
- ldrb r2, [r0, 0x11]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- subs r0, 0x70
- adds r1, r0
- strh r4, [r1, 0x2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8FF4: .4byte gSharedMem + 0x192D0
- thumb_func_end ContestEffect_46
-
- thumb_func_start ContestEffect_47
-ContestEffect_47: @ 80B8FF8
- push {lr}
- ldr r3, _080B9034 @ =gSharedMem + 0x19328
- ldrb r2, [r3, 0x1]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _080B902E
- movs r0, 0x1
- orrs r2, r0
- movs r0, 0x58
- negs r0, r0
- adds r0, r3
- mov r12, r0
- ldrb r1, [r0, 0x11]
- movs r0, 0x7
- ands r0, r1
- lsls r0, 1
- movs r1, 0xF
- negs r1, r1
- ands r2, r1
- orrs r2, r0
- strb r2, [r3, 0x1]
- mov r1, r12
- ldrb r0, [r1, 0x11]
- movs r1, 0x3D
- bl SetContestantStatusUnk13
-_080B902E:
- pop {r0}
- bx r0
- .align 2, 0
-_080B9034: .4byte gSharedMem + 0x19328
- thumb_func_end ContestEffect_47
-
thumb_func_start sub_80B9038
sub_80B9038: @ 80B9038
push {r4-r7,lr}
diff --git a/include/contest.h b/include/contest.h
index 6e3d64cd1..2bcf32bef 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -225,7 +225,7 @@ struct UnknownContestStruct5
struct UnknownContestStruct7
{
u8 unk0[4];
- u16 unk4;
+ s16 unk4;
u16 unk6;
u8 unk8[5];
u8 unkD[4];
@@ -277,6 +277,8 @@ extern u16 gUnknown_02038688[4];
extern u8 gContestFinalStandings[4];
extern u8 gUnknown_02038696[4];
extern u8 gUnknown_0203869B;
+extern u16 gSpecialVar_ContestCategory;
+
void SetContestantStatusUnk13(u8 a, u8 b);
void SetContestantStatusUnk14(u8 a, u8 b);
void sub_80B157C(u8 p);
diff --git a/src/contest_effect.c b/src/contest_effect.c
index c484882ff..d5e9ca2e4 100644
--- a/src/contest_effect.c
+++ b/src/contest_effect.c
@@ -7,6 +7,7 @@ u8 sub_80B9120(void);
bool8 sub_80B90C0(u8);
void sub_80B9038(u8);
s16 sub_80B9224(s16);
+s16 sub_80B9268(s16);
extern bool8 const gComboStarterLookupTable[];
@@ -921,3 +922,84 @@ void ContestEffect_43(void)
SetContestantStatusUnk13(shared192D0.unk11, 39);
}
}
+
+void ContestEffect_44(void)
+// An appeal that excites the audience in any CONTEST.
+{
+ if (gContestMoves[curContestant->currMove].contestCategory != gSpecialVar_ContestCategory)
+ {
+ curContestant->unk11_4 = TRUE;
+ }
+}
+
+void ContestEffect_45(void)
+// Badly startles all POKéMON that made good appeals.
+{
+ int i;
+ u8 r7 = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (shared192D0.unk0[shared192D0.unk11] > shared192D0.unk0[i])
+ {
+ if (sContestantStatus[i].appeal2 > 0)
+ {
+ shared192D0.unk4 = sContestantStatus[i].appeal2 / 2;
+ shared192D0.unk4 = sub_80B9268(shared192D0.unk4);
+ }
+ else
+ shared192D0.unk4 = 10;
+ shared192D0.unk8[0] = i;
+ shared192D0.unk8[1] = 0xFF;
+ if (sub_80B9120())
+ r7++;
+ }
+ }
+ if (r7 == 0)
+ SetContestantStatusUnk14(shared192D0.unk11, 0x36);
+ SetContestantStatusUnk13(shared192D0.unk11, 48);
+}
+
+void ContestEffect_46(void)
+// The appeal works best the more the crowd is excited.
+{
+ s16 appeal;
+
+ if (sContest.applauseLevel == 0)
+ {
+ appeal = 10;
+ SetContestantStatusUnk13(shared192D0.unk11, 26);
+ }
+ else if (sContest.applauseLevel == 1)
+ {
+ appeal = 20;
+ SetContestantStatusUnk13(shared192D0.unk11, 27);
+ }
+ else if (sContest.applauseLevel == 2)
+ {
+ appeal = 30;
+ SetContestantStatusUnk13(shared192D0.unk11, 28);
+ }
+ else if (sContest.applauseLevel == 3)
+ {
+ appeal = 50;
+ SetContestantStatusUnk13(shared192D0.unk11, 29);
+ }
+ else
+ {
+ appeal = 60;
+ SetContestantStatusUnk13(shared192D0.unk11, 30);
+ }
+ curContestant->appeal2 = appeal;
+}
+
+void ContestEffect_47(void)
+// Temporarily stops the crowd from growing excited.
+{
+ if (!shared19328.bits_8)
+ {
+ shared19328.bits_8 = TRUE;
+ shared19328.bits_9 = shared192D0.unk11;
+ SetContestantStatusUnk13(shared192D0.unk11, 61);
+ }
+}