Documentation of evolution_graphics
This commit is contained in:
@@ -1619,7 +1619,7 @@ _080CEBA6:
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x1
|
||||
strb r0, [r1, 0x3]
|
||||
bl sub_80F5EC0
|
||||
bl LaunchTask_PreEvoSparklesSet2
|
||||
strb r0, [r4, 0x2]
|
||||
bl _080CF528
|
||||
.align 2, 0
|
||||
@@ -1641,7 +1641,7 @@ _080CEBE6:
|
||||
ldr r1, [r0]
|
||||
ldrb r0, [r1]
|
||||
ldrb r1, [r1, 0x1]
|
||||
bl sub_80F62B4
|
||||
bl LaunchTask_PrePostEvoMonSprites
|
||||
strb r0, [r4, 0x2]
|
||||
mov r0, r8
|
||||
adds r1, r0, r7
|
||||
@@ -1685,7 +1685,7 @@ _080CEC38:
|
||||
_080CEC44: .4byte gUnknown_2039A20
|
||||
_080CEC48: .4byte gBattleCommunication
|
||||
_080CEC4C:
|
||||
bl sub_80F5F74
|
||||
bl LaunchTask_PostEvoSparklesSet1
|
||||
ldr r1, _080CEC60 @ =gBattleCommunication
|
||||
strb r0, [r1, 0x2]
|
||||
ldr r0, _080CEC64 @ =gTasks
|
||||
@@ -2953,7 +2953,7 @@ _080CF752:
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x1
|
||||
strb r0, [r1, 0x3]
|
||||
bl sub_80F5EC0
|
||||
bl LaunchTask_PreEvoSparklesSet2
|
||||
strb r0, [r4, 0x2]
|
||||
bl _080D003A
|
||||
.align 2, 0
|
||||
@@ -2975,7 +2975,7 @@ _080CF78E:
|
||||
ldr r1, [r0]
|
||||
ldrb r0, [r1]
|
||||
ldrb r1, [r1, 0x1]
|
||||
bl sub_80F62B4
|
||||
bl LaunchTask_PrePostEvoMonSprites
|
||||
strb r0, [r4, 0x2]
|
||||
adds r1, r7, r6
|
||||
lsls r1, 3
|
||||
@@ -3017,7 +3017,7 @@ _080CF7DC:
|
||||
_080CF7E4: .4byte gUnknown_2039A20
|
||||
_080CF7E8: .4byte gBattleCommunication
|
||||
_080CF7EC:
|
||||
bl sub_80F5F74
|
||||
bl LaunchTask_PostEvoSparklesSet1
|
||||
ldr r1, _080CF800 @ =gBattleCommunication
|
||||
strb r0, [r1, 0x2]
|
||||
ldr r0, _080CF804 @ =gTasks
|
||||
@@ -3045,7 +3045,7 @@ _080CF820:
|
||||
lsls r4, 3
|
||||
adds r4, r5
|
||||
ldrh r0, [r4, 0xC]
|
||||
bl sub_80F6190
|
||||
bl LaunchTask_PostEvoSparklesSet2Alt
|
||||
mov r1, r8
|
||||
strb r0, [r1, 0x2]
|
||||
b _080CFA90
|
||||
|
||||
+160
-144
@@ -9,63 +9,63 @@
|
||||
#include "evolution_graphics.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
void nullsub_85(struct Sprite * sprite);
|
||||
void sub_80F5DD0(u8 taskId);
|
||||
void EvoTask_CreatePreEvoSparkleSet1(u8 taskId);
|
||||
void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId);
|
||||
void sub_80F5ED8(u8 taskId);
|
||||
void EvoTask_CreatePreEvoSparklesSet2(u8 taskId);
|
||||
void sub_80F5F64(u8 taskId);
|
||||
void sub_80F5F8C(u8 taskId);
|
||||
void EvoTask_CreatePostEvoSparklesSet1(u8 taskId);
|
||||
void sub_80F6040(u8 taskId);
|
||||
void sub_80F6080(u8 taskId);
|
||||
void sub_80F60E4(u8 taskId);
|
||||
void sub_80F6170(u8 taskId);
|
||||
void sub_80F61C0(u8 taskId);
|
||||
void sub_80F6224(u8 taskId);
|
||||
void sub_80F6400(u8 taskId);
|
||||
void sub_80F6424(u8 taskId);
|
||||
void sub_80F6474(u8 taskId);
|
||||
void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId);
|
||||
void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId);
|
||||
static void SpriteCallbackDummy_EvoSparkles(struct Sprite * sprite);
|
||||
static void EvoTask_PreEvoSparkleSet1Init(u8 taskId);
|
||||
static void EvoTask_CreatePreEvoSparkleSet1(u8 taskId);
|
||||
static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId);
|
||||
static void EvoTask_PreEvoSparkleSet2Init(u8 taskId);
|
||||
static void EvoTask_CreatePreEvoSparklesSet2(u8 taskId);
|
||||
static void EvoTask_PreEvoSparkleSet2Teardown(u8 taskId);
|
||||
static void EvoTask_PostEvoSparklesSet1Init(u8 taskId);
|
||||
static void EvoTask_CreatePostEvoSparklesSet1(u8 taskId);
|
||||
static void EvoTask_PostEvoSparklesSet1Teardown(u8 taskId);
|
||||
static void EvoTask_PostEvoSparklesSet2Init(u8 taskId);
|
||||
static void EvoTask_CreatePostEvoSparklesSet2(u8 taskId);
|
||||
static void EvoTask_PostEvoSparklesSet2Teardown(u8 taskId);
|
||||
static void EvoTask_PostEvoSparklesSet2AltInit(u8 taskId);
|
||||
static void EvoTask_CreatePostEvoSparklesSet2Alt(u8 taskId);
|
||||
static void EvoTask_PrePostEvoMonSpritesInit(u8 taskId);
|
||||
static void EvoTask_ChooseNextEvoSpriteAnim(u8 taskId);
|
||||
static void EvoTask_ShrinkOrExpandEvoSprites(u8 taskId);
|
||||
static void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId);
|
||||
static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId);
|
||||
|
||||
static const u16 gUnknown_841EE84[] = INCBIN_U16("graphics/misc/evolution_sprite_841EEA4.gbapal");
|
||||
static const u32 gUnknown_841EEA4[] = INCBIN_U32("graphics/misc/evolution_sprite_841EEA4.4bpp.lz");
|
||||
static const u16 sEvolutionSparklesPalData[] = INCBIN_U16("graphics/misc/evolution_sprite_841EEA4.gbapal");
|
||||
static const u32 sEvolutionSparklesTileData[] = INCBIN_U32("graphics/misc/evolution_sprite_841EEA4.4bpp.lz");
|
||||
|
||||
static const struct CompressedSpriteSheet gUnknown_841EEC4[] = {
|
||||
{ gUnknown_841EEA4, 0x20, 1001 },
|
||||
static const struct CompressedSpriteSheet sSpriteSheet_EvolutionSparkles[] = {
|
||||
{ sEvolutionSparklesTileData, 0x20, 1001 },
|
||||
{}
|
||||
};
|
||||
static const struct SpritePalette gUnknown_841EED4[] = {
|
||||
{ gUnknown_841EE84, 1001 },
|
||||
static const struct SpritePalette sSpritePalette_EvolutionSparkles[] = {
|
||||
{ sEvolutionSparklesPalData, 1001 },
|
||||
{}
|
||||
};
|
||||
|
||||
static const struct OamData gOamData_841EEE4 = {
|
||||
static const struct OamData sOamData_EvolutionSparkles = {
|
||||
.y = 160,
|
||||
.priority = 1
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_841EEEC[] = {
|
||||
static const union AnimCmd sSpriteAnim_EvolutionSparkles_0[] = {
|
||||
ANIMCMD_FRAME(0, 8),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_841EEF4[] = {
|
||||
gUnknown_841EEEC
|
||||
static const union AnimCmd *const sSpriteAnimTable_EvolutionSparkles[] = {
|
||||
sSpriteAnim_EvolutionSparkles_0
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_841EEF8 = {
|
||||
static const struct SpriteTemplate sSpriteTemplate_EvolutionSparkles = {
|
||||
.tileTag = 1001,
|
||||
.paletteTag = 1001,
|
||||
.oam = &gOamData_841EEE4,
|
||||
.anims = gUnknown_841EEF4,
|
||||
.oam = &sOamData_EvolutionSparkles,
|
||||
.anims = sSpriteAnimTable_EvolutionSparkles,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = nullsub_85
|
||||
.callback = SpriteCallbackDummy_EvoSparkles
|
||||
};
|
||||
|
||||
static const u16 gUnknown_841EF10[12] = {
|
||||
static const u16 sEvolutionSparkleMatrixScales[12] = {
|
||||
0x3C0,
|
||||
0x380,
|
||||
0x340,
|
||||
@@ -80,7 +80,7 @@ static const u16 gUnknown_841EF10[12] = {
|
||||
0x100
|
||||
};
|
||||
|
||||
static const s16 gUnknown_841EF28[][2] = {
|
||||
static const s16 sUnref_841EF28[][2] = {
|
||||
{-4, 0x10},
|
||||
{-3, 0x30},
|
||||
{-2, 0x50},
|
||||
@@ -91,19 +91,19 @@ static const s16 gUnknown_841EF28[][2] = {
|
||||
{ 4, 0x10}
|
||||
};
|
||||
|
||||
void nullsub_85(struct Sprite * sprite)
|
||||
static void SpriteCallbackDummy_EvoSparkles(struct Sprite * sprite)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void SetEvoSparklesMatrices(void)
|
||||
static void SetEvoSparklesMatrices(void)
|
||||
{
|
||||
u16 i;
|
||||
for (i = 0; i < NELEMS(gUnknown_841EF10); i++)
|
||||
SetOamMatrix(i + 20, gUnknown_841EF10[i], 0, 0, gUnknown_841EF10[i]);
|
||||
for (i = 0; i < NELEMS(sEvolutionSparkleMatrixScales); i++)
|
||||
SetOamMatrix(i + 20, sEvolutionSparkleMatrixScales[i], 0, 0, sEvolutionSparkleMatrixScales[i]);
|
||||
}
|
||||
|
||||
void SpriteCB_PreEvoSparkleSet1(struct Sprite * sprite)
|
||||
static void SpriteCB_PreEvoSparkleSet1(struct Sprite * sprite)
|
||||
{
|
||||
u8 mnum;
|
||||
if (sprite->pos1.y > 8)
|
||||
@@ -130,9 +130,9 @@ void SpriteCB_PreEvoSparkleSet1(struct Sprite * sprite)
|
||||
}
|
||||
}
|
||||
|
||||
void CreatePreEvoSparkleSet1(u8 a0)
|
||||
static void CreatePreEvoSparkleSet1(u8 a0)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 88, 0);
|
||||
u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 88, 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[5] = 48;
|
||||
@@ -144,7 +144,7 @@ void CreatePreEvoSparkleSet1(u8 a0)
|
||||
}
|
||||
}
|
||||
|
||||
void SpriteCB_PreEvoSparkleSet2(struct Sprite * sprite)
|
||||
static void SpriteCB_PreEvoSparkleSet2(struct Sprite * sprite)
|
||||
{
|
||||
if (sprite->pos1.y < 88)
|
||||
{
|
||||
@@ -160,9 +160,9 @@ void SpriteCB_PreEvoSparkleSet2(struct Sprite * sprite)
|
||||
}
|
||||
}
|
||||
|
||||
void CreatePreEvoSparkleSet2(u8 a0)
|
||||
static void CreatePreEvoSparkleSet2(u8 a0)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 8, 0);
|
||||
u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 8, 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[5] = 8;
|
||||
@@ -175,7 +175,7 @@ void CreatePreEvoSparkleSet2(u8 a0)
|
||||
}
|
||||
}
|
||||
|
||||
void SpriteCB_PostEvoSparkleSet1(struct Sprite * sprite)
|
||||
static void SpriteCB_PostEvoSparkleSet1(struct Sprite * sprite)
|
||||
{
|
||||
if (sprite->data[5] > 8)
|
||||
{
|
||||
@@ -190,9 +190,9 @@ void SpriteCB_PostEvoSparkleSet1(struct Sprite * sprite)
|
||||
}
|
||||
}
|
||||
|
||||
void CreatePostEvoSparkleSet1(u8 a0, u8 a1)
|
||||
static void CreatePostEvoSparkleSet1(u8 a0, u8 a1)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 56, 0);
|
||||
u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 56, 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[3] = a1;
|
||||
@@ -206,7 +206,7 @@ void CreatePostEvoSparkleSet1(u8 a0, u8 a1)
|
||||
}
|
||||
}
|
||||
|
||||
void SpriteCB_PostEvoSparkleSet2(struct Sprite * sprite)
|
||||
static void SpriteCB_PostEvoSparkleSet2(struct Sprite * sprite)
|
||||
{
|
||||
u8 mnum;
|
||||
if ((sprite->data[7] & 3) == 0)
|
||||
@@ -239,9 +239,9 @@ void SpriteCB_PostEvoSparkleSet2(struct Sprite * sprite)
|
||||
}
|
||||
}
|
||||
|
||||
void CreatePostEvoSparkleSet2(u8 unused)
|
||||
static void CreatePostEvoSparkleSet2(u8 unused)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gUnknown_841EEF8, 120, 56, 0);
|
||||
u8 spriteId = CreateSprite(&sSpriteTemplate_EvolutionSparkles, 120, 56, 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[3] = 3 - (Random() % 7);
|
||||
@@ -256,18 +256,18 @@ void CreatePostEvoSparkleSet2(u8 unused)
|
||||
|
||||
void LoadEvoSparkleSpriteAndPal(void)
|
||||
{
|
||||
LoadCompressedSpriteSheetUsingHeap(gUnknown_841EEC4);
|
||||
LoadSpritePalettes(gUnknown_841EED4);
|
||||
LoadCompressedSpriteSheetUsingHeap(sSpriteSheet_EvolutionSparkles);
|
||||
LoadSpritePalettes(sSpritePalette_EvolutionSparkles);
|
||||
}
|
||||
|
||||
u8 LaunchTask_PreEvoSparklesSet1(u16 a0)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_80F5DD0, 0);
|
||||
u8 taskId = CreateTask(EvoTask_PreEvoSparkleSet1Init, 0);
|
||||
gTasks[taskId].data[1] = a0;
|
||||
return taskId;
|
||||
}
|
||||
|
||||
void sub_80F5DD0(u8 taskId)
|
||||
static void EvoTask_PreEvoSparkleSet1Init(u8 taskId)
|
||||
{
|
||||
SetEvoSparklesMatrices();
|
||||
gTasks[taskId].data[15] = 0;
|
||||
@@ -276,7 +276,7 @@ void sub_80F5DD0(u8 taskId)
|
||||
PlaySE(SE_W025);
|
||||
}
|
||||
|
||||
void EvoTask_CreatePreEvoSparkleSet1(u8 taskId)
|
||||
static void EvoTask_CreatePreEvoSparkleSet1(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
if (gTasks[taskId].data[15] < 64)
|
||||
@@ -295,7 +295,7 @@ void EvoTask_CreatePreEvoSparkleSet1(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId)
|
||||
static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[15] != 0)
|
||||
gTasks[taskId].data[15]--;
|
||||
@@ -303,13 +303,13 @@ void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
u8 sub_80F5EC0(void)
|
||||
u8 LaunchTask_PreEvoSparklesSet2(void)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_80F5ED8, 0);
|
||||
u8 taskId = CreateTask(EvoTask_PreEvoSparkleSet2Init, 0);
|
||||
return taskId;
|
||||
}
|
||||
|
||||
void sub_80F5ED8(u8 taskId)
|
||||
static void EvoTask_PreEvoSparkleSet2Init(u8 taskId)
|
||||
{
|
||||
SetEvoSparklesMatrices();
|
||||
gTasks[taskId].data[15] = 0;
|
||||
@@ -317,7 +317,7 @@ void sub_80F5ED8(u8 taskId)
|
||||
PlaySE(SE_W062B);
|
||||
}
|
||||
|
||||
void EvoTask_CreatePreEvoSparklesSet2(u8 taskId)
|
||||
static void EvoTask_CreatePreEvoSparklesSet2(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
if (gTasks[taskId].data[15] < 96)
|
||||
@@ -331,22 +331,22 @@ void EvoTask_CreatePreEvoSparklesSet2(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].func = sub_80F5F64;
|
||||
gTasks[taskId].func = EvoTask_PreEvoSparkleSet2Teardown;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F5F64(u8 taskId)
|
||||
static void EvoTask_PreEvoSparkleSet2Teardown(u8 taskId)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
u8 sub_80F5F74(void)
|
||||
u8 LaunchTask_PostEvoSparklesSet1(void)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_80F5F8C, 0);
|
||||
u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet1Init, 0);
|
||||
return taskId;
|
||||
}
|
||||
|
||||
void sub_80F5F8C(u8 taskId)
|
||||
static void EvoTask_PostEvoSparklesSet1Init(u8 taskId)
|
||||
{
|
||||
SetEvoSparklesMatrices();
|
||||
gTasks[taskId].data[15] = 0;
|
||||
@@ -354,7 +354,7 @@ void sub_80F5F8C(u8 taskId)
|
||||
PlaySE(SE_REAPOKE);
|
||||
}
|
||||
|
||||
void EvoTask_CreatePostEvoSparklesSet1(u8 taskId)
|
||||
static void EvoTask_CreatePostEvoSparklesSet1(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
if (gTasks[taskId].data[15] < 48)
|
||||
@@ -377,34 +377,34 @@ void EvoTask_CreatePostEvoSparklesSet1(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].func = sub_80F6040;
|
||||
gTasks[taskId].func = EvoTask_PostEvoSparklesSet1Teardown;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F6040(u8 taskId)
|
||||
static void EvoTask_PostEvoSparklesSet1Teardown(u8 taskId)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 a0)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_80F6080, 0);
|
||||
u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet2Init, 0);
|
||||
gTasks[taskId].data[2] = a0;
|
||||
return taskId;
|
||||
}
|
||||
|
||||
void sub_80F6080(u8 taskId)
|
||||
static void EvoTask_PostEvoSparklesSet2Init(u8 taskId)
|
||||
{
|
||||
SetEvoSparklesMatrices();
|
||||
gTasks[taskId].data[15] = 0;
|
||||
sub_80D0474();
|
||||
CpuCopy16(&gPlttBufferFaded[32], &gPlttBufferUnfaded[32], 96);
|
||||
BeginNormalPaletteFade(0xFFF90F1C, 0, 0, 16, RGB_WHITE);
|
||||
gTasks[taskId].func = sub_80F60E4;
|
||||
gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet2;
|
||||
PlaySE(SE_W080);
|
||||
}
|
||||
|
||||
void sub_80F60E4(u8 taskId)
|
||||
static void EvoTask_CreatePostEvoSparklesSet2(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
if (gTasks[taskId].data[15] < 128)
|
||||
@@ -427,35 +427,35 @@ void sub_80F60E4(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].func = sub_80F6170;
|
||||
gTasks[taskId].func = EvoTask_PostEvoSparklesSet2Teardown;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F6170(u8 taskId)
|
||||
static void EvoTask_PostEvoSparklesSet2Teardown(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
u8 sub_80F6190(u16 a0)
|
||||
u8 LaunchTask_PostEvoSparklesSet2Alt(u16 a0)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_80F61C0, 0);
|
||||
u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet2AltInit, 0);
|
||||
gTasks[taskId].data[2] = a0;
|
||||
return taskId;
|
||||
}
|
||||
|
||||
void sub_80F61C0(u8 taskId)
|
||||
static void EvoTask_PostEvoSparklesSet2AltInit(u8 taskId)
|
||||
{
|
||||
SetEvoSparklesMatrices();
|
||||
gTasks[taskId].data[15] = 0;
|
||||
sub_80D0474();
|
||||
CpuCopy16(&gPlttBufferFaded[32], &gPlttBufferUnfaded[32], 96);
|
||||
BeginNormalPaletteFade(0xFFF90F00, 0, 0, 16, RGB_WHITE);
|
||||
gTasks[taskId].func = sub_80F6224;
|
||||
gTasks[taskId].func = EvoTask_CreatePostEvoSparklesSet2Alt;
|
||||
PlaySE(SE_W080);
|
||||
}
|
||||
|
||||
void sub_80F6224(u8 taskId)
|
||||
static void EvoTask_CreatePostEvoSparklesSet2Alt(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
if (gTasks[taskId].data[15] < 128)
|
||||
@@ -478,147 +478,163 @@ void sub_80F6224(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].func = sub_80F6170;
|
||||
gTasks[taskId].func = EvoTask_PostEvoSparklesSet2Teardown;
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_86(struct Sprite * sprite)
|
||||
static void SpriteCallbackDummy_MonSprites(struct Sprite * sprite)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
u8 sub_80F62B4(u8 a0, u8 a1)
|
||||
#define tPreEvoSpriteId data[1]
|
||||
#define tPostEvoSpriteId data[2]
|
||||
#define tPreEvoScale data[3]
|
||||
#define tPostEvoScale data[4]
|
||||
#define tDirection data[5]
|
||||
#define tSpeed data[6]
|
||||
#define tBButtonCancel data[8]
|
||||
|
||||
u8 LaunchTask_PrePostEvoMonSprites(u8 preEvoSpriteId, u8 postEvoSpriteId)
|
||||
{
|
||||
u16 i;
|
||||
u8 taskId;
|
||||
u16 palette[16];
|
||||
for (i = 0; i < 16; i++)
|
||||
palette[i] = RGB_WHITE;
|
||||
taskId = CreateTask(sub_80F6400, 0);
|
||||
gTasks[taskId].data[1] = a0;
|
||||
gTasks[taskId].data[2] = a1;
|
||||
gTasks[taskId].data[3] = 256;
|
||||
gTasks[taskId].data[4] = 16;
|
||||
SetOamMatrix(30, 0x10000 / gTasks[taskId].data[3], 0, 0, 0x10000 / gTasks[taskId].data[3]);
|
||||
SetOamMatrix(31, 0x10000 / gTasks[taskId].data[4], 0, 0, 0x10000 / gTasks[taskId].data[4]);
|
||||
gSprites[a0].callback = nullsub_86;
|
||||
gSprites[a0].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[a0].oam.matrixNum = 30;
|
||||
gSprites[a0].invisible = FALSE;
|
||||
CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[a0].oam.paletteNum], 32);
|
||||
gSprites[a1].callback = nullsub_86;
|
||||
gSprites[a1].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[a1].oam.matrixNum = 31;
|
||||
gSprites[a1].invisible = FALSE;
|
||||
CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[a1].oam.paletteNum], 32);
|
||||
gTasks[taskId].data[8] = 0;
|
||||
taskId = CreateTask(EvoTask_PrePostEvoMonSpritesInit, 0);
|
||||
gTasks[taskId].tPreEvoSpriteId = preEvoSpriteId;
|
||||
gTasks[taskId].tPostEvoSpriteId = postEvoSpriteId;
|
||||
gTasks[taskId].tPreEvoScale = 256;
|
||||
gTasks[taskId].tPostEvoScale = 16;
|
||||
SetOamMatrix(30, 0x10000 / gTasks[taskId].tPreEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPreEvoScale);
|
||||
SetOamMatrix(31, 0x10000 / gTasks[taskId].tPostEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPostEvoScale);
|
||||
gSprites[preEvoSpriteId].callback = SpriteCallbackDummy_MonSprites;
|
||||
gSprites[preEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[preEvoSpriteId].oam.matrixNum = 30;
|
||||
gSprites[preEvoSpriteId].invisible = FALSE;
|
||||
CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[preEvoSpriteId].oam.paletteNum], 32);
|
||||
gSprites[postEvoSpriteId].callback = SpriteCallbackDummy_MonSprites;
|
||||
gSprites[postEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[postEvoSpriteId].oam.matrixNum = 31;
|
||||
gSprites[postEvoSpriteId].invisible = FALSE;
|
||||
CpuCopy16(palette, &gPlttBufferFaded[256 + 16 * gSprites[postEvoSpriteId].oam.paletteNum], 32);
|
||||
gTasks[taskId].tBButtonCancel = FALSE;
|
||||
return taskId;
|
||||
}
|
||||
|
||||
void sub_80F6400(u8 taskId)
|
||||
static void EvoTask_PrePostEvoMonSpritesInit(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[5] = FALSE;
|
||||
gTasks[taskId].data[6] = 8;
|
||||
gTasks[taskId].func = sub_80F6424;
|
||||
gTasks[taskId].tDirection = FALSE;
|
||||
gTasks[taskId].tSpeed = 8;
|
||||
gTasks[taskId].func = EvoTask_ChooseNextEvoSpriteAnim;
|
||||
}
|
||||
|
||||
void sub_80F6424(u8 taskId)
|
||||
static void EvoTask_ChooseNextEvoSpriteAnim(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[8] != 0)
|
||||
if (gTasks[taskId].tBButtonCancel)
|
||||
{
|
||||
PreEvoVisible_PostEvoInvisible_KillTask(taskId);
|
||||
}
|
||||
else if (gTasks[taskId].data[6] == 128)
|
||||
else if (gTasks[taskId].tSpeed == 128)
|
||||
{
|
||||
PreEvoInvisible_PostEvoVisible_KillTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[6] += 2;
|
||||
gTasks[taskId].data[5] ^= TRUE;
|
||||
gTasks[taskId].func = sub_80F6474;
|
||||
gTasks[taskId].tSpeed += 2;
|
||||
gTasks[taskId].tDirection ^= TRUE;
|
||||
gTasks[taskId].func = EvoTask_ShrinkOrExpandEvoSprites;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F6474(u8 taskId)
|
||||
static void EvoTask_ShrinkOrExpandEvoSprites(u8 taskId)
|
||||
{
|
||||
u8 r6;
|
||||
if (gTasks[taskId].data[8] != 0)
|
||||
if (gTasks[taskId].tBButtonCancel)
|
||||
{
|
||||
gTasks[taskId].func = PreEvoVisible_PostEvoInvisible_KillTask;
|
||||
}
|
||||
else
|
||||
{
|
||||
r6 = 0;
|
||||
if (gTasks[taskId].data[5] == 0)
|
||||
if (!gTasks[taskId].tDirection)
|
||||
{
|
||||
if (gTasks[taskId].data[3] < 0x100 - gTasks[taskId].data[6])
|
||||
if (gTasks[taskId].tPreEvoScale < 0x100 - gTasks[taskId].tSpeed)
|
||||
{
|
||||
gTasks[taskId].data[3] += gTasks[taskId].data[6];
|
||||
gTasks[taskId].tPreEvoScale += gTasks[taskId].tSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[3] = 0x100;
|
||||
gTasks[taskId].tPreEvoScale = 0x100;
|
||||
r6 = 1;
|
||||
}
|
||||
if (gTasks[taskId].data[4] > 0x10 + gTasks[taskId].data[6])
|
||||
if (gTasks[taskId].tPostEvoScale > 0x10 + gTasks[taskId].tSpeed)
|
||||
{
|
||||
gTasks[taskId].data[4] -= gTasks[taskId].data[6];
|
||||
gTasks[taskId].tPostEvoScale -= gTasks[taskId].tSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[4] = 0x10;
|
||||
gTasks[taskId].tPostEvoScale = 0x10;
|
||||
r6++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gTasks[taskId].data[4] < 0x100 - gTasks[taskId].data[6])
|
||||
if (gTasks[taskId].tPostEvoScale < 0x100 - gTasks[taskId].tSpeed)
|
||||
{
|
||||
gTasks[taskId].data[4] += gTasks[taskId].data[6];
|
||||
gTasks[taskId].tPostEvoScale += gTasks[taskId].tSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[4] = 0x100;
|
||||
gTasks[taskId].tPostEvoScale = 0x100;
|
||||
r6 = 1;
|
||||
}
|
||||
if (gTasks[taskId].data[3] > 0x10 + gTasks[taskId].data[6])
|
||||
if (gTasks[taskId].tPreEvoScale > 0x10 + gTasks[taskId].tSpeed)
|
||||
{
|
||||
gTasks[taskId].data[3] -= gTasks[taskId].data[6];
|
||||
gTasks[taskId].tPreEvoScale -= gTasks[taskId].tSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[3] = 0x10;
|
||||
gTasks[taskId].tPreEvoScale = 0x10;
|
||||
r6++;
|
||||
}
|
||||
}
|
||||
SetOamMatrix(30, 0x10000 / gTasks[taskId].data[3], 0, 0, 0x10000 / gTasks[taskId].data[3]);
|
||||
SetOamMatrix(31, 0x10000 / gTasks[taskId].data[4], 0, 0, 0x10000 / gTasks[taskId].data[4]);
|
||||
SetOamMatrix(30, 0x10000 / gTasks[taskId].tPreEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPreEvoScale);
|
||||
SetOamMatrix(31, 0x10000 / gTasks[taskId].tPostEvoScale, 0, 0, 0x10000 / gTasks[taskId].tPostEvoScale);
|
||||
if (r6 == 2)
|
||||
{
|
||||
gTasks[taskId].func = sub_80F6424;
|
||||
gTasks[taskId].func = EvoTask_ChooseNextEvoSpriteAnim;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId)
|
||||
static void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskId)
|
||||
{
|
||||
gSprites[gTasks[taskId].data[1]].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].data[1]].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].data[1]].invisible = TRUE;
|
||||
gSprites[gTasks[taskId].data[2]].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].data[2]].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].data[2]].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].invisible = TRUE;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].invisible = FALSE;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId)
|
||||
static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskId)
|
||||
{
|
||||
gSprites[gTasks[taskId].data[1]].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].data[1]].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].data[1]].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].data[2]].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].data[2]].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].data[2]].invisible = TRUE;
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].tPreEvoSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].oam.matrixNum = 0;
|
||||
gSprites[gTasks[taskId].tPostEvoSpriteId].invisible = TRUE;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
#undef tPreEvoSpriteId
|
||||
#undef tPostEvoSpriteId
|
||||
#undef tPreEvoScale
|
||||
#undef tPostEvoScale
|
||||
#undef tDirection
|
||||
#undef tSpeed
|
||||
#undef tBButtonCancel
|
||||
|
||||
Reference in New Issue
Block a user