diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2018-02-26 11:45:47 +0100 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2018-02-26 11:45:47 +0100 |
commit | 8ff9cb0edec3d8af7f89d7a7a6f83cc457f0ed7c (patch) | |
tree | d82c00adae0be38dded3ea72be584b6f6828f837 | |
parent | 4a45b4de4ecc5fb1dbe12868866737e1fc81b7fb (diff) |
give up for now
-rw-r--r-- | asm/battle_link_817C95C.s | 423 | ||||
-rw-r--r-- | include/battle.h | 2 | ||||
-rw-r--r-- | src/battle_link_817C95C.c | 360 |
3 files changed, 342 insertions, 443 deletions
diff --git a/asm/battle_link_817C95C.s b/asm/battle_link_817C95C.s index 234cad55d..7db185572 100644 --- a/asm/battle_link_817C95C.s +++ b/asm/battle_link_817C95C.s @@ -6,429 +6,6 @@ .text - - thumb_func_start sub_817E32C -sub_817E32C: @ 817E32C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0817E3EE - ldr r0, =gBattleStruct - ldr r0, [r0] - movs r1, 0x81 - lsls r1, 2 - adds r4, r0, r1 - ldr r0, =gBattlerAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r2, r0, 24 - cmp r5, 0x12 - beq _0817E36C - cmp r5, 0x13 - beq _0817E3AA - b _0817E3EE - .pool -_0817E36C: - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r4, r0 - ldr r0, [r4, 0x50] - lsls r0, 14 - lsrs r0, 29 - cmp r0, 0 - beq _0817E3EE - subs r0, 0x1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x55 - ldrb r3, [r1] - lsls r3, 28 - lsrs r3, 30 - adds r3, r0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x2 - movs r1, 0 - bl sub_817E684 - adds r2, r4, 0 - adds r2, 0x57 - ldrb r1, [r2] - movs r0, 0x1F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - b _0817E3EA -_0817E3AA: - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r4, r0 - adds r0, r4, 0 - adds r0, 0x52 - ldrb r0, [r0] - lsls r0, 27 - lsrs r0, 29 - cmp r0, 0 - beq _0817E3EE - subs r0, 0x1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x55 - ldrb r3, [r1] - lsls r3, 26 - lsrs r3, 30 - adds r3, r0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x2 - movs r1, 0x1 - bl sub_817E684 - adds r2, r4, 0 - adds r2, 0x57 - ldrb r1, [r2] - movs r0, 0x1F - negs r0, r0 - ands r0, r1 - movs r1, 0x12 -_0817E3EA: - orrs r0, r1 - strb r0, [r2] -_0817E3EE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_817E32C - - thumb_func_start sub_817E3F4 -sub_817E3F4: @ 817E3F4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - movs r0, 0 - str r0, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r2, 0 - str r2, [sp, 0x8] - ldr r3, =0x00007fff - str r3, [sp, 0xC] - movs r4, 0 - str r4, [sp, 0x10] - movs r7, 0 - str r7, [sp, 0x14] - mov r8, r0 - ldr r0, =gBattleStruct - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xB3 - ldrb r0, [r0] - cmp r0, 0 - beq _0817E42A - b _0817E670 -_0817E42A: - movs r2, 0xD2 - lsls r2, 1 - adds r2, r1 - mov r10, r2 - movs r6, 0 -_0817E434: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, =gPlayerParty - adds r0, r4, r0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - cmp r0, 0 - beq _0817E454 - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 -_0817E454: - ldr r5, =gEnemyParty - adds r0, r4, r5 - movs r1, 0xB - movs r2, 0 - bl GetMonData - cmp r0, 0 - beq _0817E46A - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_0817E46A: - adds r6, 0x1 - cmp r6, 0x5 - ble _0817E434 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0817E47E - b _0817E670 -_0817E47E: - cmp r8, r7 - beq _0817E484 - b _0817E670 -_0817E484: - movs r6, 0 - lsls r3, r6, 1 - str r3, [sp, 0x18] - movs r4, 0x64 - mov r8, r4 -_0817E48E: - mov r1, r8 - muls r1, r6 - ldr r0, =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - adds r0, r6, 0x1 - mov r9, r0 - cmp r7, 0 - beq _0817E4EE - adds r0, r4, 0 - movs r1, 0x2D - movs r2, 0 - bl GetMonData - cmp r0, 0 - bne _0817E4EE - movs r4, 0 - lsls r0, r6, 3 - mov r2, r10 - adds r1, r0, r2 - movs r3, 0x3 -_0817E4C4: - lsls r0, r4, 16 - asrs r0, 16 - ldrh r4, [r1] - adds r0, r4 - lsls r0, 16 - lsrs r4, r0, 16 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _0817E4C4 - ldr r1, [sp, 0x8] - lsls r0, r1, 16 - lsls r1, r4, 16 - cmp r0, r1 - bge _0817E4EE - lsls r0, r6, 24 - lsrs r0, 24 - str r0, [sp, 0x10] - lsrs r1, 16 - str r1, [sp, 0x8] - str r7, [sp] -_0817E4EE: - mov r0, r8 - muls r0, r6 - ldr r2, =gEnemyParty - adds r4, r0, r2 - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - ldr r3, [sp, 0x8] - lsls r3, 16 - str r3, [sp, 0x1C] - cmp r7, 0 - beq _0817E5A0 - adds r0, r4, 0 - movs r1, 0x2D - movs r2, 0 - bl GetMonData - cmp r0, 0 - bne _0817E5A0 - movs r4, 0 - ldr r0, [sp, 0xC] - lsls r2, r0, 16 - movs r3, 0x1 - lsls r1, r3, 1 - adds r1, 0x1 - lsls r1, 4 - lsls r0, r6, 3 - adds r0, r1 - mov r3, r10 - adds r1, r0, r3 - movs r3, 0x3 -_0817E534: - lsls r0, r4, 16 - asrs r0, 16 - ldrh r4, [r1] - adds r0, r4 - lsls r0, 16 - lsrs r4, r0, 16 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _0817E534 - asrs r1, r2, 16 - lsls r5, r4, 16 - asrs r0, r5, 16 - cmp r1, r0 - bne _0817E590 - mov r0, r8 - muls r0, r6 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0x19 - movs r2, 0 - bl GetMonData - adds r4, r0, 0 - ldr r2, [sp, 0x14] - mov r0, r8 - muls r0, r2 - ldr r3, =gEnemyParty - adds r0, r3 - movs r1, 0x19 - movs r2, 0 - bl GetMonData - cmp r4, r0 - bls _0817E5A0 - b _0817E594 - .pool -_0817E590: - cmp r1, r0 - ble _0817E5A0 -_0817E594: - lsls r0, r6, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - lsrs r5, 16 - str r5, [sp, 0xC] - str r7, [sp, 0x4] -_0817E5A0: - mov r6, r9 - cmp r6, 0x5 - bgt _0817E5A8 - b _0817E48E -_0817E5A8: - movs r4, 0 - movs r6, 0 - movs r3, 0 - ldr r5, =gPlayerParty - ldr r7, [sp, 0x10] - lsls r0, r7, 3 - mov r1, r10 - adds r2, r0, r1 -_0817E5B8: - lsls r0, r4, 16 - asrs r0, 16 - movs r7, 0 - ldrsh r1, [r2, r7] - cmp r0, r1 - bge _0817E5C8 - ldrh r4, [r2] - adds r6, r3, 0 -_0817E5C8: - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x3 - ble _0817E5B8 - movs r0, 0x64 - ldr r1, [sp, 0x10] - muls r0, r1 - adds r0, r5 - adds r1, r6, 0 - adds r1, 0xD - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - ldr r2, [sp, 0x1C] - cmp r2, 0 - beq _0817E670 - cmp r4, 0 - beq _0817E670 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0817E65C - ldr r3, [sp, 0x10] - cmp r3, 0x2 - bhi _0817E620 - ldr r0, =gBattleScripting - adds r0, 0x25 - ldrb r0, [r0] - bl sub_806D82C - lsls r0, 16 - cmp r0, 0 - beq _0817E630 - b _0817E670 - .pool -_0817E620: - ldr r0, =gBattleScripting - adds r0, 0x25 - ldrb r0, [r0] - bl sub_806D82C - lsls r0, 16 - cmp r0, 0 - beq _0817E670 -_0817E630: - movs r3, 0 - ldr r7, [sp, 0x14] - cmp r7, 0x2 - bls _0817E63A - movs r3, 0x1 -_0817E63A: - lsls r0, r3, 24 - lsrs r0, 24 - ldr r1, =gBattleScripting - adds r1, 0x25 - ldrb r1, [r1] - bl sub_806EF84 - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - ldr r2, [sp] - ldr r3, [sp, 0x4] - bl PutBattleUpdateOnTheAir - b _0817E670 - .pool -_0817E65C: - ldr r0, =gBattleScripting - adds r0, 0x25 - ldrb r1, [r0] - movs r0, 0x1 - eors r0, r1 - adds r1, r4, 0 - ldr r2, [sp] - ldr r3, [sp, 0x4] - bl PutBattleUpdateOnTheAir -_0817E670: - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_817E3F4 - thumb_func_start sub_817E684 sub_817E684: @ 817E684 push {r4-r7,lr} diff --git a/include/battle.h b/include/battle.h index 6d456fd1b..71e8f336d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -472,7 +472,7 @@ struct BattleStruct u8 wishPerishSongBattlerId; bool8 overworldWeatherDone; u8 atkCancellerTracker; - s16 field_1A4[2][6][4]; + s16 field_1A4[2][PARTY_SIZE * 4]; u8 field_204[104]; u8 field_26C[40]; u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT]; diff --git a/src/battle_link_817C95C.c b/src/battle_link_817C95C.c index f951b3da8..c92a963eb 100644 --- a/src/battle_link_817C95C.c +++ b/src/battle_link_817C95C.c @@ -618,21 +618,24 @@ void sub_817E32C(u8 animationId) } } +#ifdef NONMATCHING +// for loop has an unused stack variable void sub_817E3F4(void) { u16 playerBestSpecies = 0, opponentBestSpecies = 0; s16 playerBestSum = 0, opponentBestSum = SHRT_MAX; u8 playerBestMonId = 0, opponentBestMonId = 0; - s16 (*array)[2][6][4] = NULL; + s16 *array = NULL; u8 countPlayer = 0, countOpponent = 0; s16 sum = 0; + u16 species = 0; u16 moveId = 0; s32 i, j; if (gBattleStruct->field_B3) return; - array = &gBattleStruct->field_1A4; + array = (void*) &gBattleStruct->field_1A4[0]; for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL) != SPECIES_NONE) @@ -646,11 +649,11 @@ void sub_817E3F4(void) for (i = 0; i < PARTY_SIZE; i++) { - u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); if (species != SPECIES_NONE && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG, NULL)) { for (sum = 0, j = 0; j < 4; j++) - sum += (*array)[0][i][j]; + sum += array[i * 4 + j]; if (playerBestSum < sum) { @@ -663,9 +666,8 @@ void sub_817E3F4(void) species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, NULL); if (species != SPECIES_NONE && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG, NULL)) { - s32 sideId = B_SIDE_OPPONENT; for (sum = 0, j = 0; j < 4; j++) - sum += (*array)[sideId][i][j]; + sum += array[i * 4 + j]; if (opponentBestSum == sum) { @@ -687,9 +689,9 @@ void sub_817E3F4(void) for (sum = 0, i = 0, j = 0; j < 4; j++) { - if (sum < (*array)[0][playerBestMonId][j]) + if (sum < array[playerBestMonId * 4 + j]) { - sum = (*array)[0][playerBestMonId][j]; + sum = array[playerBestMonId * 4 + j]; i = j; } } @@ -700,22 +702,342 @@ void sub_817E3F4(void) if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { - if (playerBestMonId < 3) + if ((playerBestMonId < 3 && !sub_806D82C(gBattleScripting.multiplayerId)) + || (playerBestMonId >= 3 && sub_806D82C(gBattleScripting.multiplayerId))) { - if (sub_806D82C(gBattleScripting.multiplayerId)) - return; + j = (opponentBestMonId < 3) ? 0 : 1; + PutBattleUpdateOnTheAir(sub_806EF84(j, gBattleScripting.multiplayerId), moveId, playerBestSpecies, opponentBestSpecies); } - else - { - if (!sub_806D82C(gBattleScripting.multiplayerId)) - return; - } - - j = (opponentBestMonId < 3) ? 0 : 1; - PutBattleUpdateOnTheAir(sub_806EF84(j, gBattleScripting.multiplayerId), moveId, playerBestSpecies, opponentBestSpecies); } else { PutBattleUpdateOnTheAir(gBattleScripting.multiplayerId ^ 1, moveId, playerBestSpecies, opponentBestSpecies); } } + +#else +ASM_DIRECT +void sub_817E3F4(void) +{ + asm_unified( + "push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x20\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r1, 0\n\ + str r1, [sp, 0x4]\n\ + movs r2, 0\n\ + str r2, [sp, 0x8]\n\ + ldr r3, =0x00007fff\n\ + str r3, [sp, 0xC]\n\ + movs r4, 0\n\ + str r4, [sp, 0x10]\n\ + movs r7, 0\n\ + str r7, [sp, 0x14]\n\ + mov r8, r0\n\ + ldr r0, =gBattleStruct\n\ + ldr r1, [r0]\n\ + adds r0, r1, 0\n\ + adds r0, 0xB3\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _0817E42A\n\ + b _0817E670\n\ +_0817E42A:\n\ + movs r2, 0xD2\n\ + lsls r2, 1\n\ + adds r2, r1\n\ + mov r10, r2\n\ + movs r6, 0\n\ +_0817E434:\n\ + movs r0, 0x64\n\ + adds r4, r6, 0\n\ + muls r4, r0\n\ + ldr r0, =gPlayerParty\n\ + adds r0, r4, r0\n\ + movs r1, 0xB\n\ + movs r2, 0\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0817E454\n\ + mov r0, r8\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ +_0817E454:\n\ + ldr r5, =gEnemyParty\n\ + adds r0, r4, r5\n\ + movs r1, 0xB\n\ + movs r2, 0\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0817E46A\n\ + adds r0, r7, 0x1\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ +_0817E46A:\n\ + adds r6, 0x1\n\ + cmp r6, 0x5\n\ + ble _0817E434\n\ + ldr r0, =gBattleTypeFlags\n\ + ldr r0, [r0]\n\ + movs r1, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0817E47E\n\ + b _0817E670\n\ +_0817E47E:\n\ + cmp r8, r7\n\ + beq _0817E484\n\ + b _0817E670\n\ +_0817E484:\n\ + movs r6, 0\n\ + lsls r3, r6, 1\n\ + str r3, [sp, 0x18]\n\ + movs r4, 0x64\n\ + mov r8, r4\n\ +_0817E48E:\n\ + mov r1, r8\n\ + muls r1, r6\n\ + ldr r0, =gPlayerParty\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + movs r2, 0\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + adds r0, r6, 0x1\n\ + mov r9, r0\n\ + cmp r7, 0\n\ + beq _0817E4EE\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + movs r2, 0\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _0817E4EE\n\ + movs r4, 0\n\ + lsls r0, r6, 3\n\ + mov r2, r10\n\ + adds r1, r0, r2\n\ + movs r3, 0x3\n\ +_0817E4C4:\n\ + lsls r0, r4, 16\n\ + asrs r0, 16\n\ + ldrh r4, [r1]\n\ + adds r0, r4\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + adds r1, 0x2\n\ + subs r3, 0x1\n\ + cmp r3, 0\n\ + bge _0817E4C4\n\ + ldr r1, [sp, 0x8]\n\ + lsls r0, r1, 16\n\ + lsls r1, r4, 16\n\ + cmp r0, r1\n\ + bge _0817E4EE\n\ + lsls r0, r6, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x10]\n\ + lsrs r1, 16\n\ + str r1, [sp, 0x8]\n\ + str r7, [sp]\n\ +_0817E4EE:\n\ + mov r0, r8\n\ + muls r0, r6\n\ + ldr r2, =gEnemyParty\n\ + adds r4, r0, r2\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + movs r2, 0\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + ldr r3, [sp, 0x8]\n\ + lsls r3, 16\n\ + str r3, [sp, 0x1C]\n\ + cmp r7, 0\n\ + beq _0817E5A0\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + movs r2, 0\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _0817E5A0\n\ + movs r4, 0\n\ + ldr r0, [sp, 0xC]\n\ + lsls r2, r0, 16\n\ + movs r3, 0x1\n\ + lsls r1, r3, 1\n\ + adds r1, 0x1\n\ + lsls r1, 4\n\ + lsls r0, r6, 3\n\ + adds r0, r1\n\ + mov r3, r10\n\ + adds r1, r0, r3\n\ + movs r3, 0x3\n\ +_0817E534:\n\ + lsls r0, r4, 16\n\ + asrs r0, 16\n\ + ldrh r4, [r1]\n\ + adds r0, r4\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + adds r1, 0x2\n\ + subs r3, 0x1\n\ + cmp r3, 0\n\ + bge _0817E534\n\ + asrs r1, r2, 16\n\ + lsls r5, r4, 16\n\ + asrs r0, r5, 16\n\ + cmp r1, r0\n\ + bne _0817E590\n\ + mov r0, r8\n\ + muls r0, r6\n\ + ldr r1, =gEnemyParty\n\ + adds r0, r1\n\ + movs r1, 0x19\n\ + movs r2, 0\n\ + bl GetMonData\n\ + adds r4, r0, 0\n\ + ldr r2, [sp, 0x14]\n\ + mov r0, r8\n\ + muls r0, r2\n\ + ldr r3, =gEnemyParty\n\ + adds r0, r3\n\ + movs r1, 0x19\n\ + movs r2, 0\n\ + bl GetMonData\n\ + cmp r4, r0\n\ + bls _0817E5A0\n\ + b _0817E594\n\ + .pool\n\ +_0817E590:\n\ + cmp r1, r0\n\ + ble _0817E5A0\n\ +_0817E594:\n\ + lsls r0, r6, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x14]\n\ + lsrs r5, 16\n\ + str r5, [sp, 0xC]\n\ + str r7, [sp, 0x4]\n\ +_0817E5A0:\n\ + mov r6, r9\n\ + cmp r6, 0x5\n\ + bgt _0817E5A8\n\ + b _0817E48E\n\ +_0817E5A8:\n\ + movs r4, 0\n\ + movs r6, 0\n\ + movs r3, 0\n\ + ldr r5, =gPlayerParty\n\ + ldr r7, [sp, 0x10]\n\ + lsls r0, r7, 3\n\ + mov r1, r10\n\ + adds r2, r0, r1\n\ +_0817E5B8:\n\ + lsls r0, r4, 16\n\ + asrs r0, 16\n\ + movs r7, 0\n\ + ldrsh r1, [r2, r7]\n\ + cmp r0, r1\n\ + bge _0817E5C8\n\ + ldrh r4, [r2]\n\ + adds r6, r3, 0\n\ +_0817E5C8:\n\ + adds r2, 0x2\n\ + adds r3, 0x1\n\ + cmp r3, 0x3\n\ + ble _0817E5B8\n\ + movs r0, 0x64\n\ + ldr r1, [sp, 0x10]\n\ + muls r0, r1\n\ + adds r0, r5\n\ + adds r1, r6, 0\n\ + adds r1, 0xD\n\ + movs r2, 0\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + ldr r2, [sp, 0x1C]\n\ + cmp r2, 0\n\ + beq _0817E670\n\ + cmp r4, 0\n\ + beq _0817E670\n\ + ldr r0, =gBattleTypeFlags\n\ + ldr r0, [r0]\n\ + movs r1, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0817E65C\n\ + ldr r3, [sp, 0x10]\n\ + cmp r3, 0x2\n\ + bhi _0817E620\n\ + ldr r0, =gBattleScripting\n\ + adds r0, 0x25\n\ + ldrb r0, [r0]\n\ + bl sub_806D82C\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _0817E630\n\ + b _0817E670\n\ + .pool\n\ +_0817E620:\n\ + ldr r0, =gBattleScripting\n\ + adds r0, 0x25\n\ + ldrb r0, [r0]\n\ + bl sub_806D82C\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _0817E670\n\ +_0817E630:\n\ + movs r3, 0\n\ + ldr r7, [sp, 0x14]\n\ + cmp r7, 0x2\n\ + bls _0817E63A\n\ + movs r3, 0x1\n\ +_0817E63A:\n\ + lsls r0, r3, 24\n\ + lsrs r0, 24\n\ + ldr r1, =gBattleScripting\n\ + adds r1, 0x25\n\ + ldrb r1, [r1]\n\ + bl sub_806EF84\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r1, r4, 0\n\ + ldr r2, [sp]\n\ + ldr r3, [sp, 0x4]\n\ + bl PutBattleUpdateOnTheAir\n\ + b _0817E670\n\ + .pool\n\ +_0817E65C:\n\ + ldr r0, =gBattleScripting\n\ + adds r0, 0x25\n\ + ldrb r1, [r0]\n\ + movs r0, 0x1\n\ + eors r0, r1\n\ + adds r1, r4, 0\n\ + ldr r2, [sp]\n\ + ldr r3, [sp, 0x4]\n\ + bl PutBattleUpdateOnTheAir\n\ +_0817E670:\n\ + add sp, 0x20\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool"); +} +#endif |