summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-10-23 19:32:10 -0700
committerMarcus Huderle <huderlem@gmail.com>2017-10-26 19:30:21 -0700
commite27be38588bc1d2d3e26e10c87d5de91a5cbab21 (patch)
treea72acc4e643e29d416a0695b8ad2e8938a3041b7
parentf90bc99a49a3d4fa60e96cd6fbcb546f8e3a1da0 (diff)
More decomp of battle_tower
-rw-r--r--asm/battle_tower.s823
-rw-r--r--include/easy_chat.h1
-rw-r--r--include/global.h18
-rw-r--r--include/pokemon.h46
-rw-r--r--src/battle_tower.c508
5 files changed, 546 insertions, 850 deletions
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 9c574eeb4..42cf56a7d 100644
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -6,829 +6,6 @@
.text
- thumb_func_start CheckMonBattleTowerBanlist
-CheckMonBattleTowerBanlist: @ 8135200
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r2, [sp, 0x20]
- ldr r4, [sp, 0x24]
- mov r9, r4
- ldr r4, [sp, 0x28]
- mov r10, r4
- ldr r7, [sp, 0x2C]
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r3, 24
- lsrs r3, 24
- mov r12, r3
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- movs r2, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- beq _081352CE
- cmp r4, 0
- beq _081352CE
- ldr r0, _081352DC @ =gBattleTowerBanlist
- ldrh r1, [r0]
- ldr r5, _081352E0 @ =0x0000ffff
- adds r3, r0, 0
- cmp r1, r5
- beq _08135264
- cmp r1, r4
- beq _08135258
- adds r1, r3, 0
-_0813524A:
- adds r1, 0x2
- adds r2, 0x1
- ldrh r0, [r1]
- cmp r0, r5
- beq _08135264
- cmp r0, r4
- bne _0813524A
-_08135258:
- lsls r0, r2, 1
- adds r0, r3
- ldrh r1, [r0]
- ldr r0, _081352E0 @ =0x0000ffff
- cmp r1, r0
- bne _081352CE
-_08135264:
- mov r0, r12
- cmp r0, 0
- bne _08135270
- mov r1, r8
- cmp r1, 0x32
- bhi _081352CE
-_08135270:
- movs r2, 0
- ldrb r3, [r7]
- cmp r2, r3
- bge _08135290
- mov r1, r9
- ldrh r0, [r1]
- cmp r0, r4
- beq _08135290
- adds r5, r3, 0
-_08135282:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, r5
- bge _08135290
- ldrh r0, [r1]
- cmp r0, r4
- bne _08135282
-_08135290:
- cmp r2, r3
- bne _081352CE
- cmp r6, 0
- beq _081352BA
- movs r2, 0
- cmp r2, r3
- bge _081352B6
- mov r1, r10
- ldrh r0, [r1]
- cmp r0, r6
- beq _081352B6
- adds r5, r3, 0
-_081352A8:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, r5
- bge _081352B6
- ldrh r0, [r1]
- cmp r0, r6
- bne _081352A8
-_081352B6:
- cmp r2, r3
- bne _081352CE
-_081352BA:
- lsls r0, r3, 1
- add r0, r9
- strh r4, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- add r0, r10
- strh r6, [r0]
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
-_081352CE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081352DC: .4byte gBattleTowerBanlist
-_081352E0: .4byte 0x0000ffff
- thumb_func_end CheckMonBattleTowerBanlist
-
- thumb_func_start CheckPartyBattleTowerBanlist
-CheckPartyBattleTowerBanlist: @ 81352E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- add r1, sp, 0x28
- movs r0, 0
- strb r0, [r1]
- movs r7, 0
- mov r9, r1
- add r0, sp, 0x1C
- mov r10, r0
-_081352FE:
- movs r0, 0x64
- adds r5, r7, 0
- muls r5, r0
- ldr r0, _081353C4 @ =gPlayerParty
- adds r5, r0
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- mov r8, r0
- mov r1, r8
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- adds r0, r5, 0
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- ldr r5, _081353C8 @ =gScriptResult
- ldrb r3, [r5]
- str r4, [sp]
- add r0, sp, 0x10
- str r0, [sp, 0x4]
- mov r1, r10
- str r1, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- mov r0, r8
- adds r1, r6, 0
- bl CheckMonBattleTowerBanlist
- adds r7, 0x1
- cmp r7, 0x5
- ble _081352FE
- mov r1, r9
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _08135420
- ldr r1, _081353CC @ =gStringVar1
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, _081353D0 @ =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- movs r0, 0
- mov r1, r9
- strb r0, [r1]
- bl CountBattleTowerBanlistCaught
- adds r6, r0, 0
- ldr r2, _081353D4 @ =gBattleTowerBanlist
- ldrh r0, [r2]
- ldr r1, _081353D8 @ =0x0000ffff
- cmp r0, r1
- beq _081353A8
- mov r5, r9
- adds r7, r1, 0
- adds r4, r2, 0
-_08135394:
- ldrh r0, [r4]
- ldrb r1, [r5]
- adds r2, r6, 0
- bl AppendBattleTowerBannedSpeciesName
- strb r0, [r5]
- adds r4, 0x2
- ldrh r0, [r4]
- cmp r0, r7
- bne _08135394
-_081353A8:
- mov r0, r9
- ldrb r1, [r0]
- cmp r1, 0
- bne _081353E4
- ldr r4, _081353CC @ =gStringVar1
- ldr r1, _081353DC @ =gUnknown_08400E2C
- adds r0, r4, 0
- bl StringAppend
- ldr r1, _081353E0 @ =gUnknown_08400E32
- adds r0, r4, 0
- bl StringAppend
- b _0813543E
- .align 2, 0
-_081353C4: .4byte gPlayerParty
-_081353C8: .4byte gScriptResult
-_081353CC: .4byte gStringVar1
-_081353D0: .4byte gSpecialVar_0x8004
-_081353D4: .4byte gBattleTowerBanlist
-_081353D8: .4byte 0x0000ffff
-_081353DC: .4byte gUnknown_08400E2C
-_081353E0: .4byte gUnknown_08400E32
-_081353E4:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08135400
- ldr r0, _081353F8 @ =gStringVar1
- ldr r1, _081353FC @ =gUnknown_08400E2E
- bl StringAppend
- b _08135408
- .align 2, 0
-_081353F8: .4byte gStringVar1
-_081353FC: .4byte gUnknown_08400E2E
-_08135400:
- ldr r0, _08135414 @ =gStringVar1
- ldr r1, _08135418 @ =gUnknown_08400E2C
- bl StringAppend
-_08135408:
- ldr r0, _08135414 @ =gStringVar1
- ldr r1, _0813541C @ =gUnknown_08400E36
- bl StringAppend
- b _0813543E
- .align 2, 0
-_08135414: .4byte gStringVar1
-_08135418: .4byte gUnknown_08400E2C
-_0813541C: .4byte gUnknown_08400E36
-_08135420:
- ldr r1, _08135450 @ =gSpecialVar_0x8004
- movs r0, 0
- strh r0, [r1]
- ldr r2, _08135454 @ =gSaveBlock2
- ldrb r0, [r5]
- ldr r1, _08135458 @ =0x00000554
- adds r2, r1
- movs r1, 0x1
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_0813543E:
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08135450: .4byte gSpecialVar_0x8004
-_08135454: .4byte gSaveBlock2
-_08135458: .4byte 0x00000554
- thumb_func_end CheckPartyBattleTowerBanlist
-
- thumb_func_start sub_813545C
-sub_813545C: @ 813545C
- push {lr}
- adds r1, r0, 0
- ldr r0, _08135470 @ =gStringVar4
- movs r2, 0x2
- movs r3, 0x3
- bl sub_80EB544
- pop {r0}
- bx r0
- .align 2, 0
-_08135470: .4byte gStringVar4
- thumb_func_end sub_813545C
-
- thumb_func_start sub_8135474
-sub_8135474: @ 8135474
- push {lr}
- ldr r2, _08135490 @ =gSaveBlock2
- ldr r0, _08135494 @ =0x00000564
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0xC8
- bne _08135498
- movs r1, 0x95
- lsls r1, 3
- adds r0, r2, r1
- bl sub_813545C
- b _081354C4
- .align 2, 0
-_08135490: .4byte gSaveBlock2
-_08135494: .4byte 0x00000564
-_08135498:
- cmp r0, 0x63
- bhi _081354B4
- ldrb r1, [r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r1, _081354B0 @ =gBattleTowerTrainers + 0xC
- adds r0, r1
- bl sub_813545C
- b _081354C4
- .align 2, 0
-_081354B0: .4byte gBattleTowerTrainers + 0xC
-_081354B4:
- ldrb r1, [r1]
- movs r0, 0xA4
- muls r0, r1
- ldr r3, _081354C8 @ =0xffffc14c
- adds r1, r2, r3
- adds r0, r1
- bl sub_813545C
-_081354C4:
- pop {r0}
- bx r0
- .align 2, 0
-_081354C8: .4byte 0xffffc14c
- thumb_func_end sub_8135474
-
- thumb_func_start sub_81354CC
-sub_81354CC: @ 81354CC
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r0, _081354E4 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _081354E8
- cmp r0, 0x1
- ble _08135520
- cmp r0, 0x2
- beq _0813551C
- b _08135520
- .align 2, 0
-_081354E4: .4byte gSpecialVar_0x8004
-_081354E8:
- movs r5, 0
-_081354EA:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _08135514 @ =gSaveBlock1 + 0x238
- adds r0, r4, r0
- movs r1, 0xC
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- ldr r0, _08135518 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r5, 0x1
- cmp r5, 0x5
- ble _081354EA
- b _08135520
- .align 2, 0
-_08135514: .4byte gSaveBlock1 + 0x238
-_08135518: .4byte gPlayerParty
-_0813551C:
- bl sub_81360D0
-_08135520:
- ldr r0, _08135530 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08135530: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_81354CC
-
- thumb_func_start sub_8135534
-sub_8135534: @ 8135534
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsBattleTransitionDone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08135558
- ldr r0, _08135560 @ =gMain
- ldr r1, _08135564 @ =sub_81354CC
- str r1, [r0, 0x8]
- ldr r0, _08135568 @ =sub_800E7C4
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_08135558:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08135560: .4byte gMain
-_08135564: .4byte sub_81354CC
-_08135568: .4byte sub_800E7C4
- thumb_func_end sub_8135534
-
- thumb_func_start sub_813556C
-sub_813556C: @ 813556C
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r0, _08135584 @ =gSpecialVar_0x8004
- ldrh r2, [r0]
- cmp r2, 0x1
- beq _081355AC
- cmp r2, 0x1
- bgt _08135588
- cmp r2, 0
- beq _0813558E
- b _08135648
- .align 2, 0
-_08135584: .4byte gSpecialVar_0x8004
-_08135588:
- cmp r2, 0x2
- beq _08135600
- b _08135648
-_0813558E:
- ldr r1, _081355A4 @ =gBattleTypeFlags
- movs r3, 0x84
- lsls r3, 1
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, _081355A8 @ =gTrainerBattleOpponent
- strh r2, [r0]
- bl sub_8134DD4
- b _081355D6
- .align 2, 0
-_081355A4: .4byte gBattleTypeFlags
-_081355A8: .4byte gTrainerBattleOpponent
-_081355AC:
- movs r5, 0
-_081355AE:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _081355F4 @ =gPlayerParty
- adds r0, r4, r0
- movs r1, 0xC
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- ldr r0, _081355F8 @ =gSaveBlock1 + 0x238
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r5, 0x1
- cmp r5, 0x5
- ble _081355AE
-_081355D6:
- ldr r0, _081355FC @ =sub_8135534
- movs r1, 0x1
- bl CreateTask
- movs r0, 0
- bl current_map_music_set__default_for_battle
- bl BattleSetup_GetBattleTowerBattleTransition
- lsls r0, 24
- lsrs r0, 24
- bl BattleTransition_StartOnField
- b _08135648
- .align 2, 0
-_081355F4: .4byte gPlayerParty
-_081355F8: .4byte gSaveBlock1 + 0x238
-_081355FC: .4byte sub_8135534
-_08135600:
- bl ZeroEnemyPartyMons
- movs r5, 0
-_08135606:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08135650 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2C
- muls r1, r5
- ldr r2, _08135654 @ =gSaveBlock2 + 0x4CC
- adds r1, r2
- bl sub_803ADE8
- adds r5, 0x1
- cmp r5, 0x2
- ble _08135606
- ldr r1, _08135658 @ =gBattleTypeFlags
- ldr r2, _0813565C @ =0x00000808
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08135660 @ =gTrainerBattleOpponent
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08135664 @ =sub_8135534
- movs r1, 0x1
- bl CreateTask
- movs r0, 0
- bl current_map_music_set__default_for_battle
- bl BattleSetup_GetBattleTowerBattleTransition
- lsls r0, 24
- lsrs r0, 24
- bl BattleTransition_StartOnField
-_08135648:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08135650: .4byte gEnemyParty
-_08135654: .4byte gSaveBlock2 + 0x4CC
-_08135658: .4byte gBattleTypeFlags
-_0813565C: .4byte 0x00000808
-_08135660: .4byte gTrainerBattleOpponent
-_08135664: .4byte sub_8135534
- thumb_func_end sub_813556C
-
- thumb_func_start sub_8135668
-sub_8135668: @ 8135668
- push {r4,r5,lr}
- ldr r1, _0813568C @ =gSaveBlock2
- ldr r2, _08135690 @ =0x00000554
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r4, r0, 31
- ldr r0, _08135694 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- adds r5, r1, 0
- cmp r0, 0xE
- bls _08135682
- b _0813589A
-_08135682:
- lsls r0, 2
- ldr r1, _08135698 @ =_0813569C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813568C: .4byte gSaveBlock2
-_08135690: .4byte 0x00000554
-_08135694: .4byte gSpecialVar_0x8004
-_08135698: .4byte _0813569C
- .align 2, 0
-_0813569C:
- .4byte _081356D8
- .4byte _08135700
- .4byte _0813571C
- .4byte _08135726
- .4byte _08135740
- .4byte _08135754
- .4byte _08135774
- .4byte _081357D0
- .4byte _081357FC
- .4byte _0813589A
- .4byte _08135820
- .4byte _08135834
- .4byte _0813584C
- .4byte _0813586C
- .4byte _08135888
-_081356D8:
- ldr r0, _081356F0 @ =0x02000000
- ldr r3, _081356F4 @ =0x00000556
- adds r1, r5, r3
- adds r1, r4, r1
- ldrb r2, [r1]
- ldr r3, _081356F8 @ =0x000160fb
- adds r0, r3
- strb r2, [r0]
- ldr r0, _081356FC @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- b _08135898
- .align 2, 0
-_081356F0: .4byte 0x02000000
-_081356F4: .4byte 0x00000556
-_081356F8: .4byte 0x000160fb
-_081356FC: .4byte gSpecialVar_0x8005
-_08135700:
- ldr r0, _08135714 @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- ldr r1, _08135718 @ =0x00000554
- adds r3, r5, r1
- movs r1, 0x1
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x2
- negs r0, r0
- b _08135810
- .align 2, 0
-_08135714: .4byte gSpecialVar_0x8005
-_08135718: .4byte 0x00000554
-_0813571C:
- lsls r1, r4, 1
- movs r2, 0xAB
- lsls r2, 3
- adds r0, r5, r2
- b _0813572C
-_08135726:
- lsls r1, r4, 1
- ldr r3, _08135738 @ =0x0000055c
- adds r0, r5, r3
-_0813572C:
- adds r1, r0
- ldr r0, _0813573C @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- strh r0, [r1]
- b _0813589A
- .align 2, 0
-_08135738: .4byte 0x0000055c
-_0813573C: .4byte gSpecialVar_0x8005
-_08135740:
- ldr r0, _0813574C @ =gSpecialVar_0x8005
- ldrh r1, [r0]
- ldr r2, _08135750 @ =0x00000564
- adds r0, r5, r2
- strb r1, [r0]
- b _0813589A
- .align 2, 0
-_0813574C: .4byte gSpecialVar_0x8005
-_08135750: .4byte 0x00000564
-_08135754:
- movs r2, 0
- ldr r4, _0813576C @ =gSaveBlock2 + 0x565
- ldr r3, _08135770 @ =gSelectedOrderFromParty
-_0813575A:
- adds r0, r2, r4
- adds r1, r2, r3
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x2
- ble _0813575A
- b _0813589A
- .align 2, 0
-_0813576C: .4byte gSaveBlock2 + 0x565
-_08135770: .4byte gSelectedOrderFromParty
-_08135774:
- ldr r3, _081357C0 @ =0x00000564
- adds r0, r5, r3
- ldrb r0, [r0]
- cmp r0, 0xC8
- bne _08135788
- movs r1, 0x93
- lsls r1, 3
- adds r0, r5, r1
- bl sub_81360AC
-_08135788:
- movs r3, 0xAE
- lsls r3, 3
- adds r2, r5, r3
- ldrh r1, [r2]
- ldr r0, _081357C4 @ =0x0000270e
- cmp r1, r0
- bhi _0813579A
- adds r0, r1, 0x1
- strh r0, [r2]
-_0813579A:
- lsls r4, 1
- movs r1, 0xAB
- lsls r1, 3
- adds r0, r5, r1
- adds r4, r0
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- bl sub_8135A3C
- ldr r1, _081357C8 @ =gScriptResult
- ldrh r0, [r4]
- strh r0, [r1]
- ldr r1, _081357CC @ =gStringVar1
- adds r0, 0xA1
- strb r0, [r1]
- movs r0, 0xFF
- strb r0, [r1, 0x1]
- b _0813589A
- .align 2, 0
-_081357C0: .4byte 0x00000564
-_081357C4: .4byte 0x0000270e
-_081357C8: .4byte gScriptResult
-_081357CC: .4byte gStringVar1
-_081357D0:
- lsls r0, r4, 1
- ldr r2, _081357F0 @ =0x0000055c
- adds r1, r5, r2
- adds r4, r0, r1
- ldrh r1, [r4]
- ldr r0, _081357F4 @ =0x00000595
- cmp r1, r0
- bhi _081357E4
- adds r0, r1, 0x1
- strh r0, [r4]
-_081357E4:
- bl sub_8135A3C
- ldr r1, _081357F8 @ =gScriptResult
- ldrh r0, [r4]
- strh r0, [r1]
- b _0813589A
- .align 2, 0
-_081357F0: .4byte 0x0000055c
-_081357F4: .4byte 0x00000595
-_081357F8: .4byte gScriptResult
-_081357FC:
- ldr r0, _08135818 @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- ldr r1, _0813581C @ =0x00000554
- adds r3, r5, r1
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- ldrb r2, [r3]
- movs r0, 0x3
- negs r0, r0
-_08135810:
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _0813589A
- .align 2, 0
-_08135818: .4byte gSpecialVar_0x8005
-_0813581C: .4byte 0x00000554
-_08135820:
- ldr r2, _08135830 @ =0x00000572
- adds r0, r5, r2
- ldrh r1, [r0]
- movs r0, 0x20
- bl SetGameStat
- b _0813589A
- .align 2, 0
-_08135830: .4byte 0x00000572
-_08135834:
- ldr r3, _08135848 @ =0x00000556
- adds r0, r5, r3
- adds r0, r4, r0
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _0813589A
- adds r0, r4, 0
- bl sub_813461C
- b _0813589A
- .align 2, 0
-_08135848: .4byte 0x00000556
-_0813584C:
- ldr r1, _08135860 @ =0x00000556
- adds r0, r5, r1
- adds r0, r4, r0
- ldr r1, _08135864 @ =0x02000000
- ldr r2, _08135868 @ =0x000160fb
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- b _0813589A
- .align 2, 0
-_08135860: .4byte 0x00000556
-_08135864: .4byte 0x02000000
-_08135868: .4byte 0x000160fb
-_0813586C:
- adds r0, r4, 0
- bl sub_8135D3C
- ldr r1, _08135880 @ =gSaveBlock2
- lsls r2, r4, 1
- ldr r3, _08135884 @ =0x00000574
- adds r1, r3
- adds r2, r1
- strh r0, [r2]
- b _0813589A
- .align 2, 0
-_08135880: .4byte gSaveBlock2
-_08135884: .4byte 0x00000574
-_08135888:
- ldr r1, _081358A0 @ =0x00000554
- adds r0, r5, r1
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- movs r2, 0xAF
- lsls r2, 3
- adds r1, r5, r2
-_08135898:
- strb r0, [r1]
-_0813589A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081358A0: .4byte 0x00000554
- thumb_func_end sub_8135668
-
thumb_func_start sub_81358A4
sub_81358A4: @ 81358A4
push {r4,lr}
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 8a820353f..b59adedd5 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -1080,6 +1080,7 @@ u8 sub_80EB868(u8);
void sub_80EB890(u8);
u8 sub_80EB8C0(void);
u16 sub_80EB8EC(void);
+u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3);
#if GERMAN
u32 de_sub_80EB748(u32, u32);
diff --git a/include/global.h b/include/global.h
index 11611dc41..1431bf772 100644
--- a/include/global.h
+++ b/include/global.h
@@ -766,8 +766,11 @@ struct BattleTowerRecord // record mixing
/*0x01*/u8 trainerClass;
/*0x02*/u16 var_2;
/*0x04*/u8 name[8];
- /*0x0C*/u8 var_C[5];
- u8 filler[0x93];
+ /*0x0C*/u8 var_C[4];
+ /*0x10*/struct {
+ u16 easyChat[6];
+ } greeting;
+ /*0x1C*/u8 filler[0x87];
};
struct BattleTowerEReaderTrainer
@@ -775,8 +778,14 @@ struct BattleTowerEReaderTrainer
/*0x00*/u8 unk0;
/*0x01*/u8 trainerClass;
/*0x02*/u16 filler_2;
- /*0x04*/u8 name[8];
- /*0x0B*/u8 ereaderTrainer[0xB0];
+ /*0x04*/u8 name[7];
+ /*0x0B*/u8 filler_B[0x5];
+ /*0x10*/struct {
+ u16 easyChat[6];
+ } greeting;
+ /*0x1C*/u8 filler_1C[0x18];
+ /*0x34*/struct UnknownPokemonStruct party[3];
+ /*0xB8*/u32 unk_B0;
};
struct SaveBlock2_Sub
@@ -788,6 +797,7 @@ struct SaveBlock2_Sub
/*0x03DC, 0x0484*/ u8 filler_3DC[0x14];
/*0x03F0, 0x0498*/ struct BattleTowerEReaderTrainer ereaderTrainer;
/*0x04AC, 0x0554*/ u8 battleTowerLevelType:1; // 0 = level 50; 1 = level 100
+ /*0x04AC, 0x0554*/ u8 unk_554:1;
/*0x04AD, 0x0555*/ u8 var_4AD; // used by tv, but ultimately does nothing, since both code paths are identical
/*0x04AE, 0x0556*/ u8 var_4AE[2];
/*0x04B0, 0x0558*/ u16 var_4B0[2];
diff --git a/include/pokemon.h b/include/pokemon.h
index 4c3e27609..554d18aa6 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -288,29 +288,29 @@ struct Pokemon
struct UnknownPokemonStruct
{
- u16 species;
- u16 heldItem;
- u16 moves[4];
- u8 level;
- u8 ppBonuses;
- u8 hpEV;
- u8 attackEV;
- u8 defenseEV;
- u8 speedEV;
- u8 spAttackEV;
- u8 spDefenseEV;
- u32 otId;
- u32 hpIV:5;
- u32 attackIV:5;
- u32 defenseIV:5;
- u32 speedIV:5;
- u32 spAttackIV:5;
- u32 spDefenseIV:5;
- u32 gap:1;
- u32 altAbility:1;
- u32 personality;
- u8 nickname[POKEMON_NAME_LENGTH + 1];
- u8 friendship;
+ /*0x00*/u16 species;
+ /*0x02*/u16 heldItem;
+ /*0x04*/u16 moves[4];
+ /*0x0C*/u8 level;
+ /*0x0D*/u8 ppBonuses;
+ /*0x0E*/u8 hpEV;
+ /*0x0F*/u8 attackEV;
+ /*0x10*/u8 defenseEV;
+ /*0x11*/u8 speedEV;
+ /*0x12*/u8 spAttackEV;
+ /*0x13*/u8 spDefenseEV;
+ /*0x14*/u32 otId;
+ /*0x18*/u32 hpIV:5;
+ /*0x18*/u32 attackIV:5;
+ /*0x19*/u32 defenseIV:5;
+ /*0x19*/u32 speedIV:5;
+ /*0x1A*/u32 spAttackIV:5;
+ /*0x1A*/u32 spDefenseIV:5;
+ /*0x1B*/u32 gap:1;
+ /*0x1B*/u32 altAbility:1;
+ /*0x1C*/u32 personality;
+ /*0x20*/u8 nickname[POKEMON_NAME_LENGTH + 1];
+ /*0x2B*/u8 friendship;
};
struct BattlePokemon
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 507d2be10..519a6f71e 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -1,15 +1,21 @@
#include "global.h"
+#include "battle.h"
+#include "battle_setup.h"
#include "battle_tower.h"
+#include "battle_transition.h"
#include "data2.h"
#include "easy_chat.h"
#include "event_data.h"
#include "items.h"
+#include "main.h"
#include "map_object_constants.h"
#include "moves.h"
+#include "overworld.h"
#include "pokedex.h"
#include "rng.h"
#include "species.h"
#include "string_util.h"
+#include "task.h"
#include "text.h"
#include "trainer.h"
#include "vars.h"
@@ -232,6 +238,8 @@ const u16 gUnknown_08405EE6[] = {
ITEM_CHOICE_BAND,
};
+extern void sub_81360D0(void);
+extern u16 gSpecialVar_0x8004;
extern u8 gUnknown_08400E23[];
extern u8 gUnknown_08400E29[];
extern u8 gUnknown_08400E2E[];
@@ -239,10 +247,17 @@ extern u8 gUnknown_08400E30[];
extern u8 gTrainerClassToPicIndex[];
extern u8 gTrainerClassToNameIndex[];
+extern u16 gTrainerBattleOpponent;
+extern u16 gBattleTypeFlags;
+extern u8 gSelectedOrderFromParty[];
extern void sub_8135C44(void);
extern void sub_813601C(void);
extern void sub_81349FC(u8);
+extern void sub_81360AC(struct BattleTowerEReaderTrainer *);
+extern void sub_8135A3C(void);
+
+#define ewram160FB (ewram[0x160FB])
void sub_8134548(void)
@@ -1787,3 +1802,496 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT
return curIndexToAppend;
}
+
+__attribute__((naked))
+void CheckMonBattleTowerBanlist()
+{
+ 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\
+ ldr r2, [sp, 0x20]\n\
+ ldr r4, [sp, 0x24]\n\
+ mov r9, r4\n\
+ ldr r4, [sp, 0x28]\n\
+ mov r10, r4\n\
+ ldr r7, [sp, 0x2C]\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ lsls r1, 16\n\
+ lsrs r6, r1, 16\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ mov r12, r3\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ mov r8, r2\n\
+ movs r2, 0\n\
+ movs r0, 0xCE\n\
+ lsls r0, 1\n\
+ cmp r4, r0\n\
+ beq _081352CE\n\
+ cmp r4, 0\n\
+ beq _081352CE\n\
+ ldr r0, _081352DC @ =gBattleTowerBanlist\n\
+ ldrh r1, [r0]\n\
+ ldr r5, _081352E0 @ =0x0000ffff\n\
+ adds r3, r0, 0\n\
+ cmp r1, r5\n\
+ beq _08135264\n\
+ cmp r1, r4\n\
+ beq _08135258\n\
+ adds r1, r3, 0\n\
+_0813524A:\n\
+ adds r1, 0x2\n\
+ adds r2, 0x1\n\
+ ldrh r0, [r1]\n\
+ cmp r0, r5\n\
+ beq _08135264\n\
+ cmp r0, r4\n\
+ bne _0813524A\n\
+_08135258:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r3\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _081352E0 @ =0x0000ffff\n\
+ cmp r1, r0\n\
+ bne _081352CE\n\
+_08135264:\n\
+ mov r0, r12\n\
+ cmp r0, 0\n\
+ bne _08135270\n\
+ mov r1, r8\n\
+ cmp r1, 0x32\n\
+ bhi _081352CE\n\
+_08135270:\n\
+ movs r2, 0\n\
+ ldrb r3, [r7]\n\
+ cmp r2, r3\n\
+ bge _08135290\n\
+ mov r1, r9\n\
+ ldrh r0, [r1]\n\
+ cmp r0, r4\n\
+ beq _08135290\n\
+ adds r5, r3, 0\n\
+_08135282:\n\
+ adds r1, 0x2\n\
+ adds r2, 0x1\n\
+ cmp r2, r5\n\
+ bge _08135290\n\
+ ldrh r0, [r1]\n\
+ cmp r0, r4\n\
+ bne _08135282\n\
+_08135290:\n\
+ cmp r2, r3\n\
+ bne _081352CE\n\
+ cmp r6, 0\n\
+ beq _081352BA\n\
+ movs r2, 0\n\
+ cmp r2, r3\n\
+ bge _081352B6\n\
+ mov r1, r10\n\
+ ldrh r0, [r1]\n\
+ cmp r0, r6\n\
+ beq _081352B6\n\
+ adds r5, r3, 0\n\
+_081352A8:\n\
+ adds r1, 0x2\n\
+ adds r2, 0x1\n\
+ cmp r2, r5\n\
+ bge _081352B6\n\
+ ldrh r0, [r1]\n\
+ cmp r0, r6\n\
+ bne _081352A8\n\
+_081352B6:\n\
+ cmp r2, r3\n\
+ bne _081352CE\n\
+_081352BA:\n\
+ lsls r0, r3, 1\n\
+ add r0, r9\n\
+ strh r4, [r0]\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 1\n\
+ add r0, r10\n\
+ strh r6, [r0]\n\
+ ldrb r0, [r7]\n\
+ adds r0, 0x1\n\
+ strb r0, [r7]\n\
+_081352CE:\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\
+_081352DC: .4byte gBattleTowerBanlist\n\
+_081352E0: .4byte 0x0000ffff\n\
+.syntax divided\n");
+}
+
+__attribute__((naked))
+void CheckPartyBattleTowerBanlist()
+{
+ 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, 0x2C\n\
+ add r1, sp, 0x28\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+ movs r7, 0\n\
+ mov r9, r1\n\
+ add r0, sp, 0x1C\n\
+ mov r10, r0\n\
+_081352FE:\n\
+ movs r0, 0x64\n\
+ adds r5, r7, 0\n\
+ muls r5, r0\n\
+ ldr r0, _081353C4 @ =gPlayerParty\n\
+ adds r5, r0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ mov r8, r0\n\
+ mov r1, r8\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r8, r1\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xC\n\
+ bl GetMonData\n\
+ adds r6, r0, 0\n\
+ lsls r6, 16\n\
+ lsrs r6, 16\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ adds r2, r0, 0\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ ldr r5, _081353C8 @ =gScriptResult\n\
+ ldrb r3, [r5]\n\
+ str r4, [sp]\n\
+ add r0, sp, 0x10\n\
+ str r0, [sp, 0x4]\n\
+ mov r1, r10\n\
+ str r1, [sp, 0x8]\n\
+ mov r0, r9\n\
+ str r0, [sp, 0xC]\n\
+ mov r0, r8\n\
+ adds r1, r6, 0\n\
+ bl CheckMonBattleTowerBanlist\n\
+ adds r7, 0x1\n\
+ cmp r7, 0x5\n\
+ ble _081352FE\n\
+ mov r1, r9\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x2\n\
+ bhi _08135420\n\
+ ldr r1, _081353CC @ =gStringVar1\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1]\n\
+ ldr r1, _081353D0 @ =gSpecialVar_0x8004\n\
+ movs r0, 0x1\n\
+ strh r0, [r1]\n\
+ movs r0, 0\n\
+ mov r1, r9\n\
+ strb r0, [r1]\n\
+ bl CountBattleTowerBanlistCaught\n\
+ adds r6, r0, 0\n\
+ ldr r2, _081353D4 @ =gBattleTowerBanlist\n\
+ ldrh r0, [r2]\n\
+ ldr r1, _081353D8 @ =0x0000ffff\n\
+ cmp r0, r1\n\
+ beq _081353A8\n\
+ mov r5, r9\n\
+ adds r7, r1, 0\n\
+ adds r4, r2, 0\n\
+_08135394:\n\
+ ldrh r0, [r4]\n\
+ ldrb r1, [r5]\n\
+ adds r2, r6, 0\n\
+ bl AppendBattleTowerBannedSpeciesName\n\
+ strb r0, [r5]\n\
+ adds r4, 0x2\n\
+ ldrh r0, [r4]\n\
+ cmp r0, r7\n\
+ bne _08135394\n\
+_081353A8:\n\
+ mov r0, r9\n\
+ ldrb r1, [r0]\n\
+ cmp r1, 0\n\
+ bne _081353E4\n\
+ ldr r4, _081353CC @ =gStringVar1\n\
+ ldr r1, _081353DC @ =gUnknown_08400E2C\n\
+ adds r0, r4, 0\n\
+ bl StringAppend\n\
+ ldr r1, _081353E0 @ =gUnknown_08400E32\n\
+ adds r0, r4, 0\n\
+ bl StringAppend\n\
+ b _0813543E\n\
+ .align 2, 0\n\
+_081353C4: .4byte gPlayerParty\n\
+_081353C8: .4byte gScriptResult\n\
+_081353CC: .4byte gStringVar1\n\
+_081353D0: .4byte gSpecialVar_0x8004\n\
+_081353D4: .4byte gBattleTowerBanlist\n\
+_081353D8: .4byte 0x0000ffff\n\
+_081353DC: .4byte gUnknown_08400E2C\n\
+_081353E0: .4byte gUnknown_08400E32\n\
+_081353E4:\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08135400\n\
+ ldr r0, _081353F8 @ =gStringVar1\n\
+ ldr r1, _081353FC @ =gUnknown_08400E2E\n\
+ bl StringAppend\n\
+ b _08135408\n\
+ .align 2, 0\n\
+_081353F8: .4byte gStringVar1\n\
+_081353FC: .4byte gUnknown_08400E2E\n\
+_08135400:\n\
+ ldr r0, _08135414 @ =gStringVar1\n\
+ ldr r1, _08135418 @ =gUnknown_08400E2C\n\
+ bl StringAppend\n\
+_08135408:\n\
+ ldr r0, _08135414 @ =gStringVar1\n\
+ ldr r1, _0813541C @ =gUnknown_08400E36\n\
+ bl StringAppend\n\
+ b _0813543E\n\
+ .align 2, 0\n\
+_08135414: .4byte gStringVar1\n\
+_08135418: .4byte gUnknown_08400E2C\n\
+_0813541C: .4byte gUnknown_08400E36\n\
+_08135420:\n\
+ ldr r1, _08135450 @ =gSpecialVar_0x8004\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ ldr r2, _08135454 @ =gSaveBlock2\n\
+ ldrb r0, [r5]\n\
+ ldr r1, _08135458 @ =0x00000554\n\
+ adds r2, r1\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ ldrb r3, [r2]\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ ands r0, r3\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+_0813543E:\n\
+ add sp, 0x2C\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\
+_08135450: .4byte gSpecialVar_0x8004\n\
+_08135454: .4byte gSaveBlock2\n\
+_08135458: .4byte 0x00000554\n\
+.syntax divided\n");
+}
+
+void sub_813545C(u16 *easyChat)
+{
+ sub_80EB544(gStringVar4, easyChat, 2, 3);
+}
+
+void sub_8135474(void)
+{
+ if (gSaveBlock2.filler_A8.battleTowerTrainerId == 200)
+ {
+ sub_813545C(gSaveBlock2.filler_A8.ereaderTrainer.greeting.easyChat);
+ }
+ else if (gSaveBlock2.filler_A8.battleTowerTrainerId < 100)
+ {
+ sub_813545C((u16 *)gBattleTowerTrainers[gSaveBlock2.filler_A8.battleTowerTrainerId].greeting.easyChat);
+ }
+ else
+ {
+ sub_813545C(gSaveBlock2.filler_A8.var_14C[gSaveBlock2.filler_A8.battleTowerTrainerId - 100].greeting.easyChat);
+ }
+}
+
+void sub_81354CC(void)
+{
+ s32 i;
+ u16 heldItem;
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 0:
+ break;
+ case 1:
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ heldItem = GetMonData(&gSaveBlock1.playerParty[i], MON_DATA_HELD_ITEM);
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, (u8 *)&heldItem);
+ }
+ break;
+ case 2:
+ sub_81360D0();
+ break;
+ }
+
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+}
+
+void sub_8135534(u8 taskId)
+{
+ if (IsBattleTransitionDone() == TRUE)
+ {
+ gMain.savedCallback = sub_81354CC;
+ SetMainCallback2(sub_800E7C4);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_813556C(void)
+{
+ s32 i;
+ u16 heldItem;
+ u8 transition;
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 0:
+ gBattleTypeFlags = (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_TRAINER);
+ gTrainerBattleOpponent = 0;
+
+ sub_8134DD4();
+
+ CreateTask(sub_8135534, 1);
+ current_map_music_set__default_for_battle(0);
+ transition = BattleSetup_GetBattleTowerBattleTransition();
+ BattleTransition_StartOnField(transition);
+ break;
+ case 1:
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ SetMonData(&gSaveBlock1.playerParty[i], MON_DATA_HELD_ITEM, (u8 *)&heldItem);
+ }
+
+ CreateTask(sub_8135534, 1);
+ current_map_music_set__default_for_battle(0);
+ transition = BattleSetup_GetBattleTowerBattleTransition();
+ BattleTransition_StartOnField(transition);
+ break;
+ case 2:
+ ZeroEnemyPartyMons();
+
+ for (i = 0; i < 3; i++)
+ {
+ sub_803ADE8(&gEnemyParty[i], &gSaveBlock2.filler_A8.ereaderTrainer.party[i]);
+ }
+
+ gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER);
+ gTrainerBattleOpponent = 0;
+
+ CreateTask(sub_8135534, 1);
+ current_map_music_set__default_for_battle(0);
+ transition = BattleSetup_GetBattleTowerBattleTransition();
+ BattleTransition_StartOnField(transition);
+ break;
+ }
+}
+
+void sub_8135668(void)
+{
+ s32 i;
+ u8 battleTowerLevelType = gSaveBlock2.filler_A8.battleTowerLevelType;
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 0:
+ ewram160FB = gSaveBlock2.filler_A8.var_4AE[battleTowerLevelType];
+ gSaveBlock2.filler_A8.var_4AE[battleTowerLevelType] = gSpecialVar_0x8005;
+ break;
+ case 1:
+ gSaveBlock2.filler_A8.battleTowerLevelType = gSpecialVar_0x8005;
+ break;
+ case 2:
+ gSaveBlock2.filler_A8.var_4B0[battleTowerLevelType] = gSpecialVar_0x8005;
+ break;
+ case 3:
+ gSaveBlock2.filler_A8.var_4B4[battleTowerLevelType] = gSpecialVar_0x8005;
+ break;
+ case 4:
+ gSaveBlock2.filler_A8.battleTowerTrainerId = gSpecialVar_0x8005;
+ break;
+ case 5:
+ for (i = 0; i < 3; i++)
+ {
+ gSaveBlock2.filler_A8.var_4BD[i] = gSelectedOrderFromParty[i];
+ }
+ break;
+ case 6:
+ if (gSaveBlock2.filler_A8.battleTowerTrainerId == 200)
+ {
+ sub_81360AC(&gSaveBlock2.filler_A8.ereaderTrainer);
+ }
+
+ if (gSaveBlock2.filler_A8.totalBattleTowerWins < 9999)
+ {
+ gSaveBlock2.filler_A8.totalBattleTowerWins++;
+ }
+
+ gSaveBlock2.filler_A8.var_4B0[battleTowerLevelType]++;
+ sub_8135A3C();
+ gScriptResult = gSaveBlock2.filler_A8.var_4B0[battleTowerLevelType];
+
+ gStringVar1[0] = gSaveBlock2.filler_A8.var_4B0[battleTowerLevelType] + 0xA1;
+ gStringVar1[1] = 0xFF;
+ break;
+ case 7:
+ if (gSaveBlock2.filler_A8.var_4B4[battleTowerLevelType] < 1430)
+ {
+ gSaveBlock2.filler_A8.var_4B4[battleTowerLevelType]++;
+ }
+
+ sub_8135A3C();
+ gScriptResult = gSaveBlock2.filler_A8.var_4B4[battleTowerLevelType];
+ break;
+ case 8:
+ gSaveBlock2.filler_A8.unk_554 = gSpecialVar_0x8005;
+ break;
+ case 9:
+ break;
+ case 10:
+ SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2.filler_A8.bestBattleTowerWinStreak);
+ break;
+ case 11:
+ if (gSaveBlock2.filler_A8.var_4AE[battleTowerLevelType] != 3)
+ {
+ sub_813461C(battleTowerLevelType);
+ }
+ break;
+ case 12:
+ gSaveBlock2.filler_A8.var_4AE[battleTowerLevelType] = ewram160FB;
+ break;
+ case 13:
+ gSaveBlock2.filler_A8.currentWinStreaks[battleTowerLevelType] = sub_8135D3C(battleTowerLevelType);
+ break;
+ case 14:
+ gSaveBlock2.filler_A8.lastStreakLevelType = gSaveBlock2.filler_A8.battleTowerLevelType;
+ break;
+ }
+}