ported reshow_battle_screen from pokeem

This commit is contained in:
jiangzhengwenjz
2019-08-02 07:28:09 +08:00
parent c2964e8181
commit 742a7ee1be
38 changed files with 465 additions and 1314 deletions
+11 -11
View File
@@ -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
+1 -1
View File
@@ -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
+6 -6
View File
@@ -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
+6 -6
View File
@@ -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
+6 -6
View File
@@ -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
+8 -8
View File
@@ -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]
+1 -1
View File
@@ -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
+3 -3
View File
@@ -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
+4 -4
View File
@@ -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
+5 -5
View File
@@ -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
+4 -4
View File
@@ -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
+8 -8
View File
@@ -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
+5 -5
View File
@@ -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
+4 -4
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
+6 -6
View File
@@ -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
+10 -10
View File
@@ -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
+4 -4
View File
@@ -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
+2 -2
View File
@@ -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
File diff suppressed because it is too large Load Diff
+6 -6
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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}
+4 -4
View File
@@ -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
+1
View File
@@ -795,6 +795,7 @@ void ApplyPlayerChosenFrameToBattleMenu(void);
bool8 LoadChosenBattleElement(u8 caseId);
void DrawMainBattleBackground(void);
void task00_0800F6FC(u8 taskId);
void sub_800F324(void);
enum
{
+2
View File
@@ -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);
+2 -2
View File
@@ -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);
+14
View File
@@ -13,6 +13,20 @@ struct BGCntrlBitfield // for the I/O registers
volatile u16 screenSize:2;
};
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,
+2
View File
@@ -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
+1 -1
View File
@@ -3,7 +3,7 @@
#include "global.h"
void nullsub_35(void);
void nullsub_44(void);
void ReshowBattleScreenAfterMenu(void);
#endif // GUARD_RESHOW_BATTLE_SCREEN_H
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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,
+3 -3
View File
@@ -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)
+322
View File
@@ -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);
}
}
}