Pokecenter heal and HOF field effects

This commit is contained in:
PikalaxALT
2020-02-27 16:19:33 -05:00
parent 0d88e2d1de
commit 701d4635b4
3 changed files with 531 additions and 1101 deletions
-971
View File
@@ -5,977 +5,6 @@
.text
thumb_func_start FldEff_PokecenterHeal
FldEff_PokecenterHeal: @ 8083B8C
push {r4,lr}
bl CalculatePlayerPartyCount
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _08083BC8 @ =Task_PokecenterHeal
movs r1, 0xFF
bl CreateTask
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08083BCC @ =gTasks
adds r1, r0
strh r4, [r1, 0xA]
movs r0, 0x5D
strh r0, [r1, 0xC]
movs r0, 0x24
strh r0, [r1, 0xE]
movs r0, 0x80
strh r0, [r1, 0x10]
movs r0, 0x18
strh r0, [r1, 0x12]
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08083BC8: .4byte Task_PokecenterHeal
_08083BCC: .4byte gTasks
thumb_func_end FldEff_PokecenterHeal
thumb_func_start Task_PokecenterHeal
Task_PokecenterHeal: @ 8083BD0
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08083BF8 @ =gTasks
adds r1, r0
ldr r2, _08083BFC @ =sPokecenterHealTaskCBTable
movs r3, 0x8
ldrsh r0, [r1, r3]
lsls r0, 2
adds r0, r2
ldr r2, [r0]
adds r0, r1, 0
bl _call_via_r2
pop {r0}
bx r0
.align 2, 0
_08083BF8: .4byte gTasks
_08083BFC: .4byte sPokecenterHealTaskCBTable
thumb_func_end Task_PokecenterHeal
thumb_func_start PokecenterHealEffect_0
PokecenterHealEffect_0: @ 8083C00
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r1, 0xA
ldrsh r0, [r4, r1]
movs r2, 0xC
ldrsh r1, [r4, r2]
movs r3, 0xE
ldrsh r2, [r4, r3]
movs r3, 0x1
bl CreatePokeballGlowSprite
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x14]
movs r1, 0x10
ldrsh r0, [r4, r1]
movs r2, 0x12
ldrsh r1, [r4, r2]
bl PokecenterHealEffectHelper
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x16]
pop {r4}
pop {r0}
bx r0
thumb_func_end PokecenterHealEffect_0
thumb_func_start PokecenterHealEffect_1
PokecenterHealEffect_1: @ 8083C3C
push {r4,lr}
adds r2, r0, 0
ldr r3, _08083C74 @ =gSprites
movs r1, 0x14
ldrsh r0, [r2, r1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
movs r4, 0x2E
ldrsh r0, [r1, r4]
cmp r0, 0x1
ble _08083C6E
movs r0, 0x16
ldrsh r1, [r2, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldrh r1, [r0, 0x2E]
adds r1, 0x1
strh r1, [r0, 0x2E]
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
_08083C6E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08083C74: .4byte gSprites
thumb_func_end PokecenterHealEffect_1
thumb_func_start PokecenterHealEffect_2
PokecenterHealEffect_2: @ 8083C78
push {lr}
adds r3, r0, 0
ldr r2, _08083C9C @ =gSprites
movs r0, 0x14
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2E
ldrsh r0, [r0, r1]
cmp r0, 0x4
ble _08083C98
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
_08083C98:
pop {r0}
bx r0
.align 2, 0
_08083C9C: .4byte gSprites
thumb_func_end PokecenterHealEffect_2
thumb_func_start PokecenterHealEffect_3
PokecenterHealEffect_3: @ 8083CA0
push {lr}
ldr r2, _08083CD8 @ =gSprites
movs r3, 0x14
ldrsh r1, [r0, r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r2
movs r2, 0x2E
ldrsh r0, [r1, r2]
cmp r0, 0x6
ble _08083CD2
adds r0, r1, 0
bl DestroySprite
movs r0, 0x19
bl FieldEffectActiveListRemove
ldr r0, _08083CDC @ =Task_PokecenterHeal
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08083CD2:
pop {r0}
bx r0
.align 2, 0
_08083CD8: .4byte gSprites
_08083CDC: .4byte Task_PokecenterHeal
thumb_func_end PokecenterHealEffect_3
thumb_func_start FldEff_HallOfFameRecord
FldEff_HallOfFameRecord: @ 8083CE0
push {r4,lr}
bl CalculatePlayerPartyCount
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _08083D14 @ =Task_HallOfFameRecord
movs r1, 0xFF
bl CreateTask
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08083D18 @ =gTasks
adds r1, r0
strh r4, [r1, 0xA]
movs r0, 0x75
strh r0, [r1, 0xC]
movs r0, 0x3C
strh r0, [r1, 0xE]
movs r0, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08083D14: .4byte Task_HallOfFameRecord
_08083D18: .4byte gTasks
thumb_func_end FldEff_HallOfFameRecord
thumb_func_start Task_HallOfFameRecord
Task_HallOfFameRecord: @ 8083D1C
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, _08083D44 @ =gTasks
adds r1, r0
ldr r2, _08083D48 @ =sHallOfFameRecordTaskCBTable
movs r3, 0x8
ldrsh r0, [r1, r3]
lsls r0, 2
adds r0, r2
ldr r2, [r0]
adds r0, r1, 0
bl _call_via_r2
pop {r0}
bx r0
.align 2, 0
_08083D44: .4byte gTasks
_08083D48: .4byte sHallOfFameRecordTaskCBTable
thumb_func_end Task_HallOfFameRecord
thumb_func_start HallOfFameRecordEffect_0
HallOfFameRecordEffect_0: @ 8083D4C
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
movs r1, 0xA
ldrsh r0, [r4, r1]
movs r2, 0xC
ldrsh r1, [r4, r2]
movs r3, 0xE
ldrsh r2, [r4, r3]
movs r3, 0
bl CreatePokeballGlowSprite
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x14]
pop {r4}
pop {r0}
bx r0
thumb_func_end HallOfFameRecordEffect_0
thumb_func_start HallOfFameRecordEffect_1
HallOfFameRecordEffect_1: @ 8083D74
push {r4,lr}
adds r4, r0, 0
ldr r2, _08083DA8 @ =gSprites
movs r0, 0x14
ldrsh r1, [r4, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2E
ldrsh r0, [r0, r1]
cmp r0, 0x1
ble _08083DA2
movs r0, 0x78
movs r1, 0x19
bl HallOfFameRecordEffectHelper
ldrh r0, [r4, 0x26]
adds r0, 0x1
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
_08083DA2:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08083DA8: .4byte gSprites
thumb_func_end HallOfFameRecordEffect_1
thumb_func_start HallOfFameRecordEffect_2
HallOfFameRecordEffect_2: @ 8083DAC
push {lr}
adds r3, r0, 0
ldr r2, _08083DD0 @ =gSprites
movs r0, 0x14
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2E
ldrsh r0, [r0, r1]
cmp r0, 0x4
ble _08083DCC
ldrh r0, [r3, 0x8]
adds r0, 0x1
strh r0, [r3, 0x8]
_08083DCC:
pop {r0}
bx r0
.align 2, 0
_08083DD0: .4byte gSprites
thumb_func_end HallOfFameRecordEffect_2
thumb_func_start HallOfFameRecordEffect_3
HallOfFameRecordEffect_3: @ 8083DD4
push {lr}
ldr r2, _08083E0C @ =gSprites
movs r3, 0x14
ldrsh r1, [r0, r3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r2
movs r2, 0x2E
ldrsh r0, [r1, r2]
cmp r0, 0x6
ble _08083E06
adds r0, r1, 0
bl DestroySprite
movs r0, 0x3E
bl FieldEffectActiveListRemove
ldr r0, _08083E10 @ =Task_HallOfFameRecord
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
bl DestroyTask
_08083E06:
pop {r0}
bx r0
.align 2, 0
_08083E0C: .4byte gSprites
_08083E10: .4byte Task_HallOfFameRecord
thumb_func_end HallOfFameRecordEffect_3
thumb_func_start CreatePokeballGlowSprite
CreatePokeballGlowSprite: @ 8083E14
push {r4-r6,lr}
mov r6, r8
push {r6}
mov r8, r0
adds r4, r1, 0
adds r5, r2, 0
adds r6, r3, 0
lsls r0, 16
lsrs r0, 16
mov r8, r0
lsls r4, 16
lsrs r4, 16
lsls r5, 16
lsrs r5, 16
lsls r6, 16
lsrs r6, 16
ldr r0, _08083E68 @ =SpriteCB_PokeballGlowEffect
bl CreateInvisibleSprite
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
ldr r2, _08083E6C @ =gSprites
adds r1, r2
strh r4, [r1, 0x24]
strh r5, [r1, 0x26]
adds r3, r1, 0
adds r3, 0x43
movs r2, 0xFF
strb r2, [r3]
strh r6, [r1, 0x38]
mov r2, r8
strh r2, [r1, 0x3A]
strh r0, [r1, 0x3C]
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08083E68: .4byte SpriteCB_PokeballGlowEffect
_08083E6C: .4byte gSprites
thumb_func_end CreatePokeballGlowSprite
thumb_func_start SpriteCB_PokeballGlowEffect
SpriteCB_PokeballGlowEffect: @ 8083E70
push {lr}
ldr r2, _08083E88 @ =sPokeballGlowSpriteCBTable
movs r3, 0x2E
ldrsh r1, [r0, r3]
lsls r1, 2
adds r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_08083E88: .4byte sPokeballGlowSpriteCBTable
thumb_func_end SpriteCB_PokeballGlowEffect
thumb_func_start PokeballGlowEffect_0
PokeballGlowEffect_0: @ 8083E8C
push {r4,lr}
adds r4, r0, 0
ldrh r1, [r4, 0x30]
movs r2, 0x30
ldrsh r0, [r4, r2]
cmp r0, 0
beq _08083EA4
subs r0, r1, 0x1
strh r0, [r4, 0x30]
lsls r0, 16
cmp r0, 0
bne _08083F00
_08083EA4:
movs r0, 0x19
strh r0, [r4, 0x30]
ldr r0, _08083F18 @ =gUnknown_83CBF88
ldr r1, _08083F1C @ =gUnknown_83CC010
movs r2, 0x32
ldrsh r3, [r4, r2]
lsls r3, 2
adds r3, r1
ldrh r1, [r4, 0x24]
ldrh r2, [r3]
adds r1, r2
lsls r1, 16
asrs r1, 16
ldrh r2, [r4, 0x26]
ldrh r3, [r3, 0x2]
adds r2, r3
lsls r2, 16
asrs r2, 16
movs r3, 0xFF
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
ldr r2, _08083F20 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r2, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
movs r2, 0x8
orrs r0, r2
strb r0, [r1, 0x5]
ldrh r0, [r4, 0x3C]
strh r0, [r1, 0x2E]
ldrh r0, [r4, 0x32]
adds r0, 0x1
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x3A]
subs r0, 0x1
strh r0, [r4, 0x3A]
movs r0, 0x17
bl PlaySE
_08083F00:
movs r1, 0x3A
ldrsh r0, [r4, r1]
cmp r0, 0
bne _08083F12
movs r0, 0x20
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
_08083F12:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08083F18: .4byte gUnknown_83CBF88
_08083F1C: .4byte gUnknown_83CC010
_08083F20: .4byte gSprites
thumb_func_end PokeballGlowEffect_0
thumb_func_start PokeballGlowEffect_1
PokeballGlowEffect_1: @ 8083F24
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x30]
subs r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
asrs r2, r0, 16
cmp r2, 0
bne _08083F54
ldrh r0, [r1, 0x2E]
adds r0, 0x1
strh r0, [r1, 0x2E]
movs r0, 0x8
strh r0, [r1, 0x30]
strh r2, [r1, 0x32]
strh r2, [r1, 0x34]
movs r2, 0x38
ldrsh r0, [r1, r2]
cmp r0, 0
beq _08083F54
movs r0, 0x80
lsls r0, 1
bl PlayFanfare
_08083F54:
pop {r0}
bx r0
thumb_func_end PokeballGlowEffect_1
thumb_func_start PokeballGlowEffect_2
PokeballGlowEffect_2: @ 8083F58
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r7, r0, 0
ldrh r0, [r7, 0x30]
subs r0, 0x1
strh r0, [r7, 0x30]
lsls r0, 16
cmp r0, 0
bne _08083F88
movs r0, 0x8
strh r0, [r7, 0x30]
ldrh r0, [r7, 0x32]
adds r0, 0x1
movs r1, 0x3
ands r0, r1
strh r0, [r7, 0x32]
cmp r0, 0
bne _08083F88
ldrh r0, [r7, 0x34]
adds r0, 0x1
strh r0, [r7, 0x34]
_08083F88:
ldrh r4, [r7, 0x32]
adds r4, 0x3
movs r0, 0x3
mov r8, r0
mov r1, r8
ands r4, r1
ldr r3, _08084080 @ =0x00001007
mov r10, r3
mov r0, r10
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x84
lsls r1, 17
adds r0, r1
lsrs r0, 16
ldr r6, _08084084 @ =gUnknown_83CC028
adds r1, r4, r6
ldrb r1, [r1]
ldr r5, _08084088 @ =gUnknown_83CC02C
adds r2, r4, r5
ldrb r2, [r2]
ldr r3, _0808408C @ =gUnknown_83CC030
mov r9, r3
add r4, r9
ldrb r3, [r4]
bl MultiplyInvertedPaletteRGBComponents
ldrh r4, [r7, 0x32]
adds r4, 0x2
mov r0, r8
ands r4, r0
mov r0, r10
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x83
lsls r1, 17
adds r0, r1
lsrs r0, 16
adds r1, r4, r6
ldrb r1, [r1]
adds r2, r4, r5
ldrb r2, [r2]
add r4, r9
ldrb r3, [r4]
bl MultiplyInvertedPaletteRGBComponents
ldrh r4, [r7, 0x32]
adds r4, 0x1
mov r3, r8
ands r4, r3
mov r0, r10
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x81
lsls r1, 17
adds r0, r1
lsrs r0, 16
adds r1, r4, r6
ldrb r1, [r1]
adds r2, r4, r5
ldrb r2, [r2]
add r4, r9
ldrb r3, [r4]
bl MultiplyInvertedPaletteRGBComponents
ldrh r4, [r7, 0x32]
lsls r4, 24
lsrs r4, 24
mov r0, r10
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
ldr r3, _08084090 @ =0x01050000
adds r0, r3
lsrs r0, 16
adds r6, r4, r6
ldrb r6, [r6]
adds r5, r4, r5
ldrb r5, [r5]
add r4, r9
ldrb r4, [r4]
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
mov r0, r10
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
ldr r1, _08084094 @ =0x01030000
adds r0, r1
lsrs r0, 16
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
movs r3, 0x34
ldrsh r0, [r7, r3]
cmp r0, 0x2
ble _08084072
ldrh r0, [r7, 0x2E]
adds r0, 0x1
movs r1, 0
strh r0, [r7, 0x2E]
movs r0, 0x8
strh r0, [r7, 0x30]
strh r1, [r7, 0x32]
_08084072:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08084080: .4byte 0x00001007
_08084084: .4byte gUnknown_83CC028
_08084088: .4byte gUnknown_83CC02C
_0808408C: .4byte gUnknown_83CC030
_08084090: .4byte 0x01050000
_08084094: .4byte 0x01030000
thumb_func_end PokeballGlowEffect_2
thumb_func_start PokeballGlowEffect_3
PokeballGlowEffect_3: @ 8084098
push {r4-r6,lr}
mov r6, r8
push {r6}
adds r2, r0, 0
ldrh r0, [r2, 0x30]
subs r0, 0x1
strh r0, [r2, 0x30]
lsls r0, 16
cmp r0, 0
bne _080840C8
movs r0, 0x8
strh r0, [r2, 0x30]
ldrh r0, [r2, 0x32]
adds r0, 0x1
movs r1, 0x3
ands r0, r1
strh r0, [r2, 0x32]
cmp r0, 0x3
bne _080840C8
ldrh r0, [r2, 0x2E]
adds r0, 0x1
strh r0, [r2, 0x2E]
movs r0, 0x1E
strh r0, [r2, 0x30]
_080840C8:
ldrh r4, [r2, 0x32]
lsls r4, 24
lsrs r4, 24
ldr r0, _08084174 @ =0x00001007
mov r8, r0
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x84
lsls r1, 17
adds r0, r1
lsrs r0, 16
ldr r1, _08084178 @ =gUnknown_83CC028
adds r1, r4, r1
ldrb r6, [r1]
ldr r1, _0808417C @ =gUnknown_83CC02C
adds r1, r4, r1
ldrb r5, [r1]
ldr r1, _08084180 @ =gUnknown_83CC030
adds r4, r1
ldrb r4, [r4]
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
mov r0, r8
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x83
lsls r1, 17
adds r0, r1
lsrs r0, 16
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
mov r0, r8
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
movs r1, 0x81
lsls r1, 17
adds r0, r1
lsrs r0, 16
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
mov r0, r8
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
ldr r1, _08084184 @ =0x01050000
adds r0, r1
lsrs r0, 16
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
mov r0, r8
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 4
ldr r1, _08084188 @ =0x01030000
adds r0, r1
lsrs r0, 16
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl MultiplyInvertedPaletteRGBComponents
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08084174: .4byte 0x00001007
_08084178: .4byte gUnknown_83CC028
_0808417C: .4byte gUnknown_83CC02C
_08084180: .4byte gUnknown_83CC030
_08084184: .4byte 0x01050000
_08084188: .4byte 0x01030000
thumb_func_end PokeballGlowEffect_3
thumb_func_start PokeballGlowEffect_4
PokeballGlowEffect_4: @ 808418C
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x30]
subs r0, 0x1
strh r0, [r1, 0x30]
lsls r0, 16
cmp r0, 0
bne _080841A2
ldrh r0, [r1, 0x2E]
adds r0, 0x1
strh r0, [r1, 0x2E]
_080841A2:
pop {r0}
bx r0
thumb_func_end PokeballGlowEffect_4
thumb_func_start PokeballGlowEffect_5
PokeballGlowEffect_5: @ 80841A8
ldrh r1, [r0, 0x2E]
adds r1, 0x1
strh r1, [r0, 0x2E]
bx lr
thumb_func_end PokeballGlowEffect_5
thumb_func_start PokeballGlowEffect_6
PokeballGlowEffect_6: @ 80841B0
push {r4,lr}
adds r4, r0, 0
movs r1, 0x38
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080841C6
bl IsFanfareTaskInactive
lsls r0, 24
cmp r0, 0
beq _080841CC
_080841C6:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
_080841CC:
pop {r4}
pop {r0}
bx r0
thumb_func_end PokeballGlowEffect_6
thumb_func_start PokeballGlowEffect_7
PokeballGlowEffect_7: @ 80841D4
bx lr
thumb_func_end PokeballGlowEffect_7
thumb_func_start SpriteCB_PokeballGlow
SpriteCB_PokeballGlow: @ 80841D8
push {lr}
adds r3, r0, 0
ldr r2, _080841FC @ =gSprites
movs r0, 0x2E
ldrsh r1, [r3, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2E
ldrsh r0, [r0, r1]
cmp r0, 0x4
ble _080841F8
adds r0, r3, 0
bl FieldEffectFreeGraphicsResources
_080841F8:
pop {r0}
bx r0
.align 2, 0
_080841FC: .4byte gSprites
thumb_func_end SpriteCB_PokeballGlow
thumb_func_start PokecenterHealEffectHelper
PokecenterHealEffectHelper: @ 8084200
push {lr}
adds r3, r0, 0
adds r2, r1, 0
ldr r0, _08084244 @ =gUnknown_83CBFA0
lsls r3, 16
asrs r3, 16
lsls r2, 16
asrs r2, 16
adds r1, r3, 0
movs r3, 0
bl CreateSpriteAtEnd
lsls r0, 24
lsrs r0, 24
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r1, _08084248 @ =gSprites
adds r2, r1
ldrb r3, [r2, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r3
movs r3, 0x8
orrs r1, r3
strb r1, [r2, 0x5]
adds r2, 0x3E
ldrb r1, [r2]
movs r3, 0x4
orrs r1, r3
strb r1, [r2]
pop {r1}
bx r1
.align 2, 0
_08084244: .4byte gUnknown_83CBFA0
_08084248: .4byte gSprites
thumb_func_end PokecenterHealEffectHelper
thumb_func_start SpriteCB_PokecenterMonitor
SpriteCB_PokecenterMonitor: @ 808424C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
beq _08084270
movs r0, 0
strh r0, [r4, 0x2E]
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
subs r0, 0x5
ands r0, r1
strb r0, [r2]
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
_08084270:
adds r0, r4, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08084284
adds r0, r4, 0
bl FieldEffectFreeGraphicsResources
_08084284:
pop {r4}
pop {r0}
bx r0
thumb_func_end SpriteCB_PokecenterMonitor
thumb_func_start HallOfFameRecordEffectHelper
HallOfFameRecordEffectHelper: @ 808428C
push {lr}
adds r3, r0, 0
adds r2, r1, 0
ldr r0, _080842A8 @ =gUnknown_83CBFB8
lsls r3, 16
asrs r3, 16
lsls r2, 16
asrs r2, 16
adds r1, r3, 0
movs r3, 0
bl CreateSpriteAtEnd
pop {r0}
bx r0
.align 2, 0
_080842A8: .4byte gUnknown_83CBFB8
thumb_func_end HallOfFameRecordEffectHelper
thumb_func_start SpriteCB_HallOfFameMonitor
SpriteCB_HallOfFameMonitor: @ 80842AC
push {lr}
adds r2, r0, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080842C2
adds r0, r2, 0
bl FieldEffectFreeGraphicsResources
_080842C2:
pop {r0}
bx r0
thumb_func_end SpriteCB_HallOfFameMonitor
thumb_func_start ReturnToFieldFromFlyMapSelect
ReturnToFieldFromFlyMapSelect: @ 80842C8
push {lr}
-130
View File
@@ -6,136 +6,6 @@
.section .rodata
.align 2
gUnknown_83CBE9C:: @ 83CBE9C sprite_palette
obj_pal gUnknown_83CAFB0, 4103
gUnknown_83CBEA4:: @ 83CBEA4 sprite_palette
obj_pal gUnknown_83CB3D0, 4112
gOamData_83CBEAC:: @ 83CBEAC oam_data
.4byte 0x80004000, 0x00000000
gUnknown_83CBEB4:: @ 83CBEB4 sprite_frames
obj_frame_tiles gUnknown_83CAF90, 0x0020
gUnknown_83CBEBC:: @ 83CBEBC sprite_frames
obj_frame_tiles gUnknown_83CAFD0 + 0x000, 0x0100
obj_frame_tiles gUnknown_83CAFD0 + 0x100, 0x0100
obj_frame_tiles gUnknown_83CAFD0 + 0x200, 0x0100
obj_frame_tiles gUnknown_83CAFD0 + 0x300, 0x0100
gUnknown_83CBEDC:: @ 83CBEDC sprite_frames
obj_frame_tiles gUnknown_83CB3F0 + 0x000, 0x0080
obj_frame_tiles gUnknown_83CB3F0 + 0x080, 0x0080
obj_frame_tiles gUnknown_83CB3F0 + 0x100, 0x0080
obj_frame_tiles gUnknown_83CB3F0 + 0x180, 0x0080
gUnknown_83CBEFC:: @ 83CBEFC unknown
.byte 0xf4, 0xf8, 0x01, 0x80
.byte 0x04, 0xf8, 0x20, 0x80
.byte 0xf4, 0x00, 0x31, 0x80
.byte 0x04, 0x00, 0x50, 0x80
.byte 0x04, 0x00, 0x00, 0x00
gUnknown_83CBF10:: @ 83CBF10 dataptr
.4byte gUnknown_83CBEFC
gUnknown_83CBF14:: @ 83CBF14 unknown
.byte 0xe0, 0xf8, 0x05, 0x80
.byte 0x00, 0xf8, 0x45, 0x80
.byte 0xe0, 0x00, 0x85, 0x80
.byte 0x00, 0x00, 0xc5, 0x80
.byte 0x04, 0x00, 0x00, 0x00
gUnknown_83CBF28:: @ 83CBE28 dataptr
.4byte gUnknown_83CBF14
gUnknown_83CBF2C:: @ 83CBF2C animcmd
obj_image_anim_frame 0x0000, 1
obj_image_anim_jump 0
gUnknown_83CBF34:: @ 83CBF34 animcmd
obj_image_anim_frame 0x0001, 5
obj_image_anim_frame 0x0002, 5
obj_image_anim_frame 0x0003, 7
obj_image_anim_frame 0x0002, 5
obj_image_anim_frame 0x0001, 5
obj_image_anim_frame 0x0000, 5
obj_image_anim_loop 3
obj_image_anim_end
.align 2
gUnknown_83CBF54:: @ 83CBF54 dataptr
.4byte gUnknown_83CBF2C
.4byte gUnknown_83CBF34
gUnknown_83CBF5C:: @ 83CBF5C animcmd
obj_image_anim_frame 0x0003, 8
obj_image_anim_frame 0x0002, 8
obj_image_anim_frame 0x0001, 8
obj_image_anim_frame 0x0000, 8
obj_image_anim_frame 0x0001, 8
obj_image_anim_frame 0x0002, 8
obj_image_anim_loop 2
obj_image_anim_frame 0x0001, 8
obj_image_anim_frame 0x0000, 8
obj_image_anim_end
.align 2
gUnknown_83CBF84:: @ 83CBF84 dataptr
.4byte gUnknown_83CBF5C
gUnknown_83CBF88:: @ 83CBF88 spr_template
spr_template 65535, 4103, gOamData_83CBE58, gUnknown_83CBF54, gUnknown_83CBEB4, gDummySpriteAffineAnimTable, SpriteCB_PokeballGlow
gUnknown_83CBFA0:: @ 83CBFA0 spr_template
spr_template 65535, 4103, gOamData_83CBEAC, gUnknown_83CBF54, gUnknown_83CBEBC, gDummySpriteAffineAnimTable, SpriteCB_PokecenterMonitor
gUnknown_83CBFB8:: @ 83CBFB8 spr_template
spr_template 65535, 4112, gOamData_83CBE60, gUnknown_83CBF84, gUnknown_83CBEDC, gDummySpriteAffineAnimTable, SpriteCB_HallOfFameMonitor
.align 2
sPokecenterHealTaskCBTable:: @ 83CBFD0 dataptr
.4byte PokecenterHealEffect_0
.4byte PokecenterHealEffect_1
.4byte PokecenterHealEffect_2
.4byte PokecenterHealEffect_3
.align 2
sHallOfFameRecordTaskCBTable:: @ 83CBFE0 dataptr
.4byte HallOfFameRecordEffect_0
.4byte HallOfFameRecordEffect_1
.4byte HallOfFameRecordEffect_2
.4byte HallOfFameRecordEffect_3
.align 2
sPokeballGlowSpriteCBTable:: @ 83CBFF0 dataptr
.4byte PokeballGlowEffect_0
.4byte PokeballGlowEffect_1
.4byte PokeballGlowEffect_2
.4byte PokeballGlowEffect_3
.4byte PokeballGlowEffect_4
.4byte PokeballGlowEffect_5
.4byte PokeballGlowEffect_6
.4byte PokeballGlowEffect_7
gUnknown_83CC010:: @ 83CC010 data16
.2byte 0, 0
.2byte 6, 0
.2byte 0, 4
.2byte 6, 4
.2byte 0, 8
.2byte 6, 8
gUnknown_83CC028:: @ 83CC028 data8
.byte 0x10, 0x0c, 0x08, 0x00
gUnknown_83CC02C:: @ 83CC02C data8
.byte 0x10, 0x0c, 0x08, 0x00
gUnknown_83CC030:: @ 83CC030 data8
.byte 0x00, 0x00, 0x00, 0x00
.align 2
sFallWarpEffectCBPtrs:: @ 83CC034 dataptr
.4byte FallWarpEffect_1
+531
View File
@@ -7,8 +7,11 @@
#include "field_weather.h"
#include "overworld.h"
#include "quest_log.h"
#include "task.h"
#include "trainer_pokemon_sprites.h"
#include "constants/songs.h"
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
#define FIELD_EFFECT_COUNT 32
static u8 sFieldEffectActiveList[FIELD_EFFECT_COUNT];
@@ -28,6 +31,10 @@ void FieldEffectScript_LoadPal(const u8 **script);
void FieldEffectScript_CallNative(const u8 **script, u32 *result);
void FieldEffectFreeTilesIfUnused(u16 tilesTag);
void FieldEffectFreePaletteIfUnused(u8 paletteNum);
void Task_PokecenterHeal(u8 taskId);
void SpriteCB_PokeballGlow(struct Sprite * sprite);
void SpriteCB_PokecenterMonitor(struct Sprite * sprite);
void SpriteCB_HallOfFameMonitor(struct Sprite * sprite);
const u16 sNewGameOakObjectSpriteTiles[] = INCBIN_U16("graphics/field_effects/unk_83CA770.4bpp");
const u16 sNewGameOakObjectPals[] = INCBIN_U16("graphics/field_effects/unk_83CAF70.gbapal");
@@ -130,6 +137,187 @@ const struct SpriteTemplate gNewGameOakObjectTemplate = {
.callback = SpriteCallbackDummy
};
const struct SpritePalette gUnknown_83CBE9C = {
gUnknown_83CAFB0, 4103
};
const struct SpritePalette gUnknown_83CBEA4 = {
gUnknown_83CB3D0, 4112
};
const struct OamData gOamData_83CBEAC = {
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = FALSE,
.bpp = ST_OAM_4BPP,
.shape = SPRITE_SHAPE(32x16),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(32x16),
.tileNum = 0x000,
.priority = 0,
.paletteNum = 0x0,
.affineParam = 0
};
const struct SpriteFrameImage gUnknown_83CBEB4[] = {
{gUnknown_83CAF90, 0x20}
};
const struct SpriteFrameImage gUnknown_83CBEBC[] = {
{gUnknown_83CAFD0 + 0x000, 0x100},
{gUnknown_83CAFD0 + 0x080, 0x100},
{gUnknown_83CAFD0 + 0x100, 0x100},
{gUnknown_83CAFD0 + 0x180, 0x100}
};
const struct SpriteFrameImage gUnknown_83CBEDC[] = {
{gUnknown_83CB3F0 + 0x00, 0x80},
{gUnknown_83CB3F0 + 0x40, 0x80},
{gUnknown_83CB3F0 + 0x80, 0x80},
{gUnknown_83CB3F0 + 0xC0, 0x80}
};
const struct Subsprite gUnknown_83CBEFC[] =
{
{
.x = -12,
.y = -8,
.shape = SPRITE_SHAPE(16x8),
.size = SPRITE_SIZE(16x8),
.tileOffset = 0,
.priority = 2
}, {
.x = 4,
.y = -8,
.shape = SPRITE_SHAPE(8x8),
.size = SPRITE_SIZE(8x8),
.tileOffset = 2,
.priority = 2
}, {
.x = -12,
.y = 0,
.shape = SPRITE_SHAPE(16x8),
.size = SPRITE_SIZE(16x8),
.tileOffset = 3,
.priority = 2
}, {
.x = 4,
.y = 0,
.shape = SPRITE_SHAPE(8x8),
.size = SPRITE_SIZE(8x8),
.tileOffset = 5,
.priority = 2
}
};
const struct SubspriteTable gUnknown_83CBF0C = subsprite_table(gUnknown_83CBEFC);
const struct Subsprite gUnknown_83CBF14[] =
{
{
.x = -32,
.y = -8,
.shape = SPRITE_SHAPE(32x8),
.size = SPRITE_SIZE(32x8),
.tileOffset = 0,
.priority = 2
}, {
.x = 0,
.y = -8,
.shape = SPRITE_SHAPE(32x8),
.size = SPRITE_SIZE(32x8),
.tileOffset = 4,
.priority = 2
}, {
.x = -32,
.y = 0,
.shape = SPRITE_SHAPE(32x8),
.size = SPRITE_SIZE(32x8),
.tileOffset = 8,
.priority = 2
}, {
.x = 0,
.y = 0,
.shape = SPRITE_SHAPE(32x8),
.size = SPRITE_SIZE(32x8),
.tileOffset = 12,
.priority = 2
}
};
const struct SubspriteTable gUnknown_83CBF24 = subsprite_table(gUnknown_83CBF14);
const union AnimCmd gUnknown_83CBF2C[] = {
ANIMCMD_FRAME(0, 1),
ANIMCMD_JUMP(0)
};
const union AnimCmd gUnknown_83CBF34[] = {
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(2, 5),
ANIMCMD_FRAME(3, 7),
ANIMCMD_FRAME(2, 5),
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(0, 5),
ANIMCMD_LOOP(3),
ANIMCMD_END
};
const union AnimCmd *const gUnknown_83CBF54[] = {
gUnknown_83CBF2C,
gUnknown_83CBF34
};
const union AnimCmd gUnknown_83CBF5C[] = {
ANIMCMD_FRAME(3, 8),
ANIMCMD_FRAME(2, 8),
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(2, 8),
ANIMCMD_LOOP(2),
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
ANIMCMD_END
};
const union AnimCmd *const gUnknown_83CBF84[] = {
gUnknown_83CBF5C
};
const struct SpriteTemplate gUnknown_83CBF88 = {
.tileTag = 65535,
.paletteTag = 4103,
.oam = &gOamData_83CBE58,
.anims = gUnknown_83CBF54,
.images = gUnknown_83CBEB4,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_PokeballGlow
};
const struct SpriteTemplate gUnknown_83CBFA0 = {
.tileTag = 65535,
.paletteTag = 4103,
.oam = &gOamData_83CBEAC,
.anims = gUnknown_83CBF54,
.images = gUnknown_83CBEBC,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_PokecenterMonitor
};
const struct SpriteTemplate gUnknown_83CBFB8 = {
.tileTag = 65535,
.paletteTag = 4112,
.oam = &gOamData_83CBE60,
.anims = gUnknown_83CBF84,
.images = gUnknown_83CBEDC,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_HallOfFameMonitor
};
u32 FieldEffectStart(u8 fldeff)
{
const u8 *script;
@@ -451,3 +639,346 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
outPal |= curBlue << 10;
gPlttBufferFaded[i] = outPal;
}
void PokecenterHealEffect_0(struct Task * task);
void PokecenterHealEffect_1(struct Task * task);
void PokecenterHealEffect_2(struct Task * task);
void PokecenterHealEffect_3(struct Task * task);
void HallOfFameRecordEffect_0(struct Task * task);
void HallOfFameRecordEffect_1(struct Task * task);
void HallOfFameRecordEffect_2(struct Task * task);
void HallOfFameRecordEffect_3(struct Task * task);
void Task_HallOfFameRecord(u8 taskId);
u8 CreatePokeballGlowSprite(s16 duration, s16 x, s16 y, bool16 fanfare);
void SpriteCB_PokeballGlowEffect(struct Sprite * sprite);
void PokeballGlowEffect_0(struct Sprite * sprite);
void PokeballGlowEffect_1(struct Sprite * sprite);
void PokeballGlowEffect_2(struct Sprite * sprite);
void PokeballGlowEffect_3(struct Sprite * sprite);
void PokeballGlowEffect_4(struct Sprite * sprite);
void PokeballGlowEffect_5(struct Sprite * sprite);
void PokeballGlowEffect_6(struct Sprite * sprite);
void PokeballGlowEffect_7(struct Sprite * sprite);
u8 PokecenterHealEffectHelper(s32 x, s32 y);
void HallOfFameRecordEffectHelper(s32 x, s32 y);
void (*const sPokecenterHealTaskCBTable[])(struct Task *) = {
PokecenterHealEffect_0,
PokecenterHealEffect_1,
PokecenterHealEffect_2,
PokecenterHealEffect_3
};
void (*const sHallOfFameRecordTaskCBTable[])(struct Task *) = {
HallOfFameRecordEffect_0,
HallOfFameRecordEffect_1,
HallOfFameRecordEffect_2,
HallOfFameRecordEffect_3
};
void (*const sPokeballGlowSpriteCBTable[])(struct Sprite *) = {
PokeballGlowEffect_0,
PokeballGlowEffect_1,
PokeballGlowEffect_2,
PokeballGlowEffect_3,
PokeballGlowEffect_4,
PokeballGlowEffect_5,
PokeballGlowEffect_6,
PokeballGlowEffect_7
};
bool8 FldEff_PokecenterHeal(void)
{
u8 nPokemon;
struct Task *task;
nPokemon = CalculatePlayerPartyCount();
task = &gTasks[CreateTask(Task_PokecenterHeal, 0xff)];
task->data[1] = nPokemon;
task->data[2] = 0x5d;
task->data[3] = 0x24;
task->data[4] = 0x80;
task->data[5] = 0x18;
return FALSE;
}
void Task_PokecenterHeal(u8 taskId)
{
struct Task * task = &gTasks[taskId];
sPokecenterHealTaskCBTable[task->data[0]](task);
}
void PokecenterHealEffect_0(struct Task *task)
{
task->data[0]++;
task->data[6] = CreatePokeballGlowSprite(task->data[1], task->data[2], task->data[3], TRUE);
task->data[7] = PokecenterHealEffectHelper(task->data[4], task->data[5]);
}
void PokecenterHealEffect_1(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 1)
{
gSprites[task->data[7]].data[0]++;
task->data[0]++;
}
}
void PokecenterHealEffect_2(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 4)
{
task->data[0]++;
}
}
void PokecenterHealEffect_3(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 6)
{
DestroySprite(&gSprites[task->data[6]]);
FieldEffectActiveListRemove(FLDEFF_POKECENTER_HEAL);
DestroyTask(FindTaskIdByFunc(Task_PokecenterHeal));
}
}
bool8 FldEff_HallOfFameRecord(void)
{
u8 nPokemon;
struct Task *task;
nPokemon = CalculatePlayerPartyCount();
task = &gTasks[CreateTask(Task_HallOfFameRecord, 0xff)];
task->data[1] = nPokemon;
task->data[2] = 0x75;
task->data[3] = 0x3C;
return FALSE;
}
void Task_HallOfFameRecord(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
sHallOfFameRecordTaskCBTable[task->data[0]](task);
}
void HallOfFameRecordEffect_0(struct Task *task)
{
u8 taskId;
task->data[0]++;
task->data[6] = CreatePokeballGlowSprite(task->data[1], task->data[2], task->data[3], FALSE);
}
void HallOfFameRecordEffect_1(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 1)
{
HallOfFameRecordEffectHelper(0x78, 0x19);
task->data[15]++; // was this ever initialized? is this ever used?
task->data[0]++;
}
}
void HallOfFameRecordEffect_2(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 4)
{
task->data[0]++;
}
}
void HallOfFameRecordEffect_3(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 6)
{
DestroySprite(&gSprites[task->data[6]]);
FieldEffectActiveListRemove(FLDEFF_HALL_OF_FAME_RECORD);
DestroyTask(FindTaskIdByFunc(Task_HallOfFameRecord));
}
}
u8 CreatePokeballGlowSprite(s16 duration, s16 x, s16 y, bool16 fanfare)
{
u8 spriteId;
struct Sprite *sprite;
spriteId = CreateInvisibleSprite(SpriteCB_PokeballGlowEffect);
sprite = &gSprites[spriteId];
sprite->pos2.x = x;
sprite->pos2.y = y;
sprite->subpriority = 0xFF;
sprite->data[5] = fanfare;
sprite->data[6] = duration;
sprite->data[7] = spriteId;
return spriteId;
}
void SpriteCB_PokeballGlowEffect(struct Sprite * sprite)
{
sPokeballGlowSpriteCBTable[sprite->data[0]](sprite);
}
const struct Coords16 gUnknown_83CC010[] = {
{0, 0},
{6, 0},
{0, 4},
{6, 4},
{0, 8},
{6, 8}
};
const u8 gUnknown_83CC028[] = {16, 12, 8, 0};
const u8 gUnknown_83CC02C[] = {16, 12, 8, 0};
const u8 gUnknown_83CC030[] = { 0, 0, 0, 0};
void PokeballGlowEffect_0(struct Sprite *sprite)
{
u8 endSpriteId;
if (sprite->data[1] == 0 || (--sprite->data[1]) == 0)
{
sprite->data[1] = 25;
endSpriteId = CreateSpriteAtEnd(&gUnknown_83CBF88, gUnknown_83CC010[sprite->data[2]].x + sprite->pos2.x, gUnknown_83CC010[sprite->data[2]].y + sprite->pos2.y, 0xFF);
gSprites[endSpriteId].oam.priority = 2;
gSprites[endSpriteId].data[0] = sprite->data[7];
sprite->data[2]++;
sprite->data[6]--;
PlaySE(SE_BOWA);
}
if (sprite->data[6] == 0)
{
sprite->data[1] = 32;
sprite->data[0]++;
}
}
void PokeballGlowEffect_1(struct Sprite *sprite)
{
if ((--sprite->data[1]) == 0)
{
sprite->data[0]++;
sprite->data[1] = 8;
sprite->data[2] = 0;
sprite->data[3] = 0;
if (sprite->data[5])
{
PlayFanfare(MUS_ME_ASA);
}
}
}
void PokeballGlowEffect_2(struct Sprite *sprite)
{
u8 phase;
if ((--sprite->data[1]) == 0)
{
sprite->data[1] = 8;
sprite->data[2]++;
sprite->data[2] &= 3;
if (sprite->data[2] == 0)
{
sprite->data[3]++;
}
}
phase = (sprite->data[2] + 3) & 3;
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x108, gUnknown_83CC028[phase], gUnknown_83CC02C[phase], gUnknown_83CC030[phase]);
phase = (sprite->data[2] + 2) & 3;
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x106, gUnknown_83CC028[phase], gUnknown_83CC02C[phase], gUnknown_83CC030[phase]);
phase = (sprite->data[2] + 1) & 3;
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x102, gUnknown_83CC028[phase], gUnknown_83CC02C[phase], gUnknown_83CC030[phase]);
phase = sprite->data[2];
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x105, gUnknown_83CC028[phase], gUnknown_83CC02C[phase], gUnknown_83CC030[phase]);
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x103, gUnknown_83CC028[phase], gUnknown_83CC02C[phase], gUnknown_83CC030[phase]);
if (sprite->data[3] > 2)
{
sprite->data[0]++;
sprite->data[1] = 8;
sprite->data[2] = 0;
}
}
void PokeballGlowEffect_3(struct Sprite *sprite)
{
u8 phase;
if ((--sprite->data[1]) == 0)
{
sprite->data[1] = 8;
sprite->data[2]++;
sprite->data[2] &= 3;
if (sprite->data[2] == 3)
{
sprite->data[0]++;
sprite->data[1] = 30;
}
}
phase = sprite->data[2];
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x108, gUnknown_83CC028[phase], gUnknown_83CC02C[phase], gUnknown_83CC030[phase]);
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x106, gUnknown_83CC028[phase], gUnknown_83CC02C[phase], gUnknown_83CC030[phase]);
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x102, gUnknown_83CC028[phase], gUnknown_83CC02C[phase], gUnknown_83CC030[phase]);
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x105, gUnknown_83CC028[phase], gUnknown_83CC02C[phase], gUnknown_83CC030[phase]);
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x103, gUnknown_83CC028[phase], gUnknown_83CC02C[phase], gUnknown_83CC030[phase]);
}
void PokeballGlowEffect_4(struct Sprite *sprite)
{
if ((--sprite->data[1]) == 0)
{
sprite->data[0]++;
}
}
void PokeballGlowEffect_5(struct Sprite *sprite)
{
sprite->data[0]++;
}
void PokeballGlowEffect_6(struct Sprite *sprite)
{
if (sprite->data[5] == 0 || IsFanfareTaskInactive())
{
sprite->data[0]++;
}
}
void PokeballGlowEffect_7(struct Sprite *sprite)
{
}
void SpriteCB_PokeballGlow(struct Sprite * sprite)
{
if (gSprites[sprite->data[0]].data[0] > 4)
FieldEffectFreeGraphicsResources(sprite);
}
u8 PokecenterHealEffectHelper(s32 x, s32 y)
{
u8 spriteId;
struct Sprite * sprite;
spriteId = CreateSpriteAtEnd(&gUnknown_83CBFA0, x, y, 0);
sprite = &gSprites[spriteId];
sprite->oam.priority = 2;
sprite->invisible = TRUE;
return spriteId;
}
void SpriteCB_PokecenterMonitor(struct Sprite * sprite)
{
if (sprite->data[0] != 0)
{
sprite->data[0] = 0;
sprite->invisible = FALSE;
StartSpriteAnim(sprite, 1);
}
if (sprite->animEnded)
FieldEffectFreeGraphicsResources(sprite);
}
void HallOfFameRecordEffectHelper(s32 x, s32 y)
{
CreateSpriteAtEnd(&gUnknown_83CBFB8, x, y, 0);
}
void SpriteCB_HallOfFameMonitor(struct Sprite * sprite)
{
if (sprite->animEnded)
FieldEffectFreeGraphicsResources(sprite);
}