summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_2.s22
-rw-r--r--asm/battle_anim.s2
-rw-r--r--asm/battle_anim_effects_1.s12
-rw-r--r--asm/battle_anim_effects_2.s12
-rw-r--r--asm/battle_anim_effects_3.s12
-rw-r--r--asm/battle_anim_mons.s16
-rw-r--r--asm/battle_anim_special.s2
-rw-r--r--asm/battle_controller_link_opponent.s6
-rw-r--r--asm/battle_controller_link_partner.s8
-rw-r--r--asm/battle_controller_oak.s10
-rw-r--r--asm/battle_controller_opponent.s8
-rw-r--r--asm/battle_controller_player.s16
-rw-r--r--asm/battle_controller_pokedude.s10
-rw-r--r--asm/battle_script_commands.s8
-rw-r--r--asm/berry_crush_3.s4
-rw-r--r--asm/dodrio_berry_picking.s4
-rw-r--r--asm/electric.s2
-rw-r--r--asm/evolution_scene.s4
-rw-r--r--asm/ghost.s2
-rw-r--r--asm/link_rfu_2.s12
-rw-r--r--asm/link_rfu_3.s20
-rw-r--r--asm/overworld.s8
-rw-r--r--asm/pokemon_jump_2.s4
-rw-r--r--asm/reshow_battle_screen.s1190
-rw-r--r--asm/trade.s12
-rw-r--r--asm/trainer_card.s4
-rw-r--r--asm/union_room_chat.s4
-rw-r--r--asm/water.s8
-rw-r--r--include/battle.h1
-rw-r--r--include/battle_anim.h2
-rw-r--r--include/battle_gfx_sfx_util.h4
-rw-r--r--include/bg.h14
-rw-r--r--include/link.h2
-rw-r--r--include/reshow_battle_screen.h2
-rw-r--r--ld_script.txt2
-rw-r--r--src/battle_controller_safari.c2
-rw-r--r--src/battle_gfx_sfx_util.c6
-rw-r--r--src/reshow_battle_screen.c322
38 files changed, 465 insertions, 1314 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s
index f29f29fe6..b206cc493 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -169,7 +169,7 @@ _0800FEA6:
ldr r1, _0800FF68 @ =gReservedSpritePaletteCount
movs r0, 0x4
strb r0, [r1]
- ldr r0, _0800FF6C @ =sub_80116F4
+ ldr r0, _0800FF6C @ =VBlankCB_Battle
bl SetVBlankCallback
bl SetUpBattleVars
ldr r0, _0800FF70 @ =gBattleTypeFlags
@@ -199,7 +199,7 @@ _0800FF5C: .4byte gBattle_BG3_X
_0800FF60: .4byte gBattle_BG3_Y
_0800FF64: .4byte gUnknown_2022B50
_0800FF68: .4byte gReservedSpritePaletteCount
-_0800FF6C: .4byte sub_80116F4
+_0800FF6C: .4byte VBlankCB_Battle
_0800FF70: .4byte gBattleTypeFlags
_0800FF74: .4byte sub_8010BA0
_0800FF78:
@@ -1010,7 +1010,7 @@ _080105BC:
bne _080105C6
b _080108B8
_080105C6:
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
b _080108B8
.align 2, 0
_080105CC: .4byte gBattleCommunication
@@ -1064,7 +1064,7 @@ _0801062A:
_08010634:
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
b _080108B8
.align 2, 0
_08010640: .4byte gBattleTypeFlags
@@ -1763,7 +1763,7 @@ _08010C44:
bne _08010C4E
b _080110F0
_08010C4E:
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
b _080110F0
.align 2, 0
_08010C54: .4byte gBattleCommunication
@@ -1813,7 +1813,7 @@ _08010CAA:
_08010CB4:
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
b _080110F0
.align 2, 0
_08010CC0: .4byte gReceivedRemoteLinkPlayers
@@ -3121,8 +3121,8 @@ _080116EC: .4byte 0x04000006
_080116F0: .4byte 0x04000008
thumb_func_end sub_80116CC
- thumb_func_start sub_80116F4
-sub_80116F4: @ 80116F4
+ thumb_func_start VBlankCB_Battle
+VBlankCB_Battle: @ 80116F4
push {lr}
bl Random
ldr r0, _08011788 @ =gBattle_BG0_X
@@ -3192,7 +3192,7 @@ _080117A8: .4byte gUnknown_2022984
_080117AC: .4byte gUnknown_2022986
_080117B0: .4byte gUnknown_2022988
_080117B4: .4byte gUnknown_202298A
- thumb_func_end sub_80116F4
+ thumb_func_end VBlankCB_Battle
thumb_func_start nullsub_9
nullsub_9: @ 80117B8
@@ -3612,7 +3612,7 @@ _08011A9C:
ldr r1, _08011B7C @ =gReservedSpritePaletteCount
movs r0, 0x4
strb r0, [r1]
- ldr r0, _08011B80 @ =sub_80116F4
+ ldr r0, _08011B80 @ =VBlankCB_Battle
bl SetVBlankCallback
ldr r0, _08011B84 @ =sub_800F6FC
movs r1, 0
@@ -3657,7 +3657,7 @@ _08011B70: .4byte gBattle_BG3_X
_08011B74: .4byte gBattle_BG3_Y
_08011B78: .4byte gBattleTextboxPalette
_08011B7C: .4byte gReservedSpritePaletteCount
-_08011B80: .4byte sub_80116F4
+_08011B80: .4byte VBlankCB_Battle
_08011B84: .4byte sub_800F6FC
_08011B88: .4byte gTasks
_08011B8C: .4byte sub_8011B94
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
index dff9de521..a79600e01 100644
--- a/asm/battle_anim.s
+++ b/asm/battle_anim.s
@@ -634,7 +634,7 @@ _080729A8:
ldr r0, _08072A04 @ =gBattleAnimAttacker
_080729AE:
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
lsls r1, r4, 24
diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s
index c9cbfea7e..9045a447e 100644
--- a/asm/battle_anim_effects_1.s
+++ b/asm/battle_anim_effects_1.s
@@ -229,7 +229,7 @@ _080A24A2:
ble _080A24BC
ldr r0, _080A24B8 @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r0, 0x1
b _080A24C6
.align 2, 0
@@ -237,7 +237,7 @@ _080A24B8: .4byte gBattleAnimTarget
_080A24BC:
ldr r0, _080A24FC @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r0, 0x6
_080A24C6:
adds r1, r4, 0
@@ -306,7 +306,7 @@ sub_80A2500: @ 80A2500
ldr r4, _080A2578 @ =gUnknown_83E2A88
ldr r0, _080A257C @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
adds r3, 0x1
lsls r3, 24
@@ -868,7 +868,7 @@ sub_80A2974: @ 80A2974
bhi _080A29C0
ldr r0, _080A29BC @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
subs r0, 0x1
b _080A29CA
.align 2, 0
@@ -876,7 +876,7 @@ _080A29BC: .4byte gBattleAnimAttacker
_080A29C0:
ldr r0, _080A29DC @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r0, 0x1
_080A29CA:
adds r1, r4, 0
@@ -2995,7 +2995,7 @@ sub_80A39C0: @ 80A39C0
adds r5, r0, r1
ldr r4, _080A3B18 @ =gBattleAnimTarget
ldrb r0, [r4]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
subs r0, 0x1
diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s
index 339ffcba9..c4d4a043c 100644
--- a/asm/battle_anim_effects_2.s
+++ b/asm/battle_anim_effects_2.s
@@ -1430,7 +1430,7 @@ _080A7928:
ble _080A79A0
ldr r0, _080A7970 @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
ldr r2, _080A7974 @ =0x0000ffc0
@@ -1451,7 +1451,7 @@ _080A7978:
ble _080A79A0
ldr r0, _080A7998 @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
ldr r3, _080A799C @ =0x0000ffc0
@@ -1466,7 +1466,7 @@ _080A799C: .4byte 0x0000ffc0
_080A79A0:
ldr r0, _080A79DC @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x8]
@@ -2367,7 +2367,7 @@ sub_80A8074: @ 80A8074
strh r5, [r4, 0x14]
ldr r0, _080A80C4 @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x16]
@@ -6607,7 +6607,7 @@ sub_80AA174: @ 80AA174
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x30]
ldrb r0, [r5]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x3C]
@@ -7142,7 +7142,7 @@ sub_80AA58C: @ 80AA58C
bl StartSpriteAnim
ldr r0, _080AA68C @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
subs r0, 0x1
adds r1, r4, 0
adds r1, 0x43
diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s
index cc002606a..0869b7481 100644
--- a/asm/battle_anim_effects_3.s
+++ b/asm/battle_anim_effects_3.s
@@ -5735,7 +5735,7 @@ sub_80E0EDC: @ 80E0EDC
_080E0F16:
ldr r0, _080E0F24 @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
subs r0, 0x1
b _080E0F32
.align 2, 0
@@ -5743,7 +5743,7 @@ _080E0F24: .4byte gBattleAnimAttacker
_080E0F28:
ldr r0, _080E0F74 @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r0, 0x1
_080E0F32:
adds r1, r4, 0
@@ -7613,7 +7613,7 @@ _080E1DA2:
lsrs r0, 24
strh r0, [r5, 0x12]
adds r0, r4, 0
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
@@ -8641,7 +8641,7 @@ _080E258A:
ldrsh r6, [r7, r1]
mov r1, r8
ldrb r0, [r1]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
subs r3, 0x5
lsls r3, 24
@@ -10654,7 +10654,7 @@ sub_80E34D0: @ 80E34D0
cmp r0, 0
bne _080E34FC
ldrb r0, [r4]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
subs r0, 0x2
adds r1, r5, 0
adds r1, 0x43
@@ -10666,7 +10666,7 @@ _080E34F4: .4byte gBattleAnimTarget
_080E34F8: .4byte 0x0000ff70
_080E34FC:
ldrb r0, [r4]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r0, 0x2
adds r1, r5, 0
adds r1, 0x43
diff --git a/asm/battle_anim_mons.s b/asm/battle_anim_mons.s
index 060a2af23..59c16da0d 100644
--- a/asm/battle_anim_mons.s
+++ b/asm/battle_anim_mons.s
@@ -594,8 +594,8 @@ _080748F0:
bx r1
thumb_func_end GetSubstituteSpriteDefault_Y
- thumb_func_start sub_8074900
-sub_8074900: @ 8074900
+ thumb_func_start GetGhostSpriteDefault_Y
+GetGhostSpriteDefault_Y: @ 8074900
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -618,7 +618,7 @@ _0807491E:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_8074900
+ thumb_func_end GetGhostSpriteDefault_Y
thumb_func_start sub_807492C
sub_807492C: @ 807492C
@@ -4839,7 +4839,7 @@ _080767FE:
cmp r0, 0
beq _08076840
adds r0, r4, 0
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
ldr r3, _08076858 @ =gBattlerSpriteIds
adds r3, r5, r3
ldrb r2, [r3]
@@ -4878,8 +4878,8 @@ _08076854: .4byte gSprites
_08076858: .4byte gBattlerSpriteIds
thumb_func_end sub_80767F0
- thumb_func_start sub_807685C
-sub_807685C: @ 807685C
+ thumb_func_start GetBattlerSpriteSubpriority
+GetBattlerSpriteSubpriority: @ 807685C
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -4900,7 +4900,7 @@ _0807687E:
adds r0, r1, 0
pop {r1}
bx r1
- thumb_func_end sub_807685C
+ thumb_func_end GetBattlerSpriteSubpriority
thumb_func_start sub_8076884
sub_8076884: @ 8076884
@@ -5946,7 +5946,7 @@ _08077064:
adds r0, 0x10
lsls r4, r0, 4
ldrb r0, [r7]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s
index b703b8334..c95a1099e 100644
--- a/asm/battle_anim_special.s
+++ b/asm/battle_anim_special.s
@@ -1379,7 +1379,7 @@ _080EF708:
bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
adds r3, 0x1
lsls r3, 24
diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s
index e2d110861..406216216 100644
--- a/asm/battle_controller_link_opponent.s
+++ b/asm/battle_controller_link_opponent.s
@@ -3591,7 +3591,7 @@ LinkOpponentHandleLoadPokeSprite: @ 803C3B4
lsls r4, 24
lsrs r4, 24
ldrb r0, [r6]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -3795,7 +3795,7 @@ sub_803C550: @ 803C550
lsls r4, 24
lsrs r4, 24
adds r0, r6, 0
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -4270,7 +4270,7 @@ _0803C992:
asrs r4, 16
mov r1, r8
ldrb r0, [r1]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s
index a536d91b8..8644e651c 100644
--- a/asm/battle_controller_link_partner.s
+++ b/asm/battle_controller_link_partner.s
@@ -3385,7 +3385,7 @@ LinkPartnerHandleLoadPokeSprite: @ 80D5DB4
lsls r4, 24
lsrs r4, 24
ldrb r0, [r6]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -3577,7 +3577,7 @@ sub_80D5F40: @ 80D5F40
lsls r4, 24
lsrs r4, 24
adds r0, r6, 0
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -3896,7 +3896,7 @@ _080D6258:
ldr r5, _080D6318 @ =gActiveBattler
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_8034750
+ bl DecompressTrainerBackPalette
ldrb r0, [r5]
bl GetBattlerPosition
adds r1, r0, 0
@@ -3918,7 +3918,7 @@ _080D6258:
adds r4, r0
asrs r4, 16
ldrb r0, [r5]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s
index 3ded95b1d..1c1838616 100644
--- a/asm/battle_controller_oak.s
+++ b/asm/battle_controller_oak.s
@@ -4966,7 +4966,7 @@ sub_80E9E6C: @ 80E9E6C
ldrb r0, [r0, 0x8]
ldr r6, _080E9ED0 @ =gActiveBattler
ldrb r1, [r6]
- bl sub_8034750
+ bl DecompressTrainerBackPalette
ldr r0, [r4]
ldrb r5, [r0, 0x8]
ldrb r0, [r6]
@@ -5007,7 +5007,7 @@ _080E9EE0:
ldr r4, _080E9F8C @ =gActiveBattler
ldrb r1, [r4]
movs r0, 0x5
- bl sub_8034750
+ bl DecompressTrainerBackPalette
ldrb r0, [r4]
bl GetBattlerPosition
adds r1, r0, 0
@@ -5112,7 +5112,7 @@ sub_80E9FB0: @ 80E9FB0
ldrb r0, [r0, 0x8]
ldr r6, _080EA014 @ =gActiveBattler
ldrb r1, [r6]
- bl sub_8034750
+ bl DecompressTrainerBackPalette
ldr r0, [r4]
ldrb r5, [r0, 0x8]
ldrb r0, [r6]
@@ -5153,7 +5153,7 @@ _080EA024:
ldr r4, _080EA0D0 @ =gActiveBattler
ldrb r1, [r4]
movs r0, 0x5
- bl sub_8034750
+ bl DecompressTrainerBackPalette
ldrb r0, [r4]
bl GetBattlerPosition
adds r1, r0, 0
@@ -7086,7 +7086,7 @@ sub_80EAF34: @ 80EAF34
lsls r4, 24
lsrs r4, 24
adds r0, r6, 0
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index da113d908..85f203998 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -3596,7 +3596,7 @@ sub_80377FC: @ 80377FC
adds r0, r6
bl DecompressGhostFrontPic
ldrb r0, [r4]
- bl sub_8074900
+ bl GetGhostSpriteDefault_Y
lsls r0, 24
lsrs r5, r0, 24
ldr r3, _0803788C @ =gBattleSpritesDataPtr
@@ -3658,7 +3658,7 @@ _080378AA:
lsls r4, 24
lsrs r4, 24
ldrb r0, [r7]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -3887,7 +3887,7 @@ sub_8037A28: @ 8037A28
lsls r4, 24
lsrs r4, 24
adds r0, r6, 0
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -4219,7 +4219,7 @@ _08037D3A:
asrs r4, 16
mov r1, r8
ldrb r0, [r1]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
index 51845f47a..385b0d44e 100644
--- a/asm/battle_controller_player.s
+++ b/asm/battle_controller_player.s
@@ -4884,23 +4884,23 @@ ActionSelectionDestroyCursorAt: @ 8030A98
thumb_func_start sub_8030ADC
sub_8030ADC: @ 8030ADC
push {lr}
- ldr r0, _08030AE8 @ =sub_8077764
+ ldr r0, _08030AE8 @ =ReshowBattleScreenAfterMenu
bl SetMainCallback2
pop {r0}
bx r0
.align 2, 0
-_08030AE8: .4byte sub_8077764
+_08030AE8: .4byte ReshowBattleScreenAfterMenu
thumb_func_end sub_8030ADC
thumb_func_start sub_8030AEC
sub_8030AEC: @ 8030AEC
push {lr}
- ldr r0, _08030AF8 @ =sub_8077764
+ ldr r0, _08030AF8 @ =ReshowBattleScreenAfterMenu
bl SetMainCallback2
pop {r0}
bx r0
.align 2, 0
-_08030AF8: .4byte sub_8077764
+_08030AF8: .4byte ReshowBattleScreenAfterMenu
thumb_func_end sub_8030AEC
thumb_func_start CompleteOnFinishedStatusAnimation
@@ -7457,7 +7457,7 @@ sub_8031FF4: @ 8031FF4
lsls r4, 24
lsrs r4, 24
adds r0, r6, 0
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -7803,7 +7803,7 @@ _08032342:
ldr r5, _08032404 @ =gActiveBattler
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_8034750
+ bl DecompressTrainerBackPalette
ldrb r0, [r5]
bl GetBattlerPosition
adds r1, r0, 0
@@ -7825,7 +7825,7 @@ _08032342:
adds r4, r0
asrs r4, 16
ldrb r0, [r5]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -7980,7 +7980,7 @@ _080324BE:
ldr r5, _0803256C @ =gActiveBattler
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_8034750
+ bl DecompressTrainerBackPalette
ldrb r0, [r5]
bl GetBattlerPosition
adds r1, r0, 0
diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s
index 6e8071820..4bff9be01 100644
--- a/asm/battle_controller_pokedude.s
+++ b/asm/battle_controller_pokedude.s
@@ -3942,7 +3942,7 @@ sub_81580E0: @ 81580E0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r6]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -4181,7 +4181,7 @@ sub_8158344: @ 8158344
bne _081583F0
ldrb r1, [r7]
movs r0, 0x4
- bl sub_8034750
+ bl DecompressTrainerBackPalette
ldrb r0, [r7]
bl GetBattlerPosition
adds r1, r0, 0
@@ -4273,7 +4273,7 @@ _081583F0:
adds r4, r0
asrs r4, 16
ldrb r0, [r7]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -4406,7 +4406,7 @@ sub_8158544: @ 8158544
ldr r4, _081585EC @ =gActiveBattler
ldrb r1, [r4]
movs r0, 0x4
- bl sub_8034750
+ bl DecompressTrainerBackPalette
ldrb r0, [r4]
bl GetBattlerPosition
adds r1, r0, 0
@@ -6351,7 +6351,7 @@ sub_8159478: @ 8159478
lsls r4, 24
lsrs r4, 24
adds r0, r6, 0
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s
index 568f794d0..8bc130fd7 100644
--- a/asm/battle_script_commands.s
+++ b/asm/battle_script_commands.s
@@ -15672,7 +15672,7 @@ _080254B6:
subs r2, 0x1
lsls r2, 24
lsrs r2, 24
- ldr r3, _080254F4 @ =sub_8077764
+ ldr r3, _080254F4 @ =ReshowBattleScreenAfterMenu
ldr r4, _080254F8 @ =gMoveToLearn
ldrh r4, [r4]
str r4, [sp]
@@ -15688,7 +15688,7 @@ _080254E4: .4byte gPaletteFade
_080254E8: .4byte gPlayerParty
_080254EC: .4byte gBattleStruct
_080254F0: .4byte gPlayerPartyCount
-_080254F4: .4byte sub_8077764
+_080254F4: .4byte ReshowBattleScreenAfterMenu
_080254F8: .4byte gMoveToLearn
_080254FC: .4byte gBattleScripting
_08025500:
@@ -32490,7 +32490,7 @@ _0802DA72:
ldr r2, _0802DAC0 @ =0x05006000
add r0, sp, 0x10
bl CpuSet
- ldr r0, _0802DAC4 @ =sub_80116F4
+ ldr r0, _0802DAC4 @ =VBlankCB_Battle
bl SetVBlankCallback
ldrb r0, [r4]
adds r0, 0x1
@@ -32503,7 +32503,7 @@ _0802DAB4: .4byte BattleMainCB2
_0802DAB8: .4byte gTasks
_0802DABC: .4byte gBattleCommunication
_0802DAC0: .4byte 0x05006000
-_0802DAC4: .4byte sub_80116F4
+_0802DAC4: .4byte VBlankCB_Battle
_0802DAC8:
bl sub_800F34C
bl LoadBattleTextboxAndBackground
diff --git a/asm/berry_crush_3.s b/asm/berry_crush_3.s
index afab275ab..51657f296 100644
--- a/asm/berry_crush_3.s
+++ b/asm/berry_crush_3.s
@@ -236,10 +236,10 @@ _0814D7E8: .4byte gUnknown_846ED90
_0814D7EC: .4byte gUnknown_846EEC0
_0814D7F0: .4byte gUnknown_846F058
_0814D7F4:
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
adds r0, r5, 0
bl sub_814ECE0
ldr r0, _0814D82C @ =gSpriteCoordOffsetY
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s
index c6e46517e..32b47791b 100644
--- a/asm/dodrio_berry_picking.s
+++ b/asm/dodrio_berry_picking.s
@@ -393,10 +393,10 @@ _08150B16:
ldrb r0, [r0]
cmp r0, 0
beq _08150BDC
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
b _08150BDC
.align 2, 0
_08150B38: .4byte gReceivedRemoteLinkPlayers
diff --git a/asm/electric.s b/asm/electric.s
index 7b100e73e..d020459d5 100644
--- a/asm/electric.s
+++ b/asm/electric.s
@@ -2630,7 +2630,7 @@ _080AEFF8:
lsrs r0, 24
strh r0, [r5, 0x22]
ldrb r0, [r4]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
subs r0, 0x2
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
index 0062040ec..06d8a0d64 100644
--- a/asm/evolution_scene.s
+++ b/asm/evolution_scene.s
@@ -843,10 +843,10 @@ _080CE4CC:
ldrb r0, [r0]
cmp r0, 0
beq _080CE4E0
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
_080CE4E0:
movs r0, 0x1
negs r0, r0
diff --git a/asm/ghost.s b/asm/ghost.s
index b0933f132..194f728fe 100644
--- a/asm/ghost.s
+++ b/asm/ghost.s
@@ -2898,7 +2898,7 @@ sub_80B68C8: @ 80B68C8
lsrs r0, 24
strh r0, [r4, 0x12]
ldrb r0, [r5]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r0, 24
subs r0, 0x2
diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s
index 356cbb45b..d4934caa9 100644
--- a/asm/link_rfu_2.s
+++ b/asm/link_rfu_2.s
@@ -9368,8 +9368,8 @@ _080FCD6C: .4byte gUnknown_3005440
_080FCD70: .4byte gUnknown_3005E00
thumb_func_end sub_80FCD50
- thumb_func_start sub_80FCD74
-sub_80FCD74: @ 80FCD74
+ thumb_func_start CreateWirelessStatusIndicatorSprite
+CreateWirelessStatusIndicatorSprite: @ 80FCD74
push {r4,r5,lr}
lsls r0, 24
lsrs r3, r0, 24
@@ -9464,7 +9464,7 @@ _080FCE34: .4byte gUnknown_203ACE4
_080FCE38: .4byte gSprites
_080FCE3C: .4byte 0x00001234
_080FCE40: .4byte gUnknown_843F274
- thumb_func_end sub_80FCD74
+ thumb_func_end CreateWirelessStatusIndicatorSprite
thumb_func_start DestroyWirelessStatusIndicatorSprite
DestroyWirelessStatusIndicatorSprite: @ 80FCE44
@@ -9514,8 +9514,8 @@ _080FCEA0: .4byte gDummyOamData
_080FCEA4: .4byte 0x070003e8
thumb_func_end DestroyWirelessStatusIndicatorSprite
- thumb_func_start sub_80FCEA8
-sub_80FCEA8: @ 80FCEA8
+ thumb_func_start LoadWirelessStatusIndicatorSpriteGfx
+LoadWirelessStatusIndicatorSpriteGfx: @ 80FCEA8
push {r4,lr}
ldr r4, _080FCED4 @ =gUnknown_843F274
ldrh r0, [r4, 0x6]
@@ -9540,7 +9540,7 @@ _080FCED4: .4byte gUnknown_843F274
_080FCED8: .4byte 0xffff0000
_080FCEDC: .4byte gUnknown_843F27C
_080FCEE0: .4byte gUnknown_203ACE4
- thumb_func_end sub_80FCEA8
+ thumb_func_end LoadWirelessStatusIndicatorSpriteGfx
thumb_func_start sub_80FCEE4
sub_80FCEE4: @ 80FCEE4
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index 1232764e5..a109515d6 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -707,10 +707,10 @@ _08115E84:
beq _08115EC0
b _081161D8
_08115E8E:
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
movs r0, 0x5
strb r0, [r5, 0x19]
ldrb r1, [r5, 0x13]
@@ -2475,10 +2475,10 @@ sub_8116D60: @ 8116D60
push {r4,r5,lr}
adds r4, r0, 0
strb r1, [r4, 0xF]
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
ldrb r0, [r4, 0xE]
bl RedrawListMenu
ldr r5, _08116DD4 @ =gStringVar1
@@ -4188,10 +4188,10 @@ _08117C3C:
beq _08117C84
b _08117ECA
_08117C42:
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
ldr r1, [r5]
ldrb r0, [r5, 0x13]
lsls r0, 5
@@ -4702,10 +4702,10 @@ _0811808E:
cmp r0, 0
bne _08118130
strb r2, [r5, 0xF]
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
ldrb r0, [r5, 0xE]
bl RedrawListMenu
ldr r4, _0811812C @ =gStringVar1
@@ -5118,10 +5118,10 @@ _0811843A:
beq _0811849C
strb r4, [r5, 0xF]
strb r4, [r5, 0x14]
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
ldr r0, [r5]
adds r4, r0, 0
adds r4, 0x10
diff --git a/asm/overworld.s b/asm/overworld.s
index 56c253477..30f89b4f3 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -4058,10 +4058,10 @@ _08056B3C:
ldrb r0, [r0]
cmp r0, 0
beq _08056B62
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
b _08056B62
.align 2, 0
_08056B54: .4byte gWirelessCommType
@@ -4389,10 +4389,10 @@ _08056E18:
ldrb r0, [r0]
cmp r0, 0
beq _08056E3E
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
b _08056E3E
.align 2, 0
_08056E30: .4byte gWirelessCommType
diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s
index ab95e1bf4..66bb3dc52 100644
--- a/asm/pokemon_jump_2.s
+++ b/asm/pokemon_jump_2.s
@@ -442,10 +442,10 @@ _08147E0C:
ldr r0, [r4]
adds r0, 0xA4
bl sub_8149CEC
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
ldr r1, [r4]
b _08147EBC
.align 2, 0
diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s
deleted file mode 100644
index c9faf0be7..000000000
--- a/asm/reshow_battle_screen.s
+++ /dev/null
@@ -1,1190 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_44
-nullsub_44: @ 8077760
- bx lr
- thumb_func_end nullsub_44
-
- thumb_func_start sub_8077764
-sub_8077764: @ 8077764
- push {lr}
- ldr r2, _080777B0 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- ldr r0, _080777B4 @ =gBattleScripting
- adds r2, r0, 0
- adds r2, 0x21
- movs r1, 0
- strb r1, [r2]
- adds r0, 0x22
- strb r1, [r0]
- ldr r0, _080777B8 @ =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080777DA
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080777C4
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080777BC
- movs r0, 0x19
- bl HelpSystem_SetSomeVariable2
- b _080777DA
- .align 2, 0
-_080777B0: .4byte gPaletteFade
-_080777B4: .4byte gBattleScripting
-_080777B8: .4byte gBattleTypeFlags
-_080777BC:
- movs r0, 0x18
- bl HelpSystem_SetSomeVariable2
- b _080777DA
-_080777C4:
- movs r0, 0x80
- ands r1, r0
- cmp r1, 0
- beq _080777D4
- movs r0, 0x1A
- bl HelpSystem_SetSomeVariable2
- b _080777DA
-_080777D4:
- movs r0, 0x17
- bl HelpSystem_SetSomeVariable2
-_080777DA:
- ldr r0, _080777E4 @ =sub_80777E8
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080777E4: .4byte sub_80777E8
- thumb_func_end sub_8077764
-
- thumb_func_start sub_80777E8
-sub_80777E8: @ 80777E8
- push {r4-r7,lr}
- sub sp, 0x8
- ldr r0, _08077804 @ =gBattleScripting
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x14
- bls _080777F8
- b _08077A8A
-_080777F8:
- lsls r0, 2
- ldr r1, _08077808 @ =_0807780C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08077804: .4byte gBattleScripting
-_08077808: .4byte _0807780C
- .align 2, 0
-_0807780C:
- .4byte _08077860
- .4byte _08077866
- .4byte _080778E8
- .4byte _08077900
- .4byte _08077906
- .4byte _08077918
- .4byte _0807791E
- .4byte _08077946
- .4byte _0807794A
- .4byte _0807794E
- .4byte _08077952
- .4byte _08077970
- .4byte _08077978
- .4byte _08077980
- .4byte _08077988
- .4byte _08077990
- .4byte _08077998
- .4byte _080779A0
- .4byte _080779A8
- .4byte _080779B0
- .4byte _08077A5C
-_08077860:
- bl ResetSpriteData
- b _08077A8A
-_08077866:
- movs r0, 0
- bl SetVBlankCallback
- bl ScanlineEffect_Clear
- bl sub_800F324
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- bl ResetPaletteFade
- ldr r0, _080778C8 @ =gBattle_BG0_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080778CC @ =gBattle_BG0_Y
- strh r1, [r0]
- ldr r0, _080778D0 @ =gBattle_BG1_X
- strh r1, [r0]
- ldr r0, _080778D4 @ =gBattle_BG1_Y
- strh r1, [r0]
- ldr r0, _080778D8 @ =gBattle_BG2_X
- strh r1, [r0]
- ldr r0, _080778DC @ =gBattle_BG2_Y
- strh r1, [r0]
- ldr r0, _080778E0 @ =gBattle_BG3_X
- strh r1, [r0]
- ldr r0, _080778E4 @ =gBattle_BG3_Y
- strh r1, [r0]
- b _08077A8A
- .align 2, 0
-_080778C8: .4byte gBattle_BG0_X
-_080778CC: .4byte gBattle_BG0_Y
-_080778D0: .4byte gBattle_BG1_X
-_080778D4: .4byte gBattle_BG1_Y
-_080778D8: .4byte gBattle_BG2_X
-_080778DC: .4byte gBattle_BG2_Y
-_080778E0: .4byte gBattle_BG3_X
-_080778E4: .4byte gBattle_BG3_Y
-_080778E8:
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, _080778FC @ =0x01006000
- add r0, sp, 0x4
- bl CpuFastSet
- b _08077A8A
- .align 2, 0
-_080778FC: .4byte 0x01006000
-_08077900:
- bl LoadBattleTextboxAndBackground
- b _08077A8A
-_08077906:
- bl FreeAllSpritePalettes
- ldr r1, _08077914 @ =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- b _08077A8A
- .align 2, 0
-_08077914: .4byte gReservedSpritePaletteCount
-_08077918:
- bl ClearSpritesHealthboxAnimData
- b _08077A8A
-_0807791E:
- ldr r5, _08077938 @ =gBattleScripting
- adds r4, r5, 0
- adds r4, 0x22
- ldrb r0, [r4]
- bl BattleLoadAllHealthBoxesGfx
- lsls r0, 24
- cmp r0, 0
- beq _0807793C
- movs r0, 0
- strb r0, [r4]
- b _08077A8A
- .align 2, 0
-_08077938: .4byte gBattleScripting
-_0807793C:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- adds r1, r5, 0
- b _08077962
-_08077946:
- movs r0, 0
- b _08077954
-_0807794A:
- movs r0, 0x1
- b _08077954
-_0807794E:
- movs r0, 0x2
- b _08077954
-_08077952:
- movs r0, 0x3
-_08077954:
- bl sub_8077B0C
- lsls r0, 24
- cmp r0, 0
- beq _08077960
- b _08077A8A
-_08077960:
- ldr r1, _0807796C @ =gBattleScripting
-_08077962:
- adds r1, 0x21
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- b _08077A8A
- .align 2, 0
-_0807796C: .4byte gBattleScripting
-_08077970:
- movs r0, 0
- bl sub_8077C38
- b _08077A8A
-_08077978:
- movs r0, 0x1
- bl sub_8077C38
- b _08077A8A
-_08077980:
- movs r0, 0x2
- bl sub_8077C38
- b _08077A8A
-_08077988:
- movs r0, 0x3
- bl sub_8077C38
- b _08077A8A
-_08077990:
- movs r0, 0
- bl CreateHealthboxSprite
- b _08077A8A
-_08077998:
- movs r0, 0x1
- bl CreateHealthboxSprite
- b _08077A8A
-_080779A0:
- movs r0, 0x2
- bl CreateHealthboxSprite
- b _08077A8A
-_080779A8:
- movs r0, 0x3
- bl CreateHealthboxSprite
- b _08077A8A
-_080779B0:
- bl LoadAndCreateEnemyShadowSprites
- movs r0, 0x1
- bl GetBattlerAtPosition
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r7, _08077A44 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08077A48 @ =gEnemyParty
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl SetBattlerShadowSpriteCallback
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _08077A14
- movs r0, 0x3
- bl GetBattlerAtPosition
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl SetBattlerShadowSpriteCallback
-_08077A14:
- ldr r1, _08077A4C @ =gActionSelectionCursor
- ldr r0, _08077A50 @ =gBattlerInMenuId
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl ActionSelectionCreateCursorAt
- ldr r0, _08077A54 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08077A8A
- ldr r0, _08077A58 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08077A8A
- bl sub_80FCEA8
- movs r0, 0
- movs r1, 0
- bl sub_80FCD74
- b _08077A8A
- .align 2, 0
-_08077A44: .4byte gBattlerPartyIndexes
-_08077A48: .4byte gEnemyParty
-_08077A4C: .4byte gActionSelectionCursor
-_08077A50: .4byte gBattlerInMenuId
-_08077A54: .4byte gWirelessCommType
-_08077A58: .4byte gReceivedRemoteLinkPlayers
-_08077A5C:
- ldr r0, _08077A9C @ =sub_80116F4
- bl SetVBlankCallback
- bl sub_8077AAC
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginHardwarePaletteFade
- ldr r2, _08077AA0 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _08077AA4 @ =BattleMainCB2
- bl SetMainCallback2
- bl sub_80357C8
-_08077A8A:
- ldr r1, _08077AA8 @ =gBattleScripting
- adds r1, 0x21
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077A9C: .4byte sub_80116F4
-_08077AA0: .4byte gPaletteFade
-_08077AA4: .4byte BattleMainCB2
-_08077AA8: .4byte gBattleScripting
- thumb_func_end sub_80777E8
-
- thumb_func_start sub_8077AAC
-sub_8077AAC: @ 8077AAC
- push {lr}
- movs r0, 0x1
- bl EnableInterrupts
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x42
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x46
- movs r1, 0
- bl SetGpuReg
- ldr r1, _08077B08 @ =0x0000b040
- movs r0, 0
- bl SetGpuRegBits
- pop {r0}
- bx r0
- .align 2, 0
-_08077B08: .4byte 0x0000b040
- thumb_func_end sub_8077AAC
-
- thumb_func_start sub_8077B0C
-sub_8077B0C: @ 8077B0C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08077B54 @ =gBattlersCount
- ldrb r0, [r0]
- cmp r4, r0
- bcc _08077B1C
- b _08077C2C
-_08077B1C:
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08077BA6
- ldr r0, _08077B58 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0xA0
- lsls r1, 8
- ands r0, r1
- movs r1, 0x80
- lsls r1, 8
- cmp r0, r1
- bne _08077B64
- ldr r1, _08077B5C @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08077B60 @ =gEnemyParty
- adds r0, r1
- adds r1, r4, 0
- bl DecompressGhostFrontPic
- b _08077C24
- .align 2, 0
-_08077B54: .4byte gBattlersCount
-_08077B58: .4byte gBattleTypeFlags
-_08077B5C: .4byte gBattlerPartyIndexes
-_08077B60: .4byte gEnemyParty
-_08077B64:
- ldr r0, _08077B90 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r4, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _08077B9C
- ldr r1, _08077B94 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08077B98 @ =gEnemyParty
- adds r0, r1
- adds r1, r4, 0
- bl BattleLoadOpponentMonSpriteGfx
- b _08077C24
- .align 2, 0
-_08077B90: .4byte gBattleSpritesDataPtr
-_08077B94: .4byte gBattlerPartyIndexes
-_08077B98: .4byte gEnemyParty
-_08077B9C:
- adds r0, r4, 0
- movs r1, 0
- bl BattleLoadSubstituteOrMonSpriteGfx
- b _08077C24
-_08077BA6:
- ldr r0, _08077BC0 @ =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x80
- ands r1, r2
- cmp r1, 0
- beq _08077BC8
- cmp r4, 0
- bne _08077BC8
- ldr r0, _08077BC4 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- b _08077BDA
- .align 2, 0
-_08077BC0: .4byte gBattleTypeFlags
-_08077BC4: .4byte gSaveBlock2Ptr
-_08077BC8:
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _08077BE2
- cmp r4, 0
- bne _08077BE2
- movs r0, 0x5
-_08077BDA:
- movs r1, 0
- bl sub_8034750
- b _08077C24
-_08077BE2:
- ldr r0, _08077C10 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r4, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _08077C1C
- ldr r1, _08077C14 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08077C18 @ =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- bl BattleLoadPlayerMonSpriteGfx
- b _08077C24
- .align 2, 0
-_08077C10: .4byte gBattleSpritesDataPtr
-_08077C14: .4byte gBattlerPartyIndexes
-_08077C18: .4byte gPlayerParty
-_08077C1C:
- adds r0, r4, 0
- movs r1, 0
- bl BattleLoadSubstituteOrMonSpriteGfx
-_08077C24:
- ldr r0, _08077C34 @ =gBattleScripting
- adds r0, 0x22
- movs r1, 0
- strb r1, [r0]
-_08077C2C:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08077C34: .4byte gBattleScripting
- thumb_func_end sub_8077B0C
-
- thumb_func_start sub_8077C38
-sub_8077C38: @ 8077C38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08077C6C @ =gBattlersCount
- ldrb r0, [r0]
- cmp r7, r0
- bcc _08077C50
- b _08077FB4
-_08077C50:
- ldr r0, _08077C70 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0xA0
- lsls r1, 8
- ands r0, r1
- movs r1, 0x80
- lsls r1, 8
- cmp r0, r1
- bne _08077C74
- adds r0, r7, 0
- bl sub_8074900
- b _08077C9A
- .align 2, 0
-_08077C6C: .4byte gBattlersCount
-_08077C70: .4byte gBattleTypeFlags
-_08077C74:
- ldr r0, _08077C90 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r7, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08077C94
- adds r0, r7, 0
- bl GetSubstituteSpriteDefault_Y
- b _08077C9A
- .align 2, 0
-_08077C90: .4byte gBattleSpritesDataPtr
-_08077C94:
- adds r0, r7, 0
- bl GetBattlerSpriteDefault_Y
-_08077C9A:
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r7, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08077CAE
- b _08077DAC
-_08077CAE:
- ldr r1, _08077D90 @ =gBattlerPartyIndexes
- lsls r0, r7, 1
- adds r6, r0, r1
- ldrh r0, [r6]
- movs r1, 0x64
- mov r10, r1
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- ldr r1, _08077D94 @ =gEnemyParty
- mov r9, r1
- add r0, r9
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _08077CD2
- b _08077FB4
-_08077CD2:
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl GetBattlerPosition
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl SetMultiuseSpriteTemplateToPokemon
- ldr r5, _08077D98 @ =gMultiuseSpriteTemplate
- adds r0, r7, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- bl sub_807685C
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CreateSprite
- ldr r4, _08077D9C @ =gBattlerSpriteIds
- adds r4, r7, r4
- strb r0, [r4]
- ldr r5, _08077DA0 @ =gSprites
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r7, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08077DA4 @ =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r7, [r0, 0x2E]
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x32]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08077DA8 @ =gBattleMonForms
- adds r1, r7, r1
- ldrb r1, [r1]
- bl StartSpriteAnim
- b _08077F84
- .align 2, 0
-_08077D90: .4byte gBattlerPartyIndexes
-_08077D94: .4byte gEnemyParty
-_08077D98: .4byte gMultiuseSpriteTemplate
-_08077D9C: .4byte gBattlerSpriteIds
-_08077DA0: .4byte gSprites
-_08077DA4: .4byte SpriteCallbackDummy
-_08077DA8: .4byte gBattleMonForms
-_08077DAC:
- ldr r0, _08077E00 @ =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x80
- ands r1, r2
- cmp r1, 0
- beq _08077E10
- cmp r7, 0
- bne _08077E10
- ldr r5, _08077E04 @ =gSaveBlock2Ptr
- ldr r0, [r5]
- ldrb r4, [r0, 0x8]
- movs r0, 0
- bl GetBattlerPosition
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl SetMultiuseSpriteTemplateToTrainerBack
- ldr r6, _08077E08 @ =gMultiuseSpriteTemplate
- ldr r1, _08077E0C @ =gTrainerBackPicCoords
- ldr r0, [r5]
- ldrb r0, [r0, 0x8]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- movs r4, 0x8
- subs r4, r0
- lsls r4, 18
- movs r0, 0xA0
- lsls r0, 15
- adds r4, r0
- asrs r4, 16
- movs r0, 0
- bl sub_807685C
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r6, 0
- b _08077E54
- .align 2, 0
-_08077E00: .4byte gBattleTypeFlags
-_08077E04: .4byte gSaveBlock2Ptr
-_08077E08: .4byte gMultiuseSpriteTemplate
-_08077E0C: .4byte gTrainerBackPicCoords
-_08077E10:
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _08077EA8
- cmp r7, 0
- bne _08077EA8
- movs r0, 0
- bl GetBattlerPosition
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x5
- bl SetMultiuseSpriteTemplateToTrainerBack
- ldr r5, _08077E94 @ =gMultiuseSpriteTemplate
- ldr r0, _08077E98 @ =gTrainerBackPicCoords
- ldrb r0, [r0, 0x14]
- movs r4, 0x8
- subs r4, r0
- lsls r4, 18
- movs r1, 0xA0
- lsls r1, 15
- adds r4, r1
- asrs r4, 16
- movs r0, 0
- bl sub_807685C
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
-_08077E54:
- movs r1, 0x50
- adds r2, r4, 0
- bl CreateSprite
- ldr r3, _08077E9C @ =gBattlerSpriteIds
- strb r0, [r3]
- ldr r4, _08077EA0 @ =gSprites
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1, 0x5]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08077EA4 @ =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r7, [r0, 0x2E]
- b _08077F84
- .align 2, 0
-_08077E94: .4byte gMultiuseSpriteTemplate
-_08077E98: .4byte gTrainerBackPicCoords
-_08077E9C: .4byte gBattlerSpriteIds
-_08077EA0: .4byte gSprites
-_08077EA4: .4byte SpriteCallbackDummy
-_08077EA8:
- ldr r1, _08077FC4 @ =gBattlerPartyIndexes
- lsls r0, r7, 1
- adds r6, r0, r1
- ldrh r0, [r6]
- movs r1, 0x64
- mov r10, r1
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- ldr r1, _08077FC8 @ =gPlayerParty
- mov r9, r1
- add r0, r9
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08077FB4
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl GetBattlerPosition
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl SetMultiuseSpriteTemplateToPokemon
- ldr r5, _08077FCC @ =gMultiuseSpriteTemplate
- adds r0, r7, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- bl sub_807685C
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CreateSprite
- ldr r4, _08077FD0 @ =gBattlerSpriteIds
- adds r4, r7, r4
- strb r0, [r4]
- ldr r5, _08077FD4 @ =gSprites
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r7, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08077FD8 @ =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r7, [r0, 0x2E]
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x32]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08077FDC @ =gBattleMonForms
- adds r1, r7, r1
- ldrb r1, [r1]
- bl StartSpriteAnim
-_08077F84:
- ldr r1, _08077FD4 @ =gSprites
- ldr r0, _08077FD0 @ =gBattlerSpriteIds
- adds r0, r7, r0
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldr r0, _08077FE0 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r7, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 31
- adds r2, 0x3E
- lsrs r1, 31
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_08077FB4:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077FC4: .4byte gBattlerPartyIndexes
-_08077FC8: .4byte gPlayerParty
-_08077FCC: .4byte gMultiuseSpriteTemplate
-_08077FD0: .4byte gBattlerSpriteIds
-_08077FD4: .4byte gSprites
-_08077FD8: .4byte SpriteCallbackDummy
-_08077FDC: .4byte gBattleMonForms
-_08077FE0: .4byte gBattleSpritesDataPtr
- thumb_func_end sub_8077C38
-
- thumb_func_start CreateHealthboxSprite
-CreateHealthboxSprite: @ 8077FE4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0807800C @ =gBattlersCount
- ldrb r0, [r0]
- cmp r5, r0
- bcc _08077FF4
- b _08078166
-_08077FF4:
- ldr r0, _08078010 @ =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x80
- ands r1, r2
- cmp r1, 0
- beq _08078014
- cmp r5, 0
- bne _08078014
- bl CreateSafariPlayerHealthboxSprites
- b _0807802C
- .align 2, 0
-_0807800C: .4byte gBattlersCount
-_08078010: .4byte gBattleTypeFlags
-_08078014:
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _08078026
- cmp r5, 0
- bne _08078026
- b _08078166
-_08078026:
- adds r0, r5, 0
- bl CreateBattlerHealthboxSprites
-_0807802C:
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08078068 @ =gHealthboxSpriteIds
- adds r4, r5, r0
- strb r6, [r4]
- adds r0, r5, 0
- bl InitBattlerHealthboxCoords
- adds r0, r6, 0
- bl SetHealthboxSpriteVisible
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08078074
- ldrb r0, [r4]
- ldr r1, _0807806C @ =gBattlerPartyIndexes
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _08078070 @ =gEnemyParty
- adds r1, r2
- movs r2, 0
- bl UpdateHealthboxAttribute
- b _080780C0
- .align 2, 0
-_08078068: .4byte gHealthboxSpriteIds
-_0807806C: .4byte gBattlerPartyIndexes
-_08078070: .4byte gEnemyParty
-_08078074:
- ldr r0, _0807809C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080780A8
- ldrb r0, [r4]
- ldr r1, _080780A0 @ =gBattlerPartyIndexes
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _080780A4 @ =gPlayerParty
- adds r1, r2
- movs r2, 0xA
- bl UpdateHealthboxAttribute
- b _080780C0
- .align 2, 0
-_0807809C: .4byte gBattleTypeFlags
-_080780A0: .4byte gBattlerPartyIndexes
-_080780A4: .4byte gPlayerParty
-_080780A8:
- ldrb r0, [r4]
- ldr r1, _080780EC @ =gBattlerPartyIndexes
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _080780F0 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl UpdateHealthboxAttribute
-_080780C0:
- adds r0, r5, 0
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080780DC
- adds r0, r5, 0
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080780F8
-_080780DC:
- ldr r0, _080780F4 @ =gHealthboxSpriteIds
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0x1
- bl DummyBattleInterfaceFunc
- b _08078104
- .align 2, 0
-_080780EC: .4byte gBattlerPartyIndexes
-_080780F0: .4byte gPlayerParty
-_080780F4: .4byte gHealthboxSpriteIds
-_080780F8:
- ldr r0, _08078130 @ =gHealthboxSpriteIds
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0
- bl DummyBattleInterfaceFunc
-_08078104:
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0807813C
- ldr r0, _08078134 @ =gBattlerPartyIndexes
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08078138 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _08078166
- adds r0, r6, 0
- bl SetHealthboxSpriteInvisible
- b _08078166
- .align 2, 0
-_08078130: .4byte gHealthboxSpriteIds
-_08078134: .4byte gBattlerPartyIndexes
-_08078138: .4byte gEnemyParty
-_0807813C:
- ldr r0, _0807816C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08078166
- ldr r0, _08078170 @ =gBattlerPartyIndexes
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08078174 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _08078166
- adds r0, r6, 0
- bl SetHealthboxSpriteInvisible
-_08078166:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807816C: .4byte gBattleTypeFlags
-_08078170: .4byte gBattlerPartyIndexes
-_08078174: .4byte gPlayerParty
- thumb_func_end CreateHealthboxSprite
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/trade.s b/asm/trade.s
index 0e0520f37..42097bd3e 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -435,10 +435,10 @@ _0804C9C4:
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
b _0804CEE6
.align 2, 0
_0804C9E0: .4byte gWirelessCommType
@@ -1134,10 +1134,10 @@ _0804CFDC:
ldrb r0, [r0]
cmp r0, 0
beq _0804CFF0
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
_0804CFF0:
ldr r1, _0804D000 @ =gMain
movs r3, 0x87
@@ -7749,10 +7749,10 @@ _0805044C:
ldrb r0, [r0]
cmp r0, 0
beq _0805046C
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0
movs r1, 0
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
_0805046C:
ldr r0, _08050498 @ =sub_8053D84
bl SetMainCallback2
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
index 85797d38f..a964b02c8 100644
--- a/asm/trainer_card.s
+++ b/asm/trainer_card.s
@@ -208,10 +208,10 @@ _0808919A:
ldrb r0, [r0]
cmp r0, 0x1
bne _080891B6
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0xE6
movs r1, 0x96
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
_080891B6:
movs r0, 0x1
negs r0, r0
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index 285827e14..64cc9aa9f 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -177,10 +177,10 @@ _08128554:
bl CreateTask
ldr r1, [r4]
strb r0, [r1, 0xF]
- bl sub_80FCEA8
+ bl LoadWirelessStatusIndicatorSpriteGfx
movs r0, 0xE8
movs r1, 0x96
- bl sub_80FCD74
+ bl CreateWirelessStatusIndicatorSprite
_08128598:
add sp, 0x4
pop {r4-r6}
diff --git a/asm/water.s b/asm/water.s
index e7465befa..6904e65d2 100644
--- a/asm/water.s
+++ b/asm/water.s
@@ -750,7 +750,7 @@ sub_80AB168: @ 80AB168
ldr r6, _080AB1B8 @ =0x0000fff6
strh r6, [r4, 0x26]
ldrb r0, [r7]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
lsls r0, 24
lsrs r5, r0, 24
bl IsContest
@@ -2408,7 +2408,7 @@ sub_80ABE4C: @ 80ABE4C
lsrs r6, r0, 24
movs r5, 0xAC
ldrb r0, [r4]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
subs r0, 0x1
lsls r0, 24
lsrs r0, 24
@@ -3679,7 +3679,7 @@ _080AC826:
strh r0, [r4, 0x30]
ldr r0, _080AC870 @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
subs r0, 0x1
adds r1, r4, 0
adds r1, 0x43
@@ -3737,7 +3737,7 @@ _080AC89C:
strh r0, [r4, 0x30]
ldr r0, _080AC8E8 @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_807685C
+ bl GetBattlerSpriteSubpriority
subs r0, 0x1
adds r1, r4, 0
adds r1, 0x43
diff --git a/include/battle.h b/include/battle.h
index 357bbbd8c..1e50a5dc1 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -795,6 +795,7 @@ void ApplyPlayerChosenFrameToBattleMenu(void);
bool8 LoadChosenBattleElement(u8 caseId);
void DrawMainBattleBackground(void);
void task00_0800F6FC(u8 taskId);
+void sub_800F324(void);
enum
{
diff --git a/include/battle_anim.h b/include/battle_anim.h
index fb744c316..8e4f2a7ea 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -129,6 +129,7 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
u8 GetBattlerSpriteDefault_Y(u8 bank);
u8 sub_80A82E4(u8 bank);
u8 GetSubstituteSpriteDefault_Y(u8 bank);
+u8 GetGhostSpriteDefault_Y(u8 battlerId);
// battle_anim_80A9C70.s
void LaunchStatusAnimation(u8 bank, u8 statusAnimId);
@@ -148,6 +149,7 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation);
bool8 IsContest(void);
void sub_80759DC(u8 spriteId);
bool8 IsBattlerSpritePresent(u8 battlerId);
+u8 GetBattlerSpriteSubpriority(u8 battlerId);
// battle_anim_mon_movement.c
void AnimTask_ShakeMon(u8 taskId);
diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h
index 39cea7ad1..667686af8 100644
--- a/include/battle_gfx_sfx_util.h
+++ b/include/battle_gfx_sfx_util.h
@@ -12,9 +12,9 @@ bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
bool8 mplay_80342A4(u8 battlerId);
void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
-void DecompressGhostFrontPic(u16 frontPicId, u8 battlerId);
+void DecompressGhostFrontPic(struct Pokemon *unused, u8 battlerId);
void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
-void sub_8034750(u16 a1, u8 a2);
+void DecompressTrainerBackPalette(u16 a1, u8 a2);
void nullsub_16(u8 a1);
void FreeTrainerFrontPicPaletteAndTile(u16 frontPicId);
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
diff --git a/include/bg.h b/include/bg.h
index 40c51167f..70ec38275 100644
--- a/include/bg.h
+++ b/include/bg.h
@@ -15,6 +15,20 @@ struct BGCntrlBitfield // for the I/O registers
enum
{
+ BG_ATTR_CHARBASEINDEX = 1,
+ BG_ATTR_MAPBASEINDEX,
+ BG_ATTR_SCREENSIZE,
+ BG_ATTR_PALETTEMODE,
+ BG_ATTR_MOSAIC,
+ BG_ATTR_WRAPAROUND,
+ BG_ATTR_PRIORITY,
+ BG_ATTR_METRIC,
+ BG_ATTR_TYPE,
+ BG_ATTR_BASETILE,
+};
+
+enum
+{
BG_CTRL_ATTR_VISIBLE = 1,
BG_CTRL_ATTR_CHARBASEINDEX = 2,
BG_CTRL_ATTR_MAPBASEINDEX = 3,
diff --git a/include/link.h b/include/link.h
index 190a9d96a..d816cfcf9 100644
--- a/include/link.h
+++ b/include/link.h
@@ -211,5 +211,7 @@ bool32 sub_800B270(void);
void sub_800B388(void);
void sub_8054A28(void);
void sub_800B1F4(void);
+void LoadWirelessStatusIndicatorSpriteGfx(void);
+void CreateWirelessStatusIndicatorSprite(u8, u8);
#endif // GUARD_LINK_H
diff --git a/include/reshow_battle_screen.h b/include/reshow_battle_screen.h
index 9d1ec30f2..cc20eed96 100644
--- a/include/reshow_battle_screen.h
+++ b/include/reshow_battle_screen.h
@@ -3,7 +3,7 @@
#include "global.h"
-void nullsub_35(void);
+void nullsub_44(void);
void ReshowBattleScreenAfterMenu(void);
#endif // GUARD_RESHOW_BATTLE_SCREEN_H
diff --git a/ld_script.txt b/ld_script.txt
index f52bcb988..9254128fa 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -113,7 +113,7 @@ SECTIONS {
asm/battle_anim.o(.text);
asm/battle_anim_mons.o(.text);
src/task.o(.text);
- asm/reshow_battle_screen.o(.text);
+ src/reshow_battle_screen.o(.text);
asm/battle_anim_status_effects.o(.text);
asm/title_screen.o(.text);
src/reset_save_heap.o(.text);
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index b3c6ab2e5..1e2fe6ee0 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -347,7 +347,7 @@ static void SafariHandleReturnMonToBall(void)
static void SafariHandleDrawTrainerPic(void)
{
- sub_8034750(gSaveBlock2Ptr->playerGender, gActiveBattler);
+ DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
80,
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index ba691801f..3789b04c2 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -420,7 +420,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
}
}
-void DecompressGhostFrontPic(u16 frontPicId, u8 battlerId)
+void DecompressGhostFrontPic(struct Pokemon *unused, u8 battlerId)
{
u16 palOffset;
void *buffer;
@@ -448,9 +448,9 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId)
LoadCompressedSpritePaletteUsingHeap(&gTrainerFrontPicPaletteTable[frontPicId]);
}
-void sub_8034750(u16 a1, u8 a2)
+void DecompressTrainerBackPalette(u16 index, u8 palette)
{
- LoadCompressedPalette(gUnknown_8239FD4[a1].data, (a2 + 16) * 16, 0x20);
+ LoadCompressedPalette(gUnknown_8239FD4[index].data, (palette + 16) * 16, 0x20);
}
void nullsub_16(u8 a1)
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
new file mode 100644
index 000000000..c75e8c583
--- /dev/null
+++ b/src/reshow_battle_screen.c
@@ -0,0 +1,322 @@
+#include "global.h"
+#include "bg.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "main.h"
+#include "link.h"
+#include "data2.h"
+#include "sprite.h"
+#include "text.h"
+#include "gpu_regs.h"
+#include "scanline_effect.h"
+#include "help_system.h"
+#include "battle.h"
+#include "battle_interface.h"
+#include "battle_anim.h"
+#include "battle_controllers.h"
+#include "reshow_battle_screen.h"
+#include "constants/species.h"
+
+static void CB2_ReshowBattleScreenAfterMenu(void);
+static void sub_8077AAC(void);
+static bool8 LoadBattlerSpriteGfx(u8 battlerId);
+static void CreateBattlerSprite(u8 battlerId);
+static void CreateHealthboxSprite(u8 battlerId);
+
+void nullsub_44(void)
+{
+}
+
+void ReshowBattleScreenAfterMenu(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ SetHBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ gBattleScripting.reshowMainState = 0;
+ gBattleScripting.reshowHelperState = 0;
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ HelpSystem_SetSomeVariable2(0x19);
+ else
+ HelpSystem_SetSomeVariable2(0x18);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ {
+ HelpSystem_SetSomeVariable2(0x1A);
+ }
+ else
+ {
+ HelpSystem_SetSomeVariable2(0x17);
+ }
+ }
+ SetMainCallback2(CB2_ReshowBattleScreenAfterMenu);
+}
+
+static void CB2_ReshowBattleScreenAfterMenu(void)
+{
+ u8 opponentBattler;
+ u16 species;
+
+ switch (gBattleScripting.reshowMainState)
+ {
+ case 0:
+ ResetSpriteData();
+ break;
+ case 1:
+ SetVBlankCallback(NULL);
+ ScanlineEffect_Clear();
+ sub_800F324();
+ SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0);
+ SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ ResetPaletteFade();
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ break;
+ case 2:
+ CpuFastFill(0, (void *)VRAM, VRAM_SIZE);
+ break;
+ case 3:
+ LoadBattleTextboxAndBackground();
+ break;
+ case 4:
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ break;
+ case 5:
+ ClearSpritesHealthboxAnimData();
+ break;
+ case 6:
+ if (BattleLoadAllHealthBoxesGfx(gBattleScripting.reshowHelperState))
+ {
+ gBattleScripting.reshowHelperState = 0;
+ }
+ else
+ {
+ ++gBattleScripting.reshowHelperState;
+ --gBattleScripting.reshowMainState;
+ }
+ break;
+ case 7:
+ if (!LoadBattlerSpriteGfx(0))
+ --gBattleScripting.reshowMainState;
+ break;
+ case 8:
+ if (!LoadBattlerSpriteGfx(1))
+ --gBattleScripting.reshowMainState;
+ break;
+ case 9:
+ if (!LoadBattlerSpriteGfx(2))
+ --gBattleScripting.reshowMainState;
+ break;
+ case 0xA:
+ if (!LoadBattlerSpriteGfx(3))
+ --gBattleScripting.reshowMainState;
+ break;
+ case 0xB:
+ CreateBattlerSprite(0);
+ break;
+ case 0xC:
+ CreateBattlerSprite(1);
+ break;
+ case 0xD:
+ CreateBattlerSprite(2);
+ break;
+ case 0xE:
+ CreateBattlerSprite(3);
+ break;
+ case 0xF:
+ CreateHealthboxSprite(0);
+ break;
+ case 0x10:
+ CreateHealthboxSprite(1);
+ break;
+ case 0x11:
+ CreateHealthboxSprite(2);
+ break;
+ case 0x12:
+ CreateHealthboxSprite(3);
+ break;
+ case 0x13:
+ LoadAndCreateEnemyShadowSprites();
+ opponentBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBattler]], MON_DATA_SPECIES);
+ SetBattlerShadowSpriteCallback(opponentBattler, species);
+ if (IsDoubleBattle())
+ {
+ opponentBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBattler]], MON_DATA_SPECIES);
+ SetBattlerShadowSpriteCallback(opponentBattler, species);
+ }
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gBattlerInMenuId], 0);
+ if (gWirelessCommType && gReceivedRemoteLinkPlayers)
+ {
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ }
+ break;
+ case 0x14:
+ SetVBlankCallback(VBlankCB_Battle);
+ sub_8077AAC();
+ BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1);
+ gPaletteFade.bufferTransferDisabled = 0;
+ SetMainCallback2(BattleMainCB2);
+ sub_80357C8();
+ break;
+ default:
+ break;
+ }
+ ++gBattleScripting.reshowMainState;
+}
+
+static void sub_8077AAC(void)
+{
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x3F);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WIN1H, 0);
+ SetGpuReg(REG_OFFSET_WIN1V, 0);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_OBJWIN_ON);
+}
+
+static bool8 LoadBattlerSpriteGfx(u8 battler)
+{
+ if (battler < gBattlersCount)
+ {
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
+ {
+ if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST)
+ DecompressGhostFrontPic(&gEnemyParty[gBattlerPartyIndexes[battler]], battler);
+ else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battler]], battler);
+ else
+ BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler.
+ DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, battler);
+ else if (gBattleTypeFlags & BATTLE_TYPE_OLDMAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler.
+ DecompressTrainerBackPalette(5, battler);
+ else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
+ else
+ BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE);
+ gBattleScripting.reshowHelperState = 0;
+ }
+ return TRUE;
+}
+
+static void CreateBattlerSprite(u8 battler)
+{
+ if (battler < gBattlersCount)
+ {
+ u8 posY;
+
+ if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST)
+ posY = GetGhostSpriteDefault_Y(battler);
+ else if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
+ posY = GetSubstituteSpriteDefault_Y(battler);
+ else
+ posY = GetBattlerSpriteDefault_Y(battler);
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
+ {
+ if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
+ return;
+ SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
+ gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSpriteSubpriority(battler));
+ gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
+ gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
+ gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], gBattleMonForms[battler]);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT)
+ {
+ SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(B_POSITION_PLAYER_LEFT));
+ gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50,
+ (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
+ GetBattlerSpriteSubpriority(0));
+ gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
+ gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_OLDMAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT)
+ {
+ SetMultiuseSpriteTemplateToTrainerBack(5, GetBattlerPosition(0));
+ gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50,
+ (8 - gTrainerBackPicCoords[5].size) * 4 + 80,
+ GetBattlerSpriteSubpriority(0));
+ gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
+ gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
+ }
+ else if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
+ {
+ return;
+ }
+ else
+ {
+ SetMultiuseSpriteTemplateToPokemon(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
+ gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSpriteSubpriority(battler));
+ gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
+ gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
+ gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], gBattleMonForms[battler]);
+ }
+ gSprites[gBattlerSpriteIds[battler]].invisible = gBattleSpritesDataPtr->battlerData[battler].invisible;
+ }
+}
+
+static void CreateHealthboxSprite(u8 battler)
+{
+ if (battler < gBattlersCount)
+ {
+ u8 healthboxSpriteId;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT)
+ healthboxSpriteId = CreateSafariPlayerHealthboxSprites();
+ else if (gBattleTypeFlags & BATTLE_TYPE_OLDMAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT)
+ return;
+ else
+ healthboxSpriteId = CreateBattlerHealthboxSprites(battler);
+ gHealthboxSpriteIds[battler] = healthboxSpriteId;
+ InitBattlerHealthboxCoords(battler);
+ SetHealthboxSpriteVisible(healthboxSpriteId);
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_SAFARI_ALL_TEXT);
+ else
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
+ if (GetBattlerPosition(battler) == B_POSITION_OPPONENT_RIGHT || GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT)
+ DummyBattleInterfaceFunc(gHealthboxSpriteIds[battler], TRUE);
+ else
+ DummyBattleInterfaceFunc(gHealthboxSpriteIds[battler], FALSE);
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
+ {
+ if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
+ SetHealthboxSpriteInvisible(healthboxSpriteId);
+ }
+ else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI) && GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
+ {
+ SetHealthboxSpriteInvisible(healthboxSpriteId);
+ }
+ }
+}