summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-11-09 13:59:24 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2019-11-09 13:59:24 -0500
commit55bede6ca279483a0e4b9b51ebe152d4be135b93 (patch)
treec71d15d950a17f44276254643b155229f2b8ece5
parent9773fcf278cd9e830440c993a3e79899c2f89b67 (diff)
Finish decomp of battle_tower
-rw-r--r--asm/battle_message.s2
-rw-r--r--asm/battle_tower.s2175
-rw-r--r--asm/link_rfu_3.s8
-rw-r--r--asm/party_menu.s42
-rw-r--r--asm/script_pokemon_util_80A0058.s12
-rw-r--r--include/battle_tower.h4
-rw-r--r--include/party_menu.h1
-rw-r--r--include/script_pokemon_util_80A0058.h1
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle_tower.c764
-rw-r--r--src/mevent.c2
-rw-r--r--sym_ewram.txt26
12 files changed, 802 insertions, 2236 deletions
diff --git a/asm/battle_message.s b/asm/battle_message.s
index 28d7b196d..18d4106e1 100644
--- a/asm/battle_message.s
+++ b/asm/battle_message.s
@@ -1781,7 +1781,7 @@ _080D80F0:
cmp r0, 0
beq _080D810C
mov r0, sp
- bl sub_80E6150
+ bl get_trainer_name
b _080D8382
.align 2, 0
_080D8108: .4byte gBattleTypeFlags
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
deleted file mode 100644
index 3d4169293..000000000
--- a/asm/battle_tower.s
+++ /dev/null
@@ -1,2175 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80E64C0
-sub_80E64C0: @ 80E64C0
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _080E6554
- cmp r4, 0
- bne _080E64EC
- ldr r0, _080E6514 @ =gStringVar1
- ldr r1, _080E6518 @ =gUnknown_83FE859
- bl StringAppend
-_080E64EC:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r6, _080E6514 @ =gStringVar1
- movs r0, 0xB
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _080E651C @ =gSpeciesNames
- adds r1, r0
- adds r0, r6, 0
- bl StringAppend
- cmp r4, 0x5
- beq _080E6538
- cmp r4, 0x5
- bgt _080E6520
- cmp r4, 0x2
- beq _080E652A
- b _080E654C
- .align 2, 0
-_080E6514: .4byte gStringVar1
-_080E6518: .4byte gUnknown_83FE859
-_080E651C: .4byte gSpeciesNames
-_080E6520:
- cmp r4, 0x8
- beq _080E6538
- cmp r4, 0xB
- beq _080E6538
- b _080E654C
-_080E652A:
- ldr r1, _080E6534 @ =gUnknown_83FE85E
- adds r0, r6, 0
- bl StringAppend
- b _080E6554
- .align 2, 0
-_080E6534: .4byte gUnknown_83FE85E
-_080E6538:
- ldr r0, _080E6544 @ =gStringVar1
- ldr r1, _080E6548 @ =gUnknown_83FE85C
- bl StringAppend
- b _080E6554
- .align 2, 0
-_080E6544: .4byte gStringVar1
-_080E6548: .4byte gUnknown_83FE85C
-_080E654C:
- ldr r0, _080E655C @ =gStringVar1
- ldr r1, _080E6560 @ =gUnknown_83FE859
- bl StringAppend
-_080E6554:
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080E655C: .4byte gStringVar1
-_080E6560: .4byte gUnknown_83FE859
- thumb_func_end sub_80E64C0
-
- thumb_func_start sub_80E6564
-sub_80E6564: @ 80E6564
- 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 _080E6632
- cmp r4, 0
- beq _080E6632
- ldr r0, _080E6640 @ =gBattleTowerBannedSpecies
- ldrh r1, [r0]
- ldr r5, _080E6644 @ =0x0000ffff
- adds r3, r0, 0
- cmp r1, r5
- beq _080E65C8
- cmp r1, r4
- beq _080E65BC
- adds r1, r3, 0
-_080E65AE:
- adds r1, 0x2
- adds r2, 0x1
- ldrh r0, [r1]
- cmp r0, r5
- beq _080E65C8
- cmp r0, r4
- bne _080E65AE
-_080E65BC:
- lsls r0, r2, 1
- adds r0, r3
- ldrh r1, [r0]
- ldr r0, _080E6644 @ =0x0000ffff
- cmp r1, r0
- bne _080E6632
-_080E65C8:
- mov r0, r12
- cmp r0, 0
- bne _080E65D4
- mov r1, r8
- cmp r1, 0x32
- bhi _080E6632
-_080E65D4:
- movs r2, 0
- ldrb r3, [r7]
- cmp r2, r3
- bge _080E65F4
- mov r1, r9
- ldrh r0, [r1]
- cmp r0, r4
- beq _080E65F4
- adds r5, r3, 0
-_080E65E6:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, r5
- bge _080E65F4
- ldrh r0, [r1]
- cmp r0, r4
- bne _080E65E6
-_080E65F4:
- cmp r2, r3
- bne _080E6632
- cmp r6, 0
- beq _080E661E
- movs r2, 0
- cmp r2, r3
- bge _080E661A
- mov r1, r10
- ldrh r0, [r1]
- cmp r0, r6
- beq _080E661A
- adds r5, r3, 0
-_080E660C:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, r5
- bge _080E661A
- ldrh r0, [r1]
- cmp r0, r6
- bne _080E660C
-_080E661A:
- cmp r2, r3
- bne _080E6632
-_080E661E:
- 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]
-_080E6632:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6640: .4byte gBattleTowerBannedSpecies
-_080E6644: .4byte 0x0000ffff
- thumb_func_end sub_80E6564
-
- thumb_func_start CheckPartyBattleTowerBanlist
-CheckPartyBattleTowerBanlist: @ 80E6648
- 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
-_080E6662:
- movs r0, 0x64
- adds r5, r7, 0
- muls r5, r0
- ldr r0, _080E6724 @ =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, _080E6728 @ =gSpecialVar_Result
- 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 sub_80E6564
- adds r7, 0x1
- cmp r7, 0x5
- ble _080E6662
- mov r1, r9
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _080E6750
- ldr r1, _080E672C @ =gStringVar1
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, _080E6730 @ =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- movs r0, 0
- mov r1, r9
- strb r0, [r1]
- ldr r2, _080E6734 @ =gBattleTowerBannedSpecies
- ldrh r0, [r2]
- ldr r1, _080E6738 @ =0x0000ffff
- cmp r0, r1
- beq _080E6704
- mov r5, r9
- adds r6, r1, 0
- adds r4, r2, 0
-_080E66F2:
- ldrh r0, [r4]
- ldrb r1, [r5]
- bl sub_80E64C0
- strb r0, [r5]
- adds r4, 0x2
- ldrh r0, [r4]
- cmp r0, r6
- bne _080E66F2
-_080E6704:
- ldr r4, _080E672C @ =gStringVar1
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r7, r0, 16
- subs r0, r7, 0x1
- adds r0, r4
- movs r1, 0xFF
- strb r1, [r0]
- mov r1, r9
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _080E6740
- ldr r1, _080E673C @ =gUnknown_83FE860
- b _080E6742
- .align 2, 0
-_080E6724: .4byte gPlayerParty
-_080E6728: .4byte gSpecialVar_Result
-_080E672C: .4byte gStringVar1
-_080E6730: .4byte gSpecialVar_0x8004
-_080E6734: .4byte gBattleTowerBannedSpecies
-_080E6738: .4byte 0x0000ffff
-_080E673C: .4byte gUnknown_83FE860
-_080E6740:
- ldr r1, _080E674C @ =gUnknown_83FE864
-_080E6742:
- adds r0, r4, 0
- bl StringAppend
- b _080E6770
- .align 2, 0
-_080E674C: .4byte gUnknown_83FE864
-_080E6750:
- ldr r1, _080E6780 @ =gSpecialVar_0x8004
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080E6784 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r0, [r5]
- ldr r1, _080E6788 @ =0x0000055c
- 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]
-_080E6770:
- 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
-_080E6780: .4byte gSpecialVar_0x8004
-_080E6784: .4byte gSaveBlock2Ptr
-_080E6788: .4byte 0x0000055c
- thumb_func_end CheckPartyBattleTowerBanlist
-
- thumb_func_start sub_80E678C
-sub_80E678C: @ 80E678C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x3
- movs r2, 0x2
- movs r3, 0x12
- bl EC_DoesEasyChatStringFitOnLine
- lsls r0, 24
- cmp r0, 0
- beq _080E67E4
- ldr r5, _080E67E0 @ =gStringVar4
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertEasyChatWordsToString
- ldrb r0, [r5]
- movs r1, 0x1
- cmp r0, 0xFE
- beq _080E67C2
- adds r2, r5, 0
-_080E67B8:
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r1, 0x1
- cmp r0, 0xFE
- bne _080E67B8
-_080E67C2:
- ldr r2, _080E67E0 @ =gStringVar4
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r3, r2, 0
- cmp r0, 0xFE
- beq _080E67D8
-_080E67CE:
- adds r1, 0x1
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0xFE
- bne _080E67CE
-_080E67D8:
- adds r1, r3
- movs r0, 0xFA
- strb r0, [r1]
- b _080E67F0
- .align 2, 0
-_080E67E0: .4byte gStringVar4
-_080E67E4:
- ldr r0, _080E67F8 @ =gStringVar4
- adds r1, r4, 0
- movs r2, 0x3
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
-_080E67F0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E67F8: .4byte gStringVar4
- thumb_func_end sub_80E678C
-
- thumb_func_start PrintBattleTowerTrainerGreeting
-PrintBattleTowerTrainerGreeting: @ 80E67FC
- push {lr}
- ldr r0, _080E6818 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldr r1, _080E681C @ =0x0000056c
- adds r0, r2, r1
- ldrb r1, [r0]
- cmp r1, 0xC8
- bne _080E6820
- movs r1, 0x96
- lsls r1, 3
- adds r0, r2, r1
- bl sub_80E678C
- b _080E684C
- .align 2, 0
-_080E6818: .4byte gSaveBlock2Ptr
-_080E681C: .4byte 0x0000056c
-_080E6820:
- cmp r1, 0x63
- bhi _080E683C
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- ldr r1, _080E6838 @ =gBattleTowerTrainers + 6
- adds r0, r1
- bl sub_80E678C
- b _080E684C
- .align 2, 0
-_080E6838: .4byte gBattleTowerTrainers + 6
-_080E683C:
- ldrb r1, [r0]
- movs r0, 0xA4
- muls r0, r1
- adds r0, r2
- ldr r1, _080E6850 @ =0xffffc154
- adds r0, r1
- bl sub_80E678C
-_080E684C:
- pop {r0}
- bx r0
- .align 2, 0
-_080E6850: .4byte 0xffffc154
- thumb_func_end PrintBattleTowerTrainerGreeting
-
- thumb_func_start sub_80E6854
-sub_80E6854: @ 80E6854
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _080E686C @ =gUnknown_203AAB8
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080E6870
- cmp r0, 0x1
- ble _080E68B0
- cmp r0, 0x2
- beq _080E68AC
- b _080E68B0
- .align 2, 0
-_080E686C: .4byte gUnknown_203AAB8
-_080E6870:
- movs r5, 0
- ldr r6, _080E68A4 @ =gSaveBlock1Ptr
-_080E6874:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- adds r1, r4, 0
- adds r1, 0x38
- ldr r0, [r6]
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- ldr r0, _080E68A8 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r5, 0x1
- cmp r5, 0x5
- ble _080E6874
- b _080E68B0
- .align 2, 0
-_080E68A4: .4byte gSaveBlock1Ptr
-_080E68A8: .4byte gPlayerParty
-_080E68AC:
- bl sub_80E7550
-_080E68B0:
- ldr r0, _080E68C0 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl SetMainCallback2
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E68C0: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
- thumb_func_end sub_80E6854
-
- thumb_func_start sub_80E68C4
-sub_80E68C4: @ 80E68C4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl BT_IsDone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E68EC
- ldr r0, _080E68F4 @ =gMain
- ldr r1, _080E68F8 @ =sub_80E6854
- str r1, [r0, 0x8]
- bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _080E68FC @ =CB2_InitBattle
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_080E68EC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E68F4: .4byte gMain
-_080E68F8: .4byte sub_80E6854
-_080E68FC: .4byte CB2_InitBattle
- thumb_func_end sub_80E68C4
-
- thumb_func_start StartSpecialBattle
-StartSpecialBattle: @ 80E6900
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _080E691C @ =gUnknown_203AAB8
- ldr r1, _080E6920 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- strh r1, [r0]
- ldrh r2, [r0]
- cmp r2, 0x1
- beq _080E6944
- cmp r2, 0x1
- bgt _080E6924
- cmp r2, 0
- beq _080E692A
- b _080E69E6
- .align 2, 0
-_080E691C: .4byte gUnknown_203AAB8
-_080E6920: .4byte gSpecialVar_0x8004
-_080E6924:
- cmp r2, 0x2
- beq _080E6998
- b _080E69E6
-_080E692A:
- ldr r1, _080E693C @ =gBattleTypeFlags
- movs r0, 0x84
- lsls r0, 1
- str r0, [r1]
- ldr r0, _080E6940 @ =gTrainerBattleOpponent_A
- strh r2, [r0]
- bl sub_80E61DC
- b _080E6970
- .align 2, 0
-_080E693C: .4byte gBattleTypeFlags
-_080E6940: .4byte gTrainerBattleOpponent_A
-_080E6944:
- movs r5, 0
- ldr r6, _080E698C @ =gSaveBlock1Ptr
-_080E6948:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _080E6990 @ =gPlayerParty
- adds r0, r4, r0
- movs r1, 0xC
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- adds r4, 0x38
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r5, 0x1
- cmp r5, 0x5
- ble _080E6948
-_080E6970:
- ldr r0, _080E6994 @ =sub_80E68C4
- movs r1, 0x1
- bl CreateTask
- movs r0, 0
- bl PlayMapChosenOrBattleBGM
- bl BattleSetup_GetBattleTowerBattleTransition
- lsls r0, 24
- lsrs r0, 24
- bl BT_StartOnField
- b _080E69E6
- .align 2, 0
-_080E698C: .4byte gSaveBlock1Ptr
-_080E6990: .4byte gPlayerParty
-_080E6994: .4byte sub_80E68C4
-_080E6998:
- bl ZeroEnemyPartyMons
- movs r5, 0
- ldr r4, _080E69F0 @ =gSaveBlock2Ptr
-_080E69A0:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080E69F4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2C
- adds r2, r5, 0
- muls r2, r1
- ldr r1, _080E69F8 @ =0x000004d4
- adds r2, r1
- ldr r1, [r4]
- adds r1, r2
- bl CreateBattleTowerMon
- adds r5, 0x1
- cmp r5, 0x2
- ble _080E69A0
- ldr r1, _080E69FC @ =gBattleTypeFlags
- ldr r0, _080E6A00 @ =0x00000808
- str r0, [r1]
- ldr r1, _080E6A04 @ =gTrainerBattleOpponent_A
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080E6A08 @ =sub_80E68C4
- movs r1, 0x1
- bl CreateTask
- movs r0, 0
- bl PlayMapChosenOrBattleBGM
- bl BattleSetup_GetBattleTowerBattleTransition
- lsls r0, 24
- lsrs r0, 24
- bl BT_StartOnField
-_080E69E6:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E69F0: .4byte gSaveBlock2Ptr
-_080E69F4: .4byte gEnemyParty
-_080E69F8: .4byte 0x000004d4
-_080E69FC: .4byte gBattleTypeFlags
-_080E6A00: .4byte 0x00000808
-_080E6A04: .4byte gTrainerBattleOpponent_A
-_080E6A08: .4byte sub_80E68C4
- thumb_func_end StartSpecialBattle
-
- thumb_func_start SetBattleTowerProperty
-SetBattleTowerProperty: @ 80E6A0C
- push {r4-r6,lr}
- ldr r1, _080E6A34 @ =gSaveBlock2Ptr
- ldr r0, [r1]
- ldr r2, _080E6A38 @ =0x0000055c
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r5, r0, 31
- ldr r0, _080E6A3C @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- adds r6, r1, 0
- cmp r0, 0xE
- bls _080E6A28
- b _080E6C80
-_080E6A28:
- lsls r0, 2
- ldr r1, _080E6A40 @ =_080E6A44
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E6A34: .4byte gSaveBlock2Ptr
-_080E6A38: .4byte 0x0000055c
-_080E6A3C: .4byte gSpecialVar_0x8004
-_080E6A40: .4byte _080E6A44
- .align 2, 0
-_080E6A44:
- .4byte _080E6A80
- .4byte _080E6AAC
- .4byte _080E6AD0
- .4byte _080E6AE4
- .4byte _080E6AFC
- .4byte _080E6B14
- .4byte _080E6B3C
- .4byte _080E6BA4
- .4byte _080E6BD8
- .4byte _080E6C80
- .4byte _080E6C00
- .4byte _080E6C14
- .4byte _080E6C30
- .4byte _080E6C4C
- .4byte _080E6C6C
-_080E6A80:
- ldr r0, _080E6AA0 @ =gBattleStruct
- ldr r1, [r0]
- adds r1, 0xDA
- ldr r0, [r6]
- ldr r2, _080E6AA4 @ =0x0000055e
- adds r0, r2
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, r2
- adds r0, r5
- ldr r1, _080E6AA8 @ =gSpecialVar_0x8005
- ldrh r1, [r1]
- strb r1, [r0]
- b _080E6C80
- .align 2, 0
-_080E6AA0: .4byte gBattleStruct
-_080E6AA4: .4byte 0x0000055e
-_080E6AA8: .4byte gSpecialVar_0x8005
-_080E6AAC:
- ldr r2, [r6]
- ldr r0, _080E6AC8 @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- ldr r3, _080E6ACC @ =0x0000055c
- adds r2, r3
- movs r1, 0x1
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- b _080E6C80
- .align 2, 0
-_080E6AC8: .4byte gSpecialVar_0x8005
-_080E6ACC: .4byte 0x0000055c
-_080E6AD0:
- ldr r0, [r6]
- lsls r1, r5, 1
- movs r2, 0xAC
- lsls r2, 3
- adds r0, r2
- adds r0, r1
- ldr r1, _080E6AE0 @ =gSpecialVar_0x8005
- b _080E6BC6
- .align 2, 0
-_080E6AE0: .4byte gSpecialVar_0x8005
-_080E6AE4:
- ldr r0, [r6]
- lsls r1, r5, 1
- ldr r3, _080E6AF4 @ =0x00000564
- adds r0, r3
- adds r0, r1
- ldr r1, _080E6AF8 @ =gSpecialVar_0x8005
- b _080E6BC6
- .align 2, 0
-_080E6AF4: .4byte 0x00000564
-_080E6AF8: .4byte gSpecialVar_0x8005
-_080E6AFC:
- ldr r0, [r6]
- ldr r1, _080E6B0C @ =gSpecialVar_0x8005
- ldrh r1, [r1]
- ldr r2, _080E6B10 @ =0x0000056c
- adds r0, r2
- strb r1, [r0]
- b _080E6C80
- .align 2, 0
-_080E6B0C: .4byte gSpecialVar_0x8005
-_080E6B10: .4byte 0x0000056c
-_080E6B14:
- movs r2, 0
- ldr r5, _080E6B30 @ =gSaveBlock2Ptr
- ldr r4, _080E6B34 @ =0x0000056d
- ldr r3, _080E6B38 @ =gUnknown_203B0D4
-_080E6B1C:
- ldr r0, [r5]
- adds r0, r4
- adds r0, r2
- adds r1, r2, r3
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x2
- ble _080E6B1C
- b _080E6C80
- .align 2, 0
-_080E6B30: .4byte gSaveBlock2Ptr
-_080E6B34: .4byte 0x0000056d
-_080E6B38: .4byte gUnknown_203B0D4
-_080E6B3C:
- ldr r1, [r6]
- ldr r3, _080E6B94 @ =0x0000056c
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0xC8
- bne _080E6B52
- movs r2, 0x94
- lsls r2, 3
- adds r0, r1, r2
- bl sub_80E7524
-_080E6B52:
- ldr r0, [r6]
- movs r3, 0xAF
- lsls r3, 3
- adds r2, r0, r3
- ldrh r1, [r2]
- ldr r0, _080E6B98 @ =0x0000270e
- cmp r1, r0
- bhi _080E6B66
- adds r0, r1, 0x1
- strh r0, [r2]
-_080E6B66:
- ldr r1, [r6]
- lsls r5, 1
- movs r4, 0xAC
- lsls r4, 3
- adds r1, r4
- adds r1, r5
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- bl sub_80E6E48
- ldr r1, _080E6B9C @ =gSpecialVar_Result
- ldr r0, [r6]
- adds r0, r4
- adds r0, r5
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _080E6BA0 @ =gStringVar1
- adds r0, 0xA1
- strb r0, [r1]
- movs r0, 0xFF
- strb r0, [r1, 0x1]
- b _080E6C80
- .align 2, 0
-_080E6B94: .4byte 0x0000056c
-_080E6B98: .4byte 0x0000270e
-_080E6B9C: .4byte gSpecialVar_Result
-_080E6BA0: .4byte gStringVar1
-_080E6BA4:
- ldr r0, [r6]
- lsls r5, 1
- ldr r4, _080E6BCC @ =0x00000564
- adds r0, r4
- adds r2, r0, r5
- ldrh r1, [r2]
- ldr r0, _080E6BD0 @ =0x00000595
- cmp r1, r0
- bhi _080E6BBA
- adds r0, r1, 0x1
- strh r0, [r2]
-_080E6BBA:
- bl sub_80E6E48
- ldr r0, _080E6BD4 @ =gSpecialVar_Result
- ldr r1, [r6]
- adds r1, r4
- adds r1, r5
-_080E6BC6:
- ldrh r1, [r1]
- strh r1, [r0]
- b _080E6C80
- .align 2, 0
-_080E6BCC: .4byte 0x00000564
-_080E6BD0: .4byte 0x00000595
-_080E6BD4: .4byte gSpecialVar_Result
-_080E6BD8:
- ldr r3, [r6]
- ldr r0, _080E6BF8 @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- ldr r1, _080E6BFC @ =0x0000055c
- adds r3, r1
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- ldrb r2, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _080E6C80
- .align 2, 0
-_080E6BF8: .4byte gSpecialVar_0x8005
-_080E6BFC: .4byte 0x0000055c
-_080E6C00:
- ldr r0, [r6]
- ldr r2, _080E6C10 @ =0x0000057a
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x20
- bl SetGameStat
- b _080E6C80
- .align 2, 0
-_080E6C10: .4byte 0x0000057a
-_080E6C14:
- ldr r0, [r6]
- ldr r3, _080E6C2C @ =0x0000055e
- adds r0, r3
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _080E6C80
- adds r0, r5, 0
- bl sub_80E5A38
- b _080E6C80
- .align 2, 0
-_080E6C2C: .4byte 0x0000055e
-_080E6C30:
- ldr r1, [r6]
- ldr r0, _080E6C44 @ =0x0000055e
- adds r1, r0
- adds r1, r5
- ldr r0, _080E6C48 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xDA
- ldrb r0, [r0]
- b _080E6C7E
- .align 2, 0
-_080E6C44: .4byte 0x0000055e
-_080E6C48: .4byte gBattleStruct
-_080E6C4C:
- adds r0, r5, 0
- bl sub_80E7188
- ldr r1, _080E6C64 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- lsls r2, r5, 1
- ldr r3, _080E6C68 @ =0x0000057c
- adds r1, r3
- adds r1, r2
- strh r0, [r1]
- b _080E6C80
- .align 2, 0
-_080E6C64: .4byte gSaveBlock2Ptr
-_080E6C68: .4byte 0x0000057c
-_080E6C6C:
- ldr r1, [r6]
- ldr r2, _080E6C88 @ =0x0000055c
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- movs r3, 0xB0
- lsls r3, 3
- adds r1, r3
-_080E6C7E:
- strb r0, [r1]
-_080E6C80:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6C88: .4byte 0x0000055c
- thumb_func_end SetBattleTowerProperty
-
- thumb_func_start BattleTowerUtil
-BattleTowerUtil: @ 80E6C8C
- push {r4,lr}
- ldr r1, _080E6CB4 @ =gSaveBlock2Ptr
- ldr r0, [r1]
- ldr r2, _080E6CB8 @ =0x0000055c
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r4, r0, 31
- ldr r0, _080E6CBC @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- adds r3, r1, 0
- cmp r0, 0xE
- bls _080E6CA8
- b _080E6E08
-_080E6CA8:
- lsls r0, 2
- ldr r1, _080E6CC0 @ =_080E6CC4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E6CB4: .4byte gSaveBlock2Ptr
-_080E6CB8: .4byte 0x0000055c
-_080E6CBC: .4byte gSpecialVar_0x8004
-_080E6CC0: .4byte _080E6CC4
- .align 2, 0
-_080E6CC4:
- .4byte _080E6D00
- .4byte _080E6D14
- .4byte _080E6D2C
- .4byte _080E6D3C
- .4byte _080E6D58
- .4byte _080E6E08
- .4byte _080E6E08
- .4byte _080E6E08
- .4byte _080E6D70
- .4byte _080E6D8C
- .4byte _080E6D9C
- .4byte _080E6DB0
- .4byte _080E6DB8
- .4byte _080E6DD4
- .4byte _080E6DF4
-_080E6D00:
- ldr r0, _080E6D0C @ =gSpecialVar_Result
- ldr r1, [r3]
- ldr r3, _080E6D10 @ =0x0000055e
- adds r1, r3
- adds r1, r4
- b _080E6D60
- .align 2, 0
-_080E6D0C: .4byte gSpecialVar_Result
-_080E6D10: .4byte 0x0000055e
-_080E6D14:
- ldr r0, _080E6D24 @ =gSpecialVar_Result
- ldr r1, [r3]
- ldr r2, _080E6D28 @ =0x0000055c
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 31
- b _080E6D7C
- .align 2, 0
-_080E6D24: .4byte gSpecialVar_Result
-_080E6D28: .4byte 0x0000055c
-_080E6D2C:
- ldr r2, _080E6D38 @ =gSpecialVar_Result
- ldr r0, [r3]
- lsls r1, r4, 1
- movs r3, 0xAC
- lsls r3, 3
- b _080E6D44
- .align 2, 0
-_080E6D38: .4byte gSpecialVar_Result
-_080E6D3C:
- ldr r2, _080E6D50 @ =gSpecialVar_Result
- ldr r0, [r3]
- lsls r1, r4, 1
- ldr r3, _080E6D54 @ =0x00000564
-_080E6D44:
- adds r0, r3
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- b _080E6E08
- .align 2, 0
-_080E6D50: .4byte gSpecialVar_Result
-_080E6D54: .4byte 0x00000564
-_080E6D58:
- ldr r0, _080E6D68 @ =gSpecialVar_Result
- ldr r1, [r3]
- ldr r2, _080E6D6C @ =0x0000056c
- adds r1, r2
-_080E6D60:
- ldrb r1, [r1]
- strh r1, [r0]
- b _080E6E08
- .align 2, 0
-_080E6D68: .4byte gSpecialVar_Result
-_080E6D6C: .4byte 0x0000056c
-_080E6D70:
- ldr r0, _080E6D84 @ =gSpecialVar_Result
- ldr r1, [r3]
- ldr r3, _080E6D88 @ =0x0000055c
- adds r1, r3
- ldrb r1, [r1]
- lsls r1, 30
-_080E6D7C:
- lsrs r1, 31
- strh r1, [r0]
- b _080E6E08
- .align 2, 0
-_080E6D84: .4byte gSpecialVar_Result
-_080E6D88: .4byte 0x0000055c
-_080E6D8C:
- adds r0, r4, 0
- bl sub_80E7188
- ldr r1, _080E6D98 @ =gSpecialVar_Result
- strh r0, [r1]
- b _080E6E08
- .align 2, 0
-_080E6D98: .4byte gSpecialVar_Result
-_080E6D9C:
- ldr r0, [r3]
- ldr r1, _080E6DAC @ =0x0000057a
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x20
- bl SetGameStat
- b _080E6E08
- .align 2, 0
-_080E6DAC: .4byte 0x0000057a
-_080E6DB0:
- adds r0, r4, 0
- bl sub_80E5A38
- b _080E6E08
-_080E6DB8:
- ldr r1, [r3]
- ldr r2, _080E6DCC @ =0x0000055e
- adds r1, r2
- adds r1, r4
- ldr r0, _080E6DD0 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xDA
- ldrb r0, [r0]
- b _080E6E06
- .align 2, 0
-_080E6DCC: .4byte 0x0000055e
-_080E6DD0: .4byte gBattleStruct
-_080E6DD4:
- adds r0, r4, 0
- bl sub_80E7188
- ldr r1, _080E6DEC @ =gSaveBlock2Ptr
- ldr r1, [r1]
- lsls r2, r4, 1
- ldr r3, _080E6DF0 @ =0x0000057c
- adds r1, r3
- adds r1, r2
- strh r0, [r1]
- b _080E6E08
- .align 2, 0
-_080E6DEC: .4byte gSaveBlock2Ptr
-_080E6DF0: .4byte 0x0000057c
-_080E6DF4:
- ldr r1, [r3]
- ldr r2, _080E6E10 @ =0x0000055c
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- movs r3, 0xB0
- lsls r3, 3
- adds r1, r3
-_080E6E06:
- strb r0, [r1]
-_080E6E08:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6E10: .4byte 0x0000055c
- thumb_func_end BattleTowerUtil
-
- thumb_func_start SetBattleTowerParty
-SetBattleTowerParty: @ 80E6E14
- push {r4,r5,lr}
- movs r2, 0
- ldr r5, _080E6E3C @ =gUnknown_203B0D4
- ldr r4, _080E6E40 @ =gSaveBlock2Ptr
- ldr r3, _080E6E44 @ =0x0000056d
-_080E6E1E:
- adds r0, r2, r5
- ldr r1, [r4]
- adds r1, r3
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x2
- ble _080E6E1E
- bl ReducePlayerPartyToThree
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6E3C: .4byte gUnknown_203B0D4
-_080E6E40: .4byte gSaveBlock2Ptr
-_080E6E44: .4byte 0x0000056d
- thumb_func_end SetBattleTowerParty
-
- thumb_func_start sub_80E6E48
-sub_80E6E48: @ 80E6E48
- push {r4-r6,lr}
- ldr r6, _080E6E98 @ =gSaveBlock2Ptr
- ldr r0, [r6]
- ldr r1, _080E6E9C @ =0x0000055c
- adds r0, r1
- ldrb r4, [r0]
- lsls r4, 31
- lsrs r4, 31
- adds r0, r4, 0
- bl sub_80E7188
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [r6]
- lsls r4, 1
- movs r2, 0xAD
- lsls r2, 3
- adds r0, r2
- adds r1, r0, r4
- ldrh r0, [r1]
- cmp r0, r5
- bcs _080E6E76
- strh r5, [r1]
-_080E6E76:
- ldr r0, [r6]
- adds r2, r0, r2
- ldr r3, _080E6EA0 @ =0x0000056a
- adds r1, r0, r3
- ldrh r0, [r2]
- ldrh r3, [r1]
- cmp r0, r3
- bls _080E6EA8
- adds r5, r0, 0
- movs r0, 0x20
- adds r1, r5, 0
- bl SetGameStat
- ldr r1, _080E6EA4 @ =0x0000270f
- cmp r5, r1
- bhi _080E6EB8
- b _080E6ECC
- .align 2, 0
-_080E6E98: .4byte gSaveBlock2Ptr
-_080E6E9C: .4byte 0x0000055c
-_080E6EA0: .4byte 0x0000056a
-_080E6EA4: .4byte 0x0000270f
-_080E6EA8:
- ldrh r5, [r1]
- movs r0, 0x20
- adds r1, r5, 0
- bl SetGameStat
- ldr r1, _080E6EC4 @ =0x0000270f
- cmp r5, r1
- bls _080E6ECC
-_080E6EB8:
- ldr r0, [r6]
- ldr r2, _080E6EC8 @ =0x0000057a
- adds r0, r2
- strh r1, [r0]
- b _080E6ED4
- .align 2, 0
-_080E6EC4: .4byte 0x0000270f
-_080E6EC8: .4byte 0x0000057a
-_080E6ECC:
- ldr r0, [r6]
- ldr r3, _080E6EDC @ =0x0000057a
- adds r0, r3
- strh r5, [r0]
-_080E6ED4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6EDC: .4byte 0x0000057a
- thumb_func_end sub_80E6E48
-
- thumb_func_start sub_80E6EE0
-sub_80E6EE0: @ 80E6EE0
- push {r4-r6,lr}
- ldr r0, _080E6F00 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- adds r5, r2, 0
- adds r5, 0xB0
- ldr r1, _080E6F04 @ =0x0000055c
- adds r0, r2, r1
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r6, r0, 31
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _080E6F0C
- ldr r4, _080E6F08 @ =sFemaleTrainerClasses
- b _080E6F0E
- .align 2, 0
-_080E6F00: .4byte gSaveBlock2Ptr
-_080E6F04: .4byte 0x0000055c
-_080E6F08: .4byte sFemaleTrainerClasses
-_080E6F0C:
- ldr r4, _080E6FA0 @ =sMaleTrainerClasses
-_080E6F0E:
- ldrb r0, [r2, 0xA]
- ldrb r1, [r2, 0xB]
- adds r0, r1
- ldrb r1, [r2, 0xC]
- adds r0, r1
- ldrb r1, [r2, 0xD]
- adds r0, r1
- movs r1, 0
- bl __umodsi3
- adds r0, r4
- ldrb r0, [r0]
- strb r6, [r5]
- strb r0, [r5, 0x1]
- adds r0, r5, 0
- adds r0, 0xC
- ldr r4, _080E6FA4 @ =gSaveBlock2Ptr
- ldr r1, [r4]
- adds r1, 0xA
- bl CopyTrainerId
- adds r0, r5, 0x4
- ldr r1, [r4]
- bl StringCopy7
- adds r0, r6, 0
- bl sub_80E7188
- strh r0, [r5, 0x2]
- movs r4, 0
- ldr r6, _080E6FA8 @ =gSaveBlock1Ptr
- ldr r3, _080E6FAC @ =0x00002cac
- adds r2, r5, 0
- adds r2, 0x10
-_080E6F52:
- lsls r0, r4, 1
- ldr r1, [r6]
- adds r1, r3
- adds r1, r0
- ldrh r0, [r1]
- strh r0, [r2]
- adds r2, 0x2
- adds r4, 0x1
- cmp r4, 0x5
- ble _080E6F52
- movs r4, 0
-_080E6F68:
- ldr r6, _080E6FA4 @ =gSaveBlock2Ptr
- ldr r0, [r6]
- ldr r1, _080E6FB0 @ =0x0000056d
- adds r0, r1
- adds r0, r4
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E6FB4 @ =gEnemyParty + 500 @ &gEnemyParty[5]
- adds r0, r1
- movs r1, 0x2C
- muls r1, r4
- adds r1, 0x1C
- adds r1, r5, r1
- bl sub_803E23C
- adds r4, 0x1
- cmp r4, 0x2
- ble _080E6F68
- ldr r0, [r6]
- adds r0, 0xB0
- bl SetBattleTowerRecordChecksum
- bl sub_80E6E48
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E6FA0: .4byte sMaleTrainerClasses
-_080E6FA4: .4byte gSaveBlock2Ptr
-_080E6FA8: .4byte gSaveBlock1Ptr
-_080E6FAC: .4byte 0x00002cac
-_080E6FB0: .4byte 0x0000056d
-_080E6FB4: .4byte gEnemyParty + 500 @ &gEnemyParty[5]
- thumb_func_end sub_80E6EE0
-
- thumb_func_start SaveBattleTowerProgress
-SaveBattleTowerProgress: @ 80E6FB8
- push {r4,r5,lr}
- ldr r0, _080E703C @ =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r2, _080E7040 @ =0x0000055c
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r5, r0, 31
- ldr r0, _080E7044 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x3
- beq _080E6FD4
- cmp r0, 0
- bne _080E6FF2
-_080E6FD4:
- lsls r2, r5, 1
- ldr r3, _080E7048 @ =0x00000564
- adds r0, r1, r3
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, 0x1
- bhi _080E6FEE
- subs r3, 0x4
- adds r0, r1, r3
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, 0x1
- bls _080E6FF2
-_080E6FEE:
- bl sub_80E6EE0
-_080E6FF2:
- bl sub_80E712C
- ldr r4, _080E703C @ =gSaveBlock2Ptr
- ldr r0, [r4]
- ldr r1, _080E704C @ =gBattleOutcome
- ldrb r1, [r1]
- ldr r2, _080E7050 @ =0x0000055d
- adds r0, r2
- strb r1, [r0]
- ldr r0, _080E7044 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- cmp r1, 0x3
- beq _080E7016
- ldr r0, [r4]
- ldr r3, _080E7054 @ =0x0000055e
- adds r0, r3
- adds r0, r5
- strb r1, [r0]
-_080E7016:
- movs r0, 0x80
- lsls r0, 7
- movs r1, 0
- bl VarSet
- ldr r1, [r4]
- ldr r0, _080E7040 @ =0x0000055c
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1]
- movs r0, 0x2
- bl TrySavingData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E703C: .4byte gSaveBlock2Ptr
-_080E7040: .4byte 0x0000055c
-_080E7044: .4byte gSpecialVar_0x8004
-_080E7048: .4byte 0x00000564
-_080E704C: .4byte gBattleOutcome
-_080E7050: .4byte 0x0000055d
-_080E7054: .4byte 0x0000055e
- thumb_func_end SaveBattleTowerProgress
-
- thumb_func_start BattleTower_SoftReset
-BattleTower_SoftReset: @ 80E7058
- push {lr}
- bl DoSoftReset
- pop {r0}
- bx r0
- thumb_func_end BattleTower_SoftReset
-
- thumb_func_start sub_80E7064
-sub_80E7064: @ 80E7064
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _080E70F0 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r3, 0
- movs r2, 0
- adds r1, r0, 0
- adds r1, 0xB0
-_080E7076:
- ldm r1!, {r0}
- adds r3, r0
- adds r2, 0x1
- cmp r2, 0x27
- bls _080E7076
- ldr r5, _080E70F0 @ =gSaveBlock2Ptr
- ldr r1, [r5]
- movs r2, 0xA8
- lsls r2, 1
- adds r0, r1, r2
- ldr r0, [r0]
- cmp r0, r3
- beq _080E7098
- adds r0, r1, 0
- adds r0, 0xB0
- bl ClearBattleTowerRecord
-_080E7098:
- movs r4, 0
- adds r7, r5, 0
- movs r6, 0xA4
- mov r8, r7
-_080E70A0:
- adds r0, r4, 0
- muls r0, r6
- movs r3, 0xAA
- lsls r3, 1
- adds r0, r3
- ldr r1, [r7]
- movs r3, 0
- movs r2, 0
- adds r5, r4, 0x1
- adds r1, r0
-_080E70B4:
- ldm r1!, {r0}
- adds r3, r0
- adds r2, 0x1
- cmp r2, 0x27
- bls _080E70B4
- mov r0, r8
- ldr r2, [r0]
- adds r1, r4, 0
- muls r1, r6
- movs r4, 0xFA
- lsls r4, 1
- adds r0, r2, r4
- adds r0, r1
- ldr r0, [r0]
- cmp r0, r3
- beq _080E70E0
- movs r3, 0xAA
- lsls r3, 1
- adds r0, r1, r3
- adds r0, r2, r0
- bl ClearBattleTowerRecord
-_080E70E0:
- adds r4, r5, 0
- cmp r4, 0x4
- ble _080E70A0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E70F0: .4byte gSaveBlock2Ptr
- thumb_func_end sub_80E7064
-
- thumb_func_start SetBattleTowerRecordChecksum
-SetBattleTowerRecordChecksum: @ 80E70F4
- push {r4,lr}
- adds r2, r0, 0
- adds r2, 0xA0
- movs r1, 0
- str r1, [r2]
- movs r3, 0
- adds r4, r0, 0
-_080E7102:
- ldr r0, [r2]
- ldm r4!, {r1}
- adds r0, r1
- str r0, [r2]
- adds r3, 0x1
- cmp r3, 0x27
- bls _080E7102
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end SetBattleTowerRecordChecksum
-
- thumb_func_start ClearBattleTowerRecord
-ClearBattleTowerRecord: @ 80E7118
- push {lr}
- movs r1, 0
- movs r2, 0
-_080E711E:
- stm r0!, {r2}
- adds r1, 0x1
- cmp r1, 0x28
- bls _080E711E
- pop {r0}
- bx r0
- thumb_func_end ClearBattleTowerRecord
-
- thumb_func_start sub_80E712C
-sub_80E712C: @ 80E712C
- push {r4,r5,lr}
- ldr r4, _080E7174 @ =gSaveBlock2Ptr
- ldr r0, [r4]
- ldr r1, _080E7178 @ =0x0000048c
- adds r0, r1
- bl sub_80E6150
- ldr r1, [r4]
- ldr r3, _080E717C @ =gBattleMons
- adds r0, r3, 0
- adds r0, 0x58
- ldrh r2, [r0]
- ldr r5, _080E7180 @ =0x0000048a
- adds r0, r1, r5
- strh r2, [r0]
- ldrh r0, [r3]
- movs r2, 0x91
- lsls r2, 3
- adds r1, r2
- strh r0, [r1]
- movs r2, 0
- adds r5, r4, 0
- ldr r4, _080E7184 @ =0x00000494
- adds r3, 0x30
-_080E715C:
- ldr r0, [r5]
- adds r0, r4
- adds r0, r2
- adds r1, r2, r3
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x9
- ble _080E715C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E7174: .4byte gSaveBlock2Ptr
-_080E7178: .4byte 0x0000048c
-_080E717C: .4byte gBattleMons
-_080E7180: .4byte 0x0000048a
-_080E7184: .4byte 0x00000494
- thumb_func_end sub_80E712C
-
- thumb_func_start sub_80E7188
-sub_80E7188: @ 80E7188
- push {lr}
- lsls r0, 24
- ldr r1, _080E71C0 @ =gSaveBlock2Ptr
- ldr r3, [r1]
- lsrs r0, 23
- ldr r2, _080E71C4 @ =0x00000564
- adds r1, r3, r2
- adds r1, r0
- ldrh r2, [r1]
- subs r2, 0x1
- lsls r1, r2, 3
- subs r1, r2
- movs r2, 0xAC
- lsls r2, 3
- adds r3, r2
- adds r3, r0
- ldr r0, _080E71C8 @ =0x0000ffff
- adds r1, r0
- ldrh r3, [r3]
- adds r1, r3
- lsls r1, 16
- lsrs r0, r1, 16
- ldr r1, _080E71CC @ =0x0000270f
- cmp r0, r1
- bls _080E71BC
- adds r0, r1, 0
-_080E71BC:
- pop {r1}
- bx r1
- .align 2, 0
-_080E71C0: .4byte gSaveBlock2Ptr
-_080E71C4: .4byte 0x00000564
-_080E71C8: .4byte 0x0000ffff
-_080E71CC: .4byte 0x0000270f
- thumb_func_end sub_80E7188
-
- thumb_func_start DetermineBattleTowerPrize
-DetermineBattleTowerPrize: @ 80E71D0
- push {r4,r5,lr}
- ldr r4, _080E7214 @ =gSaveBlock2Ptr
- ldr r1, [r4]
- ldr r2, _080E7218 @ =0x0000055c
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- lsls r0, 1
- adds r2, 0x8
- adds r1, r2
- adds r1, r0
- ldrh r0, [r1]
- subs r0, 0x1
- cmp r0, 0x5
- ble _080E7220
- bl Random
- ldr r4, [r4]
- ldr r5, _080E721C @ =sLongStreakPrizes
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x9
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 15
- adds r0, r5
- ldrh r0, [r0]
- movs r1, 0xAE
- lsls r1, 3
- adds r4, r1
- b _080E7240
- .align 2, 0
-_080E7214: .4byte gSaveBlock2Ptr
-_080E7218: .4byte 0x0000055c
-_080E721C: .4byte sLongStreakPrizes
-_080E7220:
- bl Random
- ldr r4, [r4]
- ldr r5, _080E7248 @ =sShortStreakPrizes
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 15
- adds r0, r5
- ldrh r0, [r0]
- movs r2, 0xAE
- lsls r2, 3
- adds r4, r2
-_080E7240:
- strh r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E7248: .4byte sShortStreakPrizes
- thumb_func_end DetermineBattleTowerPrize
-
- thumb_func_start GiveBattleTowerPrize
-GiveBattleTowerPrize: @ 80E724C
- push {r4-r6,lr}
- ldr r5, _080E7288 @ =gSaveBlock2Ptr
- ldr r1, [r5]
- ldr r2, _080E728C @ =0x0000055c
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r6, r0, 31
- movs r0, 0xAE
- lsls r0, 3
- adds r1, r0
- ldrh r0, [r1]
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bne _080E7298
- ldr r0, [r5]
- movs r1, 0xAE
- lsls r1, 3
- adds r0, r1
- ldrh r0, [r0]
- ldr r1, _080E7290 @ =gStringVar1
- bl CopyItemName
- ldr r0, _080E7294 @ =gSpecialVar_Result
- strh r4, [r0]
- b _080E72AA
- .align 2, 0
-_080E7288: .4byte gSaveBlock2Ptr
-_080E728C: .4byte 0x0000055c
-_080E7290: .4byte gStringVar1
-_080E7294: .4byte gSpecialVar_Result
-_080E7298:
- ldr r1, _080E72B0 @ =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- ldr r0, [r5]
- ldr r2, _080E72B4 @ =0x0000055e
- adds r0, r2
- adds r0, r6
- movs r1, 0x6
- strb r1, [r0]
-_080E72AA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E72B0: .4byte gSpecialVar_Result
-_080E72B4: .4byte 0x0000055e
- thumb_func_end GiveBattleTowerPrize
-
- thumb_func_start AwardBattleTowerRibbons
-AwardBattleTowerRibbons: @ 80E72B8
- push {r4-r7,lr}
- ldr r0, _080E7334 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080E7338 @ =0x0000055c
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r0, 0
- movs r7, 0x44
- cmp r1, 0
- beq _080E72D2
- movs r7, 0x45
-_080E72D2:
- ldr r4, _080E733C @ =gSpecialVar_Result
- movs r0, 0
- strh r0, [r4]
- adds r0, r1, 0
- bl sub_80E7188
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x37
- bls _080E7320
- movs r5, 0
- adds r6, r4, 0
-_080E72EA:
- ldr r0, _080E7334 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080E7340 @ =0x0000056d
- adds r0, r1
- adds r0, r5
- ldrb r0, [r0]
- subs r0, 0x1
- movs r1, 0x64
- muls r1, r0
- ldr r0, _080E7344 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- adds r1, r7, 0
- bl GetMonData
- cmp r0, 0
- bne _080E731A
- movs r0, 0x1
- strh r0, [r6]
- adds r0, r4, 0
- adds r1, r7, 0
- adds r2, r6, 0
- bl SetMonData
-_080E731A:
- adds r5, 0x1
- cmp r5, 0x2
- ble _080E72EA
-_080E7320:
- ldr r0, _080E733C @ =gSpecialVar_Result
- ldrh r0, [r0]
- cmp r0, 0
- beq _080E732E
- movs r0, 0x2A
- bl IncrementGameStat
-_080E732E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E7334: .4byte gSaveBlock2Ptr
-_080E7338: .4byte 0x0000055c
-_080E733C: .4byte gSpecialVar_Result
-_080E7340: .4byte 0x0000056d
-_080E7344: .4byte gPlayerParty
- thumb_func_end AwardBattleTowerRibbons
-
- thumb_func_start sub_80E7348
-sub_80E7348: @ 80E7348
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r1, _080E7368 @ =gSaveBlock2Ptr
- ldr r2, [r1]
- movs r0, 0x94
- lsls r0, 3
- adds r7, r2, r0
- ldrb r0, [r2, 0x8]
- adds r5, r1, 0
- cmp r0, 0
- beq _080E7370
- ldr r4, _080E736C @ =sFemaleTrainerClasses
- b _080E7372
- .align 2, 0
-_080E7368: .4byte gSaveBlock2Ptr
-_080E736C: .4byte sFemaleTrainerClasses
-_080E7370:
- ldr r4, _080E7410 @ =sMaleTrainerClasses
-_080E7372:
- ldrb r0, [r2, 0xA]
- ldrb r1, [r2, 0xB]
- adds r0, r1
- ldrb r1, [r2, 0xC]
- adds r0, r1
- ldrb r1, [r2, 0xD]
- adds r0, r1
- movs r1, 0
- bl __umodsi3
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r7, 0x1]
- adds r0, r7, 0
- adds r0, 0xC
- ldr r1, [r5]
- adds r1, 0xA
- bl CopyTrainerId
- adds r0, r7, 0x4
- ldr r1, [r5]
- bl StringCopy7
- movs r0, 0x1
- strh r0, [r7, 0x2]
- movs r6, 0x7
- movs r4, 0
- ldr r0, _080E7414 @ =gSaveBlock1Ptr
- mov r8, r0
- adds r5, r7, 0
- adds r5, 0x10
- ldr r1, _080E7418 @ =0x00002cac
- mov r12, r1
- adds r3, r7, 0
- adds r3, 0x28
- adds r2, r7, 0
- adds r2, 0x1C
-_080E73BC:
- lsls r0, r4, 1
- mov r9, r0
- mov r1, r8
- ldr r0, [r1]
- add r0, r12
- add r0, r9
- ldrh r0, [r0]
- strh r0, [r5]
- strh r6, [r2]
- adds r0, r6, 0x6
- strh r0, [r3]
- adds r6, 0x1
- adds r5, 0x2
- adds r3, 0x2
- adds r2, 0x2
- adds r4, 0x1
- cmp r4, 0x5
- ble _080E73BC
- movs r4, 0
-_080E73E2:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _080E741C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2C
- muls r1, r4
- adds r1, 0x34
- adds r1, r7, r1
- bl sub_803E23C
- adds r4, 0x1
- cmp r4, 0x2
- ble _080E73E2
- adds r0, r7, 0
- bl sub_80E7500
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E7410: .4byte sMaleTrainerClasses
-_080E7414: .4byte gSaveBlock1Ptr
-_080E7418: .4byte 0x00002cac
-_080E741C: .4byte gPlayerParty
- thumb_func_end sub_80E7348
-
- thumb_func_start GetEreaderTrainerFrontSpriteId
-GetEreaderTrainerFrontSpriteId: @ 80E7420
- ldr r1, _080E7434 @ =gFacilityClassToPicIndex
- ldr r0, _080E7438 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r2, _080E743C @ =0x000004a1
- adds r0, r2
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080E7434: .4byte gFacilityClassToPicIndex
-_080E7438: .4byte gSaveBlock2Ptr
-_080E743C: .4byte 0x000004a1
- thumb_func_end GetEreaderTrainerFrontSpriteId
-
- thumb_func_start GetEreaderTrainerClassId
-GetEreaderTrainerClassId: @ 80E7440
- ldr r1, _080E7454 @ =gFacilityClassToTrainerClass
- ldr r0, _080E7458 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r2, _080E745C @ =0x000004a1
- adds r0, r2
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080E7454: .4byte gFacilityClassToTrainerClass
-_080E7458: .4byte gSaveBlock2Ptr
-_080E745C: .4byte 0x000004a1
- thumb_func_end GetEreaderTrainerClassId
-
- thumb_func_start CopyEReaderTrainerName5
-CopyEReaderTrainerName5: @ 80E7460
- push {r4,lr}
- adds r3, r0, 0
- movs r2, 0
- ldr r0, _080E7488 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080E748C @ =0x000004a4
- adds r4, r0, r1
-_080E746E:
- adds r0, r3, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x4
- ble _080E746E
- adds r1, r3, r2
- movs r0, 0xFF
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E7488: .4byte gSaveBlock2Ptr
-_080E748C: .4byte 0x000004a4
- thumb_func_end CopyEReaderTrainerName5
-
- thumb_func_start ValidateEReaderTrainer
-ValidateEReaderTrainer: @ 80E7490
- push {r4-r6,lr}
- ldr r2, _080E74C0 @ =gSpecialVar_Result
- movs r0, 0
- strh r0, [r2]
- ldr r1, _080E74C4 @ =gSaveBlock2Ptr
- ldr r0, [r1]
- movs r3, 0x94
- lsls r3, 3
- adds r5, r0, r3
- movs r4, 0
- movs r3, 0
- adds r6, r1, 0
- adds r1, r5, 0
-_080E74AA:
- ldm r1!, {r0}
- orrs r4, r0
- adds r3, 0x1
- cmp r3, 0x2D
- bls _080E74AA
- cmp r4, 0
- bne _080E74C8
- movs r0, 0x1
- strh r0, [r2]
- b _080E74F6
- .align 2, 0
-_080E74C0: .4byte gSpecialVar_Result
-_080E74C4: .4byte gSaveBlock2Ptr
-_080E74C8:
- movs r4, 0
- movs r3, 0
- adds r2, r5, 0
-_080E74CE:
- ldm r2!, {r0}
- adds r4, r0
- adds r3, 0x1
- cmp r3, 0x2D
- bls _080E74CE
- ldr r1, [r6]
- movs r2, 0xAB
- lsls r2, 3
- adds r0, r1, r2
- ldr r0, [r0]
- cmp r0, r4
- beq _080E74F6
- movs r3, 0x94
- lsls r3, 3
- adds r0, r1, r3
- bl sub_80E7524
- ldr r1, _080E74FC @ =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
-_080E74F6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E74FC: .4byte gSpecialVar_Result
- thumb_func_end ValidateEReaderTrainer
-
- thumb_func_start sub_80E7500
-sub_80E7500: @ 80E7500
- push {r4,lr}
- adds r2, r0, 0
- adds r2, 0xB8
- movs r1, 0
- str r1, [r2]
- movs r3, 0
- adds r4, r0, 0
-_080E750E:
- ldr r0, [r2]
- ldm r4!, {r1}
- adds r0, r1
- str r0, [r2]
- adds r3, 0x1
- cmp r3, 0x2D
- bls _080E750E
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E7500
-
- thumb_func_start sub_80E7524
-sub_80E7524: @ 80E7524
- push {lr}
- movs r1, 0
- movs r2, 0
-_080E752A:
- stm r0!, {r2}
- adds r1, 0x1
- cmp r1, 0x2E
- bls _080E752A
- pop {r0}
- bx r0
- thumb_func_end sub_80E7524
-
- thumb_func_start PrintEReaderTrainerGreeting
-PrintEReaderTrainerGreeting: @ 80E7538
- push {lr}
- ldr r0, _080E754C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r1, 0x96
- lsls r1, 3
- adds r0, r1
- bl sub_80E678C
- pop {r0}
- bx r0
- .align 2, 0
-_080E754C: .4byte gSaveBlock2Ptr
- thumb_func_end PrintEReaderTrainerGreeting
-
- thumb_func_start sub_80E7550
-sub_80E7550: @ 80E7550
- push {lr}
- ldr r0, _080E7564 @ =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _080E756C
- ldr r1, _080E7568 @ =gStringVar4
- movs r0, 0xFF
- strb r0, [r1]
- b _080E7590
- .align 2, 0
-_080E7564: .4byte gBattleOutcome
-_080E7568: .4byte gStringVar4
-_080E756C:
- cmp r0, 0x1
- bne _080E7584
- ldr r0, _080E7580 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r1, 0x99
- lsls r1, 3
- adds r0, r1
- bl sub_80E678C
- b _080E7590
- .align 2, 0
-_080E7580: .4byte gSaveBlock2Ptr
-_080E7584:
- ldr r0, _080E7594 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _080E7598 @ =0x000004bc
- adds r0, r1
- bl sub_80E678C
-_080E7590:
- pop {r0}
- bx r0
- .align 2, 0
-_080E7594: .4byte gSaveBlock2Ptr
-_080E7598: .4byte 0x000004bc
- thumb_func_end sub_80E7550
-
- thumb_func_start Dummy_TryEnableBravoTrainerBattleTower
-Dummy_TryEnableBravoTrainerBattleTower: @ 80E759C
- push {lr}
- movs r0, 0x1
-_080E75A0:
- subs r0, 0x1
- cmp r0, 0
- bge _080E75A0
- pop {r0}
- bx r0
- thumb_func_end Dummy_TryEnableBravoTrainerBattleTower
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index 63a894247..24125485e 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -12663,7 +12663,7 @@ sub_811C04C: @ 811C04C
ldr r6, _0811C0CC @ =gPlayerParty
ldr r5, _0811C0D0 @ =gEnemyParty
_0811C05C:
- ldr r0, _0811C0D4 @ =gUnknown_203B0D4
+ ldr r0, _0811C0D4 @ =gSelectedOrderFromParty
adds r0, r4, r0
ldrb r0, [r0]
subs r0, 0x1
@@ -12717,7 +12717,7 @@ _0811C096:
.align 2, 0
_0811C0CC: .4byte gPlayerParty
_0811C0D0: .4byte gEnemyParty
-_0811C0D4: .4byte gUnknown_203B0D4
+_0811C0D4: .4byte gSelectedOrderFromParty
_0811C0D8: .4byte gTrainerBattleOpponent_A
_0811C0DC: .4byte CB2_InitBattle
thumb_func_end sub_811C04C
@@ -13029,7 +13029,7 @@ _0811C3BC:
movs r1, 0
movs r2, 0x20
bl memset
- ldr r0, _0811C3DC @ =gUnknown_203B0D4
+ ldr r0, _0811C3DC @ =gSelectedOrderFromParty
ldrb r1, [r0]
ldrb r0, [r0, 0x1]
cmn r1, r0
@@ -13038,7 +13038,7 @@ _0811C3BC:
b _0811C3E2
.align 2, 0
_0811C3D8: .4byte gBlockSendBuffer
-_0811C3DC: .4byte gUnknown_203B0D4
+_0811C3DC: .4byte gSelectedOrderFromParty
_0811C3E0:
movs r0, 0x51
_0811C3E2:
diff --git a/asm/party_menu.s b/asm/party_menu.s
index aab14bbf0..dfe4e02c0 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -1152,7 +1152,7 @@ sub_811F388: @ 811F388
muls r0, r4
ldr r1, _0811F3AC @ =gPlayerParty
adds r0, r1
- ldr r5, _0811F3B0 @ =gUnknown_203B0D4
+ ldr r5, _0811F3B0 @ =gSelectedOrderFromParty
bl sub_8127550
lsls r0, 24
cmp r0, 0
@@ -1163,7 +1163,7 @@ sub_811F388: @ 811F388
b _0811F3F8
.align 2, 0
_0811F3AC: .4byte gPlayerParty
-_0811F3B0: .4byte gUnknown_203B0D4
+_0811F3B0: .4byte gSelectedOrderFromParty
_0811F3B4:
adds r1, 0x2
lsls r1, 24
@@ -11131,7 +11131,7 @@ _0812418C:
adds r0, r1
mov r10, r0
_081241B6:
- ldr r0, _0812420C @ =gUnknown_203B0D4
+ ldr r0, _0812420C @ =gSelectedOrderFromParty
adds r4, r5, r0
ldrb r0, [r4]
cmp r0, 0
@@ -11168,7 +11168,7 @@ _081241FC: .4byte gUnknown_8416B16
_08124200: .4byte gUnknown_203B09C
_08124204: .4byte gUnknown_203B0A0
_08124208: .4byte gTasks
-_0812420C: .4byte gUnknown_203B0D4
+_0812420C: .4byte gSelectedOrderFromParty
_08124210: .4byte gUnknown_203B0B4
_08124214: .4byte sub_811FB28
_08124218:
@@ -11237,7 +11237,7 @@ sub_8124278: @ 8124278
adds r0, 0xD
bl sub_8121CE4
movs r4, 0
- ldr r3, _081242C0 @ =gUnknown_203B0D4
+ ldr r3, _081242C0 @ =gSelectedOrderFromParty
ldr r6, _081242C4 @ =gUnknown_203B0A0
adds r5, r6, 0
_0812429E:
@@ -11257,7 +11257,7 @@ _0812429E:
b _081242E6
.align 2, 0
_081242BC: .4byte gUnknown_203B09C
-_081242C0: .4byte gUnknown_203B0D4
+_081242C0: .4byte gSelectedOrderFromParty
_081242C4: .4byte gUnknown_203B0A0
_081242C8:
ldrb r0, [r3, 0x1]
@@ -11287,7 +11287,7 @@ _081242E6:
movs r0, 0x1
movs r2, 0x1
bl sub_8121C70
- ldr r4, _08124348 @ =gUnknown_203B0D4
+ ldr r4, _08124348 @ =gSelectedOrderFromParty
ldrb r0, [r4]
cmp r0, 0
beq _08124312
@@ -11324,7 +11324,7 @@ _08124328:
bx r0
.align 2, 0
_08124344: .4byte gUnknown_203B0B4
-_08124348: .4byte gUnknown_203B0D4
+_08124348: .4byte gSelectedOrderFromParty
_0812434C: .4byte gTasks
_08124350: .4byte sub_811FB28
thumb_func_end sub_8124278
@@ -17411,14 +17411,14 @@ _081274F8: .4byte sub_812773C
thumb_func_start sub_81274FC
sub_81274FC: @ 81274FC
push {lr}
- ldr r0, _0812750C @ =gUnknown_203B0D4
+ ldr r0, _0812750C @ =gSelectedOrderFromParty
movs r1, 0
movs r2, 0x3
bl memset
pop {r0}
bx r0
.align 2, 0
-_0812750C: .4byte gUnknown_203B0D4
+_0812750C: .4byte gSelectedOrderFromParty
thumb_func_end sub_81274FC
thumb_func_start sub_8127510
@@ -17564,18 +17564,18 @@ sub_81275F8: @ 81275F8
_08127618: .4byte gPlayerParty
_0812761C: .4byte gUnknown_203B0A0
_08127620:
- ldr r1, _0812762C @ =gUnknown_203B0D4
+ ldr r1, _0812762C @ =gSelectedOrderFromParty
ldrb r0, [r1, 0x2]
cmp r0, 0
bne _08127630
movs r0, 0x11
b _08127702
.align 2, 0
-_0812762C: .4byte gUnknown_203B0D4
+_0812762C: .4byte gSelectedOrderFromParty
_08127630:
movs r5, 0
_08127632:
- ldr r2, _081276DC @ =gUnknown_203B0D4
+ ldr r2, _081276DC @ =gSelectedOrderFromParty
adds r4, r2, r5
ldrb r0, [r4]
movs r1, 0x64
@@ -17618,7 +17618,7 @@ _0812767E:
adds r0, r2
movs r1, 0
ldrsh r4, [r0, r1]
- ldr r2, _081276DC @ =gUnknown_203B0D4
+ ldr r2, _081276DC @ =gSelectedOrderFromParty
adds r6, r2, r5
ldrb r0, [r6]
muls r0, r7
@@ -17660,18 +17660,18 @@ _081276D0:
bls _08127632
b _08127700
.align 2, 0
-_081276DC: .4byte gUnknown_203B0D4
+_081276DC: .4byte gSelectedOrderFromParty
_081276E0: .4byte gUnknown_203B09C
_081276E4: .4byte 0x00000236
_081276E8:
- ldr r2, _081276F4 @ =gUnknown_203B0D4
+ ldr r2, _081276F4 @ =gSelectedOrderFromParty
ldrb r0, [r2, 0x1]
cmp r0, 0
bne _08127700
movs r0, 0x12
b _08127702
.align 2, 0
-_081276F4: .4byte gUnknown_203B0D4
+_081276F4: .4byte gSelectedOrderFromParty
_081276F8:
movs r0, 0x13
b _08127702
@@ -17696,7 +17696,7 @@ sub_8127710: @ 8127710
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0
- ldr r3, _08127728 @ =gUnknown_203B0D4
+ ldr r3, _08127728 @ =gSelectedOrderFromParty
_0812771A:
adds r0, r1, r3
ldrb r0, [r0]
@@ -17705,7 +17705,7 @@ _0812771A:
movs r0, 0x1
b _08127738
.align 2, 0
-_08127728: .4byte gUnknown_203B0D4
+_08127728: .4byte gSelectedOrderFromParty
_0812772C:
adds r0, r1, 0x1
lsls r0, 24
@@ -17740,7 +17740,7 @@ sub_812773C: @ 812773C
.align 2, 0
_08127764: .4byte gTasks
_08127768:
- ldr r0, _08127780 @ =gUnknown_203B0D4
+ ldr r0, _08127780 @ =gSelectedOrderFromParty
ldrb r0, [r0]
cmp r0, 0
beq _08127784
@@ -17750,7 +17750,7 @@ _08127768:
bl sub_811FA78
b _0812779E
.align 2, 0
-_08127780: .4byte gUnknown_203B0D4
+_08127780: .4byte gSelectedOrderFromParty
_08127784:
movs r0, 0x1A
bl PlaySE
diff --git a/asm/script_pokemon_util_80A0058.s b/asm/script_pokemon_util_80A0058.s
index 525293081..81b3b7efe 100644
--- a/asm/script_pokemon_util_80A0058.s
+++ b/asm/script_pokemon_util_80A0058.s
@@ -396,7 +396,7 @@ _080A034C: .4byte sub_80A0350
thumb_func_start sub_80A0350
sub_80A0350: @ 80A0350
push {lr}
- ldr r0, _080A0360 @ =gUnknown_203B0D4
+ ldr r0, _080A0360 @ =gSelectedOrderFromParty
ldrb r1, [r0]
cmp r1, 0
bne _080A0368
@@ -404,7 +404,7 @@ sub_80A0350: @ 80A0350
strh r1, [r0]
b _080A036E
.align 2, 0
-_080A0360: .4byte gUnknown_203B0D4
+_080A0360: .4byte gSelectedOrderFromParty
_080A0364: .4byte gSpecialVar_Result
_080A0368:
ldr r1, _080A0378 @ =gSpecialVar_Result
@@ -438,7 +438,7 @@ _080A0398: .4byte sub_80A039C
thumb_func_start sub_80A039C
sub_80A039C: @ 80A039C
push {r4,lr}
- ldr r0, _080A03B0 @ =gUnknown_203B0D4
+ ldr r0, _080A03B0 @ =gSelectedOrderFromParty
ldrb r4, [r0]
cmp r4, 0
bne _080A03B8
@@ -447,7 +447,7 @@ sub_80A039C: @ 80A039C
strh r4, [r0]
b _080A03C2
.align 2, 0
-_080A03B0: .4byte gUnknown_203B0D4
+_080A03B0: .4byte gSelectedOrderFromParty
_080A03B4: .4byte gSpecialVar_Result
_080A03B8:
bl ReducePlayerPartyToThree
@@ -481,7 +481,7 @@ ReducePlayerPartyToThree: @ 80A03D8
ldr r6, _080A0454 @ =gPlayerParty
adds r4, r7, 0
_080A03F4:
- ldr r0, _080A0458 @ =gUnknown_203B0D4
+ ldr r0, _080A0458 @ =gSelectedOrderFromParty
adds r1, r5, r0
ldrb r0, [r1]
cmp r0, 0
@@ -528,7 +528,7 @@ _080A042C:
bx r0
.align 2, 0
_080A0454: .4byte gPlayerParty
-_080A0458: .4byte gUnknown_203B0D4
+_080A0458: .4byte gSelectedOrderFromParty
_080A045C: .4byte 0x05000096
thumb_func_end ReducePlayerPartyToThree
diff --git a/include/battle_tower.h b/include/battle_tower.h
index b7b106107..9bb93f1c2 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -12,7 +12,7 @@ struct BattleTowerTrainer
u8 trainerClass;
u8 name[3];
u8 teamFlags;
- u16 speech[6];
+ u16 greeting[6];
};
struct BattleTowerPokemonTemplate
@@ -26,7 +26,7 @@ struct BattleTowerPokemonTemplate
};
u16 sub_8164FCC(u8, u8);
-void sub_80E7524(struct BattleTowerEReaderTrainer *);
+void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *);
void ValidateEReaderTrainer(void);
u8 GetBattleTowerTrainerFrontSpriteId(void);
u8 GetEreaderTrainerFrontSpriteId(void);
diff --git a/include/party_menu.h b/include/party_menu.h
index c07371a5d..6c81a248c 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -45,6 +45,7 @@ extern u8 gUnknown_203B0C0;
extern u8 gUnknown_203B0C1;
extern u8 gUnknown_203B0DC[3];
extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func);
+extern u8 gSelectedOrderFromParty[3];
bool8 FieldCallback_PrepareFadeInFromMenu(void);
bool8 MonKnowsMove(struct Pokemon *, u16);
diff --git a/include/script_pokemon_util_80A0058.h b/include/script_pokemon_util_80A0058.h
index 768e838dd..b63a7b0ef 100644
--- a/include/script_pokemon_util_80A0058.h
+++ b/include/script_pokemon_util_80A0058.h
@@ -5,5 +5,6 @@ bool8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unk1, u32 unk2, u8 unk3
bool8 ScriptGiveEgg(u16 species);
void ScriptSetMonMoveSlot(u8 partyIdx, u16 move, u8 slot);
void sp000_heal_pokemon(void);
+void ReducePlayerPartyToThree(void);
#endif //GUARD_SCRIPT_POKEMON_UTIL_80A0058_H
diff --git a/ld_script.txt b/ld_script.txt
index 50e6faea4..b2a1f11e7 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -209,7 +209,6 @@ SECTIONS {
asm/learn_move.o(.text);
src/fldeff_softboiled.o(.text);
src/battle_tower.o(.text);
- asm/battle_tower.o(.text);
src/battle_controller_oak_old_man.o(.text);
src/player_pc.o(.text);
src/intro.o(.text);
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 0ed20d6c9..421d9cf3b 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -3,6 +3,22 @@
#include "random.h"
#include "text.h"
#include "event_data.h"
+#include "string_util.h"
+#include "battle_message.h"
+#include "data.h"
+#include "pokedex.h"
+#include "overworld.h"
+#include "battle_transition.h"
+#include "easy_chat.h"
+#include "battle_setup.h"
+#include "battle_main.h"
+#include "task.h"
+#include "battle.h"
+#include "party_menu.h"
+#include "new_game.h"
+#include "save.h"
+#include "item.h"
+#include "script_pokemon_util_80A0058.h"
#include "constants/species.h"
#include "constants/items.h"
#include "constants/moves.h"
@@ -10,11 +26,21 @@
#include "constants/vars.h"
#include "constants/map_objects.h"
-void sub_80E5A38(u8 levelType);
+EWRAM_DATA u16 gUnknown_203AAB8 = 0;
+
+#define TakeBravoTrainerBattleTowerOffTheAir()
+
+void ResetBattleTowerStreak(u8 levelType);
void sub_80E5E5C(u8 trainerClass);
-u16 sub_80E7188(u8 levelType);
-void sub_80E7064(void);
-void sub_80E6564(u16 species, u16 heldItem, u8 unused, u8 levelType, u8 monLevel, u16 *validSpecies, u16 *validHeldItems, u8 *numValid);
+void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid);
+void SaveCurrentWinStreak(void);
+void ValidateBattleTowerRecordChecksums(void);
+void SetBattleTowerRecordChecksum(struct BattleTowerRecord * record);
+void ClearBattleTowerRecord(struct BattleTowerRecord * record);
+void sub_80E712C(void);
+u16 GetCurrentBattleTowerWinStreak(u8 levelType);
+void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer * eReaderTrainer);
+void PrintEReaderTrainerFarewellMessage(void);
#include "data/battle_tower/trainers.h"
@@ -153,12 +179,12 @@ void sub_80E5970(void)
{
default:
case 0:
- sub_80E5A38(levelType);
+ ResetBattleTowerStreak(levelType);
if (count == 0)
VarSet(VAR_0x4000, 5);
break;
case 1:
- sub_80E5A38(levelType);
+ ResetBattleTowerStreak(levelType);
VarSet(VAR_0x4000, 1);
count++;
break;
@@ -182,10 +208,10 @@ void sub_80E5970(void)
}
if (gSaveBlock2Ptr->battleTower.var_4AE[0] == 3 && gSaveBlock2Ptr->battleTower.var_4AE[1] == 3)
VarSet(VAR_0x4000, 5);
- sub_80E7064();
+ ValidateBattleTowerRecordChecksums();
}
-void sub_80E5A38(u8 levelType)
+void ResetBattleTowerStreak(u8 levelType)
{
gSaveBlock2Ptr->battleTower.var_4AE[levelType] = 0;
gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] = 1;
@@ -219,7 +245,7 @@ bool8 sub_80E5A70(u8 levelType, u16 winStreak)
if (gSaveBlock2Ptr->battleTower.ereaderTrainer.party[i].level != trainerTeamLevel)
return FALSE;
- sub_80E6564(
+ CheckMonBattleTowerBanlist(
gSaveBlock2Ptr->battleTower.ereaderTrainer.party[i].species,
gSaveBlock2Ptr->battleTower.ereaderTrainer.party[i].heldItem,
1,
@@ -245,7 +271,7 @@ bool8 sub_80E5B14(void)
numCandidates = 0;
battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
- winStreak = sub_80E7188(battleTowerLevelType);
+ winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
if (sub_80E5A70(battleTowerLevelType, winStreak))
{
gSaveBlock2Ptr->battleTower.battleTowerTrainerId = BATTLE_TOWER_EREADER_TRAINER_ID;
@@ -478,7 +504,7 @@ u8 sub_80E60E4(void)
}
}
-void sub_80E6150(u8 *dest)
+void get_trainer_name(u8 *dest)
{
s32 i;
if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
@@ -500,7 +526,7 @@ void sub_80E6150(u8 *dest)
}
#ifdef NONMATCHING // r6/r7 swap
-void sub_80E61DC(void)
+void FillBattleTowerTrainerParty(void)
{
s32 partyIndex;
s32 i;
@@ -674,7 +700,7 @@ void sub_80E61DC(void)
}
#else
NAKED
-void sub_80E61DC(void)
+void FillBattleTowerTrainerParty(void)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n"
@@ -1050,3 +1076,715 @@ void sub_80E61DC(void)
"_080E64BC: .4byte sBattleTowerHeldItems");
}
#endif //NONMATCHING
+
+u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 count)
+{
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
+ {
+ if (count == 0)
+ StringAppend(gStringVar1, gUnknown_83FE859);
+ count++;
+ StringAppend(gStringVar1, gSpeciesNames[species]);
+ switch (count)
+ {
+ case 2:
+ StringAppend(gStringVar1, gUnknown_83FE85E);
+ break;
+ case 5:
+ case 8:
+ case 11:
+ StringAppend(gStringVar1, gUnknown_83FE85C);
+ break;
+ default:
+ StringAppend(gStringVar1, gUnknown_83FE859);
+ break;
+ }
+ }
+ return count;
+}
+
+void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid)
+{
+ s32 i;
+ u32 counter = 0;
+
+ if (species == SPECIES_EGG || species == SPECIES_NONE)
+ return;
+
+ while (1)
+ {
+ if (gBattleTowerBannedSpecies[counter] == 0xFFFF)
+ break;
+
+ if (gBattleTowerBannedSpecies[counter] == species)
+ break;
+
+ counter++;
+ }
+
+ if (gBattleTowerBannedSpecies[counter] != 0xFFFF)
+ return;
+
+ if (battleTowerLevelType == 0 && monLevel > 50)
+ return;
+
+ for (i = 0; i < *numValid && validPartySpecies[i] != species ; i++);
+ if (i != *numValid)
+ return;
+
+ if (heldItem != 0)
+ {
+ for (i = 0; i < *numValid && validPartyHeldItems[i] != heldItem ; i++);
+ if (i != *numValid)
+ return;
+ }
+
+ validPartySpecies[*numValid] = species;
+ validPartyHeldItems[*numValid] = heldItem;
+ *numValid = *numValid + 1;
+}
+
+void CheckPartyBattleTowerBanlist(void)
+{
+ s32 i;
+ u16 species2;
+ u16 heldItem;
+ u8 level;
+ u16 hp;
+ u32 numBanlistCaught;
+ u16 validPartySpecies[6];
+ u16 validPartyHeldItems[6];
+ u8 counter;
+
+ counter = 0;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ species2 = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+
+ CheckMonBattleTowerBanlist(species2, heldItem, hp, gSpecialVar_Result, level, validPartySpecies, validPartyHeldItems, &counter);
+ }
+
+ if (counter < 3)
+ {
+ gStringVar1[0] = EOS;
+ gSpecialVar_0x8004 = 1;
+ counter = 0;
+
+ for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++)
+ counter = AppendBattleTowerBannedSpeciesName(gBattleTowerBannedSpecies[i], counter);
+
+ i = StringLength(gStringVar1);
+ gStringVar1[i - 1] = EOS;
+ if (counter < 3)
+ StringAppend(gStringVar1, gUnknown_83FE860);
+ else
+ StringAppend(gStringVar1, gUnknown_83FE864);
+ }
+ else
+ {
+ gSpecialVar_0x8004 = 0;
+ gSaveBlock2Ptr->battleTower.battleTowerLevelType = gSpecialVar_Result;
+ }
+}
+
+void PrintBattleTowerTrainerMessage(const u16 *greeting)
+{
+ s32 i;
+ if (EC_DoesEasyChatStringFitOnLine(greeting, 3, 2, 18))
+ {
+ ConvertEasyChatWordsToString(gStringVar4, greeting, 2, 3);
+ i = 0;
+ while (gStringVar4[i++] != CHAR_NEWLINE)
+ ;
+ while (gStringVar4[i] != CHAR_NEWLINE)
+ i++;
+ gStringVar4[i] = CHAR_PROMPT_SCROLL;
+ }
+ else
+ {
+ ConvertEasyChatWordsToString(gStringVar4, greeting, 3, 2);
+ }
+}
+
+void PrintBattleTowerTrainerGreeting(void)
+{
+ if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
+ PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.greeting);
+ else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
+ PrintBattleTowerTrainerMessage(gBattleTowerTrainers[gSaveBlock2Ptr->battleTower.battleTowerTrainerId].greeting);
+ else
+ PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.records[gSaveBlock2Ptr->battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting);
+}
+
+void sub_80E6854(void)
+{
+ s32 i;
+ u16 heldItem;
+
+ switch (gUnknown_203AAB8)
+ {
+ case 0:
+ break;
+ case 1:
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ heldItem = GetMonData(&gSaveBlock1Ptr->playerParty[i], MON_DATA_HELD_ITEM);
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem);
+ }
+ break;
+ case 2:
+ PrintEReaderTrainerFarewellMessage();
+ break;
+ }
+
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+}
+
+void sub_80E68C4(u8 taskId)
+{
+ if (BT_IsDone() == TRUE)
+ {
+ gMain.savedCallback = sub_80E6854;
+ CleanupOverworldWindowsAndTilemaps();
+ SetMainCallback2(CB2_InitBattle);
+ DestroyTask(taskId);
+ }
+}
+
+
+void StartSpecialBattle(void)
+{
+ s32 i;
+ u16 heldItem;
+ u8 transition;
+
+ gUnknown_203AAB8 = gSpecialVar_0x8004;
+ switch (gUnknown_203AAB8)
+ {
+ case 0: // battle tower battle
+ gBattleTypeFlags = (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_TRAINER);
+ gTrainerBattleOpponent_A = 0;
+
+ FillBattleTowerTrainerParty();
+
+ CreateTask(sub_80E68C4, 1);
+ PlayMapChosenOrBattleBGM(0);
+ transition = BattleSetup_GetBattleTowerBattleTransition();
+ BT_StartOnField(transition);
+ break;
+ case 1: // secret base battle
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ SetMonData(&gSaveBlock1Ptr->playerParty[i], MON_DATA_HELD_ITEM, &heldItem);
+ }
+
+ CreateTask(sub_80E68C4, 1);
+ PlayMapChosenOrBattleBGM(0);
+ transition = BattleSetup_GetBattleTowerBattleTransition();
+ BT_StartOnField(transition);
+ break;
+ case 2: // e-reader trainer battle
+ ZeroEnemyPartyMons();
+
+ for (i = 0; i < 3; i++)
+ CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->battleTower.ereaderTrainer.party[i]);
+
+ gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER);
+ gTrainerBattleOpponent_A = 0;
+
+ CreateTask(sub_80E68C4, 1);
+ PlayMapChosenOrBattleBGM(0);
+ transition = BattleSetup_GetBattleTowerBattleTransition();
+ BT_StartOnField(transition);
+ break;
+ }
+}
+
+void SetBattleTowerProperty(void)
+{
+ s32 i;
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 0:
+ // Weird cast required to match
+ // Leftover from RS macro?
+ *((u8 *)&gBattleStruct->arenaTurnCounter) = gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType];
+ gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8005;
+ break;
+ case 1:
+ gSaveBlock2Ptr->battleTower.battleTowerLevelType = gSpecialVar_0x8005;
+ break;
+ case 2:
+ gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType] = gSpecialVar_0x8005;
+ break;
+ case 3:
+ gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] = gSpecialVar_0x8005;
+ break;
+ case 4:
+ gSaveBlock2Ptr->battleTower.battleTowerTrainerId = gSpecialVar_0x8005;
+ break;
+ case 5:
+ for (i = 0; i < 3; i++)
+ gSaveBlock2Ptr->battleTower.selectedPartyMons[i] = gSelectedOrderFromParty[i];
+ break;
+ case 6:
+ if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
+ ClearEReaderTrainer(&gSaveBlock2Ptr->battleTower.ereaderTrainer);
+ if (gSaveBlock2Ptr->battleTower.totalBattleTowerWins < 9999)
+ gSaveBlock2Ptr->battleTower.totalBattleTowerWins++;
+ gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType]++;
+ SaveCurrentWinStreak();
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType];
+ gStringVar1[0] = gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1;
+ gStringVar1[1] = 0xFF;
+ break;
+ case 7:
+ if (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] < 1430)
+ gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType]++;
+ SaveCurrentWinStreak();
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType];
+ break;
+ case 8:
+ gSaveBlock2Ptr->battleTower.unk_554 = gSpecialVar_0x8005;
+ break;
+ case 9:
+ break;
+ case 10:
+ SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak);
+ break;
+ case 11:
+ if (gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] != 3)
+ ResetBattleTowerStreak(battleTowerLevelType);
+ break;
+ case 12:
+ gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = *((u8 *)&gBattleStruct->arenaTurnCounter);
+ break;
+ case 13:
+ gSaveBlock2Ptr->battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
+ break;
+ case 14:
+ gSaveBlock2Ptr->battleTower.lastStreakLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+ break;
+ }
+}
+
+void BattleTowerUtil(void)
+{
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 0:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType];
+ break;
+ case 1:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+ break;
+ case 2:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType];
+ break;
+ case 3:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType];
+ break;
+ case 4:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.battleTowerTrainerId;
+ break;
+ case 5:
+ case 6:
+ case 7:
+ break;
+ case 8:
+ gSpecialVar_Result = gSaveBlock2Ptr->battleTower.unk_554;
+ break;
+ case 9:
+ gSpecialVar_Result = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
+ break;
+ case 10:
+ SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak);
+ break;
+ case 11:
+ ResetBattleTowerStreak(battleTowerLevelType);
+ break;
+ case 12:
+ gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = *((u8 *)&gBattleStruct->arenaTurnCounter);
+ break;
+ case 13:
+ gSaveBlock2Ptr->battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
+ break;
+ case 14:
+ gSaveBlock2Ptr->battleTower.lastStreakLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+ break;
+ }
+}
+
+void SetBattleTowerParty(void)
+{
+ s32 i;
+
+ for (i = 0; i < 3; i++)
+ gSelectedOrderFromParty[i] = gSaveBlock2Ptr->battleTower.selectedPartyMons[i];
+
+ ReducePlayerPartyToThree();
+}
+
+void SaveCurrentWinStreak(void)
+{
+ u8 levelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+ u16 streak = GetCurrentBattleTowerWinStreak(levelType);
+
+ if (gSaveBlock2Ptr->battleTower.recordWinStreaks[levelType] < streak)
+ gSaveBlock2Ptr->battleTower.recordWinStreaks[levelType] = streak;
+
+ if (gSaveBlock2Ptr->battleTower.recordWinStreaks[0] > gSaveBlock2Ptr->battleTower.recordWinStreaks[1])
+ {
+ streak = gSaveBlock2Ptr->battleTower.recordWinStreaks[0];
+ SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak);
+
+ if (streak > 9999)
+ gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak = 9999;
+ else
+ gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak = streak;
+ }
+ else
+ {
+ streak = gSaveBlock2Ptr->battleTower.recordWinStreaks[1];
+ SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak);
+
+ if (streak > 9999)
+ gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak = 9999;
+ else
+ gSaveBlock2Ptr->battleTower.bestBattleTowerWinStreak = streak;
+ }
+}
+
+void sub_80E6EE0(void)
+{
+ s32 i;
+ u8 trainerClass;
+ struct BattleTowerRecord *playerRecord = &gSaveBlock2Ptr->battleTower.playerRecord;
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ if (gSaveBlock2Ptr->playerGender != MALE)
+ {
+ trainerClass = sFemaleTrainerClasses[(gSaveBlock2Ptr->playerTrainerId[0] + gSaveBlock2Ptr->playerTrainerId[1]
+ + gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % NELEMS(sFemaleTrainerClasses)];
+ }
+ else
+ {
+ trainerClass = sMaleTrainerClasses[(gSaveBlock2Ptr->playerTrainerId[0] + gSaveBlock2Ptr->playerTrainerId[1]
+ + gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % NELEMS(sMaleTrainerClasses)];
+ }
+
+ playerRecord->battleTowerLevelType = battleTowerLevelType;
+ playerRecord->trainerClass = trainerClass;
+
+ CopyTrainerId(playerRecord->trainerId, gSaveBlock2Ptr->playerTrainerId);
+ StringCopy7(playerRecord->name, gSaveBlock2Ptr->playerName);
+
+ playerRecord->winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
+
+ for (i = 0; i < 6; i++)
+ playerRecord->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i];
+
+ for (i = 0; i < 3; i++)
+ sub_803E23C(&gPlayerParty[gSaveBlock2Ptr->battleTower.selectedPartyMons[i] - 1], &playerRecord->party[i]);
+
+ SetBattleTowerRecordChecksum(&gSaveBlock2Ptr->battleTower.playerRecord);
+ SaveCurrentWinStreak();
+}
+
+void SaveBattleTowerProgress(void)
+{
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ if (gSpecialVar_0x8004 == 3 || gSpecialVar_0x8004 == 0)
+ {
+ if (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] > 1
+ || gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType] > 1)
+ sub_80E6EE0();
+ }
+
+ sub_80E712C();
+
+ gSaveBlock2Ptr->battleTower.battleOutcome = gBattleOutcome;
+
+ if (gSpecialVar_0x8004 != 3)
+ gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004;
+
+ VarSet(VAR_0x4000, 0);
+ gSaveBlock2Ptr->battleTower.unk_554 = 1;
+ TrySavingData(SAVE_EREADER);
+}
+
+void BattleTower_SoftReset(void)
+{
+ DoSoftReset();
+}
+
+void ValidateBattleTowerRecordChecksums(void)
+{
+ u32 i;
+ s32 recordIndex;
+ struct BattleTowerRecord *record;
+ u32 checksum;
+
+ record = &gSaveBlock2Ptr->battleTower.playerRecord;
+ checksum = 0;
+ for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
+ checksum += ((u32 *)record)[i];
+
+ if (gSaveBlock2Ptr->battleTower.playerRecord.checksum != checksum)
+ ClearBattleTowerRecord(&gSaveBlock2Ptr->battleTower.playerRecord);
+
+ for (recordIndex = 0; recordIndex < 5; recordIndex++)
+ {
+ record = &gSaveBlock2Ptr->battleTower.records[recordIndex];
+ checksum = 0;
+ for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
+ checksum += ((u32 *)record)[i];
+
+ if (gSaveBlock2Ptr->battleTower.records[recordIndex].checksum != checksum)
+ ClearBattleTowerRecord(&gSaveBlock2Ptr->battleTower.records[recordIndex]);
+ }
+}
+
+void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record)
+{
+ u32 i;
+
+ record->checksum = 0;
+ for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
+ record->checksum += ((u32 *)record)[i];
+}
+
+void ClearBattleTowerRecord(struct BattleTowerRecord *record)
+{
+ u32 i;
+
+ for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32); i++)
+ ((u32 *)record)[i] = 0;
+}
+
+void sub_80E712C(void)
+{
+ s32 i;
+
+ get_trainer_name(gSaveBlock2Ptr->battleTower.defeatedByTrainerName);
+ gSaveBlock2Ptr->battleTower.defeatedBySpecies = gBattleMons[1].species;
+ gSaveBlock2Ptr->battleTower.firstMonSpecies = gBattleMons[0].species;
+
+ for (i = 0; i < POKEMON_NAME_LENGTH; i++)
+ gSaveBlock2Ptr->battleTower.firstMonNickname[i] = gBattleMons[0].nickname[i];
+}
+
+u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType)
+{
+ u16 winStreak = ((gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] - 1) * 7 - 1)
+ + gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType];
+
+ if (winStreak > 9999)
+ return 9999;
+ else
+ return winStreak;
+}
+
+void DetermineBattleTowerPrize(void)
+{
+ u8 levelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ if (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[levelType] - 1 > 5)
+ gSaveBlock2Ptr->battleTower.prizeItem = sLongStreakPrizes[Random() % NELEMS(sLongStreakPrizes)];
+ else
+ gSaveBlock2Ptr->battleTower.prizeItem = sShortStreakPrizes[Random() % NELEMS(sShortStreakPrizes)];
+}
+
+void GiveBattleTowerPrize(void)
+{
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ if (AddBagItem(gSaveBlock2Ptr->battleTower.prizeItem, 1) == TRUE)
+ {
+ CopyItemName(gSaveBlock2Ptr->battleTower.prizeItem, gStringVar1);
+ gSpecialVar_Result = 1;
+ }
+ else
+ {
+ gSpecialVar_Result = 0;
+ gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = 6;
+ }
+}
+
+void AwardBattleTowerRibbons(void)
+{
+ s32 i;
+ u32 partyIndex;
+ struct Pokemon *pokemon;
+ u8 ribbonType;
+ u8 battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
+
+ if (battleTowerLevelType != 0)
+ ribbonType = MON_DATA_VICTORY_RIBBON;
+ else
+ ribbonType = MON_DATA_WINNING_RIBBON;
+
+ gSpecialVar_Result = 0;
+
+ if (GetCurrentBattleTowerWinStreak(battleTowerLevelType) > 55)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ partyIndex = gSaveBlock2Ptr->battleTower.selectedPartyMons[i] - 1;
+ pokemon = &gPlayerParty[partyIndex];
+ if (!GetMonData(pokemon, ribbonType))
+ {
+ gSpecialVar_Result = 1;
+ SetMonData(pokemon, ribbonType, &gSpecialVar_Result);
+ }
+ }
+ }
+
+ if (gSpecialVar_Result != 0)
+ IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS);
+}
+
+// This is a leftover debugging function that is used to populate the E-Reader
+// trainer with the player's current data.
+void Debug_FillEReaderTrainerWithPlayerData(void)
+{
+ struct BattleTowerEReaderTrainer *ereaderTrainer;
+ s32 i;
+ s32 j;
+
+ ereaderTrainer = &gSaveBlock2Ptr->battleTower.ereaderTrainer;
+
+ if (gSaveBlock2Ptr->playerGender != MALE)
+ {
+ ereaderTrainer->trainerClass = sFemaleTrainerClasses[(gSaveBlock2Ptr->playerTrainerId[0] + gSaveBlock2Ptr->playerTrainerId[1]
+ + gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % NELEMS(sFemaleTrainerClasses)];
+ }
+ else
+ {
+ ereaderTrainer->trainerClass = sMaleTrainerClasses[(gSaveBlock2Ptr->playerTrainerId[0] + gSaveBlock2Ptr->playerTrainerId[1]
+ + gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % NELEMS(sMaleTrainerClasses)];
+ }
+
+ CopyTrainerId(ereaderTrainer->trainerId, gSaveBlock2Ptr->playerTrainerId);
+ StringCopy7(ereaderTrainer->name, gSaveBlock2Ptr->playerName);
+
+ ereaderTrainer->winStreak = 1;
+
+ j = 7;
+ for (i = 0; i < 6; i++)
+ {
+ ereaderTrainer->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i];
+ ereaderTrainer->farewellPlayerLost[i] = j;
+ ereaderTrainer->farewellPlayerWon[i] = j + 6;
+ j++;
+ }
+
+ for (i = 0; i < 3; i++)
+ sub_803E23C(&gPlayerParty[i], &ereaderTrainer->party[i]);
+
+ SetEReaderTrainerChecksum(ereaderTrainer);
+}
+
+u8 GetEreaderTrainerFrontSpriteId(void)
+{
+ return gFacilityClassToPicIndex[gSaveBlock2Ptr->battleTower.ereaderTrainer.trainerClass];
+}
+
+u8 GetEreaderTrainerClassId(void)
+{
+ return gFacilityClassToTrainerClass[gSaveBlock2Ptr->battleTower.ereaderTrainer.trainerClass];
+}
+
+void CopyEReaderTrainerName5(u8 *trainerName)
+{
+ s32 i;
+
+ for (i = 0; i < 5; i++)
+ trainerName[i] = gSaveBlock2Ptr->battleTower.ereaderTrainer.name[i];
+
+ trainerName[i] = EOS;
+}
+
+// Checks if the saved E-Reader trainer is valid.
+void ValidateEReaderTrainer(void)
+{
+ u32 i;
+ u32 checksum;
+ struct BattleTowerEReaderTrainer *ereaderTrainer;
+
+ gSpecialVar_Result = 0;
+ ereaderTrainer = &gSaveBlock2Ptr->battleTower.ereaderTrainer;
+
+ checksum = 0;
+ for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
+ checksum |= ((u32 *)ereaderTrainer)[i];
+
+ if (checksum == 0)
+ {
+ gSpecialVar_Result = 1;
+ return;
+ }
+
+ checksum = 0;
+ for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
+ checksum += ((u32 *)ereaderTrainer)[i];
+
+ if (gSaveBlock2Ptr->battleTower.ereaderTrainer.checksum != checksum)
+ {
+ ClearEReaderTrainer(&gSaveBlock2Ptr->battleTower.ereaderTrainer);
+ gSpecialVar_Result = 1;
+ }
+}
+
+void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer)
+{
+ s32 i;
+
+ ereaderTrainer->checksum = 0;
+ for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
+ ereaderTrainer->checksum += ((u32 *)ereaderTrainer)[i];
+}
+
+void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer)
+{
+ u32 i;
+
+ for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32); i++)
+ ((u32 *)ereaderTrainer)[i] = 0;
+}
+
+void PrintEReaderTrainerGreeting(void)
+{
+ PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.greeting);
+}
+
+void PrintEReaderTrainerFarewellMessage(void)
+{
+ if (gBattleOutcome == B_OUTCOME_DREW)
+ gStringVar4[0] = EOS;
+ else if (gBattleOutcome == B_OUTCOME_WON)
+ PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.farewellPlayerWon);
+ else
+ PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.farewellPlayerLost);
+}
+
+void Dummy_TryEnableBravoTrainerBattleTower(void)
+{
+ s32 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ if (gSaveBlock2Ptr->battleTower.var_4AE[i] == 1)
+ TakeBravoTrainerBattleTowerOffTheAir();
+ }
+}
diff --git a/src/mevent.c b/src/mevent.c
index 671e30ee0..5ed001d09 100644
--- a/src/mevent.c
+++ b/src/mevent.c
@@ -588,7 +588,7 @@ void DestroyWonderCard(void)
ClearRamScript();
sub_806E2D0();
sub_806E370();
- sub_80E7524(&gSaveBlock2Ptr->battleTower.ereaderTrainer);
+ ClearEReaderTrainer(&gSaveBlock2Ptr->battleTower.ereaderTrainer);
}
bool32 sub_8143F68(const struct MEWonderCardData * data)
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 14a9fad1e..27b3067ec 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -75,6 +75,7 @@ gUnknown_2031DEA: @ 2031DEA
gUnknown_2031DEC: @ 2031DEC
.space 0x10
+ .align 2
.include "src/fieldmap.o"
gUnknown_2036E28: @ 2036E28
@@ -189,7 +190,9 @@ gAnimBattlerSpecies: @ 2037F1C
gUnknown_2037F24: @ 2037F24
.space 0x4
+ .align 2
.include "src/battle_anim_mons.o"
+ .align 2
.include "src/title_screen.o"
.align 2
@@ -219,6 +222,7 @@ gUnknown_20386A8: @ 20386A8
gFieldEffectArguments: @ 20386E0
.space 0x20
+ .align 2
.include "src/scanline_effect.o"
.align 2
@@ -352,10 +356,12 @@ gUnknown_2039984: @ 2039984
gUnknown_203998C: @ 203998C
.space 0x4
+ .align 2
.include "src/money.o"
.align 2
.include "src/safari_zone.o"
+ .align 2
.include "src/item_use.o"
.align 2
@@ -413,7 +419,6 @@ gPlayerFacingPosition: @ 2039A04
.align 2
.include "src/field_specials.o"
-
.align 2
.include "src/battle_records.o"
@@ -423,7 +428,9 @@ gUnknown_2039A20: @ 2039A20
gUnknown_2039A24: @ 2039A24
.space 0x4
+ .align 2
.include "src/coins.o"
+ .align 2
.include "src/battle_transition.o"
gUnknown_2039A30: @ 2039A30
@@ -432,7 +439,9 @@ gUnknown_2039A30: @ 2039A30
gUnknown_2039A34: @ 2039A34
.space 0x4
+ .align 2
.include "src/save.o"
+ .align 2
.include "src/mystery_event_script.o"
gUnknown_203AAB0: @ 203AAB0
@@ -441,14 +450,12 @@ gUnknown_203AAB0: @ 203AAB0
gUnknown_203AAB4: @ 203AAB4
.space 0x4
-gUnknown_203AAB8: @ 203AAB8
- .space 0x4
-
+ .align 2
+ .include "src/battle_tower.o"
.align 2
.include "src/player_pc.o"
.align 2
.include "src/intro.o"
-
.align 2
.include "src/hall_of_fame.o"
.align 2
@@ -496,6 +503,7 @@ gUnknown_203ACEC: @ 203ACEC
gUnknown_203ACF0: @ 203ACF0
.space 0x4
+ .align 2
.include "src/list_menu.o"
.align 2
gUnknown_203ACFC: @ 203ACFC
@@ -539,22 +547,16 @@ gSpecialVar_ItemId: @ 203AD30
.align 2
.include "src/bag.o"
-
.align 2
.include "src/trainer_pokemon_sprites.o"
-
.align 2
.include "src/vs_seeker.o"
-
.align 2
.include "src/item_pc.o"
-
.align 2
.include "src/mailbox_pc.o"
-
.align 2
.include "src/menu.o"
-
.align 2
.include "src/quest_log.o"
@@ -640,7 +642,7 @@ gUnknown_203B0CC: @ 203B0CC
gUnknown_203B0D0: @ 203B0D0
.space 0x4
-gUnknown_203B0D4: @ 203B0D4
+gSelectedOrderFromParty: @ 203B0D4
.space 0x4
gUnknown_203B0D8: @ 203B0D8