diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_script_commands.c | 550 |
1 files changed, 131 insertions, 419 deletions
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 400a25eb4..5680849bd 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -9057,435 +9057,147 @@ static void atk6B_atknameinbuff1(void) gBattlescriptCurrInstr++; } -#ifdef NONMATCHING extern const u8 BattleText_Format2[]; +extern const u8 BattleText_Dash[]; +extern const u8 BattleText_Plus[]; +extern const u8 *const gUnknown_0840165C[]; -// TODO: finish static void atk6C_drawlvlupbox(void) { - UNUSED u8 r1 = 0; - UNUSED u8 r7 = 0; + s16 r1 = 0; + s16 r7 = 0; + int i; + u8 * r5; + bool32 sign; switch (gBattleStruct->atk6C_statetracker) { case 0: - sub_802BBD4(0xB, 0, 0x1D, 0x7, r1); - StringCopy(gStringVar4, BattleText_Format2); - + sub_802BBD4(0xB, 0, 0x1D, 0x7, 0); + r5 = StringCopy(gStringVar4, BattleText_Format2); + for (i = 0; i < 6; i++) + { + sign = FALSE; + r5 = StringAppend(r5, gUnknown_0840165C[i]); + r1 = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], gLevelUpStatBoxStats[i]); + switch (i) + { + case 0: + r7 = r1 - gBattleResources_statsBeforeLvlUp->hp; + break; + case 1: + r7 = r1 - gBattleResources_statsBeforeLvlUp->spAtk; + break; + case 2: + r7 = r1 - gBattleResources_statsBeforeLvlUp->atk; + break; + case 3: + r7 = r1 - gBattleResources_statsBeforeLvlUp->spDef; + break; + case 4: + r7 = r1 - gBattleResources_statsBeforeLvlUp->def; + break; + case 5: + r7 = r1 - gBattleResources_statsBeforeLvlUp->spd; + break; + } + if (r7 < 0) + { + r7 = -r7; + sign++; + } + r5[0] = EXT_CTRL_CODE_BEGIN; + r5[1] = EXT_CTRL_CODE_CLEAR_TO; + r5[2] = ((i & 1) * 9 + 5) * 8 + 6; + r5 += 3; + if (sign) + r5 = StringCopy(r5, BattleText_Dash); + else + r5 = StringCopy(r5, BattleText_Plus); + r5[0] = EXT_CTRL_CODE_BEGIN; + r5[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING; + r5[2] = 6; + r5 += 3; + r5 = ConvertIntToDecimalStringN(r5, r7, STR_CONV_MODE_RIGHT_ALIGN, 2); + r5[0] = EXT_CTRL_CODE_BEGIN; + r5[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING; + r5[2] = 0; + r5 += 3; + if (i & 1) + { + r5[0] = CHAR_NEWLINE; + r5[1] = EOS; + r5 += 1; + } + else + { + r5[0] = EXT_CTRL_CODE_BEGIN; + r5[1] = EXT_CTRL_CODE_CLEAR; + r5[2] = 8; + r5 += 3; + *r5 = EOS; + } + } + Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gStringVar4, 0x100, 12, 1); + Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription); + gBattleStruct->atk6C_statetracker++; + break; + case 1: + if (gMain.newKeys != 0) + { + PlaySE(SE_SELECT); + r5 = StringCopy(gStringVar4, BattleText_Format2); + for (i = 0; i < 6; i++) + { + sign = FALSE; + r5 = StringAppend(r5, gUnknown_0840165C[i]); + r1 = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], gLevelUpStatBoxStats[i]); + r5[0] = EXT_CTRL_CODE_BEGIN; + r5[1] = EXT_CTRL_CODE_CLEAR_TO; + r5[2] = ((i & 1) * 9 + 5) * 8 + 6; + r5 += 3; + r5[0] = EXT_CTRL_CODE_BEGIN; + r5[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING; + r5[2] = 6; + r5 += 3; + r5 = ConvertIntToDecimalStringN(r5, r1, STR_CONV_MODE_RIGHT_ALIGN, 3); + r5[0] = EXT_CTRL_CODE_BEGIN; + r5[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING; + r5[2] = 0; + r5 += 3; + if (i & 1) + { + r5[0] = CHAR_NEWLINE; + r5[1] = EOS; + r5 += 1; + } + else + { + r5[0] = EXT_CTRL_CODE_BEGIN; + r5[1] = EXT_CTRL_CODE_CLEAR; + r5[2] = 8; + r5 += 3; + *r5 = EOS; + } + } + Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gStringVar4, 0x100, 12, 1); + Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription); + gBattleStruct->atk6C_statetracker++; + } + break; + case 2: + if (gMain.newKeys != 0) + { + PlaySE(SE_SELECT); + sub_802BBD4(11, 0, 29, 7, TRUE); + gBattleStruct->atk6C_statetracker++; + } + break; + case 3: + gBattlescriptCurrInstr++; + break; } } -#else -NAKED -static void atk6C_drawlvlupbox(void) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - movs r1, 0\n\ - movs r7, 0\n\ - ldr r0, _08024928 @ =gSharedMem\n\ - mov r10, r0\n\ - ldr r4, _0802492C @ =0x0001609c\n\ - add r4, r10\n\ - ldrb r0, [r4]\n\ - cmp r0, 0x1\n\ - bne _0802491C\n\ - b _08024AF4\n\ -_0802491C:\n\ - cmp r0, 0x1\n\ - bgt _08024930\n\ - cmp r0, 0\n\ - beq _0802493E\n\ - b _08024C38\n\ - .align 2, 0\n\ -_08024928: .4byte gSharedMem\n\ -_0802492C: .4byte 0x0001609c\n\ -_08024930:\n\ - cmp r0, 0x2\n\ - bne _08024936\n\ - b _08024C04\n\ -_08024936:\n\ - cmp r0, 0x3\n\ - bne _0802493C\n\ - b _08024C30\n\ -_0802493C:\n\ - b _08024C38\n\ -_0802493E:\n\ - str r1, [sp]\n\ - movs r0, 0xB\n\ - movs r1, 0\n\ - movs r2, 0x1D\n\ - movs r3, 0x7\n\ - bl sub_802BBD4\n\ - ldr r0, _0802499C @ =gStringVar4\n\ - ldr r1, _080249A0 @ =BattleText_Format2\n\ - bl StringCopy\n\ - adds r5, r0, 0\n\ - movs r1, 0\n\ - mov r8, r1\n\ -_0802495A:\n\ - movs r2, 0\n\ - mov r9, r2\n\ - ldr r0, _080249A4 @ =gUnknown_0840165C\n\ - mov r1, r8\n\ - lsls r4, r1, 2\n\ - adds r0, r4, r0\n\ - ldr r1, [r0]\n\ - adds r0, r5, 0\n\ - bl StringAppend\n\ - adds r5, r0, 0\n\ - ldr r0, _080249A8 @ =gSharedMem\n\ - ldr r2, _080249AC @ =0x00016018\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _080249B0 @ =gPlayerParty\n\ - adds r0, r1\n\ - ldr r1, _080249B4 @ =gLevelUpStatBoxStats\n\ - add r1, r8\n\ - ldrb r1, [r1]\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r1, r0, 16\n\ - mov r0, r8\n\ - cmp r0, 0x5\n\ - bhi _08024A1A\n\ - ldr r0, _080249B8 @ =_080249BC\n\ - adds r0, r4, r0\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_0802499C: .4byte gStringVar4\n\ -_080249A0: .4byte BattleText_Format2\n\ -_080249A4: .4byte gUnknown_0840165C\n\ -_080249A8: .4byte gSharedMem\n\ -_080249AC: .4byte 0x00016018\n\ -_080249B0: .4byte gPlayerParty\n\ -_080249B4: .4byte gLevelUpStatBoxStats\n\ -_080249B8: .4byte _080249BC\n\ - .align 2, 0\n\ -_080249BC:\n\ - .4byte _080249D4\n\ - .4byte _080249E0\n\ - .4byte _080249EC\n\ - .4byte _080249F8\n\ - .4byte _08024A04\n\ - .4byte _08024A10\n\ -_080249D4:\n\ - ldr r0, _080249DC @ =gSharedMem + 0x17180\n\ - ldrh r0, [r0]\n\ - b _08024A14\n\ - .align 2, 0\n\ -_080249DC: .4byte gSharedMem + 0x17180\n\ -_080249E0:\n\ - ldr r0, _080249E8 @ =gSharedMem + 0x17180\n\ - ldrh r0, [r0, 0x8]\n\ - b _08024A14\n\ - .align 2, 0\n\ -_080249E8: .4byte gSharedMem + 0x17180\n\ -_080249EC:\n\ - ldr r0, _080249F4 @ =gSharedMem + 0x17180\n\ - ldrh r0, [r0, 0x2]\n\ - b _08024A14\n\ - .align 2, 0\n\ -_080249F4: .4byte gSharedMem + 0x17180\n\ -_080249F8:\n\ - ldr r0, _08024A00 @ =gSharedMem + 0x17180\n\ - ldrh r0, [r0, 0xA]\n\ - b _08024A14\n\ - .align 2, 0\n\ -_08024A00: .4byte gSharedMem + 0x17180\n\ -_08024A04:\n\ - ldr r0, _08024A0C @ =gSharedMem + 0x17180\n\ - ldrh r0, [r0, 0x4]\n\ - b _08024A14\n\ - .align 2, 0\n\ -_08024A0C: .4byte gSharedMem + 0x17180\n\ -_08024A10:\n\ - ldr r0, _08024A54 @ =gSharedMem + 0x17180\n\ - ldrh r0, [r0, 0x6]\n\ -_08024A14:\n\ - subs r0, r1, r0\n\ - lsls r0, 16\n\ - lsrs r7, r0, 16\n\ -_08024A1A:\n\ - lsls r0, r7, 16\n\ - asrs r0, 16\n\ - cmp r0, 0\n\ - bge _08024A2C\n\ - negs r0, r0\n\ - lsls r0, 16\n\ - lsrs r7, r0, 16\n\ - movs r1, 0x1\n\ - add r9, r1\n\ -_08024A2C:\n\ - movs r0, 0xFC\n\ - strb r0, [r5]\n\ - movs r0, 0x13\n\ - strb r0, [r5, 0x1]\n\ - movs r1, 0x1\n\ - mov r2, r8\n\ - ands r1, r2\n\ - lsls r0, r1, 3\n\ - adds r0, r1\n\ - adds r0, 0x5\n\ - lsls r0, 3\n\ - adds r0, 0x6\n\ - strb r0, [r5, 0x2]\n\ - adds r5, 0x3\n\ - mov r0, r9\n\ - cmp r0, 0\n\ - beq _08024A5C\n\ - ldr r1, _08024A58 @ =BattleText_Dash\n\ - b _08024A5E\n\ - .align 2, 0\n\ -_08024A54: .4byte gSharedMem + 0x17180\n\ -_08024A58: .4byte BattleText_Dash\n\ -_08024A5C:\n\ - ldr r1, _08024AA4 @ =BattleText_Plus\n\ -_08024A5E:\n\ - adds r0, r5, 0\n\ - bl StringCopy\n\ - adds r5, r0, 0\n\ - movs r6, 0xFC\n\ - strb r6, [r5]\n\ - movs r4, 0x14\n\ - strb r4, [r5, 0x1]\n\ - movs r0, 0x6\n\ - strb r0, [r5, 0x2]\n\ - adds r5, 0x3\n\ - lsls r1, r7, 16\n\ - asrs r1, 16\n\ - adds r0, r5, 0\n\ - movs r2, 0x1\n\ - movs r3, 0x2\n\ - bl ConvertIntToDecimalStringN\n\ - adds r5, r0, 0\n\ - strb r6, [r5]\n\ - strb r4, [r5, 0x1]\n\ - movs r0, 0\n\ - strb r0, [r5, 0x2]\n\ - adds r5, 0x3\n\ - movs r0, 0x1\n\ - mov r1, r8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08024AA8\n\ - movs r0, 0xFE\n\ - strb r0, [r5]\n\ - movs r0, 0xFF\n\ - strb r0, [r5, 0x1]\n\ - adds r5, 0x1\n\ - b _08024AB8\n\ - .align 2, 0\n\ -_08024AA4: .4byte BattleText_Plus\n\ -_08024AA8:\n\ - strb r6, [r5]\n\ - movs r0, 0x11\n\ - strb r0, [r5, 0x1]\n\ - movs r0, 0x8\n\ - strb r0, [r5, 0x2]\n\ - adds r5, 0x3\n\ - movs r0, 0xFF\n\ - strb r0, [r5]\n\ -_08024AB8:\n\ - movs r2, 0x1\n\ - add r8, r2\n\ - mov r0, r8\n\ - cmp r0, 0x5\n\ - bgt _08024AC4\n\ - b _0802495A\n\ -_08024AC4:\n\ - ldr r4, _08024AE4 @ =gWindowTemplate_Contest_MoveDescription\n\ - ldr r1, _08024AE8 @ =gStringVar4\n\ - adds r2, 0xFF\n\ - movs r0, 0x1\n\ - str r0, [sp]\n\ - adds r0, r4, 0\n\ - movs r3, 0xC\n\ - bl Text_InitWindow\n\ - adds r0, r4, 0\n\ - bl Text_PrintWindow8002F44\n\ - ldr r1, _08024AEC @ =gSharedMem\n\ - ldr r2, _08024AF0 @ =0x0001609c\n\ - adds r1, r2\n\ - b _08024BEA\n\ - .align 2, 0\n\ -_08024AE4: .4byte gWindowTemplate_Contest_MoveDescription\n\ -_08024AE8: .4byte gStringVar4\n\ -_08024AEC: .4byte gSharedMem\n\ -_08024AF0: .4byte 0x0001609c\n\ -_08024AF4:\n\ - ldr r0, _08024B94 @ =gMain\n\ - ldrh r0, [r0, 0x2E]\n\ - cmp r0, 0\n\ - bne _08024AFE\n\ - b _08024C38\n\ -_08024AFE:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - ldr r0, _08024B98 @ =gStringVar4\n\ - ldr r1, _08024B9C @ =BattleText_Format2\n\ - bl StringCopy\n\ - adds r5, r0, 0\n\ - movs r0, 0\n\ - mov r8, r0\n\ - mov r9, r0\n\ - movs r6, 0xFC\n\ - movs r7, 0x14\n\ - ldr r1, _08024BA0 @ =0x00016018\n\ - add r10, r1\n\ -_08024B1C:\n\ - ldr r1, _08024BA4 @ =gUnknown_0840165C\n\ - mov r2, r8\n\ - lsls r0, r2, 2\n\ - adds r0, r1\n\ - ldr r1, [r0]\n\ - adds r0, r5, 0\n\ - bl StringAppend\n\ - adds r5, r0, 0\n\ - mov r0, r10\n\ - ldrb r1, [r0]\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _08024BA8 @ =gPlayerParty\n\ - adds r0, r1\n\ - ldr r1, _08024BAC @ =gLevelUpStatBoxStats\n\ - add r1, r8\n\ - ldrb r1, [r1]\n\ - bl GetMonData\n\ - adds r1, r0, 0\n\ - strb r6, [r5]\n\ - movs r0, 0x13\n\ - strb r0, [r5, 0x1]\n\ - movs r4, 0x1\n\ - mov r2, r8\n\ - ands r4, r2\n\ - lsls r0, r4, 3\n\ - adds r0, r4\n\ - adds r0, 0x5\n\ - lsls r0, 3\n\ - adds r0, 0x6\n\ - strb r0, [r5, 0x2]\n\ - adds r5, 0x3\n\ - strb r6, [r5]\n\ - strb r7, [r5, 0x1]\n\ - movs r0, 0x6\n\ - strb r0, [r5, 0x2]\n\ - adds r5, 0x3\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - adds r0, r5, 0\n\ - movs r2, 0x1\n\ - movs r3, 0x3\n\ - bl ConvertIntToDecimalStringN\n\ - adds r5, r0, 0\n\ - strb r6, [r5]\n\ - strb r7, [r5, 0x1]\n\ - mov r0, r9\n\ - strb r0, [r5, 0x2]\n\ - adds r5, 0x3\n\ - cmp r4, 0\n\ - beq _08024BB0\n\ - movs r0, 0xFE\n\ - strb r0, [r5]\n\ - movs r0, 0xFF\n\ - strb r0, [r5, 0x1]\n\ - adds r5, 0x1\n\ - b _08024BC0\n\ - .align 2, 0\n\ -_08024B94: .4byte gMain\n\ -_08024B98: .4byte gStringVar4\n\ -_08024B9C: .4byte BattleText_Format2\n\ -_08024BA0: .4byte 0x00016018\n\ -_08024BA4: .4byte gUnknown_0840165C\n\ -_08024BA8: .4byte gPlayerParty\n\ -_08024BAC: .4byte gLevelUpStatBoxStats\n\ -_08024BB0:\n\ - strb r6, [r5]\n\ - movs r0, 0x11\n\ - strb r0, [r5, 0x1]\n\ - movs r0, 0x8\n\ - strb r0, [r5, 0x2]\n\ - adds r5, 0x3\n\ - movs r0, 0xFF\n\ - strb r0, [r5]\n\ -_08024BC0:\n\ - movs r1, 0x1\n\ - add r8, r1\n\ - mov r2, r8\n\ - cmp r2, 0x5\n\ - ble _08024B1C\n\ - ldr r4, _08024BF4 @ =gWindowTemplate_Contest_MoveDescription\n\ - ldr r1, _08024BF8 @ =gStringVar4\n\ - movs r2, 0x80\n\ - lsls r2, 1\n\ - movs r0, 0x1\n\ - str r0, [sp]\n\ - adds r0, r4, 0\n\ - movs r3, 0xC\n\ - bl Text_InitWindow\n\ - adds r0, r4, 0\n\ - bl Text_PrintWindow8002F44\n\ - ldr r1, _08024BFC @ =gSharedMem\n\ - ldr r0, _08024C00 @ =0x0001609c\n\ - adds r1, r0\n\ -_08024BEA:\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ - b _08024C38\n\ - .align 2, 0\n\ -_08024BF4: .4byte gWindowTemplate_Contest_MoveDescription\n\ -_08024BF8: .4byte gStringVar4\n\ -_08024BFC: .4byte gSharedMem\n\ -_08024C00: .4byte 0x0001609c\n\ -_08024C04:\n\ - ldr r0, _08024C2C @ =gMain\n\ - ldrh r0, [r0, 0x2E]\n\ - cmp r0, 0\n\ - beq _08024C38\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - str r0, [sp]\n\ - movs r0, 0xB\n\ - movs r1, 0\n\ - movs r2, 0x1D\n\ - movs r3, 0x7\n\ - bl sub_802BBD4\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ - b _08024C38\n\ - .align 2, 0\n\ -_08024C2C: .4byte gMain\n\ -_08024C30:\n\ - ldr r1, _08024C48 @ =gBattlescriptCurrInstr\n\ - ldr r0, [r1]\n\ - adds r0, 0x1\n\ - str r0, [r1]\n\ -_08024C38:\n\ - add sp, 0x4\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\ - .align 2, 0\n\ -_08024C48: .4byte gBattlescriptCurrInstr\n\ - .syntax divided"); -} - -#endif // NONMATCHING - static void atk6D_resetsentmonsvalue(void) { ResetSentPokesToOpponentValue(); |