summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-05-03 21:01:22 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-05-03 21:01:22 -0400
commit210cedd077d175937b5b12930d6a1cce2a367166 (patch)
treebdb8e5fbe46d48cb3bf435aa86bbabd7d48e8867
parent7d446a9ef7737874f772f7537de97a8b8be2d7d4 (diff)
through sub_80D883C
-rw-r--r--asm/contest.s282
-rw-r--r--src/contest.c83
2 files changed, 80 insertions, 285 deletions
diff --git a/asm/contest.s b/asm/contest.s
index e3c917422..fc579783c 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -5,288 +5,6 @@
.text
- thumb_func_start sub_80D8610
-sub_80D8610: @ 80D8610
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
- ldr r3, =gMain
- ldr r1, =gContestMons
- ldr r0, =gContestPlayerMonIndex
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, 0x1E
- adds r1, r0, r1
- movs r2, 0x3
-_080D8628:
- ldrh r0, [r1]
- cmp r0, 0
- beq _080D8634
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_080D8634:
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _080D8628
- ldrh r0, [r3, 0x2E]
- movs r5, 0x1
- ands r5, r0
- cmp r5, 0
- beq _080D8670
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80D8894
- str r0, [r1]
- b _080D87FA
- .pool
-_080D8670:
- ldrh r0, [r3, 0x30]
- cmp r0, 0x20
- bne _080D8678
- b _080D87FA
-_080D8678:
- cmp r0, 0x20
- bgt _080D8682
- cmp r0, 0x2
- beq _080D868E
- b _080D87FA
-_080D8682:
- cmp r0, 0x40
- beq _080D8730
- cmp r0, 0x80
- bne _080D868C
- b _080D879C
-_080D868C:
- b _080D87FA
-_080D868E:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_80DC490
- ldr r0, =gStringVar1
- ldr r1, =gContestResources
- ldr r1, [r1]
- ldr r1, [r1]
- ldrb r1, [r1, 0x1]
- adds r1, 0x1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- ldr r0, =gContestPlayerMonIndex
- ldrb r0, [r0]
- bl sub_80DBCA8
- lsls r0, 24
- cmp r0, 0
- bne _080D86DC
- ldr r0, =gDisplayedStringBattle
- ldr r1, =gText_0827D507
- bl StringCopy
- b _080D86E4
- .pool
-_080D86DC:
- ldr r0, =gDisplayedStringBattle
- ldr r1, =gText_0827D531
- bl StringCopy
-_080D86E4:
- bl sub_80DB89C
- ldr r4, =gStringVar4
- ldr r1, =gDisplayedStringBattle
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_80DEC30
- ldr r0, =gBattle_BG0_Y
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_BG2_Y
- strh r1, [r0]
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80D8424
- str r1, [r0]
- b _080D87FA
- .pool
-_080D8730:
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_80D883C
- ldr r0, [r4]
- ldr r1, [r0]
- ldrb r0, [r1]
- cmp r0, 0
- bne _080D8754
- subs r0, r6, 0x1
- b _080D8756
- .pool
-_080D8754:
- subs r0, 0x1
-_080D8756:
- strb r0, [r1]
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_80D880C
- ldr r2, =gContestMons
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r1, [r0]
- lsls r1, 1
- ldr r0, =gContestPlayerMonIndex
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r2, 0x1E
- adds r1, r2
- ldrh r0, [r1]
- bl prints_contest_move_description
- cmp r6, 0x1
- bls _080D87FA
- movs r0, 0x5
- bl PlaySE
- b _080D87FA
- .pool
-_080D879C:
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_80D883C
- ldr r0, [r4]
- ldr r1, [r0]
- ldrb r2, [r1]
- subs r0, r6, 0x1
- cmp r2, r0
- bne _080D87C0
- strb r5, [r1]
- b _080D87C4
- .pool
-_080D87C0:
- adds r0, r2, 0x1
- strb r0, [r1]
-_080D87C4:
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_80D880C
- ldr r2, =gContestMons
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r1, [r0]
- lsls r1, 1
- ldr r0, =gContestPlayerMonIndex
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r2, 0x1E
- adds r1, r2
- ldrh r0, [r1]
- bl prints_contest_move_description
- cmp r6, 0x1
- bls _080D87FA
- movs r0, 0x5
- bl PlaySE
-_080D87FA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D8610
-
- thumb_func_start sub_80D880C
-sub_80D880C: @ 80D880C
- push {lr}
- sub sp, 0x10
- adds r3, r0, 0
- lsls r3, 25
- movs r0, 0xF8
- lsls r0, 21
- adds r3, r0
- lsrs r3, 24
- movs r0, 0x2
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x1
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0x37
- movs r2, 0
- bl sub_80DECB8
- add sp, 0x10
- pop {r0}
- bx r0
- thumb_func_end sub_80D880C
-
- thumb_func_start sub_80D883C
-sub_80D883C: @ 80D883C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x10
- adds r4, r0, 0
- lsls r4, 24
- asrs r4, 23
- adds r3, r4, 0
- adds r3, 0x1F
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x2
- mov r8, r0
- str r0, [sp]
- movs r5, 0x1
- str r5, [sp, 0x4]
- movs r6, 0x11
- str r6, [sp, 0x8]
- str r5, [sp, 0xC]
- movs r1, 0xB
- movs r2, 0
- bl sub_80DECB8
- adds r4, 0x20
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- str r0, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- str r5, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0xB
- movs r2, 0
- adds r3, r4, 0
- bl sub_80DECB8
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80D883C
-
thumb_func_start sub_80D8894
sub_80D8894: @ 80D8894
push {r4,r5,lr}
diff --git a/src/contest.c b/src/contest.c
index 95efd62e0..4ff6cd4d3 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -54,11 +54,10 @@ void vblank_cb_battle(void);
void sub_80D823C(void);
void sub_80D833C(u8 taskId);
void sub_80D8424(u8);
-bool8 AreMovesContestCombo(u16, u16);
void sub_80D8610(u8);
-void sub_80D880C(s8);
-void prints_contest_move_description(u16);
void sub_80D8490(u8);
+void sub_80D880C(s8);
+void sub_80D883C(s8);
void sub_80D8894(u8);
u8 sub_80DB0C4(void);
u8 sub_80DB120(void);
@@ -85,6 +84,9 @@ void sub_80DEA20(void);
void sub_80DEBD0(u32, u8 *, u8, u8, u8);
void sub_80DEC30(u8 *, u8);
bool32 sub_80DED4C(void);
+bool8 AreMovesContestCombo(u16, u16);
+void prints_contest_move_description(u16);
+void sub_80DECB8(u8, u16, u8, u8, u8, u8, u8, u8);
EWRAM_DATA struct ContestPokemon gContestMons[4] = {0};
@@ -681,3 +683,78 @@ void sub_80D8490(u8 taskId)
prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
gTasks[taskId].func = sub_80D8610;
}
+
+void sub_80D8610(u8 taskId)
+{
+ u8 numMoves = 0;
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gContestMons[gContestPlayerMonIndex].moves[i] != MOVE_NONE)
+ numMoves++;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = sub_80D8894;
+ }
+ else
+ {
+ switch (gMain.newAndRepeatedKeys)
+ {
+ case B_BUTTON:
+ PlaySE(SE_SELECT);
+ sub_80DC490(FALSE);
+ ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
+ if (!sub_80DBCA8(gContestPlayerMonIndex))
+ StringCopy(gDisplayedStringBattle, gText_0827D507);
+ else
+ StringCopy(gDisplayedStringBattle, gText_0827D531);
+ sub_80DB89C();
+ StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle);
+ sub_80DEC30(gStringVar4, 0);
+ gBattle_BG0_Y = 0;
+ gBattle_BG2_Y = 0;
+ gTasks[taskId].func = sub_80D8424;
+ break;
+ case DPAD_LEFT:
+ case DPAD_RIGHT:
+ break;
+ case DPAD_UP:
+ sub_80D883C(gContestResources->field_0->playerMoveChoice);
+ if (gContestResources->field_0->playerMoveChoice == 0)
+ gContestResources->field_0->playerMoveChoice = numMoves - 1;
+ else
+ gContestResources->field_0->playerMoveChoice--;
+ sub_80D880C(gContestResources->field_0->playerMoveChoice);
+ prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
+ if (numMoves > 1)
+ PlaySE(SE_SELECT);
+ break;
+ case DPAD_DOWN:
+ sub_80D883C(gContestResources->field_0->playerMoveChoice);
+ if (gContestResources->field_0->playerMoveChoice == numMoves - 1)
+ gContestResources->field_0->playerMoveChoice = 0;
+ else
+ gContestResources->field_0->playerMoveChoice++;
+ sub_80D880C(gContestResources->field_0->playerMoveChoice);
+ prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
+ if (numMoves > 1)
+ PlaySE(SE_SELECT);
+ break;
+ }
+ }
+}
+
+void sub_80D880C(s8 a0)
+{
+ sub_80DECB8(2, 55, 0, 31 + a0 * 2, 2, 2, 17, 1);
+}
+
+void sub_80D883C(s8 a0)
+{
+ sub_80DECB8(2, 11, 0, 31 + a0 * 2, 2, 1, 17, 1);
+ sub_80DECB8(2, 11, 0, 32 + a0 * 2, 2, 1, 17, 1);
+}