summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-10-21 03:07:59 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-10-21 03:08:10 +0800
commitb0400ef6ba6e6cf49ad2bdc19a29eb2abef26701 (patch)
tree60276257dd8cccfa1278bb0302cf948ae8ab79fa
parente48725d9b54ed9f71f65c3ba5577cffa8f4887d1 (diff)
battle_setup funcs
-rw-r--r--asm/battle_anim_effects_2.s8
-rw-r--r--asm/battle_setup.s2180
-rw-r--r--asm/field_effect_helpers.s6
-rw-r--r--asm/field_ground_effect.s8
-rw-r--r--asm/overworld.s6
-rw-r--r--asm/post_battle_event_funcs.s4
-rw-r--r--asm/wild_encounter.s2
-rw-r--r--data/map_event_scripts.inc4
-rw-r--r--data/specials.inc2
-rw-r--r--include/battle.h11
-rw-r--r--include/battle_anim.h2
-rw-r--r--include/battle_setup.h8
-rw-r--r--include/constants/battle.h8
-rw-r--r--include/constants/battle_setup.h15
-rw-r--r--include/constants/map_types.h28
-rw-r--r--include/event_data.h3
-rw-r--r--include/event_scripts.h9
-rw-r--r--include/field_control_avatar.h3
-rw-r--r--include/field_map_obj.h2
-rw-r--r--include/field_player_avatar.h4
-rw-r--r--include/global.fieldmap.h31
-rw-r--r--include/metatile_behavior.h12
-rw-r--r--include/overworld.h3
-rw-r--r--include/pokemon.h29
-rw-r--r--include/quest_log.h2
-rw-r--r--include/script_pokemon_util_80A0058.h1
-rw-r--r--include/vs_seeker.h2
-rw-r--r--ld_script.txt3
-rw-r--r--src/battle_anim_mons.c2
-rw-r--r--src/battle_script_commands.c2
-rw-r--r--src/battle_setup.c974
-rw-r--r--src/fame_checker.c2
-rw-r--r--src/fldeff_rocksmash.c1
-rw-r--r--src/item_use.c3
-rw-r--r--src/metatile_behavior.c12
-rw-r--r--src/psychic.c4
-rw-r--r--src/quest_log_8150454.c4
-rw-r--r--src/scrcmd.c2
-rw-r--r--src/unk_8159F40.c2
-rw-r--r--src/vs_seeker.c16
-rw-r--r--sym_ewram.txt31
41 files changed, 1105 insertions, 2346 deletions
diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s
index 67ac6a13e..4fc69864c 100644
--- a/asm/battle_anim_effects_2.s
+++ b/asm/battle_anim_effects_2.s
@@ -3902,7 +3902,7 @@ _080A8C60:
subs r0, r4
strh r0, [r1]
_080A8C6A:
- ldr r1, _080A8C80 @ =sub_8075D9C
+ ldr r1, _080A8C80 @ =AnimSparklingParticle
str r1, [r6, 0x1C]
adds r0, r6, 0
bl _call_via_r1
@@ -3912,7 +3912,7 @@ _080A8C6A:
bx r0
.align 2, 0
_080A8C7C: .4byte gBattleAnimArgs
-_080A8C80: .4byte sub_8075D9C
+_080A8C80: .4byte AnimSparklingParticle
thumb_func_end sub_80A8BC4
thumb_func_start sub_80A8C84
@@ -4233,7 +4233,7 @@ _080A8F0E:
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
- ldr r1, _080A8F34 @ =sub_8075D9C
+ ldr r1, _080A8F34 @ =AnimSparklingParticle
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
@@ -4244,7 +4244,7 @@ _080A8F0E:
_080A8F28: .4byte 0x000027db
_080A8F2C: .4byte 0x01010000
_080A8F30: .4byte gBattleAnimArgs
-_080A8F34: .4byte sub_8075D9C
+_080A8F34: .4byte AnimSparklingParticle
thumb_func_end sub_80A8EE8
thumb_func_start sub_80A8F38
diff --git a/asm/battle_setup.s b/asm/battle_setup.s
deleted file mode 100644
index a43be8703..000000000
--- a/asm/battle_setup.s
+++ /dev/null
@@ -1,2180 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start Task_BattleStart
-Task_BattleStart: @ 807F620
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0807F640 @ =gTasks+0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0807F644
- cmp r0, 0x1
- beq _0807F65E
- b _0807F686
- .align 2, 0
-_0807F640: .4byte gTasks+0x8
-_0807F644:
- bl FldEffPoison_IsActive
- cmp r0, 0
- bne _0807F686
- bl HelpSystem_Disable
- ldrb r0, [r4, 0x2]
- bl BT_StartOnField
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _0807F686
-_0807F65E:
- bl BT_IsDone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807F686
- bl HelpSystem_Enable
- bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _0807F68C @ =CB2_InitBattle
- bl SetMainCallback2
- bl RestartWildEncounterImmunitySteps
- bl ClearPoisonStepCounter
- adds r0, r5, 0
- bl DestroyTask
-_0807F686:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807F68C: .4byte CB2_InitBattle
- thumb_func_end Task_BattleStart
-
- thumb_func_start CreateBattleStartTask
-CreateBattleStartTask: @ 807F690
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 16
- lsrs r5, 16
- ldr r0, _0807F6C4 @ =Task_BattleStart
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0807F6C8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- adds r0, r5, 0
- bl PlayMapChosenOrBattleBGM
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807F6C4: .4byte Task_BattleStart
-_0807F6C8: .4byte gTasks
- thumb_func_end CreateBattleStartTask
-
- thumb_func_start CheckSilphScopeInPokemonTower
-CheckSilphScopeInPokemonTower: @ 807F6CC
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- cmp r0, 0x1
- bne _0807F6FC
- adds r0, r1, 0
- subs r0, 0x58
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x6
- bhi _0807F6FC
- ldr r0, _0807F6F8 @ =0x00000167
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- cmp r0, 0
- bne _0807F6FC
- movs r0, 0x1
- b _0807F6FE
- .align 2, 0
-_0807F6F8: .4byte 0x00000167
-_0807F6FC:
- movs r0, 0
-_0807F6FE:
- pop {r1}
- bx r1
- thumb_func_end CheckSilphScopeInPokemonTower
-
- thumb_func_start BattleSetup_StartWildBattle
-BattleSetup_StartWildBattle: @ 807F704
- push {lr}
- bl GetSafariZoneFlag
- cmp r0, 0
- beq _0807F714
- bl BattleSetup_StartSafariBattle
- b _0807F744
-_0807F714:
- ldr r0, _0807F73C @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl CheckSilphScopeInPokemonTower
- lsls r0, 24
- cmp r0, 0
- beq _0807F740
- bl BattleSetup_StartGhostBattle
- b _0807F744
- .align 2, 0
-_0807F73C: .4byte gSaveBlock1Ptr
-_0807F740:
- bl BattleSetup_StandardWildBattle
-_0807F744:
- pop {r0}
- bx r0
- thumb_func_end BattleSetup_StartWildBattle
-
- thumb_func_start BattleSetup_StandardWildBattle
-BattleSetup_StandardWildBattle: @ 807F748
- push {lr}
- bl ScriptContext2_Enable
- bl FreezeEventObjects
- bl sub_805C780
- ldr r1, _0807F780 @ =gMain
- ldr r0, _0807F784 @ =CB2_EndWildBattle
- str r0, [r1, 0x8]
- ldr r1, _0807F788 @ =gBattleTypeFlags
- movs r0, 0
- str r0, [r1]
- bl GetWildBattleTransition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl CreateBattleStartTask
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- pop {r0}
- bx r0
- .align 2, 0
-_0807F780: .4byte gMain
-_0807F784: .4byte CB2_EndWildBattle
-_0807F788: .4byte gBattleTypeFlags
- thumb_func_end BattleSetup_StandardWildBattle
-
- thumb_func_start BattleSetup_StartRoamerBattle
-BattleSetup_StartRoamerBattle: @ 807F78C
- push {lr}
- bl ScriptContext2_Enable
- bl FreezeEventObjects
- bl sub_805C780
- ldr r1, _0807F7C8 @ =gMain
- ldr r0, _0807F7CC @ =CB2_EndWildBattle
- str r0, [r1, 0x8]
- ldr r1, _0807F7D0 @ =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 3
- str r0, [r1]
- bl GetWildBattleTransition
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0807F7D4 @ =0x00000155
- bl CreateBattleStartTask
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- pop {r0}
- bx r0
- .align 2, 0
-_0807F7C8: .4byte gMain
-_0807F7CC: .4byte CB2_EndWildBattle
-_0807F7D0: .4byte gBattleTypeFlags
-_0807F7D4: .4byte 0x00000155
- thumb_func_end BattleSetup_StartRoamerBattle
-
- thumb_func_start BattleSetup_StartSafariBattle
-BattleSetup_StartSafariBattle: @ 807F7D8
- push {lr}
- bl ScriptContext2_Enable
- bl FreezeEventObjects
- bl sub_805C780
- ldr r1, _0807F804 @ =gMain
- ldr r0, _0807F808 @ =CB2_EndSafariBattle
- str r0, [r1, 0x8]
- ldr r1, _0807F80C @ =gBattleTypeFlags
- movs r0, 0x80
- str r0, [r1]
- bl GetWildBattleTransition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl CreateBattleStartTask
- pop {r0}
- bx r0
- .align 2, 0
-_0807F804: .4byte gMain
-_0807F808: .4byte CB2_EndSafariBattle
-_0807F80C: .4byte gBattleTypeFlags
- thumb_func_end BattleSetup_StartSafariBattle
-
- thumb_func_start BattleSetup_StartGhostBattle
-BattleSetup_StartGhostBattle: @ 807F810
- push {lr}
- bl ScriptContext2_Enable
- bl FreezeEventObjects
- bl sub_805C780
- ldr r1, _0807F854 @ =gMain
- ldr r0, _0807F858 @ =CB2_EndWildBattle
- str r0, [r1, 0x8]
- ldr r1, _0807F85C @ =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 8
- str r0, [r1]
- bl GetWildBattleTransition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl CreateBattleStartTask
- ldr r0, _0807F860 @ =gEnemyParty
- ldr r2, _0807F864 @ =gUnknown_841D148
- movs r1, 0x2
- bl SetMonData
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- pop {r0}
- bx r0
- .align 2, 0
-_0807F854: .4byte gMain
-_0807F858: .4byte CB2_EndWildBattle
-_0807F85C: .4byte gBattleTypeFlags
-_0807F860: .4byte gEnemyParty
-_0807F864: .4byte gUnknown_841D148
- thumb_func_end BattleSetup_StartGhostBattle
-
- thumb_func_start sub_807F868
-sub_807F868: @ 807F868
- push {lr}
- bl GetTrainerBattleTransition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl CreateBattleStartTask
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x9
- bl IncrementGameStat
- pop {r0}
- bx r0
- thumb_func_end sub_807F868
-
- thumb_func_start BattleSetup_StartOldManTutorialBattle
-BattleSetup_StartOldManTutorialBattle: @ 807F888
- push {lr}
- ldr r0, _0807F8B4 @ =gEnemyParty
- movs r1, 0xD
- movs r2, 0x5
- bl CreateMaleMon
- bl ScriptContext2_Enable
- ldr r1, _0807F8B8 @ =gMain
- ldr r0, _0807F8BC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- str r0, [r1, 0x8]
- ldr r1, _0807F8C0 @ =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 2
- str r0, [r1]
- movs r0, 0x8
- movs r1, 0
- bl CreateBattleStartTask
- pop {r0}
- bx r0
- .align 2, 0
-_0807F8B4: .4byte gEnemyParty
-_0807F8B8: .4byte gMain
-_0807F8BC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
-_0807F8C0: .4byte gBattleTypeFlags
- thumb_func_end BattleSetup_StartOldManTutorialBattle
-
- thumb_func_start BattleSetup_StartScriptedWildBattle
-BattleSetup_StartScriptedWildBattle: @ 807F8C4
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, _0807F8F8 @ =gMain
- ldr r0, _0807F8FC @ =CB2_EndScriptedWildBattle
- str r0, [r1, 0x8]
- ldr r1, _0807F900 @ =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 10
- str r0, [r1]
- bl GetWildBattleTransition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl CreateBattleStartTask
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- pop {r0}
- bx r0
- .align 2, 0
-_0807F8F8: .4byte gMain
-_0807F8FC: .4byte CB2_EndScriptedWildBattle
-_0807F900: .4byte gBattleTypeFlags
- thumb_func_end BattleSetup_StartScriptedWildBattle
-
- thumb_func_start BattleSetup_StartMarowakBattle
-BattleSetup_StartMarowakBattle: @ 807F904
- push {lr}
- sub sp, 0xC
- bl ScriptContext2_Enable
- ldr r1, _0807F944 @ =gMain
- ldr r0, _0807F948 @ =CB2_EndMarowakBattle
- str r0, [r1, 0x8]
- ldr r0, _0807F94C @ =0x00000167
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- cmp r0, 0
- beq _0807F958
- ldr r1, _0807F950 @ =gBattleTypeFlags
- movs r0, 0xA0
- lsls r0, 8
- str r0, [r1]
- ldr r0, _0807F954 @ =gEnemyParty
- movs r1, 0xFE
- str r1, [sp]
- movs r1, 0xC
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x69
- movs r2, 0x1E
- movs r3, 0x1F
- bl CreateMonWithGenderNatureLetter
- b _0807F960
- .align 2, 0
-_0807F944: .4byte gMain
-_0807F948: .4byte CB2_EndMarowakBattle
-_0807F94C: .4byte 0x00000167
-_0807F950: .4byte gBattleTypeFlags
-_0807F954: .4byte gEnemyParty
-_0807F958:
- ldr r1, _0807F98C @ =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 8
- str r0, [r1]
-_0807F960:
- bl GetWildBattleTransition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl CreateBattleStartTask
- ldr r0, _0807F990 @ =gEnemyParty
- ldr r2, _0807F994 @ =gUnknown_841D148
- movs r1, 0x2
- bl SetMonData
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- add sp, 0xC
- pop {r0}
- bx r0
- .align 2, 0
-_0807F98C: .4byte gBattleTypeFlags
-_0807F990: .4byte gEnemyParty
-_0807F994: .4byte gUnknown_841D148
- thumb_func_end BattleSetup_StartMarowakBattle
-
- thumb_func_start sub_807F998
-sub_807F998: @ 807F998
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, _0807F9CC @ =gMain
- ldr r0, _0807F9D0 @ =CB2_EndScriptedWildBattle
- str r0, [r1, 0x8]
- ldr r1, _0807F9D4 @ =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 6
- str r0, [r1]
- bl GetWildBattleTransition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl CreateBattleStartTask
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- pop {r0}
- bx r0
- .align 2, 0
-_0807F9CC: .4byte gMain
-_0807F9D0: .4byte CB2_EndScriptedWildBattle
-_0807F9D4: .4byte gBattleTypeFlags
- thumb_func_end sub_807F998
-
- thumb_func_start BattleSetup_StartLegendaryBattle
-BattleSetup_StartLegendaryBattle: @ 807F9D8
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, _0807FA0C @ =gMain
- ldr r0, _0807FA10 @ =CB2_EndScriptedWildBattle
- str r0, [r1, 0x8]
- ldr r1, _0807FA14 @ =gBattleTypeFlags
- movs r0, 0x84
- lsls r0, 11
- str r0, [r1]
- ldr r0, _0807FA18 @ =gEnemyParty
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, 0x96
- beq _0807FA2E
- cmp r0, 0x96
- bgt _0807FA1C
- cmp r0, 0x92
- bgt _0807FA4C
- cmp r0, 0x90
- blt _0807FA4C
- b _0807FA3C
- .align 2, 0
-_0807FA0C: .4byte gMain
-_0807FA10: .4byte CB2_EndScriptedWildBattle
-_0807FA14: .4byte gBattleTypeFlags
-_0807FA18: .4byte gEnemyParty
-_0807FA1C:
- cmp r1, 0xF9
- blt _0807FA4C
- cmp r1, 0xFA
- ble _0807FA3C
- movs r0, 0xCD
- lsls r0, 1
- cmp r1, r0
- beq _0807FA34
- b _0807FA4C
-_0807FA2E:
- movs r1, 0xAA
- lsls r1, 1
- b _0807FA3E
-_0807FA34:
- ldr r1, _0807FA38 @ =0x00000153
- b _0807FA3E
- .align 2, 0
-_0807FA38: .4byte 0x00000153
-_0807FA3C:
- ldr r1, _0807FA48 @ =0x00000155
-_0807FA3E:
- movs r0, 0
- bl CreateBattleStartTask
- b _0807FA56
- .align 2, 0
-_0807FA48: .4byte 0x00000155
-_0807FA4C:
- movs r1, 0x85
- lsls r1, 1
- movs r0, 0
- bl CreateBattleStartTask
-_0807FA56:
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- pop {r0}
- bx r0
- thumb_func_end BattleSetup_StartLegendaryBattle
-
- thumb_func_start BattleSetup_StartIceCaveBattle
-BattleSetup_StartIceCaveBattle: @ 807FA68
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, _0807FA90 @ =gMain
- ldr r0, _0807FA94 @ =CB2_EndScriptedWildBattle
- str r0, [r1, 0x8]
- ldr r1, _0807FA98 @ =gBattleTypeFlags
- movs r0, 0xC0
- lsls r0, 6
- str r0, [r1]
- ldr r0, _0807FA9C @ =gGameVersion
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0807FAA0
- movs r1, 0x85
- lsls r1, 1
- movs r0, 0xB
- bl CreateBattleStartTask
- b _0807FAAA
- .align 2, 0
-_0807FA90: .4byte gMain
-_0807FA94: .4byte CB2_EndScriptedWildBattle
-_0807FA98: .4byte gBattleTypeFlags
-_0807FA9C: .4byte gGameVersion
-_0807FAA0:
- movs r1, 0x85
- lsls r1, 1
- movs r0, 0xB
- bl CreateBattleStartTask
-_0807FAAA:
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- pop {r0}
- bx r0
- thumb_func_end BattleSetup_StartIceCaveBattle
-
- thumb_func_start sub_807FABC
-sub_807FABC: @ 807FABC
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, _0807FAEC @ =gMain
- ldr r0, _0807FAF0 @ =CB2_EndScriptedWildBattle
- str r0, [r1, 0x8]
- ldr r1, _0807FAF4 @ =gBattleTypeFlags
- movs r0, 0xC0
- lsls r0, 7
- str r0, [r1]
- movs r1, 0x85
- lsls r1, 1
- movs r0, 0
- bl CreateBattleStartTask
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- pop {r0}
- bx r0
- .align 2, 0
-_0807FAEC: .4byte gMain
-_0807FAF0: .4byte CB2_EndScriptedWildBattle
-_0807FAF4: .4byte gBattleTypeFlags
- thumb_func_end sub_807FABC
-
- thumb_func_start sub_807FAF8
-sub_807FAF8: @ 807FAF8
- push {lr}
- bl LoadPlayerParty
- bl CB2_EndWildBattle
- pop {r0}
- bx r0
- thumb_func_end sub_807FAF8
-
- thumb_func_start sub_807FB08
-sub_807FB08: @ 807FB08
- push {lr}
- bl ScriptContext2_Enable
- bl FreezeEventObjects
- bl sub_805C780
- ldr r1, _0807FB38 @ =gMain
- ldr r0, _0807FB3C @ =sub_807FAF8
- str r0, [r1, 0x8]
- bl SavePlayerParty
- bl sub_8159F40
- bl GetWildBattleTransition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl CreateBattleStartTask
- pop {r0}
- bx r0
- .align 2, 0
-_0807FB38: .4byte gMain
-_0807FB3C: .4byte sub_807FAF8
- thumb_func_end sub_807FB08
-
- thumb_func_start CB2_EndWildBattle
-CB2_EndWildBattle: @ 807FB40
- push {lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- movs r1, 0xA0
- lsls r1, 19
- ldr r2, _0807FB74 @ =0x01000100
- mov r0, sp
- bl CpuSet
- movs r0, 0
- movs r1, 0x80
- bl ResetOamRange
- ldr r0, _0807FB78 @ =gBattleOutcome
- ldrb r0, [r0]
- bl IsPlayerDefeated
- cmp r0, 0x1
- bne _0807FB80
- ldr r0, _0807FB7C @ =c2_whiteout
- bl SetMainCallback2
- b _0807FB8C
- .align 2, 0
-_0807FB74: .4byte 0x01000100
-_0807FB78: .4byte gBattleOutcome
-_0807FB7C: .4byte c2_whiteout
-_0807FB80:
- ldr r0, _0807FB94 @ =CB2_ReturnToField
- bl SetMainCallback2
- ldr r1, _0807FB98 @ =gFieldCallback
- ldr r0, _0807FB9C @ =sub_807E3EC
- str r0, [r1]
-_0807FB8C:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0807FB94: .4byte CB2_ReturnToField
-_0807FB98: .4byte gFieldCallback
-_0807FB9C: .4byte sub_807E3EC
- thumb_func_end CB2_EndWildBattle
-
- thumb_func_start CB2_EndScriptedWildBattle
-CB2_EndScriptedWildBattle: @ 807FBA0
- push {lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- movs r1, 0xA0
- lsls r1, 19
- ldr r2, _0807FBD4 @ =0x01000100
- mov r0, sp
- bl CpuSet
- movs r0, 0
- movs r1, 0x80
- bl ResetOamRange
- ldr r0, _0807FBD8 @ =gBattleOutcome
- ldrb r0, [r0]
- bl IsPlayerDefeated
- cmp r0, 0x1
- bne _0807FBE0
- ldr r0, _0807FBDC @ =c2_whiteout
- bl SetMainCallback2
- b _0807FBE6
- .align 2, 0
-_0807FBD4: .4byte 0x01000100
-_0807FBD8: .4byte gBattleOutcome
-_0807FBDC: .4byte c2_whiteout
-_0807FBE0:
- ldr r0, _0807FBEC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl SetMainCallback2
-_0807FBE6:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0807FBEC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
- thumb_func_end CB2_EndScriptedWildBattle
-
- thumb_func_start CB2_EndMarowakBattle
-CB2_EndMarowakBattle: @ 807FBF0
- push {r4,lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- movs r1, 0xA0
- lsls r1, 19
- ldr r2, _0807FC24 @ =0x01000100
- mov r0, sp
- bl CpuSet
- movs r0, 0
- movs r1, 0x80
- bl ResetOamRange
- ldr r4, _0807FC28 @ =gBattleOutcome
- ldrb r0, [r4]
- bl IsPlayerDefeated
- adds r1, r0, 0
- cmp r1, 0
- beq _0807FC30
- ldr r0, _0807FC2C @ =c2_whiteout
- bl SetMainCallback2
- b _0807FC4C
- .align 2, 0
-_0807FC24: .4byte 0x01000100
-_0807FC28: .4byte gBattleOutcome
-_0807FC2C: .4byte c2_whiteout
-_0807FC30:
- ldrb r0, [r4]
- cmp r0, 0x1
- bne _0807FC40
- ldr r0, _0807FC3C @ =gSpecialVar_Result
- strh r1, [r0]
- b _0807FC46
- .align 2, 0
-_0807FC3C: .4byte gSpecialVar_Result
-_0807FC40:
- ldr r1, _0807FC54 @ =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
-_0807FC46:
- ldr r0, _0807FC58 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl SetMainCallback2
-_0807FC4C:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0807FC54: .4byte gSpecialVar_Result
-_0807FC58: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
- thumb_func_end CB2_EndMarowakBattle
-
- thumb_func_start BattleSetup_GetTerrainId
-BattleSetup_GetTerrainId: @ 807FC5C
- push {r4,r5,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsTallGrass_2
- lsls r0, 24
- cmp r0, 0
- beq _0807FC92
- movs r0, 0
- b _0807FD88
-_0807FC92:
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_3
- lsls r0, 24
- cmp r0, 0
- beq _0807FCA2
- movs r0, 0x1
- b _0807FD88
-_0807FCA2:
- adds r0, r4, 0
- bl MetatileBehavior_IsMB21OrWaterfallBottom
- lsls r0, 24
- cmp r0, 0
- beq _0807FCB2
- movs r0, 0x2
- b _0807FD88
-_0807FCB2:
- ldr r0, _0807FCC8 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- subs r0, 0x1
- cmp r0, 0x8
- bhi _0807FD2C
- lsls r0, 2
- ldr r1, _0807FCCC @ =_0807FCD0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807FCC8: .4byte gMapHeader
-_0807FCCC: .4byte _0807FCD0
- .align 2, 0
-_0807FCD0:
- .4byte _0807FD2C
- .4byte _0807FD2C
- .4byte _0807FD2C
- .4byte _0807FCF4
- .4byte _0807FD18
- .4byte _0807FD1C
- .4byte _0807FD2C
- .4byte _0807FD04
- .4byte _0807FD04
-_0807FCF4:
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsMB0B
- lsls r0, 24
- cmp r0, 0
- beq _0807FD08
-_0807FD04:
- movs r0, 0x8
- b _0807FD88
-_0807FD08:
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfable
- lsls r0, 24
- cmp r0, 0
- bne _0807FD70
- movs r0, 0x7
- b _0807FD88
-_0807FD18:
- movs r0, 0x3
- b _0807FD88
-_0807FD1C:
- lsls r0, r5, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSurfable
- lsls r0, 24
- cmp r0, 0
- bne _0807FD82
- b _0807FD86
-_0807FD2C:
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsDeepSemiDeepOrSplashingWater
- lsls r0, 24
- cmp r0, 0
- bne _0807FD82
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfable
- lsls r0, 24
- cmp r0, 0
- bne _0807FD70
- adds r0, r4, 0
- bl MetatileBehavior_IsMB0C
- lsls r0, 24
- cmp r0, 0
- beq _0807FD58
- movs r0, 0x6
- b _0807FD88
-_0807FD58:
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _0807FD86
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_7
- lsls r0, 24
- cmp r0, 0
- beq _0807FD74
-_0807FD70:
- movs r0, 0x5
- b _0807FD88
-_0807FD74:
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_6
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807FD86
-_0807FD82:
- movs r0, 0x4
- b _0807FD88
-_0807FD86:
- movs r0, 0x9
-_0807FD88:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end BattleSetup_GetTerrainId
-
- thumb_func_start GetBattleTransitionTypeByMap
-GetBattleTransitionTypeByMap: @ 807FD90
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r4, r0, 16
- bl Overworld_GetFlashLevel
- lsls r0, 24
- cmp r0, 0
- beq _0807FDC0
- movs r0, 0x2
- b _0807FDEA
-_0807FDC0:
- lsls r0, r4, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSurfable
- lsls r0, 24
- cmp r0, 0
- bne _0807FDE8
- ldr r0, _0807FDE0 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x4
- beq _0807FDE4
- cmp r0, 0x5
- beq _0807FDE8
- movs r0, 0
- b _0807FDEA
- .align 2, 0
-_0807FDE0: .4byte gMapHeader
-_0807FDE4:
- movs r0, 0x1
- b _0807FDEA
-_0807FDE8:
- movs r0, 0x3
-_0807FDEA:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetBattleTransitionTypeByMap
-
- thumb_func_start GetSumOfPlayerPartyLevel
-GetSumOfPlayerPartyLevel: @ 807FDF4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r7, 0
- movs r6, 0
-_0807FDFE:
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- ldr r0, _0807FE50 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- adds r1, r0, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _0807FE42
- cmp r1, 0
- beq _0807FE42
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0807FE42
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- adds r0, r7, r0
- lsls r0, 24
- lsrs r7, r0, 24
- subs r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _0807FE48
-_0807FE42:
- adds r6, 0x1
- cmp r6, 0x5
- ble _0807FDFE
-_0807FE48:
- adds r0, r7, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0807FE50: .4byte gPlayerParty
- thumb_func_end GetSumOfPlayerPartyLevel
-
- thumb_func_start GetSumOfEnemyPartyLevel
-GetSumOfEnemyPartyLevel: @ 807FE54
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r5, _0807FE88 @ =gTrainers
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r5
- adds r0, r2, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, r4
- bcs _0807FE74
- adds r4, r0, 0
-_0807FE74:
- movs r3, 0
- ldrb r0, [r2]
- cmp r0, 0x1
- beq _0807FEBC
- cmp r0, 0x1
- bgt _0807FE8C
- cmp r0, 0
- beq _0807FE96
- b _0807FF2C
- .align 2, 0
-_0807FE88: .4byte gTrainers
-_0807FE8C:
- cmp r0, 0x2
- beq _0807FEE2
- cmp r0, 0x3
- beq _0807FF08
- b _0807FF2C
-_0807FE96:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _0807FF2C
-_0807FEA4:
- lsls r0, r2, 3
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _0807FEA4
- b _0807FF2C
-_0807FEBC:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _0807FF2C
-_0807FECA:
- lsls r0, r2, 4
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _0807FECA
- b _0807FF2C
-_0807FEE2:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _0807FF2C
-_0807FEF0:
- lsls r0, r2, 3
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _0807FEF0
- b _0807FF2C
-_0807FF08:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _0807FF2C
-_0807FF16:
- lsls r0, r2, 4
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _0807FF16
-_0807FF2C:
- adds r0, r3, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetSumOfEnemyPartyLevel
-
- thumb_func_start GetWildBattleTransition
-GetWildBattleTransition: @ 807FF34
- push {r4,r5,lr}
- bl GetBattleTransitionTypeByMap
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0807FF64 @ =gEnemyParty
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl GetSumOfPlayerPartyLevel
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _0807FF6C
- ldr r0, _0807FF68 @ =sBattleTransitionTable_Wild
- lsls r1, r5, 1
- adds r0, 0x1
- b _0807FF70
- .align 2, 0
-_0807FF64: .4byte gEnemyParty
-_0807FF68: .4byte sBattleTransitionTable_Wild
-_0807FF6C:
- ldr r0, _0807FF7C @ =sBattleTransitionTable_Wild
- lsls r1, r5, 1
-_0807FF70:
- adds r1, r0
- ldrb r0, [r1]
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0807FF7C: .4byte sBattleTransitionTable_Wild
- thumb_func_end GetWildBattleTransition
-
- thumb_func_start GetTrainerBattleTransition
-GetTrainerBattleTransition: @ 807FF80
- push {r4-r6,lr}
- ldr r4, _0807FFB4 @ =gTrainerBattleOpponent_A
- ldrh r1, [r4]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _0808000C
- ldr r1, _0807FFB8 @ =gTrainers
- ldrh r2, [r4]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x1]
- cmp r1, 0x57
- bne _08080008
- adds r1, r2, 0
- movs r0, 0xCD
- lsls r0, 1
- cmp r1, r0
- beq _0807FFB0
- ldr r0, _0807FFBC @ =0x000002df
- cmp r1, r0
- bne _0807FFC0
-_0807FFB0:
- movs r0, 0xC
- b _08080054
- .align 2, 0
-_0807FFB4: .4byte gTrainerBattleOpponent_A
-_0807FFB8: .4byte gTrainers
-_0807FFBC: .4byte 0x000002df
-_0807FFC0:
- ldr r0, _0807FFD4 @ =0x0000019b
- cmp r1, r0
- beq _0807FFCE
- movs r0, 0xB8
- lsls r0, 2
- cmp r1, r0
- bne _0807FFD8
-_0807FFCE:
- movs r0, 0xD
- b _08080054
- .align 2, 0
-_0807FFD4: .4byte 0x0000019b
-_0807FFD8:
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _0807FFE6
- ldr r0, _0807FFEC @ =0x000002e1
- cmp r1, r0
- bne _0807FFF0
-_0807FFE6:
- movs r0, 0xE
- b _08080054
- .align 2, 0
-_0807FFEC: .4byte 0x000002e1
-_0807FFF0:
- ldr r0, _08080000 @ =0x0000019d
- cmp r1, r0
- beq _0807FFFC
- ldr r0, _08080004 @ =0x000002e2
- cmp r1, r0
- bne _0808000C
-_0807FFFC:
- movs r0, 0xF
- b _08080054
- .align 2, 0
-_08080000: .4byte 0x0000019d
-_08080004: .4byte 0x000002e2
-_08080008:
- cmp r1, 0x5A
- bne _08080010
-_0808000C:
- movs r0, 0x10
- b _08080054
-_08080010:
- ldrb r0, [r0, 0x18]
- movs r5, 0x1
- cmp r0, 0x1
- bne _0808001A
- movs r5, 0x2
-_0808001A:
- bl GetBattleTransitionTypeByMap
- lsls r0, 24
- lsrs r6, r0, 24
- ldrh r0, [r4]
- adds r1, r5, 0
- bl GetSumOfEnemyPartyLevel
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl GetSumOfPlayerPartyLevel
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _0808004C
- ldr r0, _08080048 @ =sBattleTransitionTable_Trainer
- lsls r1, r6, 1
- adds r0, 0x1
- b _08080050
- .align 2, 0
-_08080048: .4byte sBattleTransitionTable_Trainer
-_0808004C:
- ldr r0, _0808005C @ =sBattleTransitionTable_Trainer
- lsls r1, r6, 1
-_08080050:
- adds r1, r0
- ldrb r0, [r1]
-_08080054:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0808005C: .4byte sBattleTransitionTable_Trainer
- thumb_func_end GetTrainerBattleTransition
-
- thumb_func_start sub_8080060
-sub_8080060: @ 8080060
- push {r4,lr}
- ldr r0, _08080084 @ =gEnemyParty
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl GetSumOfPlayerPartyLevel
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _08080088
- movs r0, 0x3
- b _0808008A
- .align 2, 0
-_08080084: .4byte gEnemyParty
-_08080088:
- movs r0, 0x4
-_0808008A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8080060
-
- thumb_func_start TrainerBattleLoadArg32
-TrainerBattleLoadArg32: @ 8080090
- adds r2, r0, 0
- ldrb r0, [r2]
- ldrb r1, [r2, 0x1]
- lsls r1, 8
- orrs r0, r1
- ldrb r1, [r2, 0x2]
- lsls r1, 16
- orrs r0, r1
- ldrb r1, [r2, 0x3]
- lsls r1, 24
- orrs r0, r1
- bx lr
- thumb_func_end TrainerBattleLoadArg32
-
- thumb_func_start TrainerBattleLoadArg16
-TrainerBattleLoadArg16: @ 80800A8
- adds r1, r0, 0
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- lsls r1, 8
- orrs r0, r1
- bx lr
- thumb_func_end TrainerBattleLoadArg16
-
- thumb_func_start TrainerBattleLoadArg8
-TrainerBattleLoadArg8: @ 80800B4
- ldrb r0, [r0]
- bx lr
- thumb_func_end TrainerBattleLoadArg8
-
- thumb_func_start GetTrainerAFlag
-GetTrainerAFlag: @ 80800B8
- ldr r1, _080800CC @ =gTrainerBattleOpponent_A
- movs r2, 0xA0
- lsls r2, 3
- adds r0, r2, 0
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .align 2, 0
-_080800CC: .4byte gTrainerBattleOpponent_A
- thumb_func_end GetTrainerAFlag
-
- thumb_func_start IsPlayerDefeated
-IsPlayerDefeated: @ 80800D0
- push {lr}
- subs r0, 0x1
- cmp r0, 0x6
- bhi _08080108
- lsls r0, 2
- ldr r1, _080800E4 @ =_080800E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080800E4: .4byte _080800E8
- .align 2, 0
-_080800E8:
- .4byte _08080108
- .4byte _08080104
- .4byte _08080104
- .4byte _08080108
- .4byte _08080108
- .4byte _08080108
- .4byte _08080108
-_08080104:
- movs r0, 0x1
- b _0808010A
-_08080108:
- movs r0, 0
-_0808010A:
- pop {r1}
- bx r1
- thumb_func_end IsPlayerDefeated
-
- thumb_func_start InitTrainerBattleVariables
-InitTrainerBattleVariables: @ 8080110
- ldr r0, _08080140 @ =sTrainerBattleMode
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08080144 @ =gTrainerBattleOpponent_A
- strh r1, [r0]
- ldr r0, _08080148 @ =sTrainerEventObjectLocalId
- strh r1, [r0]
- ldr r0, _0808014C @ =sTrainerAIntroSpeech
- movs r1, 0
- str r1, [r0]
- ldr r0, _08080150 @ =sTrainerADefeatSpeech
- str r1, [r0]
- ldr r0, _08080154 @ =sTrainerBDefeatSpeech
- str r1, [r0]
- ldr r0, _08080158 @ =sTrainerCannotBattleSpeech
- str r1, [r0]
- ldr r0, _0808015C @ =sTrainerBattleEndScript
- str r1, [r0]
- ldr r0, _08080160 @ =sTrainerABattleScriptRetAddr
- str r1, [r0]
- ldr r0, _08080164 @ =gUnknown_20386CC
- strh r1, [r0]
- bx lr
- .align 2, 0
-_08080140: .4byte sTrainerBattleMode
-_08080144: .4byte gTrainerBattleOpponent_A
-_08080148: .4byte sTrainerEventObjectLocalId
-_0808014C: .4byte sTrainerAIntroSpeech
-_08080150: .4byte sTrainerADefeatSpeech
-_08080154: .4byte sTrainerBDefeatSpeech
-_08080158: .4byte sTrainerCannotBattleSpeech
-_0808015C: .4byte sTrainerBattleEndScript
-_08080160: .4byte sTrainerABattleScriptRetAddr
-_08080164: .4byte gUnknown_20386CC
- thumb_func_end InitTrainerBattleVariables
-
- thumb_func_start TrainerBattleLoadArgs
-TrainerBattleLoadArgs: @ 8080168
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
-_0808016E:
- ldrb r0, [r4, 0x4]
- cmp r0, 0x6
- bhi _080801E0
- lsls r0, 2
- ldr r1, _08080180 @ =_08080184
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08080180: .4byte _08080184
- .align 2, 0
-_08080184:
- .4byte _080801A0
- .4byte _080801AE
- .4byte _080801BC
- .4byte _080801CA
- .4byte _080801D2
- .4byte _080801DA
- .4byte _080801E4
-_080801A0:
- adds r0, r5, 0
- bl TrainerBattleLoadArg8
- ldr r1, [r4]
- strb r0, [r1]
- adds r5, 0x1
- b _080801E0
-_080801AE:
- adds r0, r5, 0
- bl TrainerBattleLoadArg16
- ldr r1, [r4]
- strh r0, [r1]
- adds r5, 0x2
- b _080801E0
-_080801BC:
- adds r0, r5, 0
- bl TrainerBattleLoadArg32
- ldr r1, [r4]
- str r0, [r1]
- adds r5, 0x4
- b _080801E0
-_080801CA:
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1]
- b _080801E0
-_080801D2:
- ldr r1, [r4]
- movs r0, 0
- strh r0, [r1]
- b _080801E0
-_080801DA:
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1]
-_080801E0:
- adds r4, 0x8
- b _0808016E
-_080801E4:
- ldr r0, [r4]
- str r5, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end TrainerBattleLoadArgs
-
- thumb_func_start SetMapVarsToTrainer
-SetMapVarsToTrainer: @ 80801F0
- push {lr}
- ldr r0, _08080218 @ =sTrainerEventObjectLocalId
- ldrh r1, [r0]
- cmp r1, 0
- beq _08080212
- ldr r0, _0808021C @ =gSpecialVar_LastTalked
- strh r1, [r0]
- lsls r0, r1, 24
- lsrs r0, 24
- ldr r1, _08080220 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl GetFieldObjectIdByLocalIdAndMap
- ldr r1, _08080224 @ =gSelectedEventObject
- strb r0, [r1]
-_08080212:
- pop {r0}
- bx r0
- .align 2, 0
-_08080218: .4byte sTrainerEventObjectLocalId
-_0808021C: .4byte gSpecialVar_LastTalked
-_08080220: .4byte gSaveBlock1Ptr
-_08080224: .4byte gSelectedEventObject
- thumb_func_end SetMapVarsToTrainer
-
- thumb_func_start BattleSetup_ConfigureTrainerBattle
-BattleSetup_ConfigureTrainerBattle: @ 8080228
- push {r4,r5,lr}
- adds r5, r0, 0
- bl InitTrainerBattleVariables
- ldr r4, _08080250 @ =sTrainerBattleMode
- adds r0, r5, 0
- bl TrainerBattleLoadArg8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- ldrh r0, [r4]
- subs r0, 0x1
- cmp r0, 0x8
- bhi _08080318
- lsls r0, 2
- ldr r1, _08080254 @ =_08080258
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08080250: .4byte sTrainerBattleMode
-_08080254: .4byte _08080258
- .align 2, 0
-_08080258:
- .4byte _0808028C
- .4byte _0808028C
- .4byte _0808027C
- .4byte _08080284
- .4byte _080802D8
- .4byte _08080294
- .4byte _080802AC
- .4byte _08080294
- .4byte _08080304
-_0808027C:
- ldr r0, _08080280 @ =sOrdinaryNoIntroBattleParams
- b _08080306
- .align 2, 0
-_08080280: .4byte sOrdinaryNoIntroBattleParams
-_08080284:
- ldr r0, _08080288 @ =sDoubleBattleParams
- b _08080296
- .align 2, 0
-_08080288: .4byte sDoubleBattleParams
-_0808028C:
- ldr r0, _08080290 @ =sContinueScriptBattleParams
- b _0808031A
- .align 2, 0
-_08080290: .4byte sContinueScriptBattleParams
-_08080294:
- ldr r0, _080802A4 @ =sContinueScriptDoubleBattleParams
-_08080296:
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl SetMapVarsToTrainer
- ldr r0, _080802A8 @ =EventScript_TryDoDoubleTrainerBattle
- b _08080326
- .align 2, 0
-_080802A4: .4byte sContinueScriptDoubleBattleParams
-_080802A8: .4byte EventScript_TryDoDoubleTrainerBattle
-_080802AC:
- bl sub_811231C
- ldr r0, _080802CC @ =sDoubleBattleParams
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl SetMapVarsToTrainer
- ldr r4, _080802D0 @ =gTrainerBattleOpponent_A
- ldrh r0, [r4]
- bl sub_810CE64
- strh r0, [r4]
- ldr r0, _080802D4 @ =EventScript_TryDoDoubleRematchBattle
- b _08080326
- .align 2, 0
-_080802CC: .4byte sDoubleBattleParams
-_080802D0: .4byte gTrainerBattleOpponent_A
-_080802D4: .4byte EventScript_TryDoDoubleRematchBattle
-_080802D8:
- bl sub_811231C
- ldr r0, _080802F8 @ =sOrdinaryBattleParams
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl SetMapVarsToTrainer
- ldr r4, _080802FC @ =gTrainerBattleOpponent_A
- ldrh r0, [r4]
- bl sub_810CE64
- strh r0, [r4]
- ldr r0, _08080300 @ =EventScript_TryDoRematchBattle
- b _08080326
- .align 2, 0
-_080802F8: .4byte sOrdinaryBattleParams
-_080802FC: .4byte gTrainerBattleOpponent_A
-_08080300: .4byte EventScript_TryDoRematchBattle
-_08080304:
- ldr r0, _08080310 @ =gUnknown_83C6A20
-_08080306:
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- ldr r0, _08080314 @ =EventScript_DoTrainerBattle
- b _08080326
- .align 2, 0
-_08080310: .4byte gUnknown_83C6A20
-_08080314: .4byte EventScript_DoTrainerBattle
-_08080318:
- ldr r0, _0808032C @ =sOrdinaryBattleParams
-_0808031A:
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl SetMapVarsToTrainer
- ldr r0, _08080330 @ =EventScript_TryDoNormalTrainerBattle
-_08080326:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0808032C: .4byte sOrdinaryBattleParams
-_08080330: .4byte EventScript_TryDoNormalTrainerBattle
- thumb_func_end BattleSetup_ConfigureTrainerBattle
-
- thumb_func_start ConfigureAndSetUpOneTrainerBattle
-ConfigureAndSetUpOneTrainerBattle: @ 8080334
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08080368 @ =gSelectedEventObject
- strb r0, [r2]
- ldr r4, _0808036C @ =gSpecialVar_LastTalked
- ldr r3, _08080370 @ =gMapObjects
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrb r0, [r2, 0x8]
- strh r0, [r4]
- adds r1, 0x1
- adds r0, r1, 0
- bl BattleSetup_ConfigureTrainerBattle
- ldr r0, _08080374 @ =gUnknown_81A4EB4
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08080368: .4byte gSelectedEventObject
-_0808036C: .4byte gSpecialVar_LastTalked
-_08080370: .4byte gMapObjects
-_08080374: .4byte gUnknown_81A4EB4
- thumb_func_end ConfigureAndSetUpOneTrainerBattle
-
- thumb_func_start GetTrainerFlagFromScriptPointer
-GetTrainerFlagFromScriptPointer: @ 8080378
- push {lr}
- adds r0, 0x2
- bl TrainerBattleLoadArg16
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetTrainerFlagFromScriptPointer
-
- thumb_func_start SetUpTrainerMovement
-SetUpTrainerMovement: @ 8080398
- push {r4,lr}
- ldr r0, _080803C4 @ =gSelectedEventObject
- ldrb r0, [r0]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _080803C8 @ =gMapObjects
- adds r4, r0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetTrainerFacingDirectionMovementType
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl SetTrainerMovementType
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080803C4: .4byte gSelectedEventObject
-_080803C8: .4byte gMapObjects
- thumb_func_end SetUpTrainerMovement
-
- thumb_func_start GetTrainerBattleMode
-GetTrainerBattleMode: @ 80803CC
- ldr r0, _080803D4 @ =sTrainerBattleMode
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080803D4: .4byte sTrainerBattleMode
- thumb_func_end GetTrainerBattleMode
-
- thumb_func_start sub_80803D8
-sub_80803D8: @ 80803D8
- ldr r0, _080803E0 @ =gUnknown_20386CC
- ldrh r0, [r0]
- bx lr
- .align 2, 0
-_080803E0: .4byte gUnknown_20386CC
- thumb_func_end sub_80803D8
-
- thumb_func_start ScrSpecial_HasTrainerBeenFought
-ScrSpecial_HasTrainerBeenFought: @ 80803E4
- push {lr}
- bl GetTrainerAFlag
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end ScrSpecial_HasTrainerBeenFought
-
- thumb_func_start SetBattledTrainerFlag
-SetBattledTrainerFlag: @ 80803FC
- push {lr}
- bl GetTrainerAFlag
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end SetBattledTrainerFlag
-
- thumb_func_start SetBattledTrainerFlag2
-SetBattledTrainerFlag2: @ 8080410
- push {lr}
- bl GetTrainerAFlag
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end SetBattledTrainerFlag2
-
- thumb_func_start HasTrainerAlreadyBeenFought
-HasTrainerAlreadyBeenFought: @ 8080424
- push {lr}
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end HasTrainerAlreadyBeenFought
-
- thumb_func_start SetTrainerFlag
-SetTrainerFlag: @ 808043C
- push {lr}
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end SetTrainerFlag
-
- thumb_func_start ClearTrainerFlag
-ClearTrainerFlag: @ 8080450
- push {lr}
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagClear
- pop {r0}
- bx r0
- thumb_func_end ClearTrainerFlag
-
- thumb_func_start BattleSetup_StartTrainerBattle
-BattleSetup_StartTrainerBattle: @ 8080464
- push {r4,lr}
- ldr r4, _080804A0 @ =gBattleTypeFlags
- movs r0, 0x8
- str r0, [r4]
- bl GetTrainerBattleMode
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x9
- bne _0808048C
- bl sub_80803D8
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0
- beq _0808048C
- ldr r0, [r4]
- movs r1, 0x10
- orrs r0, r1
- str r0, [r4]
-_0808048C:
- ldr r1, _080804A4 @ =gMain
- ldr r0, _080804A8 @ =CB2_EndTrainerBattle
- str r0, [r1, 0x8]
- bl sub_807F868
- bl ScriptContext1_Stop
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080804A0: .4byte gBattleTypeFlags
-_080804A4: .4byte gMain
-_080804A8: .4byte CB2_EndTrainerBattle
- thumb_func_end BattleSetup_StartTrainerBattle
-
- thumb_func_start CB2_EndTrainerBattle
-CB2_EndTrainerBattle: @ 80804AC
- push {lr}
- ldr r0, _080804D8 @ =sTrainerBattleMode
- ldrh r0, [r0]
- cmp r0, 0x9
- bne _08080508
- ldr r0, _080804DC @ =gBattleOutcome
- ldrb r0, [r0]
- bl IsPlayerDefeated
- adds r1, r0, 0
- cmp r1, 0x1
- bne _080804E8
- ldr r0, _080804E0 @ =gSpecialVar_Result
- strh r1, [r0]
- ldr r0, _080804E4 @ =gUnknown_20386CC
- ldrh r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08080530
- bl sp000_heal_pokemon
- b _080804EE
- .align 2, 0
-_080804D8: .4byte sTrainerBattleMode
-_080804DC: .4byte gBattleOutcome
-_080804E0: .4byte gSpecialVar_Result
-_080804E4: .4byte gUnknown_20386CC
-_080804E8:
- ldr r0, _08080500 @ =gSpecialVar_Result
- movs r1, 0
- strh r1, [r0]
-_080804EE:
- ldr r0, _08080504 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl SetMainCallback2
- bl SetBattledTrainerFlag
- bl sub_81139BC
- b _0808054E
- .align 2, 0
-_08080500: .4byte gSpecialVar_Result
-_08080504: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
-_08080508:
- ldr r0, _0808051C @ =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _08080524
- ldr r0, _08080520 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl SetMainCallback2
- b _0808054E
- .align 2, 0
-_0808051C: .4byte gTrainerBattleOpponent_A
-_08080520: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
-_08080524:
- ldr r0, _08080538 @ =gBattleOutcome
- ldrb r0, [r0]
- bl IsPlayerDefeated
- cmp r0, 0x1
- bne _08080540
-_08080530:
- ldr r0, _0808053C @ =c2_whiteout
- bl SetMainCallback2
- b _0808054E
- .align 2, 0
-_08080538: .4byte gBattleOutcome
-_0808053C: .4byte c2_whiteout
-_08080540:
- ldr r0, _08080554 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl SetMainCallback2
- bl SetBattledTrainerFlag
- bl sub_81139BC
-_0808054E:
- pop {r0}
- bx r0
- .align 2, 0
-_08080554: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
- thumb_func_end CB2_EndTrainerBattle
-
- thumb_func_start CB2_EndRematchBattle
-CB2_EndRematchBattle: @ 8080558
- push {lr}
- ldr r0, _08080570 @ =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _08080578
- ldr r0, _08080574 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl SetMainCallback2
- b _080805A6
- .align 2, 0
-_08080570: .4byte gTrainerBattleOpponent_A
-_08080574: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
-_08080578:
- ldr r0, _0808058C @ =gBattleOutcome
- ldrb r0, [r0]
- bl IsPlayerDefeated
- cmp r0, 0x1
- bne _08080594
- ldr r0, _08080590 @ =c2_whiteout
- bl SetMainCallback2
- b _080805A6
- .align 2, 0
-_0808058C: .4byte gBattleOutcome
-_08080590: .4byte c2_whiteout
-_08080594:
- ldr r0, _080805AC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl SetMainCallback2
- bl SetBattledTrainerFlag
- bl sub_810CDE8
- bl sub_81138F8
-_080805A6:
- pop {r0}
- bx r0
- .align 2, 0
-_080805AC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
- thumb_func_end CB2_EndRematchBattle
-
- thumb_func_start BattleSetup_StartRematchBattle
-BattleSetup_StartRematchBattle: @ 80805B0
- push {lr}
- ldr r1, _080805CC @ =gBattleTypeFlags
- movs r0, 0x8
- str r0, [r1]
- ldr r1, _080805D0 @ =gMain
- ldr r0, _080805D4 @ =CB2_EndRematchBattle
- str r0, [r1, 0x8]
- bl sub_807F868
- bl ScriptContext1_Stop
- pop {r0}
- bx r0
- .align 2, 0
-_080805CC: .4byte gBattleTypeFlags
-_080805D0: .4byte gMain
-_080805D4: .4byte CB2_EndRematchBattle
- thumb_func_end BattleSetup_StartRematchBattle
-
- thumb_func_start ShowTrainerIntroSpeech
-ShowTrainerIntroSpeech: @ 80805D8
- push {lr}
- bl GetIntroSpeechOfApproachingTrainer
- bl ShowFieldMessage
- pop {r0}
- bx r0
- thumb_func_end ShowTrainerIntroSpeech
-
- thumb_func_start BattleSetup_GetScriptAddrAfterBattle
-BattleSetup_GetScriptAddrAfterBattle: @ 80805E8
- push {lr}
- ldr r0, _080805F8 @ =sTrainerBattleEndScript
- ldr r0, [r0]
- cmp r0, 0
- bne _080805F4
- ldr r0, _080805FC @ =gUnknown_81C555B
-_080805F4:
- pop {r1}
- bx r1
- .align 2, 0
-_080805F8: .4byte sTrainerBattleEndScript
-_080805FC: .4byte gUnknown_81C555B
- thumb_func_end BattleSetup_GetScriptAddrAfterBattle
-
- thumb_func_start BattleSetup_GetTrainerPostBattleScript
-BattleSetup_GetTrainerPostBattleScript: @ 8080600
- push {lr}
- ldr r0, _08080610 @ =sTrainerABattleScriptRetAddr
- ldr r0, [r0]
- cmp r0, 0
- bne _0808060C
- ldr r0, _08080614 @ =gUnknown_81C555B
-_0808060C:
- pop {r1}
- bx r1
- .align 2, 0
-_08080610: .4byte sTrainerABattleScriptRetAddr
-_08080614: .4byte gUnknown_81C555B
- thumb_func_end BattleSetup_GetTrainerPostBattleScript
-
- thumb_func_start ShowTrainerCantBattleSpeech
-ShowTrainerCantBattleSpeech: @ 8080618
- push {lr}
- bl GetTrainerCantBattleSpeech
- bl ShowFieldMessage
- pop {r0}
- bx r0
- thumb_func_end ShowTrainerCantBattleSpeech
-
- thumb_func_start SetUpTrainerEncounterMusic
-SetUpTrainerEncounterMusic: @ 8080628
- push {lr}
- ldr r0, _08080660 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080806BE
- ldr r0, _08080664 @ =sTrainerBattleMode
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080806BE
- cmp r0, 0x8
- beq _080806BE
- ldr r0, _08080668 @ =gTrainerBattleOpponent_A
- ldrh r0, [r0]
- bl GetTrainerEncounterMusicId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD
- bhi _080806B8
- lsls r0, 2
- ldr r1, _0808066C @ =_08080670
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08080660: .4byte gUnknown_203ADFA
-_08080664: .4byte sTrainerBattleMode
-_08080668: .4byte gTrainerBattleOpponent_A
-_0808066C: .4byte _08080670
- .align 2, 0
-_08080670:
- .4byte _080806AE
- .4byte _080806A8
- .4byte _080806A8
- .4byte _080806B8
- .4byte _080806AE
- .4byte _080806AE
- .4byte _080806B8
- .4byte _080806B8
- .4byte _080806AE
- .4byte _080806A8
- .4byte _080806AE
- .4byte _080806AE
- .4byte _080806AE
- .4byte _080806AE
-_080806A8:
- movs r0, 0x8E
- lsls r0, 1
- b _080806BA
-_080806AE:
- ldr r0, _080806B4 @ =0x0000011d
- b _080806BA
- .align 2, 0
-_080806B4: .4byte 0x0000011d
-_080806B8:
- ldr r0, _080806C4 @ =0x0000011b
-_080806BA:
- bl PlayNewMapMusic
-_080806BE:
- pop {r0}
- bx r0
- .align 2, 0
-_080806C4: .4byte 0x0000011b
- thumb_func_end SetUpTrainerEncounterMusic
-
- thumb_func_start ReturnEmptyStringIfNull
-ReturnEmptyStringIfNull: @ 80806C8
- push {lr}
- cmp r0, 0
- bne _080806D0
- ldr r0, _080806D4 @ =gString_Dummy
-_080806D0:
- pop {r1}
- bx r1
- .align 2, 0
-_080806D4: .4byte gString_Dummy
- thumb_func_end ReturnEmptyStringIfNull
-
- thumb_func_start GetIntroSpeechOfApproachingTrainer
-GetIntroSpeechOfApproachingTrainer: @ 80806D8
- push {lr}
- ldr r0, _080806E8 @ =sTrainerAIntroSpeech
- ldr r0, [r0]
- bl ReturnEmptyStringIfNull
- pop {r1}
- bx r1
- .align 2, 0
-_080806E8: .4byte sTrainerAIntroSpeech
- thumb_func_end GetIntroSpeechOfApproachingTrainer
-
- thumb_func_start GetTrainerALoseText
-GetTrainerALoseText: @ 80806EC
- push {r4,lr}
- ldr r0, _08080708 @ =sTrainerADefeatSpeech
- ldr r0, [r0]
- ldr r4, _0808070C @ =gStringVar4
- bl ReturnEmptyStringIfNull
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08080708: .4byte sTrainerADefeatSpeech
-_0808070C: .4byte gStringVar4
- thumb_func_end GetTrainerALoseText
-
- thumb_func_start GetTrainerBLoseText
-GetTrainerBLoseText: @ 8080710
- push {r4,lr}
- ldr r4, _0808072C @ =gStringVar4
- ldr r0, _08080730 @ =sTrainerBDefeatSpeech
- ldr r0, [r0]
- bl ReturnEmptyStringIfNull
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0808072C: .4byte gStringVar4
-_08080730: .4byte sTrainerBDefeatSpeech
- thumb_func_end GetTrainerBLoseText
-
- thumb_func_start GetTrainerCantBattleSpeech
-GetTrainerCantBattleSpeech: @ 8080734
- push {lr}
- ldr r0, _08080744 @ =sTrainerCannotBattleSpeech
- ldr r0, [r0]
- bl ReturnEmptyStringIfNull
- pop {r1}
- bx r1
- .align 2, 0
-_08080744: .4byte sTrainerCannotBattleSpeech
- thumb_func_end GetTrainerCantBattleSpeech
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
index be79c3b21..7003a10f2 100644
--- a/asm/field_effect_helpers.s
+++ b/asm/field_effect_helpers.s
@@ -134,13 +134,13 @@ npc_pal_op: @ 80DAE54
cmp r0, 0
bne _080DAEB0
ldrb r0, [r5, 0x1F]
- bl MetatileBehavior_ReturnFalse_7
+ bl MetatileBehavior_GetBridgeType
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080DAE96
ldrb r0, [r5, 0x1E]
- bl MetatileBehavior_ReturnFalse_7
+ bl MetatileBehavior_GetBridgeType
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -1251,7 +1251,7 @@ _080DB6E8:
cmp r0, 0
bne _080DB73C
adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_3
+ bl MetatileBehavior_IsLongGrass
lsls r0, 24
cmp r0, 0
beq _080DB73C
diff --git a/asm/field_ground_effect.s b/asm/field_ground_effect.s
index 56af66346..b5ec3a622 100644
--- a/asm/field_ground_effect.s
+++ b/asm/field_ground_effect.s
@@ -224,7 +224,7 @@ GetGroundEffectFlags_LongGrassOnSpawn: @ 8067CE8
push {r4,lr}
adds r4, r1, 0
ldrb r0, [r0, 0x1E]
- bl MetatileBehavior_ReturnFalse_3
+ bl MetatileBehavior_IsLongGrass
lsls r0, 24
cmp r0, 0
beq _08067D00
@@ -243,7 +243,7 @@ GetGroundEffectFlags_LongGrassOnBeginStep: @ 8067D08
push {r4,lr}
adds r4, r1, 0
ldrb r0, [r0, 0x1E]
- bl MetatileBehavior_ReturnFalse_3
+ bl MetatileBehavior_IsLongGrass
lsls r0, 24
cmp r0, 0
beq _08067D20
@@ -838,12 +838,12 @@ FieldObjectSetSpriteOamTableForLongGrass: @ 8068154
cmp r0, 0
blt _080681A8
ldrb r0, [r5, 0x1E]
- bl MetatileBehavior_ReturnFalse_3
+ bl MetatileBehavior_IsLongGrass
lsls r0, 24
cmp r0, 0
beq _080681A8
ldrb r0, [r5, 0x1F]
- bl MetatileBehavior_ReturnFalse_3
+ bl MetatileBehavior_IsLongGrass
lsls r0, 24
cmp r0, 0
beq _080681A8
diff --git a/asm/overworld.s b/asm/overworld.s
index 6b8b921d9..45b1ad9f9 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -3522,8 +3522,8 @@ _0805669C: .4byte sub_8056534
_080566A0: .4byte sub_80565B4
thumb_func_end CB2_NewGame
- thumb_func_start c2_whiteout
-c2_whiteout: @ 80566A4
+ thumb_func_start CB2_WhiteOut
+CB2_WhiteOut: @ 80566A4
push {lr}
sub sp, 0x4
ldr r1, _08056708 @ =gMain
@@ -3569,7 +3569,7 @@ _0805670C: .4byte gFieldCallback
_08056710: .4byte sub_807F5F0
_08056714: .4byte sub_8056534
_08056718: .4byte sub_80565B4
- thumb_func_end c2_whiteout
+ thumb_func_end CB2_WhiteOut
thumb_func_start CB2_LoadMap
CB2_LoadMap: @ 805671C
diff --git a/asm/post_battle_event_funcs.s b/asm/post_battle_event_funcs.s
index 20455093a..4752d13c1 100644
--- a/asm/post_battle_event_funcs.s
+++ b/asm/post_battle_event_funcs.s
@@ -109,13 +109,13 @@ _080CA3C0: .4byte CB2_DoHallOfFameScreen
thumb_func_start sub_80CA3C4
sub_80CA3C4: @ 80CA3C4
push {lr}
- ldr r0, _080CA3D4 @ =c2_whiteout
+ ldr r0, _080CA3D4 @ =CB2_WhiteOut
bl SetMainCallback2
movs r0, 0
pop {r1}
bx r1
.align 2, 0
-_080CA3D4: .4byte c2_whiteout
+_080CA3D4: .4byte CB2_WhiteOut
thumb_func_end sub_80CA3C4
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s
index a452f63a6..c72bc8a18 100644
--- a/asm/wild_encounter.s
+++ b/asm/wild_encounter.s
@@ -878,7 +878,7 @@ _08082D78:
bl sub_8058F1C
lsls r0, 24
lsrs r0, 24
- bl MetatileBehavior_ReturnFalse_6
+ bl MetatileBehavior_IsBridge
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc
index 4e61859a6..8d33ad951 100644
--- a/data/map_event_scripts.inc
+++ b/data/map_event_scripts.inc
@@ -790,7 +790,7 @@ EventScript_TryDoNormalTrainerBattle:: @ 81A4EC1
faceplayer
applymovement VAR_LAST_TALKED, Movement_1A4FC5
waitmovement 0
- specialvar VAR_RESULT, ScrSpecial_HasTrainerBeenFought
+ specialvar VAR_RESULT, GetTrainerFlag
compare_var_to_value VAR_RESULT, 0
goto_if 5, EventScript_1A4EE8
special SetUpTrainerEncounterMusic
@@ -804,7 +804,7 @@ EventScript_TryDoDoubleTrainerBattle:: @ 81A4EE9
lock
faceplayer
call EventScript_1A4FBA
- specialvar VAR_RESULT, ScrSpecial_HasTrainerBeenFought
+ specialvar VAR_RESULT, GetTrainerFlag
compare_var_to_value VAR_RESULT, 0
goto_if 5, EventScript_1A4F20
special CheckForAlivePartyMons
diff --git a/data/specials.inc b/data/specials.inc
index 3968d01d3..c88cf8340 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -63,7 +63,7 @@ gSpecials:: @ 815FD60
def_special GetTrainerBattleMode
def_special ShowTrainerIntroSpeech
def_special ShowTrainerCantBattleSpeech
- def_special ScrSpecial_HasTrainerBeenFought
+ def_special GetTrainerFlag
def_special ScrSpecial_EndTrainerApproach
def_special SetUpTrainerEncounterMusic
def_special sub_810CD4C
diff --git a/include/battle.h b/include/battle.h
index e0d75fde3..f1f53e57d 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -101,17 +101,6 @@
#define MAX_TRAINER_ITEMS 4
#define MAX_MON_MOVES 4
-#define BATTLE_TERRAIN_GRASS 0
-#define BATTLE_TERRAIN_LONG_GRASS 1
-#define BATTLE_TERRAIN_SAND 2
-#define BATTLE_TERRAIN_UNDERWATER 3
-#define BATTLE_TERRAIN_WATER 4
-#define BATTLE_TERRAIN_POND 5
-#define BATTLE_TERRAIN_ROCK 6
-#define BATTLE_TERRAIN_CAVE 7
-#define BATTLE_TERRAIN_INSIDE 8
-#define BATTLE_TERRAIN_PLAIN 9
-
// array entries for battle communication
#define MULTIUSE_STATE 0x0
#define CURSOR_POSITION 0x1
diff --git a/include/battle_anim.h b/include/battle_anim.h
index aa3b73cea..7260c1dfb 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -240,7 +240,7 @@ void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor);
u32 sub_8075BE8(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7);
u32 sub_8075CB8(u8 a1, u8 a2, u8 a3, u8 a4);
u8 sub_8075D80(u8 a1);
-void sub_8075D9C(struct Sprite *sprite);
+void AnimSparklingParticle(struct Sprite *sprite);
void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite);
void sub_8075E80(struct Sprite *sprite);
void sub_8075F0C(struct Sprite *sprite);
diff --git a/include/battle_setup.h b/include/battle_setup.h
index fefaf9e1b..833845f12 100644
--- a/include/battle_setup.h
+++ b/include/battle_setup.h
@@ -5,17 +5,17 @@
void BattleSetup_StartScriptedWildBattle(void);
u8 BattleSetup_GetTerrainId(void);
-u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
+const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
void BattleSetup_StartBattlePikeWildBattle(void);
void BattleSetup_StartWildBattle(void);
void BattleSetup_StartRoamerBattle(void);
-u8 HasTrainerAlreadyBeenFought(u16);
+u8 HasTrainerBeenFought(u16);
void SetTrainerFlag(u16);
void ClearTrainerFlag(u16);
void BattleSetup_StartTrainerBattle(void);
-u8 *BattleSetup_GetScriptAddrAfterBattle(void);
-u8 *BattleSetup_GetTrainerPostBattleScript(void);
+const u8 *BattleSetup_GetScriptAddrAfterBattle(void);
+const u8 *BattleSetup_GetTrainerPostBattleScript(void);
void SetBattledTrainerFlag(void);
u8 sub_8080060(void);
u8 GetTrainerBattleMode(void);
diff --git a/include/constants/battle.h b/include/constants/battle.h
index a0099d23f..bbea92d05 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -56,13 +56,13 @@
#define BATTLE_TYPE_OLDMAN_TUTORIAL 0x0200
#define BATTLE_TYPE_ROAMER 0x0400
#define BATTLE_TYPE_EREADER_TRAINER 0x0800
-#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
+#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 // TODO: used, rename later
#define BATTLE_TYPE_LEGENDARY 0x2000
-#define BATTLE_TYPE_REGI 0x4000
+#define BATTLE_TYPE_REGI 0x4000 // TODO: used, rename later
#define BATTLE_TYPE_GHOST 0x8000
#define BATTLE_TYPE_POKEDUDE 0x10000
-#define BATTLE_TYPE_PALACE 0x20000
-#define BATTLE_TYPE_ARENA 0x40000
+#define BATTLE_TYPE_PALACE 0x20000 // TODO: used, rename later
+#define BATTLE_TYPE_ARENA 0x40000 // TODO: used rename later
#define BATTLE_TYPE_TRAINER_TOWER 0x80000
#define BATTLE_TYPE_PIKE 0x100000
#define BATTLE_TYPE_PYRAMID 0x200000
diff --git a/include/constants/battle_setup.h b/include/constants/battle_setup.h
new file mode 100644
index 000000000..8f700dc04
--- /dev/null
+++ b/include/constants/battle_setup.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_CONSTANTS_BATTLE_SETUP_H
+#define GUARD_CONSTANTS_BATTLE_SETUP_H
+
+#define TRAINER_BATTLE_SINGLE 0
+#define TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC 1
+#define TRAINER_BATTLE_CONTINUE_SCRIPT 2
+#define TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT 3
+#define TRAINER_BATTLE_DOUBLE 4
+#define TRAINER_BATTLE_REMATCH 5
+#define TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE 6
+#define TRAINER_BATTLE_REMATCH_DOUBLE 7
+#define TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC 8
+#define TRAINER_BATTLE_TUTORIAL 9
+
+#endif // GUARD_CONSTANTS_BATTLE_SETUP_H
diff --git a/include/constants/map_types.h b/include/constants/map_types.h
new file mode 100644
index 000000000..94fb99a57
--- /dev/null
+++ b/include/constants/map_types.h
@@ -0,0 +1,28 @@
+#ifndef GUARD_CONSTANTS_MAP_TYPES_H
+#define GUARD_CONSTANTS_MAP_TYPES_H
+
+#define MAP_TYPE_0 0
+#define MAP_TYPE_TOWN 1
+#define MAP_TYPE_CITY 2
+#define MAP_TYPE_ROUTE 3
+#define MAP_TYPE_UNDERGROUND 4
+#define MAP_TYPE_UNDERWATER 5
+#define MAP_TYPE_OCEAN_ROUTE 6
+#define MAP_TYPE_7 7
+#define MAP_TYPE_INDOOR 8
+#define MAP_TYPE_SECRET_BASE 9
+
+enum
+{
+ MAP_BATTLE_SCENE_NORMAL, // 0
+ MAP_BATTLE_SCENE_GYM, // 1
+ MAP_BATTLE_SCENE_MAGMA, // 2
+ MAP_BATTLE_SCENE_AQUA, // 3
+ MAP_BATTLE_SCENE_SIDNEY, // 4
+ MAP_BATTLE_SCENE_PHOEBE, // 5
+ MAP_BATTLE_SCENE_GLACIA, // 6
+ MAP_BATTLE_SCENE_DRAKE, // 7
+ MAP_BATTLE_SCENE_BATTLE_TOWER, // 8
+};
+
+#endif // GUARD_CONSTANTS_MAP_TYPES_H \ No newline at end of file
diff --git a/include/event_data.h b/include/event_data.h
index 7c62ac92b..d1946d173 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -57,9 +57,6 @@ extern u16 gSpecialVar_MonBoxId;
extern u16 gSpecialVar_MonBoxPos;
extern u16 gSpecialVar_0x8014;
-extern u16 gSpecialVar_Result;
-extern u16 gSpecialVar_0x8004;
-
extern u16 gUnknown_20370DA;
extern u16 gUnknown_20370DC;
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 99b453c85..772b683af 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1155,6 +1155,15 @@ extern const u8 EventScript_SafariOutOfBalls[];
extern const u8 EventScript_ItemfinderDigUpUnderfootItem[];
+// battle_setup
+extern const u8 EventScript_DoTrainerBattle[];
+extern const u8 EventScript_TryDoDoubleTrainerBattle[];
+extern const u8 EventScript_TryDoNormalTrainerBattle[];
+extern const u8 EventScript_TryDoDoubleRematchBattle[];
+extern const u8 EventScript_TryDoRematchBattle[];
+extern const u8 gUnknown_81A4EB4[];
+extern const u8 gUnknown_81C555B[];
+
// new_game
extern const u8 EventScript_ResetAllMapFlags[];
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
index 0a33138b3..ecb622de5 100644
--- a/include/field_control_avatar.h
+++ b/include/field_control_avatar.h
@@ -5,4 +5,7 @@
extern u32 gUnknown_3005078;
+void RestartWildEncounterImmunitySteps(void);
+void ClearPoisonStepCounter(void);
+
#endif //GUARD_FIELD_CONTROL_AVATAR_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index f14140189..2628f5ca5 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -94,6 +94,8 @@ void npc_paltag_set_load(u8 mode);
bool8 FieldObjectIsMovementOverridden(struct MapObject *mapObject);
u8 FieldObjectCheckHeldMovementStatus(struct MapObject *mapObject);
u8 sub_8063F84(u8 direction);
+u8 GetTrainerFacingDirectionMovementType(u8 direction);
+
// Exported data declarations
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 2c408afc9..1d431771b 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -13,8 +13,8 @@ u8 player_get_direction_upper_nybble(void);
u8 player_get_x22(void);
void sub_808D074(u8);
-void sub_805C270();
-void sub_805C780();
+void sub_805C270(void);
+void sub_805C780(void);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
u8 sub_805C808(u8);
void SetPlayerAvatarStateMask(u8 mask);
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index bf142d265..9c132db61 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -13,35 +13,6 @@ enum
CONNECTION_EMERGE
};
-// map types
-enum
-{
- MAP_TYPE_0,
- MAP_TYPE_TOWN,
- MAP_TYPE_CITY,
- MAP_TYPE_ROUTE,
- MAP_TYPE_UNDERGROUND,
- MAP_TYPE_UNDERWATER,
- MAP_TYPE_6,
- MAP_TYPE_7,
- MAP_TYPE_INDOOR,
- MAP_TYPE_SECRET_BASE
-};
-
-// map battle scenes
-enum
-{
- MAP_BATTLE_SCENE_NORMAL, // 0
- MAP_BATTLE_SCENE_GYM, // 1
- MAP_BATTLE_SCENE_MAGMA, // 2
- MAP_BATTLE_SCENE_AQUA, // 3
- MAP_BATTLE_SCENE_SIDNEY, // 4
- MAP_BATTLE_SCENE_PHOEBE, // 5
- MAP_BATTLE_SCENE_GLACIA, // 6
- MAP_BATTLE_SCENE_DRAKE, // 7
- MAP_BATTLE_SCENE_BATTLE_TOWER, // 8
-};
-
typedef void (*TilesetCB)(void);
struct Tileset
@@ -241,7 +212,7 @@ struct MapObject
/*0x0C*/ struct Coords16 coords1;
/*0x10*/ struct Coords16 coords2;
/*0x14*/ struct Coords16 coords3;
- /*0x18*/ u8 mapobj_unk_18:4; //current direction?
+ /*0x18*/ u8 facingDirection:4; //current direction?
/*0x18*/ u8 placeholder18:4;
/*0x19*/ union MapObjectRange range;
/*0x1A*/ u8 mapobj_unk_1A;
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index 62bcfdd38..df03001bf 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -10,7 +10,7 @@ bool8 MetatileBehavior_IsJumpNorth(u8 metatileBehavior);
bool8 MetatileBehavior_IsJumpSouth(u8 metatileBehavior);
bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior);
bool8 MetatileBehavior_IsMB21OrSand(u8 metatileBehavior);
-bool8 MetatileBehavior_IsMB21OrWaterfallBottom(u8 metatileBehavior);
+bool8 MetatileBehavior_IsSandOrDeepSand(u8 metatileBehavior);
bool8 MetatileBehavior_ReturnFalse(u8 metatileBehavior);
bool8 MetatileBehavior_IsReflective(u8 metatileBehavior);
bool8 MetatileBehavior_IsIce(u8 metatileBehavior);
@@ -53,15 +53,15 @@ bool8 MetatileBehavior_IsPC(u8 metatileBehavior);
bool8 MetatileBehavior_IsPondWaterOrPuddle(u8 metatileBehavior);
bool8 MetatileBehavior_IsPuddle(u8 metatileBehavior);
bool8 MetatileBehavior_IsTallGrass_2(u8 metatileBehavior);
-bool8 MetatileBehavior_ReturnFalse_3(u8 metatileBehavior);
+bool8 MetatileBehavior_IsLongGrass(u8 metatileBehavior);
bool8 MetatileBehavior_ReturnFalse_4(u8 metatileBehavior);
bool8 MetatileBehavior_ReturnFalse_5(u8 metatileBehavior);
-bool8 MetatileBehavior_ReturnFalse_6(u8 metatileBehavior);
-bool8 MetatileBehavior_ReturnFalse_7(u8 metatileBehavior);
+bool8 MetatileBehavior_IsBridge(u8 metatileBehavior);
+bool8 MetatileBehavior_GetBridgeType(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedIsMB_01(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedIsTallGrass(u8 metatileBehavior);
-bool8 MetatileBehavior_IsMB0B(u8 metatileBehavior);
-bool8 MetatileBehavior_IsMB0C(u8 metatileBehavior);
+bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior);
+bool8 MetatileBehavior_IsMountain(u8 metatileBehavior);
bool8 MetatileBehavior_IsDeepOrSemiDeepWater(u8 metatileBehavior);
bool8 MetatileBehavior_IsMB19(u8 metatileBehavior);
bool8 MetatileBehavior_IsWaterfallBottom(u8 metatileBehavior);
diff --git a/include/overworld.h b/include/overworld.h
index 38c213707..c2b759df6 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -61,7 +61,7 @@ void sub_8084EBC(s16, s16);
void player_avatar_init_params_reset(void);
void Overworld_SetFlashLevel(s32 a1);
-//u8 Overworld_GetFlashLevel(void);
+u8 Overworld_GetFlashLevel(void);
void sub_8085524(u16);
void Overworld_SetSavedMusic(u16);
@@ -140,5 +140,6 @@ bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd
bool32 sub_8058318(void);
void CB2_ReturnToStartMenu(void);
+void CB2_WhiteOut(void);
#endif //GUARD_OVERWORLD_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 372b2abb6..24328e44e 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -169,35 +169,6 @@ enum
EGG_GROUP_UNDISCOVERED
};
-enum
-{
- NATURE_HARDY,
- NATURE_LONELY,
- NATURE_BRAVE,
- NATURE_ADAMANT,
- NATURE_NAUGHTY,
- NATURE_BOLD,
- NATURE_DOCILE,
- NATURE_RELAXED,
- NATURE_IMPISH,
- NATURE_LAX,
- NATURE_TIMID,
- NATURE_HASTY,
- NATURE_SERIOUS,
- NATURE_JOLLY,
- NATURE_NAIVE,
- NATURE_MODEST,
- NATURE_MILD,
- NATURE_QUIET,
- NATURE_BASHFUL,
- NATURE_RASH,
- NATURE_CALM,
- NATURE_GENTLE,
- NATURE_SASSY,
- NATURE_CAREFUL,
- NATURE_QUIRKY,
-};
-
struct PokemonSubstruct0
{
u16 species;
diff --git a/include/quest_log.h b/include/quest_log.h
index 3a2f31780..ddcbb1bf0 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -43,5 +43,7 @@ u8 sub_8112CAC(void);
void sub_81138F8(void);
void sub_812C224(void);
void sub_812BFDC(void);
+void sub_811231C(void);
+void sub_81139BC(void);
#endif //GUARD_QUEST_LOG_H
diff --git a/include/script_pokemon_util_80A0058.h b/include/script_pokemon_util_80A0058.h
index e1d228589..768e838dd 100644
--- a/include/script_pokemon_util_80A0058.h
+++ b/include/script_pokemon_util_80A0058.h
@@ -4,5 +4,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);
#endif //GUARD_SCRIPT_POKEMON_UTIL_80A0058_H
diff --git a/include/vs_seeker.h b/include/vs_seeker.h
index a9599d324..fdd6839df 100644
--- a/include/vs_seeker.h
+++ b/include/vs_seeker.h
@@ -6,7 +6,7 @@
void Task_VsSeeker_0(u8 taskId);
void sub_810CB90(void);
void sub_810CDE8(void);
-int sub_810CE64(u16 a0);
+int GetRematchTrainerId(u16 a0);
bool8 sub_810CF04(u8 a0);
u8 sub_810CF54();
void sub_810D0D0(void);
diff --git a/ld_script.txt b/ld_script.txt
index d0f391018..063a8dd78 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -119,8 +119,9 @@ SECTIONS {
src/reset_save_heap.o(.text);
asm/field_weather.o(.text);
asm/field_weather_effects.o(.text);
- src/field_fadetransition.o(.text);;
+ src/field_fadetransition.o(.text);
asm/field_screen_effect.o(.text);
+ src/battle_setup.o(.text);
asm/battle_setup.o(.text);
asm/cable_club.o(.text);
asm/trainer_see.o(.text);
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
index e871937e7..7bb62af69 100644
--- a/src/battle_anim_mons.c
+++ b/src/battle_anim_mons.c
@@ -1336,7 +1336,7 @@ static u8 GetBattlerAtPosition_(u8 position)
return GetBattlerAtPosition(position);
}
-void sub_8075D9C(struct Sprite *sprite)
+void AnimSparklingParticle(struct Sprite *sprite)
{
bool8 var;
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 46120085a..aec6eec8e 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -48,6 +48,7 @@
#include "constants/abilities.h"
#include "constants/pokemon.h"
#include "constants/trainers.h"
+#include "constants/map_types.h"
#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
@@ -9451,7 +9452,6 @@ static void atkEF_handleballthrow(void)
catchRate = gBattleStruct->safariCatchFactor * 1275 / 100;
else
catchRate = gBaseStats[gBattleMons[gBattlerTarget].species].catchRate;
-
if (gLastUsedItem > ITEM_SAFARI_BALL)
{
switch (gLastUsedItem)
diff --git a/src/battle_setup.c b/src/battle_setup.c
new file mode 100644
index 000000000..3e06437da
--- /dev/null
+++ b/src/battle_setup.c
@@ -0,0 +1,974 @@
+#include "global.h"
+#include "task.h"
+#include "help_system.h"
+#include "overworld.h"
+#include "item.h"
+#include "sound.h"
+#include "pokemon.h"
+#include "load_save.h"
+#include "safari_zone.h"
+#include "quest_log.h"
+#include "script.h"
+#include "script_pokemon_util_80A0058.h"
+#include "strings.h"
+#include "string_util.h"
+#include "event_data.h"
+#include "unk_8159F40.h"
+#include "map_obj_80688E4.h"
+#include "metatile_behavior.h"
+#include "event_scripts.h"
+#include "fldeff.h"
+#include "fieldmap.h"
+#include "field_control_avatar.h"
+#include "field_player_avatar.h"
+#include "field_screen_effect.h"
+#include "field_message_box.h"
+#include "field_map_obj.h"
+#include "vs_seeker.h"
+#include "battle.h"
+#include "battle_setup.h"
+#include "battle_transition.h"
+#include "constants/battle_setup.h"
+#include "constants/flags.h"
+#include "constants/items.h"
+#include "constants/maps.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "constants/pokemon.h"
+#include "constants/trainers.h"
+#include "constants/trainer_classes.h"
+#include "constants/map_types.h"
+
+enum
+{
+ TRAINER_PARAM_LOAD_VAL_8BIT,
+ TRAINER_PARAM_LOAD_VAL_16BIT,
+ TRAINER_PARAM_LOAD_VAL_32BIT,
+ TRAINER_PARAM_CLEAR_VAL_8BIT,
+ TRAINER_PARAM_CLEAR_VAL_16BIT,
+ TRAINER_PARAM_CLEAR_VAL_32BIT,
+ TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR,
+};
+
+struct TrainerBattleParameter
+{
+ void *varPtr;
+ u8 ptrType;
+};
+
+void BattleSetup_StartSafariBattle(void);
+void BattleSetup_StartGhostBattle(void);
+void BattleSetup_StandardWildBattle(void);
+void CB2_EndWildBattle(void);
+u8 GetWildBattleTransition(void);
+void CB2_EndSafariBattle(void);
+u8 GetTrainerBattleTransition(void);
+void CB2_EndScriptedWildBattle(void);
+void CB2_EndMarowakBattle(void);
+bool32 IsPlayerDefeated(u32 battleOutcome);
+void CB2_EndTrainerBattle(void);
+const u8 *GetIntroSpeechOfApproachingTrainer(void);
+const u8 *GetTrainerCantBattleSpeech(void);
+
+EWRAM_DATA u16 sTrainerBattleMode = 0;
+EWRAM_DATA u16 gTrainerBattleOpponent_A = 0;
+EWRAM_DATA u16 sTrainerEventObjectLocalId = 0;
+EWRAM_DATA u8 *sTrainerAIntroSpeech = NULL;
+EWRAM_DATA u8 *sTrainerADefeatSpeech = NULL;
+EWRAM_DATA u8 *sTrainerBDefeatSpeech = NULL;
+EWRAM_DATA u8 *sTrainerCannotBattleSpeech = NULL;
+EWRAM_DATA u8 *sTrainerBattleEndScript = NULL;
+EWRAM_DATA u8 *sTrainerABattleScriptRetAddr = NULL;
+EWRAM_DATA u16 gUnknown_20386CC = 0;
+
+extern const u8 sBattleTransitionTable_Wild[][2];
+extern const u8 sBattleTransitionTable_Trainer[][2];
+extern const struct TrainerBattleParameter sOrdinaryBattleParams[];
+extern const struct TrainerBattleParameter sOrdinaryNoIntroBattleParams[];
+extern const struct TrainerBattleParameter sDoubleBattleParams[];
+extern const struct TrainerBattleParameter sContinueScriptBattleParams[];
+extern const struct TrainerBattleParameter sContinueScriptDoubleBattleParams[];
+extern const struct TrainerBattleParameter gUnknown_83C6A20[];
+
+#define tState data[0]
+#define tTransition data[1]
+
+void Task_BattleStart(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (tState)
+ {
+ case 0:
+ if (!FldEffPoison_IsActive())
+ {
+ HelpSystem_Disable();
+ BT_StartOnField(tTransition);
+ ++tState;
+ }
+ break;
+ case 1:
+ if (BT_IsDone() == TRUE)
+ {
+ HelpSystem_Enable();
+ CleanupOverworldWindowsAndTilemaps();
+ SetMainCallback2(CB2_InitBattle);
+ RestartWildEncounterImmunitySteps();
+ ClearPoisonStepCounter();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void CreateBattleStartTask(u8 transition, u16 song) // song == 0 means default music for current map
+{
+ u8 taskId = CreateTask(Task_BattleStart, 1);
+
+ gTasks[taskId].tTransition = transition;
+ PlayMapChosenOrBattleBGM(song);
+}
+
+bool8 CheckSilphScopeInPokemonTower(u16 mapGroup, u16 mapNum)
+{
+ if (mapGroup == MAP_GROUP(POKEMON_TOWER_1F)
+ && ((u16)(mapNum - MAP_NUM(POKEMON_TOWER_1F)) <= 6)
+ && !(CheckBagHasItem(ITEM_SILPH_SCOPE, 1)))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void BattleSetup_StartWildBattle(void)
+{
+ if (GetSafariZoneFlag())
+ BattleSetup_StartSafariBattle();
+ else if (CheckSilphScopeInPokemonTower(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum))
+ BattleSetup_StartGhostBattle();
+ else
+ BattleSetup_StandardWildBattle();
+}
+
+void BattleSetup_StandardWildBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeEventObjects();
+ sub_805C780();
+ gMain.savedCallback = CB2_EndWildBattle;
+ gBattleTypeFlags = 0;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+}
+
+void BattleSetup_StartRoamerBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeEventObjects();
+ sub_805C780();
+ gMain.savedCallback = CB2_EndWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_ROAMER;
+ CreateBattleStartTask(GetWildBattleTransition(), MUS_VS_DEN);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+}
+
+void BattleSetup_StartSafariBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeEventObjects();
+ sub_805C780();
+ gMain.savedCallback = CB2_EndSafariBattle;
+ gBattleTypeFlags = BATTLE_TYPE_SAFARI;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+}
+
+void BattleSetup_StartGhostBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeEventObjects();
+ sub_805C780();
+ gMain.savedCallback = CB2_EndWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_GHOST;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ SetMonData(&gEnemyParty[0], MON_DATA_NICKNAME, gUnknown_841D148);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+}
+
+void DoTrainerBattle(void)
+{
+ CreateBattleStartTask(GetTrainerBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_TRAINER_BATTLES);
+}
+
+void BattleSetup_StartOldManTutorialBattle(void)
+{
+ CreateMaleMon(&gEnemyParty[0], SPECIES_WEEDLE, 5);
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_ReturnToFieldContinueScriptPlayMapMusic;
+ gBattleTypeFlags = BATTLE_TYPE_OLDMAN_TUTORIAL;
+ CreateBattleStartTask(B_TRANSITION_SLICED_SCREEN, 0);
+}
+
+void BattleSetup_StartScriptedWildBattle(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_PALACE;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+}
+
+void BattleSetup_StartMarowakBattle(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndMarowakBattle;
+ if (CheckBagHasItem(ITEM_SILPH_SCOPE, 1))
+ {
+ gBattleTypeFlags = BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY;
+ CreateMonWithGenderNatureLetter(gEnemyParty, SPECIES_MAROWAK, 30, 31, MON_FEMALE, NATURE_SERIOUS, 0);
+ }
+ else
+ {
+ gBattleTypeFlags = BATTLE_TYPE_GHOST;
+ }
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ SetMonData(&gEnemyParty[0], MON_DATA_NICKNAME, gUnknown_841D148);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+}
+
+void sub_807F998(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+}
+
+void BattleSetup_StartLegendaryBattle(void)
+{
+ u16 species;
+
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_ARENA;
+ species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES);
+ switch (species)
+ {
+ case SPECIES_MEWTWO:
+ CreateBattleStartTask(B_TRANSITION_BLUR, MUS_VS_MYU2);
+ break;
+ case SPECIES_DEOXYS:
+ CreateBattleStartTask(B_TRANSITION_BLUR, MUS_VS_DEO);
+ break;
+ case SPECIES_MOLTRES:
+ case SPECIES_ARTICUNO:
+ case SPECIES_ZAPDOS:
+ case SPECIES_HO_OH:
+ case SPECIES_LUGIA:
+ CreateBattleStartTask(B_TRANSITION_BLUR, MUS_VS_DEN);
+ break;
+ default:
+ CreateBattleStartTask(B_TRANSITION_BLUR, MUS_BATTLE20);
+ break;
+ }
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+}
+
+void BattleSetup_StartIceCaveBattle(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON;
+ if (gGameVersion == VERSION_FIRE_RED)
+ CreateBattleStartTask(B_TRANSITION_BLACK_DOODLES, MUS_BATTLE20);
+ else // pointless, exactly the same
+ CreateBattleStartTask(B_TRANSITION_BLACK_DOODLES, MUS_BATTLE20);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+}
+
+void sub_807FABC(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI;
+ CreateBattleStartTask(B_TRANSITION_BLUR, MUS_BATTLE20);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+}
+
+// not used
+void sub_807FAF8(void)
+{
+ LoadPlayerParty();
+ CB2_EndWildBattle();
+}
+
+//not used
+void sub_807FB08(void)
+{
+ ScriptContext2_Enable();
+ FreezeEventObjects();
+ sub_805C780();
+ gMain.savedCallback = sub_807FAF8;
+ SavePlayerParty();
+ sub_8159F40();
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+}
+
+void CB2_EndWildBattle(void)
+{
+ CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
+ ResetOamRange(0, 128);
+ if (IsPlayerDefeated(gBattleOutcome) == TRUE)
+ {
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ SetMainCallback2(CB2_ReturnToField);
+ gFieldCallback = sub_807E3EC;
+ }
+}
+
+void CB2_EndScriptedWildBattle(void)
+{
+ CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
+ ResetOamRange(0, 128);
+ if (IsPlayerDefeated(gBattleOutcome) == TRUE)
+ SetMainCallback2(CB2_WhiteOut);
+ else
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+}
+
+void CB2_EndMarowakBattle(void)
+{
+ CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
+ ResetOamRange(0, 128);
+ if (IsPlayerDefeated(gBattleOutcome))
+ {
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ if (gBattleOutcome == B_OUTCOME_WON)
+ gSpecialVar_Result = 0;
+ else
+ gSpecialVar_Result = 1;
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ }
+}
+
+u8 BattleSetup_GetTerrainId(void)
+{
+ u16 tileBehavior;
+ s16 x, y;
+
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (MetatileBehavior_IsTallGrass_2(tileBehavior))
+ return BATTLE_TERRAIN_GRASS;
+ if (MetatileBehavior_IsLongGrass(tileBehavior))
+ return BATTLE_TERRAIN_LONG_GRASS;
+ if (MetatileBehavior_IsSandOrDeepSand(tileBehavior))
+ return BATTLE_TERRAIN_SAND;
+ switch (gMapHeader.mapType)
+ {
+ case MAP_TYPE_TOWN:
+ case MAP_TYPE_CITY:
+ case MAP_TYPE_ROUTE:
+ break;
+ case MAP_TYPE_UNDERGROUND:
+ if (MetatileBehavior_IsIndoorEncounter(tileBehavior))
+ return BATTLE_TERRAIN_BUILDING;
+ if (MetatileBehavior_IsSurfable(tileBehavior))
+ return BATTLE_TERRAIN_POND;
+ return BATTLE_TERRAIN_CAVE;
+ case MAP_TYPE_INDOOR:
+ case MAP_TYPE_SECRET_BASE:
+ return BATTLE_TERRAIN_BUILDING;
+ case MAP_TYPE_UNDERWATER:
+ return BATTLE_TERRAIN_UNDERWATER;
+ case MAP_TYPE_OCEAN_ROUTE:
+ if (MetatileBehavior_IsSurfable(tileBehavior))
+ return BATTLE_TERRAIN_WATER;
+ return BATTLE_TERRAIN_PLAIN;
+ }
+ if (MetatileBehavior_IsDeepSemiDeepOrSplashingWater(tileBehavior))
+ return BATTLE_TERRAIN_WATER;
+ if (MetatileBehavior_IsSurfable(tileBehavior))
+ return BATTLE_TERRAIN_POND;
+ if (MetatileBehavior_IsMountain(tileBehavior))
+ return BATTLE_TERRAIN_MOUNTAIN;
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ {
+ if (MetatileBehavior_GetBridgeType(tileBehavior))
+ return BATTLE_TERRAIN_POND;
+ if (MetatileBehavior_IsBridge(tileBehavior) == TRUE)
+ return BATTLE_TERRAIN_WATER;
+ }
+ return BATTLE_TERRAIN_PLAIN;
+}
+
+u8 GetBattleTransitionTypeByMap(void)
+{
+ u16 tileBehavior;
+ s16 x, y;
+
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (Overworld_GetFlashLevel())
+ return B_TRANSITION_HORIZONTAL_CORRUGATE;
+ if (!MetatileBehavior_IsSurfable(tileBehavior))
+ {
+ switch (gMapHeader.mapType)
+ {
+ case MAP_TYPE_UNDERGROUND:
+ return B_TRANSITION_DISTORTED_WAVE;
+ case MAP_TYPE_UNDERWATER:
+ return B_TRANSITION_BIG_POKEBALL;
+ default:
+ return B_TRANSITION_BLUR;
+ }
+ }
+ return B_TRANSITION_BIG_POKEBALL;
+}
+
+u16 GetSumOfPlayerPartyLevel(u8 numMons)
+{
+ u8 sum = 0;
+ s32 i;
+
+ for (i = 0; i < PARTY_SIZE; ++i)
+ {
+ u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+
+ if (species != SPECIES_EGG && species != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0)
+ {
+ sum += GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ if (--numMons == 0)
+ break;
+ }
+ }
+ return sum;
+}
+
+u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons)
+{
+ u8 i;
+ u8 sum;
+ u32 count = numMons;
+
+ if (gTrainers[opponentId].partySize < count)
+ count = gTrainers[opponentId].partySize;
+ sum = 0;
+ switch (gTrainers[opponentId].partyFlags)
+ {
+ case 0:
+ {
+ const struct TrainerMonNoItemDefaultMoves *party;
+
+ party = gTrainers[opponentId].party.NoItemDefaultMoves;
+ for (i = 0; i < count; ++i)
+ sum += party[i].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_CUSTOM_MOVESET:
+ {
+ const struct TrainerMonNoItemCustomMoves *party;
+
+ party = gTrainers[opponentId].party.NoItemCustomMoves;
+ for (i = 0; i < count; ++i)
+ sum += party[i].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_HELD_ITEM:
+ {
+ const struct TrainerMonItemDefaultMoves *party;
+
+ party = gTrainers[opponentId].party.ItemDefaultMoves;
+ for (i = 0; i < count; ++i)
+ sum += party[i].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM:
+ {
+ const struct TrainerMonItemCustomMoves *party;
+
+ party = gTrainers[opponentId].party.ItemCustomMoves;
+ for (i = 0; i < count; ++i)
+ sum += party[i].lvl;
+ }
+ break;
+ }
+ return sum;
+}
+
+u8 GetWildBattleTransition(void)
+{
+ u8 transitionType = GetBattleTransitionTypeByMap();
+ u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 playerLevel = GetSumOfPlayerPartyLevel(1);
+
+ if (enemyLevel < playerLevel)
+ return sBattleTransitionTable_Wild[transitionType][0];
+ else
+ return sBattleTransitionTable_Wild[transitionType][1];
+}
+
+u8 GetTrainerBattleTransition(void)
+{
+ u8 minPartyCount;
+ u8 transitionType;
+ u8 enemyLevel;
+ u8 playerLevel;
+
+ if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
+ return B_TRANSITION_BLUE;
+ if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_ELITE_FOUR_2)
+ {
+ if (gTrainerBattleOpponent_A == 410 || gTrainerBattleOpponent_A == 735) // TODO: replace these with enums
+ return B_TRANSITION_LORELEI;
+ if (gTrainerBattleOpponent_A == 411 || gTrainerBattleOpponent_A == 736)
+ return B_TRANSITION_BRUNO;
+ if (gTrainerBattleOpponent_A == 412 || gTrainerBattleOpponent_A == 737)
+ return B_TRANSITION_AGATHA;
+ if (gTrainerBattleOpponent_A == 413 || gTrainerBattleOpponent_A == 738)
+ return B_TRANSITION_LANCE;
+ return B_TRANSITION_BLUE;
+ }
+ if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_CHAMPION_2)
+ return B_TRANSITION_BLUE;
+ if (gTrainers[gTrainerBattleOpponent_A].doubleBattle == TRUE)
+ minPartyCount = 2; // double battles always at least have 2 pokemon.
+ else
+ minPartyCount = 1;
+ transitionType = GetBattleTransitionTypeByMap();
+ enemyLevel = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent_A, minPartyCount);
+ playerLevel = GetSumOfPlayerPartyLevel(minPartyCount);
+ if (enemyLevel < playerLevel)
+ return sBattleTransitionTable_Trainer[transitionType][0];
+ else
+ return sBattleTransitionTable_Trainer[transitionType][1];
+}
+
+u8 sub_8080060(void)
+{
+ u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 playerLevel = GetSumOfPlayerPartyLevel(1);
+
+ if (enemyLevel < playerLevel)
+ return 4;
+ else
+ return 3;
+}
+
+u32 TrainerBattleLoadArg32(const u8 *ptr)
+{
+ return T1_READ_32(ptr);
+}
+
+u16 TrainerBattleLoadArg16(const u8 *ptr)
+{
+ return T1_READ_16(ptr);
+}
+
+u8 TrainerBattleLoadArg8(const u8 *ptr)
+{
+ return T1_READ_8(ptr);
+}
+
+u16 GetTrainerAFlag(void)
+{
+ return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_A;
+}
+
+bool32 IsPlayerDefeated(u32 battleOutcome)
+{
+ switch (battleOutcome)
+ {
+ case B_OUTCOME_LOST:
+ case B_OUTCOME_DREW:
+ return TRUE;
+ case B_OUTCOME_WON:
+ case B_OUTCOME_RAN:
+ case B_OUTCOME_PLAYER_TELEPORTED:
+ case B_OUTCOME_MON_FLED:
+ case B_OUTCOME_CAUGHT:
+ return FALSE;
+ default:
+ return FALSE;
+ }
+}
+
+void InitTrainerBattleVariables(void)
+{
+ sTrainerBattleMode = 0;
+ gTrainerBattleOpponent_A = 0;
+ sTrainerEventObjectLocalId = 0;
+ sTrainerAIntroSpeech = NULL;
+ sTrainerADefeatSpeech = NULL;
+ sTrainerBDefeatSpeech = NULL;
+ sTrainerCannotBattleSpeech = NULL;
+ sTrainerBattleEndScript = NULL;
+ sTrainerABattleScriptRetAddr = NULL;
+ gUnknown_20386CC = 0;
+}
+
+static inline void SetU8(void *ptr, u8 value)
+{
+ *(u8 *)(ptr) = value;
+}
+
+static inline void SetU16(void *ptr, u16 value)
+{
+ *(u16 *)(ptr) = value;
+}
+
+static inline void SetU32(void *ptr, u32 value)
+{
+ *(u32 *)(ptr) = value;
+}
+
+static inline void SetPtr(const void *ptr, const void* value)
+{
+ *(const void **)(ptr) = value;
+}
+
+void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8 *data)
+{
+ while (1)
+ {
+ switch (specs->ptrType)
+ {
+ case TRAINER_PARAM_LOAD_VAL_8BIT:
+ SetU8(specs->varPtr, TrainerBattleLoadArg8(data));
+ data += 1;
+ break;
+ case TRAINER_PARAM_LOAD_VAL_16BIT:
+ SetU16(specs->varPtr, TrainerBattleLoadArg16(data));
+ data += 2;
+ break;
+ case TRAINER_PARAM_LOAD_VAL_32BIT:
+ SetU32(specs->varPtr, TrainerBattleLoadArg32(data));
+ data += 4;
+ break;
+ case TRAINER_PARAM_CLEAR_VAL_8BIT:
+ SetU8(specs->varPtr, 0);
+ break;
+ case TRAINER_PARAM_CLEAR_VAL_16BIT:
+ SetU16(specs->varPtr, 0);
+ break;
+ case TRAINER_PARAM_CLEAR_VAL_32BIT:
+ SetU32(specs->varPtr, 0);
+ break;
+ case TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR:
+ SetPtr(specs->varPtr, data);
+ return;
+ }
+ ++specs;
+ }
+}
+
+void SetMapVarsToTrainer(void)
+{
+ if (sTrainerEventObjectLocalId != 0)
+ {
+ gSpecialVar_LastTalked = sTrainerEventObjectLocalId;
+ gSelectedEventObject = GetFieldObjectIdByLocalIdAndMap(sTrainerEventObjectLocalId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ }
+}
+
+const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
+{
+ InitTrainerBattleVariables();
+ sTrainerBattleMode = TrainerBattleLoadArg8(data);
+ switch (sTrainerBattleMode)
+ {
+ case TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT:
+ TrainerBattleLoadArgs(sOrdinaryNoIntroBattleParams, data);
+ return EventScript_DoTrainerBattle;
+ case TRAINER_BATTLE_DOUBLE:
+ TrainerBattleLoadArgs(sDoubleBattleParams, data);
+ SetMapVarsToTrainer();
+ return EventScript_TryDoDoubleTrainerBattle;
+ case TRAINER_BATTLE_CONTINUE_SCRIPT:
+ case TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC:
+ TrainerBattleLoadArgs(sContinueScriptBattleParams, data);
+ SetMapVarsToTrainer();
+ return EventScript_TryDoNormalTrainerBattle;
+ case TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE:
+ case TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC:
+ TrainerBattleLoadArgs(sContinueScriptDoubleBattleParams, data);
+ SetMapVarsToTrainer();
+ return EventScript_TryDoDoubleTrainerBattle;
+ case TRAINER_BATTLE_REMATCH_DOUBLE:
+ sub_811231C();
+ TrainerBattleLoadArgs(sDoubleBattleParams, data);
+ SetMapVarsToTrainer();
+ gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A);
+ return EventScript_TryDoDoubleRematchBattle;
+ case TRAINER_BATTLE_REMATCH:
+ sub_811231C();
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ SetMapVarsToTrainer();
+ gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A);
+ return EventScript_TryDoRematchBattle;
+ case TRAINER_BATTLE_TUTORIAL:
+ TrainerBattleLoadArgs(gUnknown_83C6A20, data);
+ return EventScript_DoTrainerBattle;
+ default:
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ SetMapVarsToTrainer();
+ return EventScript_TryDoNormalTrainerBattle;
+ }
+}
+
+void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerScript)
+{
+ gSelectedEventObject = trainerEventObjId;
+ gSpecialVar_LastTalked = gMapObjects[trainerEventObjId].localId;
+ BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
+ ScriptContext1_SetupScript(gUnknown_81A4EB4);
+ ScriptContext2_Enable();
+}
+
+bool32 GetTrainerFlagFromScriptPointer(const u8 *data)
+{
+ u32 flag = TrainerBattleLoadArg16(data + 2);
+
+ return FlagGet(FLAG_TRAINER_FLAG_START + flag);
+}
+
+void SetUpTrainerMovement(void)
+{
+ struct MapObject *eventObject = &gMapObjects[gSelectedEventObject];
+
+ SetTrainerMovementType(eventObject, GetTrainerFacingDirectionMovementType(eventObject->facingDirection));
+}
+
+u8 GetTrainerBattleMode(void)
+{
+ return sTrainerBattleMode;
+}
+
+u16 sub_80803D8(void)
+{
+ return gUnknown_20386CC;
+}
+
+u16 GetTrainerFlag(void)
+{
+ return FlagGet(GetTrainerAFlag());
+}
+
+void SetBattledTrainerFlag(void)
+{
+ FlagSet(GetTrainerAFlag());
+}
+
+// not used
+void SetBattledTrainerFlag2(void)
+{
+ FlagSet(GetTrainerAFlag());
+}
+
+bool8 HasTrainerBeenFought(u16 trainerId)
+{
+ return FlagGet(FLAG_TRAINER_FLAG_START + trainerId);
+}
+
+void SetTrainerFlag(u16 trainerId)
+{
+ FlagSet(FLAG_TRAINER_FLAG_START + trainerId);
+}
+
+void ClearTrainerFlag(u16 trainerId)
+{
+ FlagClear(FLAG_TRAINER_FLAG_START + trainerId);
+}
+
+void BattleSetup_StartTrainerBattle(void)
+{
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER;
+ if (GetTrainerBattleMode() == TRAINER_BATTLE_TUTORIAL
+ && sub_80803D8() & 3)
+ gBattleTypeFlags |= BATTLE_TYPE_FIRST_BATTLE;
+ gMain.savedCallback = CB2_EndTrainerBattle;
+ DoTrainerBattle();
+ ScriptContext1_Stop();
+}
+
+void CB2_EndTrainerBattle(void)
+{
+ if (sTrainerBattleMode == TRAINER_BATTLE_TUTORIAL)
+ {
+ if (IsPlayerDefeated(gBattleOutcome) == TRUE)
+ {
+ gSpecialVar_Result = 1;
+ if (gUnknown_20386CC & 1)
+ {
+ sp000_heal_pokemon();
+ }
+ else
+ {
+ SetMainCallback2(CB2_WhiteOut);
+ return;
+ }
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ SetBattledTrainerFlag();
+ sub_81139BC();
+ }
+ else
+ {
+ gSpecialVar_Result = 0;
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ SetBattledTrainerFlag();
+ sub_81139BC();
+ }
+
+ }
+ else
+ {
+ if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
+ {
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ }
+ else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
+ {
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ SetBattledTrainerFlag();
+ sub_81139BC();
+ }
+ }
+}
+
+void CB2_EndRematchBattle(void)
+{
+ if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
+ {
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ }
+ else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
+ {
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ SetBattledTrainerFlag();
+ sub_810CDE8();
+ sub_81138F8();
+ }
+}
+
+void BattleSetup_StartRematchBattle(void)
+{
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER;
+ gMain.savedCallback = CB2_EndRematchBattle;
+ DoTrainerBattle();
+ ScriptContext1_Stop();
+}
+
+void ShowTrainerIntroSpeech(void)
+{
+ ShowFieldMessage(GetIntroSpeechOfApproachingTrainer());
+}
+
+const u8 *BattleSetup_GetScriptAddrAfterBattle(void)
+{
+ if (sTrainerBattleEndScript != NULL)
+ return sTrainerBattleEndScript;
+ else
+ return gUnknown_81C555B;
+}
+
+const u8 *BattleSetup_GetTrainerPostBattleScript(void)
+{
+ if (sTrainerABattleScriptRetAddr != NULL)
+ return sTrainerABattleScriptRetAddr;
+ else
+ return gUnknown_81C555B;
+}
+
+void ShowTrainerCantBattleSpeech(void)
+{
+ ShowFieldMessage(GetTrainerCantBattleSpeech());
+}
+
+void SetUpTrainerEncounterMusic(void)
+{
+ u16 music;
+
+ if ((u8)(gUnknown_203ADFA - 2) > 1
+ && sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC
+ && sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC)
+ {
+ switch (GetTrainerEncounterMusicId(gTrainerBattleOpponent_A))
+ {
+ case 1: // TODO: replace these with enums
+ case 2:
+ case 9:
+ music = MUS_SHOUJO;
+ break;
+ case 0:
+ case 4:
+ case 5:
+ case 8:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ music = MUS_SHOUNEN;
+ break;
+ default:
+ music = MUS_ROCKET;
+ break;
+ }
+ PlayNewMapMusic(music);
+ }
+}
+
+const u8 *ReturnEmptyStringIfNull(const u8 *string)
+{
+ if (string == NULL)
+ return gString_Dummy;
+ else
+ return string;
+}
+
+const u8 *GetIntroSpeechOfApproachingTrainer(void)
+{
+ return ReturnEmptyStringIfNull(sTrainerAIntroSpeech);
+}
+
+const u8 *GetTrainerALoseText(void)
+{
+ const u8 *string = sTrainerADefeatSpeech;
+
+ StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(string));
+ return gStringVar4;
+}
+
+const u8 *GetTrainerBLoseText(void)
+{
+ StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(sTrainerBDefeatSpeech));
+ return gStringVar4;
+}
+
+const u8 *GetTrainerCantBattleSpeech(void)
+{
+ return ReturnEmptyStringIfNull(sTrainerCannotBattleSpeech);
+}
diff --git a/src/fame_checker.c b/src/fame_checker.c
index e803a9700..945b5ffe6 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -878,7 +878,7 @@ static void FC_DestroyWindow(u8 windowId)
static u8 AdjustGiovanniIndexIfBeatenInGym(u8 a0)
{
- if (HasTrainerAlreadyBeenFought(0x15e) == TRUE)
+ if (HasTrainerBeenFought(0x15e) == TRUE)
{
if (a0 == 9)
return FAMECHECKER_GIOVANNI;
diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c
index 56a607fff..90abda81f 100644
--- a/src/fldeff_rocksmash.c
+++ b/src/fldeff_rocksmash.c
@@ -16,6 +16,7 @@
#include "field_map_obj.h"
#include "constants/songs.h"
#include "constants/map_objects.h"
+#include "constants/map_types.h"
static void task08_080C9820(u8 taskId);
static void sub_80C98FC(u8 taskId);
diff --git a/src/item_use.c b/src/item_use.c
index 8602d6f72..416edfe88 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -42,6 +42,7 @@
#include "constants/maps.h"
#include "constants/moves.h"
#include "constants/songs.h"
+#include "constants/map_types.h"
EWRAM_DATA void (*sItemUseOnFieldCB)(u8 taskId) = NULL;
@@ -259,7 +260,7 @@ bool8 ItemUseCheckFunc_Rod(void)
{
if (MetatileBehavior_IsSurfable(behavior) && !MapGridIsImpassableAt(x, y))
return TRUE;
- if (MetatileBehavior_ReturnFalse_6(behavior) == TRUE)
+ if (MetatileBehavior_IsBridge(behavior) == TRUE)
return TRUE;
}
return FALSE;
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index 62a102a09..bca99d38f 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -69,7 +69,7 @@ bool8 MetatileBehavior_IsMB21OrSand(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_IsMB21OrWaterfallBottom(u8 metatileBehavior)
+bool8 MetatileBehavior_IsSandOrDeepSand(u8 metatileBehavior)
{
if(metatileBehavior == MB_21 || metatileBehavior == MB_WATERFALL_BOTTOM)
return TRUE;
@@ -428,11 +428,11 @@ bool8 MetatileBehavior_IsTallGrass_2(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_ReturnFalse_3(u8 metatileBehavior) { return FALSE; }
+bool8 MetatileBehavior_IsLongGrass(u8 metatileBehavior) { return FALSE; }
bool8 MetatileBehavior_ReturnFalse_4(u8 metatileBehavior) { return FALSE; }
bool8 MetatileBehavior_ReturnFalse_5(u8 metatileBehavior) { return FALSE; }
-bool8 MetatileBehavior_ReturnFalse_6(u8 metatileBehavior) { return FALSE; }
-bool8 MetatileBehavior_ReturnFalse_7(u8 metatileBehavior) { return FALSE; }
+bool8 MetatileBehavior_IsBridge(u8 metatileBehavior) { return FALSE; }
+bool8 MetatileBehavior_GetBridgeType(u8 metatileBehavior) { return FALSE; }
bool8 MetatileBehavior_UnusedIsMB_01(u8 metatileBehavior)
{
@@ -450,7 +450,7 @@ bool8 MetatileBehavior_UnusedIsTallGrass(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_IsMB0B(u8 metatileBehavior)
+bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior)
{
if(metatileBehavior == MB_0B)
return TRUE;
@@ -458,7 +458,7 @@ bool8 MetatileBehavior_IsMB0B(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_IsMB0C(u8 metatileBehavior)
+bool8 MetatileBehavior_IsMountain(u8 metatileBehavior)
{
if(metatileBehavior == MB_0C)
return TRUE;
diff --git a/src/psychic.c b/src/psychic.c
index 662320a2b..b37820d02 100644
--- a/src/psychic.c
+++ b/src/psychic.c
@@ -47,7 +47,7 @@ const struct SpriteTemplate gUnknown_83E6DF8 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gUnknown_83E6DF4,
- .callback = sub_8075D9C,
+ .callback = AnimSparklingParticle,
};
const struct SpriteTemplate gUnknown_83E6E10 =
@@ -376,7 +376,7 @@ const struct SpriteTemplate gUnknown_83E7148 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gUnknown_83E7144,
- .callback = sub_8075D9C,
+ .callback = AnimSparklingParticle,
};
static const union AffineAnimCmd gUnknown_83E7160[] =
diff --git a/src/quest_log_8150454.c b/src/quest_log_8150454.c
index 3d61dee72..fbd3b4487 100644
--- a/src/quest_log_8150454.c
+++ b/src/quest_log_8150454.c
@@ -88,7 +88,7 @@ void sub_8150530(void)
else
{
sub_81507BC(mapObject, sub_805C808(4));
- StartSpriteAnim(sprite, sub_80634F0(mapObject->mapobj_unk_18));
+ StartSpriteAnim(sprite, sub_80634F0(mapObject->facingDirection));
}
}
@@ -103,7 +103,7 @@ void sub_81505C4(u8 taskId)
FieldObjectClearAnimIfSpecialAnimActive(mapObject);
mapObject->mapobj_bit_11 = TRUE;
sub_81507BC(mapObject, sub_805C808(4));
- StartSpriteAnim(sprite, sub_80634F0(mapObject->mapobj_unk_18));
+ StartSpriteAnim(sprite, sub_80634F0(mapObject->facingDirection));
gTasks[taskId].data[0]++;
gTasks[taskId].data[1] = 0;
break;
diff --git a/src/scrcmd.c b/src/scrcmd.c
index ae994fceb..540474a7e 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1916,7 +1916,7 @@ bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx)
{
u16 index = VarGet(ScriptReadHalfword(ctx));
- ctx->comparisonResult = HasTrainerAlreadyBeenFought(index);
+ ctx->comparisonResult = HasTrainerBeenFought(index);
return FALSE;
}
diff --git a/src/unk_8159F40.c b/src/unk_8159F40.c
index ab27cea63..a9a567c51 100644
--- a/src/unk_8159F40.c
+++ b/src/unk_8159F40.c
@@ -78,7 +78,7 @@ void sub_815A008(struct QuestLog * questLog)
questLog->unk_008[i].mapobj_bit_24 = gMapObjects[i].mapobj_bit_24;
questLog->unk_008[i].mapobj_bit_25 = gMapObjects[i].mapobj_bit_25;
questLog->unk_008[i].mapobj_bit_26 = gMapObjects[i].mapobj_bit_26;
- questLog->unk_008[i].mapobj_unk_18 = gMapObjects[i].mapobj_unk_18;
+ questLog->unk_008[i].mapobj_unk_18 = gMapObjects[i].facingDirection;
questLog->unk_008[i].mapobj_unk_0B_0 = gMapObjects[i].mapobj_unk_0B_0;
questLog->unk_008[i].elevation = gMapObjects[i].elevation;
questLog->unk_008[i].graphicsId = gMapObjects[i].graphicsId;
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index 2c339cceb..15dc30234 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -928,7 +928,7 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[vsSeekerIdx]) == 1)
{
r8 = sVsSeeker->trainerInfo[vsSeekerIdx].trainerIdx;
- if (!HasTrainerAlreadyBeenFought(r8))
+ if (!HasTrainerBeenFought(r8))
{
StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], gUnknown_8453F60);
sVsSeeker->trainerHasNotYetBeenFought = 1;
@@ -1024,7 +1024,7 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
"\tadds r0, r5\n"
"\tldrh r0, [r0, 0x4]\n"
"\tmov r8, r0\n"
- "\tbl HasTrainerAlreadyBeenFought\n"
+ "\tbl HasTrainerBeenFought\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbne _0810CA20\n"
@@ -1236,10 +1236,10 @@ void sub_810CB90(void)
TryGetFieldObjectIdByLocalIdAndMap(r4[r8].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &sp0);
r4_2 = &gMapObjects[sp0];
sub_810CF54(&r4[r8]); // You are using this function incorrectly. Please consult the manual.
- sub_805FE7C(r4_2, gUnknown_8453F67[r4_2->mapobj_unk_18]);
+ sub_805FE7C(r4_2, gUnknown_8453F67[r4_2->facingDirection]);
gSaveBlock1Ptr->trainerRematches[r4[r8].localId] = 0;
if (gSelectedEventObject == sp0)
- r4_2->animPattern = gUnknown_8453F67[r4_2->mapobj_unk_18];
+ r4_2->animPattern = gUnknown_8453F67[r4_2->facingDirection];
else
r4_2->animPattern = 0x08;
}
@@ -1316,7 +1316,7 @@ static bool8 HasRematchTrainerAlreadyBeenFought(const VsSeekerData *vsSeekerData
if (rematchIdx == -1)
return FALSE;
- if (!HasTrainerAlreadyBeenFought(vsSeekerData[rematchIdx].trainerIdxs[0]))
+ if (!HasTrainerBeenFought(vsSeekerData[rematchIdx].trainerIdxs[0]))
return FALSE;
return TRUE;
}
@@ -1350,7 +1350,7 @@ static s32 sub_810CE10(const VsSeekerData * a0, u16 a1)
return -1;
}
-s32 sub_810CE64(u16 a0)
+s32 GetRematchTrainerId(u16 a0)
{
u8 i;
u8 j;
@@ -1526,7 +1526,7 @@ static u8 GetNextAvailableRematchTrainer(const VsSeekerData * vsSeekerData, u16
return j - 1;
if (vsSeekerData[i].trainerIdxs[j] == 0xffff)
continue;
- if (HasTrainerAlreadyBeenFought(vsSeekerData[i].trainerIdxs[j]))
+ if (HasTrainerBeenFought(vsSeekerData[i].trainerIdxs[j]))
continue;
return j;
}
@@ -1547,7 +1547,7 @@ static u8 GetRematchableTrainerLocalId(void)
{
if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[i]) == 1)
{
- if (HasTrainerAlreadyBeenFought(sVsSeeker->trainerInfo[i].trainerIdx) != 1 || GetNextAvailableRematchTrainer(sVsSeekerData, sVsSeeker->trainerInfo[i].trainerIdx, &idx))
+ if (HasTrainerBeenFought(sVsSeeker->trainerInfo[i].trainerIdx) != 1 || GetNextAvailableRematchTrainer(sVsSeekerData, sVsSeeker->trainerInfo[i].trainerIdx, &idx))
return sVsSeeker->trainerInfo[i].localId;
}
}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 8dd5a9f24..b9df77ff9 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -327,35 +327,8 @@ gUnknown_20386A4: @ 20386A4
gUnknown_20386A8: @ 20386A8
.space 0x4
-sTrainerBattleMode: @ 20386AC
- .space 0x2
-
-gTrainerBattleOpponent_A: @ 20386AE
- .space 0x2
-
-sTrainerEventObjectLocalId: @ 20386B0
- .space 0x4
-
-sTrainerAIntroSpeech: @ 20386B4
- .space 0x4
-
-sTrainerADefeatSpeech: @ 20386B8
- .space 0x4
-
-sTrainerBDefeatSpeech: @ 20386BC
- .space 0x4
-
-sTrainerCannotBattleSpeech: @ 20386C0
- .space 0x4
-
-sTrainerBattleEndScript: @ 20386C4
- .space 0x4
-
-sTrainerABattleScriptRetAddr: @ 20386C8
- .space 0x4
-
-gUnknown_20386CC: @ 20386CC
- .space 0x4
+ .include "src/battle_setup.o"
+ .align 2
gUnknown_20386D0: @ 20386D0
.space 0xC