mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-04 02:10:01 +01:00
through sub_80D883C
This commit is contained in:
parent
7d446a9ef7
commit
210cedd077
282
asm/contest.s
282
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}
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user