summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_tower.s528
-rw-r--r--src/battle_tower.c454
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;
+}