diff options
-rw-r--r-- | asm/battle_tower.s | 528 | ||||
-rw-r--r-- | src/battle_tower.c | 454 |
2 files changed, 455 insertions, 527 deletions
diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 8339d8e21..9c574eeb4 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -6,532 +6,6 @@ .text - thumb_func_start sub_8134DD4 -sub_8134DD4: @ 8134DD4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - movs r0, 0 - str r0, [sp, 0x18] - movs r1, 0x3C - str r1, [sp, 0x1C] - add r4, sp, 0xC - movs r0, 0xFF - strb r0, [r4] - bl ZeroEnemyPartyMons - ldr r1, _08134E04 @ =gSaveBlock2 - ldr r2, _08134E08 @ =0x00000564 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x13 - bhi _08134E0C - movs r3, 0x6 - str r3, [sp, 0x14] - b _08134ED8 - .align 2, 0 -_08134E04: .4byte gSaveBlock2 -_08134E08: .4byte 0x00000564 -_08134E0C: - cmp r0, 0x1D - bhi _08134E1A - movs r0, 0x9 - str r0, [sp, 0x14] - movs r1, 0x1E - str r1, [sp, 0x18] - b _08134ED8 -_08134E1A: - cmp r0, 0x27 - bhi _08134E28 - movs r2, 0xC - str r2, [sp, 0x14] - movs r3, 0x3C - str r3, [sp, 0x18] - b _08134ED8 -_08134E28: - cmp r0, 0x31 - bhi _08134E36 - movs r0, 0xF - str r0, [sp, 0x14] - movs r1, 0x5A - str r1, [sp, 0x18] - b _08134ED8 -_08134E36: - cmp r0, 0x3B - bhi _08134E44 - movs r2, 0x12 - str r2, [sp, 0x14] - movs r3, 0x78 - str r3, [sp, 0x18] - b _08134ED8 -_08134E44: - cmp r0, 0x45 - bhi _08134E52 - movs r0, 0x15 - str r0, [sp, 0x14] - movs r1, 0x96 - str r1, [sp, 0x18] - b _08134ED8 -_08134E52: - cmp r0, 0x4F - bhi _08134E60 - movs r2, 0x1F - str r2, [sp, 0x14] - movs r3, 0xB4 - str r3, [sp, 0x18] - b _08134ED8 -_08134E60: - cmp r0, 0x63 - bhi _08134E72 - movs r0, 0x1F - str r0, [sp, 0x14] - movs r1, 0xC8 - str r1, [sp, 0x18] - movs r2, 0x64 - str r2, [sp, 0x1C] - b _08134ED8 -_08134E72: - cmp r0, 0xC8 - bne _08134E9C - movs r6, 0 -_08134E78: - movs r0, 0x64 - muls r0, r6 - ldr r1, _08134E94 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2C - muls r1, r6 - ldr r2, _08134E98 @ =gSaveBlock2 + 0x4CC - adds r1, r2 - bl sub_803ADE8 - adds r6, 0x1 - cmp r6, 0x2 - ble _08134E78 - b _08135082 - .align 2, 0 -_08134E94: .4byte gEnemyParty -_08134E98: .4byte gSaveBlock2 + 0x4CC -_08134E9C: - movs r6, 0 - adds r4, r1, 0 - ldr r3, _08134ECC @ =0xffffc158 - adds r5, r4, r3 -_08134EA4: - movs r0, 0x64 - muls r0, r6 - ldr r1, _08134ED0 @ =gEnemyParty - adds r0, r1 - ldr r2, _08134ED4 @ =0x00000564 - adds r1, r4, r2 - ldrb r2, [r1] - movs r1, 0xA4 - muls r1, r2 - adds r1, r5 - movs r2, 0x2C - muls r2, r6 - adds r1, r2 - bl sub_803ADE8 - adds r6, 0x1 - cmp r6, 0x2 - ble _08134EA4 - b _08135082 - .align 2, 0 -_08134ECC: .4byte 0xffffc158 -_08134ED0: .4byte gEnemyParty -_08134ED4: .4byte 0x00000564 -_08134ED8: - ldr r2, _08134EF4 @ =gSaveBlock2 - ldr r3, _08134EF8 @ =0x00000554 - adds r0, r2, r3 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - adds r1, r2, 0 - cmp r0, 0 - beq _08134F00 - ldr r0, _08134EFC @ =gBattleTowerLevel100Mons - mov r10, r0 - movs r2, 0x64 - str r2, [sp, 0x10] - b _08134F08 - .align 2, 0 -_08134EF4: .4byte gSaveBlock2 -_08134EF8: .4byte 0x00000554 -_08134EFC: .4byte gBattleTowerLevel100Mons -_08134F00: - ldr r3, _08134F54 @ =gBattleTowerLevel50Mons - mov r10, r3 - movs r0, 0x32 - str r0, [sp, 0x10] -_08134F08: - ldr r2, _08134F58 @ =gBattleTowerTrainers - ldr r3, _08134F5C @ =0x00000564 - adds r0, r1, r3 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x9] - str r0, [sp, 0x20] - movs r6, 0 -_08134F1E: - bl Random - movs r1, 0xFF - ands r1, r0 - ldr r2, [sp, 0x1C] - adds r0, r1, 0 - muls r0, r2 - asrs r0, 8 - ldr r3, [sp, 0x18] - adds r7, r0, r3 - ldr r0, [sp, 0x20] - cmp r0, 0 - beq _08134F48 - lsls r0, r7, 4 - add r0, r10 - ldrb r0, [r0, 0x3] - ldr r1, [sp, 0x20] - ands r0, r1 - cmp r0, r1 - beq _08134F48 - b _0813507C -_08134F48: - movs r5, 0 - lsls r0, r7, 4 - mov r2, r10 - adds r3, r0, r2 - movs r4, 0 - b _08134F64 - .align 2, 0 -_08134F54: .4byte gBattleTowerLevel50Mons -_08134F58: .4byte gBattleTowerTrainers -_08134F5C: .4byte 0x00000564 -_08134F60: - adds r4, 0x64 - adds r5, 0x1 -_08134F64: - cmp r5, r6 - bge _08134F7E - ldr r1, _08135094 @ =gEnemyParty - adds r0, r4, r1 - movs r1, 0xB - movs r2, 0 - str r3, [sp, 0x24] - bl GetMonData - ldr r3, [sp, 0x24] - ldrh r2, [r3] - cmp r0, r2 - bne _08134F60 -_08134F7E: - cmp r5, r6 - bne _0813507C - movs r5, 0 - cmp r5, r6 - bge _08134FCC - ldr r3, _08135098 @ =gBattleTowerHeldItems - mov r9, r3 - lsls r0, r7, 4 - add r0, r10 - mov r8, r0 - movs r3, 0 -_08134F94: - ldr r0, _08135094 @ =gEnemyParty - adds r4, r3, r0 - adds r0, r4, 0 - movs r1, 0xC - movs r2, 0 - str r3, [sp, 0x24] - bl GetMonData - ldr r3, [sp, 0x24] - cmp r0, 0 - beq _08134FC4 - adds r0, r4, 0 - movs r1, 0xC - movs r2, 0 - bl GetMonData - mov r2, r8 - ldrb r1, [r2, 0x2] - lsls r1, 1 - add r1, r9 - ldr r3, [sp, 0x24] - ldrh r1, [r1] - cmp r0, r1 - beq _08134FCC -_08134FC4: - adds r3, 0x64 - adds r5, 0x1 - cmp r5, r6 - blt _08134F94 -_08134FCC: - cmp r5, r6 - bne _0813507C - movs r5, 0 - cmp r5, r6 - bge _08134FEE - add r0, sp, 0x4 - ldrh r0, [r0] - cmp r0, r7 - beq _08134FEE - add r1, sp, 0x4 -_08134FE0: - adds r1, 0x2 - adds r5, 0x1 - cmp r5, r6 - bge _08134FEE - ldrh r0, [r1] - cmp r0, r7 - bne _08134FE0 -_08134FEE: - cmp r5, r6 - bne _0813507C - lsls r0, r6, 1 - add r0, sp - adds r0, 0x4 - strh r7, [r0] - movs r3, 0x64 - adds r0, r6, 0 - muls r0, r3 - ldr r1, _08135094 @ =gEnemyParty - adds r0, r1 - lsls r4, r7, 4 - mov r3, r10 - adds r2, r4, r3 - ldrh r1, [r2] - ldrb r2, [r2, 0xC] - str r2, [sp] - ldr r2, [sp, 0x10] - ldr r3, [sp, 0x14] - bl CreateMonWithEVSpread - movs r5, 0 - adds r0, r6, 0x1 - mov r9, r0 - mov r8, r4 - movs r0, 0x64 - adds r7, r6, 0 - muls r7, r0 - mov r0, r10 - adds r0, 0x4 - adds r4, r0 - ldr r3, _08135094 @ =gEnemyParty -_0813502E: - ldrh r1, [r4] - lsls r2, r5, 24 - lsrs r2, 24 - adds r0, r7, r3 - str r3, [sp, 0x24] - bl SetMonMoveSlot - ldrh r0, [r4] - ldr r3, [sp, 0x24] - cmp r0, 0xDA - bne _0813504A - movs r0, 0 - mov r1, sp - strb r0, [r1, 0xC] -_0813504A: - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _0813502E - movs r2, 0x64 - adds r4, r6, 0 - muls r4, r2 - ldr r3, _08135094 @ =gEnemyParty - adds r4, r3 - adds r0, r4, 0 - movs r1, 0x20 - add r2, sp, 0xC - bl SetMonData - mov r0, r8 - add r0, r10 - ldrb r2, [r0, 0x2] - lsls r2, 1 - ldr r0, _08135098 @ =gBattleTowerHeldItems - adds r2, r0 - adds r0, r4, 0 - movs r1, 0xC - bl SetMonData - mov r6, r9 -_0813507C: - cmp r6, 0x3 - beq _08135082 - b _08134F1E -_08135082: - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08135094: .4byte gEnemyParty -_08135098: .4byte gBattleTowerHeldItems - thumb_func_end sub_8134DD4 - - thumb_func_start CalcBattleTowerBanlistSeenCount -CalcBattleTowerBanlistSeenCount: @ 813509C - push {r4-r6,lr} - movs r5, 0 - ldr r2, _081350D8 @ =gBattleTowerBanlist - ldrh r0, [r2] - ldr r1, _081350DC @ =0x0000ffff - cmp r0, r1 - beq _081350CE - adds r6, r1, 0 - adds r4, r2, 0 -_081350AE: - ldrh r0, [r4] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _081350C6 - adds r5, 0x1 -_081350C6: - adds r4, 0x2 - ldrh r0, [r4] - cmp r0, r6 - bne _081350AE -_081350CE: - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_081350D8: .4byte gBattleTowerBanlist -_081350DC: .4byte 0x0000ffff - thumb_func_end CalcBattleTowerBanlistSeenCount - - thumb_func_start AppendBattleTowerBannedSpeciesName -AppendBattleTowerBannedSpeciesName: @ 81350E0 - push {r4-r6,lr} - adds r5, r2, 0 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 24 - lsrs r4, r1, 24 - adds r0, r6, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _081351E6 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - subs r0, r4, 0x1 - cmp r0, 0xA - bhi _081351B0 - lsls r0, 2 - ldr r1, _08135118 @ =_0813511C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08135118: .4byte _0813511C - .align 2, 0 -_0813511C: - .4byte _08135148 - .4byte _08135178 - .4byte _08135148 - .4byte _081351B0 - .4byte _08135148 - .4byte _081351B0 - .4byte _08135148 - .4byte _081351B0 - .4byte _08135148 - .4byte _081351B0 - .4byte _08135148 -_08135148: - cmp r5, r4 - bne _08135160 - ldr r0, _08135158 @ =gStringVar1 - ldr r1, _0813515C @ =gUnknown_08400E23 - bl StringAppend - b _081351D8 - .align 2, 0 -_08135158: .4byte gStringVar1 -_0813515C: .4byte gUnknown_08400E23 -_08135160: - cmp r5, r4 - ble _081351D8 - ldr r0, _08135170 @ =gStringVar1 - ldr r1, _08135174 @ =gUnknown_08400E29 - bl StringAppend - b _081351D8 - .align 2, 0 -_08135170: .4byte gStringVar1 -_08135174: .4byte gUnknown_08400E29 -_08135178: - cmp r4, r5 - bne _08135190 - ldr r0, _08135188 @ =gStringVar1 - ldr r1, _0813518C @ =gUnknown_08400E23 - bl StringAppend - b _08135198 - .align 2, 0 -_08135188: .4byte gStringVar1 -_0813518C: .4byte gUnknown_08400E23 -_08135190: - ldr r0, _081351A4 @ =gStringVar1 - ldr r1, _081351A8 @ =gUnknown_08400E29 - bl StringAppend -_08135198: - ldr r0, _081351A4 @ =gStringVar1 - ldr r1, _081351AC @ =gUnknown_08400E30 - bl StringAppend - b _081351D8 - .align 2, 0 -_081351A4: .4byte gStringVar1 -_081351A8: .4byte gUnknown_08400E29 -_081351AC: .4byte gUnknown_08400E30 -_081351B0: - cmp r4, r5 - bne _081351C8 - ldr r0, _081351C0 @ =gStringVar1 - ldr r1, _081351C4 @ =gUnknown_08400E23 - bl StringAppend - b _081351D0 - .align 2, 0 -_081351C0: .4byte gStringVar1 -_081351C4: .4byte gUnknown_08400E23 -_081351C8: - ldr r0, _081351F0 @ =gStringVar1 - ldr r1, _081351F4 @ =gUnknown_08400E29 - bl StringAppend -_081351D0: - ldr r0, _081351F0 @ =gStringVar1 - ldr r1, _081351F8 @ =gUnknown_08400E2E - bl StringAppend -_081351D8: - ldr r0, _081351F0 @ =gStringVar1 - movs r1, 0xB - muls r1, r6 - ldr r2, _081351FC @ =gSpeciesNames - adds r1, r2 - bl StringAppend -_081351E6: - adds r0, r4, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_081351F0: .4byte gStringVar1 -_081351F4: .4byte gUnknown_08400E29 -_081351F8: .4byte gUnknown_08400E2E -_081351FC: .4byte gSpeciesNames - thumb_func_end AppendBattleTowerBannedSpeciesName - thumb_func_start CheckMonBattleTowerBanlist CheckMonBattleTowerBanlist: @ 8135200 push {r4-r7,lr} @@ -734,7 +208,7 @@ _081352FE: movs r0, 0 mov r1, r9 strb r0, [r1] - bl CalcBattleTowerBanlistSeenCount + bl CountBattleTowerBanlistCaught adds r6, r0, 0 ldr r2, _081353D4 @ =gBattleTowerBanlist ldrh r0, [r2] diff --git a/src/battle_tower.c b/src/battle_tower.c index 90884ec98..3ba522fe5 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1,10 +1,20 @@ #include "global.h" #include "battle_tower.h" +#include "data2.h" #include "event_data.h" #include "map_object_constants.h" +#include "pokedex.h" #include "rng.h" +#include "string_util.h" +#include "text.h" #include "vars.h" +extern u8 gUnknown_08400E23[]; +extern u8 gUnknown_08400E29[]; +extern u8 gUnknown_08400E2E[]; +extern u8 gUnknown_08400E30[]; + +extern u16 gBattleTowerBanlist[]; extern u8 gTrainerClassToPicIndex[]; extern u8 gTrainerClassToNameIndex[]; extern u8 gUnknown_08405EB0[]; @@ -1116,3 +1126,447 @@ void get_trainer_name(u8* dest) dest[i] = 0xFF; } + +__attribute__((naked)) +void sub_8134DD4(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, 0x28\n\ + movs r0, 0\n\ + str r0, [sp, 0x18]\n\ + movs r1, 0x3C\n\ + str r1, [sp, 0x1C]\n\ + add r4, sp, 0xC\n\ + movs r0, 0xFF\n\ + strb r0, [r4]\n\ + bl ZeroEnemyPartyMons\n\ + ldr r1, _08134E04 @ =gSaveBlock2\n\ + ldr r2, _08134E08 @ =0x00000564\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x13\n\ + bhi _08134E0C\n\ + movs r3, 0x6\n\ + str r3, [sp, 0x14]\n\ + b _08134ED8\n\ + .align 2, 0\n\ +_08134E04: .4byte gSaveBlock2\n\ +_08134E08: .4byte 0x00000564\n\ +_08134E0C:\n\ + cmp r0, 0x1D\n\ + bhi _08134E1A\n\ + movs r0, 0x9\n\ + str r0, [sp, 0x14]\n\ + movs r1, 0x1E\n\ + str r1, [sp, 0x18]\n\ + b _08134ED8\n\ +_08134E1A:\n\ + cmp r0, 0x27\n\ + bhi _08134E28\n\ + movs r2, 0xC\n\ + str r2, [sp, 0x14]\n\ + movs r3, 0x3C\n\ + str r3, [sp, 0x18]\n\ + b _08134ED8\n\ +_08134E28:\n\ + cmp r0, 0x31\n\ + bhi _08134E36\n\ + movs r0, 0xF\n\ + str r0, [sp, 0x14]\n\ + movs r1, 0x5A\n\ + str r1, [sp, 0x18]\n\ + b _08134ED8\n\ +_08134E36:\n\ + cmp r0, 0x3B\n\ + bhi _08134E44\n\ + movs r2, 0x12\n\ + str r2, [sp, 0x14]\n\ + movs r3, 0x78\n\ + str r3, [sp, 0x18]\n\ + b _08134ED8\n\ +_08134E44:\n\ + cmp r0, 0x45\n\ + bhi _08134E52\n\ + movs r0, 0x15\n\ + str r0, [sp, 0x14]\n\ + movs r1, 0x96\n\ + str r1, [sp, 0x18]\n\ + b _08134ED8\n\ +_08134E52:\n\ + cmp r0, 0x4F\n\ + bhi _08134E60\n\ + movs r2, 0x1F\n\ + str r2, [sp, 0x14]\n\ + movs r3, 0xB4\n\ + str r3, [sp, 0x18]\n\ + b _08134ED8\n\ +_08134E60:\n\ + cmp r0, 0x63\n\ + bhi _08134E72\n\ + movs r0, 0x1F\n\ + str r0, [sp, 0x14]\n\ + movs r1, 0xC8\n\ + str r1, [sp, 0x18]\n\ + movs r2, 0x64\n\ + str r2, [sp, 0x1C]\n\ + b _08134ED8\n\ +_08134E72:\n\ + cmp r0, 0xC8\n\ + bne _08134E9C\n\ + movs r6, 0\n\ +_08134E78:\n\ + movs r0, 0x64\n\ + muls r0, r6\n\ + ldr r1, _08134E94 @ =gEnemyParty\n\ + adds r0, r1\n\ + movs r1, 0x2C\n\ + muls r1, r6\n\ + ldr r2, _08134E98 @ =gSaveBlock2 + 0x4CC\n\ + adds r1, r2\n\ + bl sub_803ADE8\n\ + adds r6, 0x1\n\ + cmp r6, 0x2\n\ + ble _08134E78\n\ + b _08135082\n\ + .align 2, 0\n\ +_08134E94: .4byte gEnemyParty\n\ +_08134E98: .4byte gSaveBlock2 + 0x4CC\n\ +_08134E9C:\n\ + movs r6, 0\n\ + adds r4, r1, 0\n\ + ldr r3, _08134ECC @ =0xffffc158\n\ + adds r5, r4, r3\n\ +_08134EA4:\n\ + movs r0, 0x64\n\ + muls r0, r6\n\ + ldr r1, _08134ED0 @ =gEnemyParty\n\ + adds r0, r1\n\ + ldr r2, _08134ED4 @ =0x00000564\n\ + adds r1, r4, r2\n\ + ldrb r2, [r1]\n\ + movs r1, 0xA4\n\ + muls r1, r2\n\ + adds r1, r5\n\ + movs r2, 0x2C\n\ + muls r2, r6\n\ + adds r1, r2\n\ + bl sub_803ADE8\n\ + adds r6, 0x1\n\ + cmp r6, 0x2\n\ + ble _08134EA4\n\ + b _08135082\n\ + .align 2, 0\n\ +_08134ECC: .4byte 0xffffc158\n\ +_08134ED0: .4byte gEnemyParty\n\ +_08134ED4: .4byte 0x00000564\n\ +_08134ED8:\n\ + ldr r2, _08134EF4 @ =gSaveBlock2\n\ + ldr r3, _08134EF8 @ =0x00000554\n\ + adds r0, r2, r3\n\ + ldrb r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + adds r1, r2, 0\n\ + cmp r0, 0\n\ + beq _08134F00\n\ + ldr r0, _08134EFC @ =gBattleTowerLevel100Mons\n\ + mov r10, r0\n\ + movs r2, 0x64\n\ + str r2, [sp, 0x10]\n\ + b _08134F08\n\ + .align 2, 0\n\ +_08134EF4: .4byte gSaveBlock2\n\ +_08134EF8: .4byte 0x00000554\n\ +_08134EFC: .4byte gBattleTowerLevel100Mons\n\ +_08134F00:\n\ + ldr r3, _08134F54 @ =gBattleTowerLevel50Mons\n\ + mov r10, r3\n\ + movs r0, 0x32\n\ + str r0, [sp, 0x10]\n\ +_08134F08:\n\ + ldr r2, _08134F58 @ =gBattleTowerTrainers\n\ + ldr r3, _08134F5C @ =0x00000564\n\ + adds r0, r1, r3\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r0, 3\n\ + adds r0, r2\n\ + ldrb r0, [r0, 0x9]\n\ + str r0, [sp, 0x20]\n\ + movs r6, 0\n\ +_08134F1E:\n\ + bl Random\n\ + movs r1, 0xFF\n\ + ands r1, r0\n\ + ldr r2, [sp, 0x1C]\n\ + adds r0, r1, 0\n\ + muls r0, r2\n\ + asrs r0, 8\n\ + ldr r3, [sp, 0x18]\n\ + adds r7, r0, r3\n\ + ldr r0, [sp, 0x20]\n\ + cmp r0, 0\n\ + beq _08134F48\n\ + lsls r0, r7, 4\n\ + add r0, r10\n\ + ldrb r0, [r0, 0x3]\n\ + ldr r1, [sp, 0x20]\n\ + ands r0, r1\n\ + cmp r0, r1\n\ + beq _08134F48\n\ + b _0813507C\n\ +_08134F48:\n\ + movs r5, 0\n\ + lsls r0, r7, 4\n\ + mov r2, r10\n\ + adds r3, r0, r2\n\ + movs r4, 0\n\ + b _08134F64\n\ + .align 2, 0\n\ +_08134F54: .4byte gBattleTowerLevel50Mons\n\ +_08134F58: .4byte gBattleTowerTrainers\n\ +_08134F5C: .4byte 0x00000564\n\ +_08134F60:\n\ + adds r4, 0x64\n\ + adds r5, 0x1\n\ +_08134F64:\n\ + cmp r5, r6\n\ + bge _08134F7E\n\ + ldr r1, _08135094 @ =gEnemyParty\n\ + adds r0, r4, r1\n\ + movs r1, 0xB\n\ + movs r2, 0\n\ + str r3, [sp, 0x24]\n\ + bl GetMonData\n\ + ldr r3, [sp, 0x24]\n\ + ldrh r2, [r3]\n\ + cmp r0, r2\n\ + bne _08134F60\n\ +_08134F7E:\n\ + cmp r5, r6\n\ + bne _0813507C\n\ + movs r5, 0\n\ + cmp r5, r6\n\ + bge _08134FCC\n\ + ldr r3, _08135098 @ =gBattleTowerHeldItems\n\ + mov r9, r3\n\ + lsls r0, r7, 4\n\ + add r0, r10\n\ + mov r8, r0\n\ + movs r3, 0\n\ +_08134F94:\n\ + ldr r0, _08135094 @ =gEnemyParty\n\ + adds r4, r3, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + movs r2, 0\n\ + str r3, [sp, 0x24]\n\ + bl GetMonData\n\ + ldr r3, [sp, 0x24]\n\ + cmp r0, 0\n\ + beq _08134FC4\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + movs r2, 0\n\ + bl GetMonData\n\ + mov r2, r8\n\ + ldrb r1, [r2, 0x2]\n\ + lsls r1, 1\n\ + add r1, r9\n\ + ldr r3, [sp, 0x24]\n\ + ldrh r1, [r1]\n\ + cmp r0, r1\n\ + beq _08134FCC\n\ +_08134FC4:\n\ + adds r3, 0x64\n\ + adds r5, 0x1\n\ + cmp r5, r6\n\ + blt _08134F94\n\ +_08134FCC:\n\ + cmp r5, r6\n\ + bne _0813507C\n\ + movs r5, 0\n\ + cmp r5, r6\n\ + bge _08134FEE\n\ + add r0, sp, 0x4\n\ + ldrh r0, [r0]\n\ + cmp r0, r7\n\ + beq _08134FEE\n\ + add r1, sp, 0x4\n\ +_08134FE0:\n\ + adds r1, 0x2\n\ + adds r5, 0x1\n\ + cmp r5, r6\n\ + bge _08134FEE\n\ + ldrh r0, [r1]\n\ + cmp r0, r7\n\ + bne _08134FE0\n\ +_08134FEE:\n\ + cmp r5, r6\n\ + bne _0813507C\n\ + lsls r0, r6, 1\n\ + add r0, sp\n\ + adds r0, 0x4\n\ + strh r7, [r0]\n\ + movs r3, 0x64\n\ + adds r0, r6, 0\n\ + muls r0, r3\n\ + ldr r1, _08135094 @ =gEnemyParty\n\ + adds r0, r1\n\ + lsls r4, r7, 4\n\ + mov r3, r10\n\ + adds r2, r4, r3\n\ + ldrh r1, [r2]\n\ + ldrb r2, [r2, 0xC]\n\ + str r2, [sp]\n\ + ldr r2, [sp, 0x10]\n\ + ldr r3, [sp, 0x14]\n\ + bl CreateMonWithEVSpread\n\ + movs r5, 0\n\ + adds r0, r6, 0x1\n\ + mov r9, r0\n\ + mov r8, r4\n\ + movs r0, 0x64\n\ + adds r7, r6, 0\n\ + muls r7, r0\n\ + mov r0, r10\n\ + adds r0, 0x4\n\ + adds r4, r0\n\ + ldr r3, _08135094 @ =gEnemyParty\n\ +_0813502E:\n\ + ldrh r1, [r4]\n\ + lsls r2, r5, 24\n\ + lsrs r2, 24\n\ + adds r0, r7, r3\n\ + str r3, [sp, 0x24]\n\ + bl SetMonMoveSlot\n\ + ldrh r0, [r4]\n\ + ldr r3, [sp, 0x24]\n\ + cmp r0, 0xDA\n\ + bne _0813504A\n\ + movs r0, 0\n\ + mov r1, sp\n\ + strb r0, [r1, 0xC]\n\ +_0813504A:\n\ + adds r4, 0x2\n\ + adds r5, 0x1\n\ + cmp r5, 0x3\n\ + ble _0813502E\n\ + movs r2, 0x64\n\ + adds r4, r6, 0\n\ + muls r4, r2\n\ + ldr r3, _08135094 @ =gEnemyParty\n\ + adds r4, r3\n\ + adds r0, r4, 0\n\ + movs r1, 0x20\n\ + add r2, sp, 0xC\n\ + bl SetMonData\n\ + mov r0, r8\n\ + add r0, r10\n\ + ldrb r2, [r0, 0x2]\n\ + lsls r2, 1\n\ + ldr r0, _08135098 @ =gBattleTowerHeldItems\n\ + adds r2, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + bl SetMonData\n\ + mov r6, r9\n\ +_0813507C:\n\ + cmp r6, 0x3\n\ + beq _08135082\n\ + b _08134F1E\n\ +_08135082:\n\ + add sp, 0x28\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\ +_08135094: .4byte gEnemyParty\n\ +_08135098: .4byte gBattleTowerHeldItems\n\ +.syntax divided\n"); +} + +u32 CountBattleTowerBanlistCaught() +{ + s32 i; + u32 numCaught = 0; + + for (i = 0; gBattleTowerBanlist[i] != 0xFFFF; i++) + { + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleTowerBanlist[i]), FLAG_GET_CAUGHT)) + { + numCaught++; + } + } + + return numCaught; +} + +u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numToAppend) +{ + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) + { + curIndexToAppend++; + + switch (curIndexToAppend - 1) + { + case 0: + case 2: + case 4: + case 6: + case 8: + case 10: + if (numToAppend == curIndexToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E23); + } + else if (numToAppend > curIndexToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E29); + } + break; + case 1: + if (curIndexToAppend == numToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E23); + } + else + { + StringAppend(gStringVar1, gUnknown_08400E29); + } + + StringAppend(gStringVar1, gUnknown_08400E30); + break; + case 3: + case 5: + case 7: + case 9: + default: + if (curIndexToAppend == numToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E23); + } + else + { + StringAppend(gStringVar1, gUnknown_08400E29); + } + + StringAppend(gStringVar1, gUnknown_08400E2E); + break; + } + + StringAppend(gStringVar1, gSpeciesNames[species]); + } + + return curIndexToAppend; +} |