summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2020-08-26 16:31:37 -0400
committerGriffinR <griffin.g.richards@gmail.com>2020-08-27 15:43:18 -0400
commitba13e9ec959a2d1375a303587ec94ceab0eaa0d1 (patch)
treef7b118fb5a3e4b94660cc7c45230a33fe0a50bf7
parent95ea0e92e7e24de9ad77dfa0a3224718cd1564c3 (diff)
Document first rayquaza scene
-rw-r--r--include/graphics.h102
-rw-r--r--include/palette.h2
-rw-r--r--src/contest_painting.c13
-rw-r--r--src/data/graphics/rayquaza_scene.h102
-rw-r--r--src/palette.c82
-rw-r--r--src/rayquaza_scene.c998
-rw-r--r--src/task.c4
7 files changed, 667 insertions, 636 deletions
diff --git a/include/graphics.h b/include/graphics.h
index 1c8a52b69..b6662cbf7 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -3309,57 +3309,57 @@ extern const u32 gBerryTag_Gfx[];
extern const u32 gBerryTag_Pal[];
// rayquaza scene gfx
-extern const u32 gRaySceneGroudon_Gfx[];
-extern const u32 gRaySceneGroudonShoulder_Gfx[];
-extern const u32 gRaySceneGroudonClaw_Gfx[];
-extern const u32 gRaySceneKyogre_Gfx[];
-extern const u32 gRaySceneKyogre2_Gfx[];
-extern const u32 gRaySceneKyogre3_Gfx[];
-extern const u32 gRaySceneGroudon_Pal[];
-extern const u32 gRaySceneKyogre_Pal[];
-extern const u32 gRaySceneSmoke_Gfx[];
-extern const u32 gRaySceneSmoke_Pal[];
-extern const u32 gRaySceneRayquaza_Pal[];
-extern const u32 gRaySceneRayquazaFly1_Gfx[];
-extern const u32 gRaySceneRayquazaTail_Gfx[];
-extern const u32 gRaySceneGroudonLeft_Gfx[];
-extern const u32 gRaySceneGroudonTail_Gfx[];
-extern const u32 gRaySceneKyogreRight_Gfx[];
-extern const u32 gRaySceneRayquazaHover_Gfx[];
-extern const u32 gRaySceneRayquazaFlyIn_Gfx[];
-extern const u32 gRaySceneOvercast_Gfx[];
-extern const u32 gRaySceneOvercast_Tilemap[];
-extern const u32 gRaySceneRayquaza_Gfx[];
-extern const u32 gRaySceneRayquaza_Tilemap[];
-extern const u32 gRaySceneSplash_Gfx[];
-extern const u32 gRaySceneGroudonLeft_Pal[];
-extern const u32 gRaySceneKyogreRight_Pal[];
-extern const u32 gRaySceneRayquazaHover_Pal[];
-extern const u32 gRaySceneSplash_Pal[];
-extern const u32 gRaySceneClouds_Gfx[];
-extern const u32 gRaySceneClouds_Pal[];
-extern const u32 gRaySceneClouds2_Tilemap[];
-extern const u32 gRaySceneClouds1_Tilemap[];
-extern const u32 gRaySceneClouds3_Tilemap[];
-extern const u32 gRaySceneRayquazaLight_Gfx[];
-extern const u32 gRaySceneRayquazaLight_Tilemap[];
-extern const u32 gRaySceneOvercast2_Gfx[];
-extern const u32 gRaySceneOvercast2_Tilemap[];
-extern const u32 gRaySceneOvercast2_Pal[];
-extern const u32 gRaySceneRayquazaChase_Gfx[];
-extern const u32 gRaySceneChaseStreaks_Gfx[];
-extern const u32 gRaySceneChaseBg_Gfx[];
-extern const u32 gRayChaseRayquazaChase2_Tilemap[];
-extern const u32 gRayChaseRayquazaChase_Tilemap[];
-extern const u32 gRaySceneChaseStreaks_Tilemap[];
-extern const u32 gRaySceneChaseBg_Tilemap[];
-extern const u32 gRaySceneChase_Pal[];
-extern const u32 gRaySceneHushRing_Tilemap[];
-extern const u32 gRaySceneHushBg_Tilemap[];
-extern const u32 gRaySceneHushRing_Map[];
-extern const u32 gRaySceneHushBg_Pal[];
-extern const u32 gRaySceneHushBg_Gfx[];
-extern const u32 gRaySceneHushRing_Gfx[];
+extern const u32 gRaySceneDuoFight_Groudon_Gfx[];
+extern const u32 gRaySceneDuoFight_GroudonShoulder_Gfx[];
+extern const u32 gRaySceneDuoFight_GroudonClaw_Gfx[];
+extern const u32 gRaySceneDuoFight_Kyogre_Gfx[];
+extern const u32 gRaySceneDuoFight_KyogreShoulder_Gfx[];
+extern const u32 gRaySceneDuoFight_KyogreFin_Gfx[];
+extern const u32 gRaySceneDuoFight_Groudon_Pal[];
+extern const u32 gRaySceneDuoFight_Kyogre_Pal[];
+extern const u32 gRaySceneTakesFlight_Smoke_Gfx[];
+extern const u32 gRaySceneTakesFlight_Smoke_Pal[];
+extern const u32 gRaySceneTakesFlight_Rayquaza_Pal[];
+extern const u32 gRaySceneDescends_Rayquaza_Gfx[];
+extern const u32 gRaySceneDescends_RayquazaTail_Gfx[];
+extern const u32 gRaySceneChasesAway_Groudon_Gfx[];
+extern const u32 gRaySceneChasesAway_GroudonTail_Gfx[];
+extern const u32 gRaySceneChasesAway_Kyogre_Gfx[];
+extern const u32 gRaySceneChasesAway_Rayquaza_Gfx[];
+extern const u32 gRaySceneChasesAway_RayquazaTail_Gfx[];
+extern const u32 gRaySceneTakesFlight_Bg_Gfx[];
+extern const u32 gRaySceneTakesFlight_Bg_Tilemap[];
+extern const u32 gRaySceneTakesFlight_Rayquaza_Gfx[];
+extern const u32 gRaySceneTakesFlight_Rayquaza_Tilemap[];
+extern const u32 gRaySceneChasesAway_KyogreSplash_Gfx[];
+extern const u32 gRaySceneChasesAway_Groudon_Pal[];
+extern const u32 gRaySceneChasesAway_Kyogre_Pal[];
+extern const u32 gRaySceneChasesAway_Rayquaza_Pal[];
+extern const u32 gRaySceneChasesAway_KyogreSplash_Pal[];
+extern const u32 gRaySceneDuoFight_Clouds_Gfx[];
+extern const u32 gRaySceneDuoFight_Clouds_Pal[];
+extern const u32 gRaySceneDuoFight_Clouds2_Tilemap[];
+extern const u32 gRaySceneDuoFight_Clouds1_Tilemap[];
+extern const u32 gRaySceneDuoFight_Clouds3_Tilemap[];
+extern const u32 gRaySceneDescends_Light_Gfx[];
+extern const u32 gRaySceneDescends_Light_Tilemap[];
+extern const u32 gRaySceneDescends_Bg_Gfx[];
+extern const u32 gRaySceneDescends_Bg_Tilemap[];
+extern const u32 gRaySceneDescends_Bg_Pal[];
+extern const u32 gRaySceneCharges_Rayquaza_Gfx[];
+extern const u32 gRaySceneCharges_Streaks_Gfx[];
+extern const u32 gRaySceneCharges_Bg_Gfx[];
+extern const u32 gRaySceneCharges_Rayquaza2_Tilemap[];
+extern const u32 gRaySceneCharges_Rayquaza_Tilemap[];
+extern const u32 gRaySceneCharges_Streaks_Tilemap[];
+extern const u32 gRaySceneCharges_Bg_Tilemap[];
+extern const u32 gRaySceneCharges_Bg_Pal[];
+extern const u32 gRaySceneChasesAway_Ring_Tilemap[];
+extern const u32 gRaySceneChasesAway_Bg_Tilemap[];
+extern const u32 gRaySceneChasesAway_Ring_Map[];
+extern const u32 gRaySceneChasesAway_Bg_Pal[];
+extern const u32 gRaySceneChasesAway_Bg_Gfx[];
+extern const u32 gRaySceneChasesAway_Ring_Gfx[];
// Pokeballs
extern const u32 gItemIcon_MasterBall[];
diff --git a/include/palette.h b/include/palette.h
index 8d16270aa..f874bcd74 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -70,7 +70,7 @@ void BeginFastPaletteFade(u8);
void BeginHardwarePaletteFade(u8, u8, u8, u8, u8);
void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color);
void BlendPalettesUnfaded(u32, u8, u16);
-void sub_80A2C44(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7);
+void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id);
void TintPalette_GrayScale(u16 *palette, u16 count);
void TintPalette_GrayScale2(u16 *palette, u16 count);
void TintPalette_SepiaTone(u16 *palette, u16 count);
diff --git a/src/contest_painting.c b/src/contest_painting.c
index f4d0ac6bf..5dd4a70a5 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -384,7 +384,7 @@ static void InitContestMonPixels(u16 species, u8 whichSprite)
}
}
-//#ifdef NONMATCHING
+#ifdef NONMATCHING
// functionally equivalent.
static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64])
{
@@ -399,22 +399,23 @@ static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)
{
for (pixelX = 0; pixelX < 8; pixelX++)
{
- colorIndex = spriteGfx[(((tileY * 8) + tileX) * 32) + (pixelY << 2) + (pixelX >> 1)];
+ int offset = 32 * (8 * tileY + tileX) + (pixelY * 4 + pixelX / 2);
+ colorIndex = spriteGfx[offset];
if (pixelX & 1)
colorIndex >>= 4;
else
colorIndex &= 0xF;
if (colorIndex == 0) // transparent pixel
- (*destPixels)[tileY * 8 + pixelY][tileX * 8 + pixelX] = 0x8000;
+ (*destPixels)[8 * tileY + pixelY][tileX * 8 + pixelX] = 0x8000;
else
- (*destPixels)[tileY * 8 + pixelY][tileX * 8 + pixelX] = palette[colorIndex];
+ (*destPixels)[8 * tileY + pixelY][tileX * 8 + pixelX] = palette[colorIndex];
}
}
}
}
}
-/*#else
+#else
NAKED
static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64])
{
@@ -516,7 +517,7 @@ _081303F8:\n\
pop {r0}\n\
bx r0");
}
-#endif*/
+#endif
#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
diff --git a/src/data/graphics/rayquaza_scene.h b/src/data/graphics/rayquaza_scene.h
index 508b83f1a..54d7966f2 100644
--- a/src/data/graphics/rayquaza_scene.h
+++ b/src/data/graphics/rayquaza_scene.h
@@ -1,62 +1,62 @@
// Scene 1 (RAY_ANIM_DUO_FIGHT / RAY_ANIM_DUO_FIGHT_PRE)
-const u32 gRaySceneGroudon_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon.4bpp.lz");
-const u32 gRaySceneGroudonShoulder_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon_shoulder.4bpp.lz");
-const u32 gRaySceneGroudonClaw_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon_claw.4bpp.lz");
-const u32 gRaySceneKyogre_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre.4bpp.lz");
-const u32 gRaySceneKyogre2_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre_shoulder.4bpp.lz");
-const u32 gRaySceneKyogre3_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre_fin.4bpp.lz");
-const u32 gRaySceneGroudon_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon.gbapal.lz");
-const u32 gRaySceneKyogre_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre.gbapal.lz");
-const u32 gRaySceneClouds_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds.4bpp.lz");
-const u32 gRaySceneClouds_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds.gbapal.lz"); // pal 1 clouds, pal 2 rain
-const u32 gRaySceneClouds1_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds1.bin.lz");
-const u32 gRaySceneClouds2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds2.bin.lz");
-const u32 gRaySceneClouds3_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds3.bin.lz");
+const u32 gRaySceneDuoFight_Groudon_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon.4bpp.lz");
+const u32 gRaySceneDuoFight_GroudonShoulder_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon_shoulder.4bpp.lz");
+const u32 gRaySceneDuoFight_GroudonClaw_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon_claw.4bpp.lz");
+const u32 gRaySceneDuoFight_Kyogre_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre.4bpp.lz");
+const u32 gRaySceneDuoFight_KyogreShoulder_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre_shoulder.4bpp.lz");
+const u32 gRaySceneDuoFight_KyogreFin_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre_fin.4bpp.lz");
+const u32 gRaySceneDuoFight_Groudon_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon.gbapal.lz");
+const u32 gRaySceneDuoFight_Kyogre_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre.gbapal.lz");
+const u32 gRaySceneDuoFight_Clouds_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds.4bpp.lz");
+const u32 gRaySceneDuoFight_Clouds_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds.gbapal.lz"); // pal 1 clouds, pal 2 rain
+const u32 gRaySceneDuoFight_Clouds1_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds1.bin.lz");
+const u32 gRaySceneDuoFight_Clouds2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds2.bin.lz");
+const u32 gRaySceneDuoFight_Clouds3_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds3.bin.lz");
// Scene 2 (RAY_ANIM_TAKES_FLIGHT)
-const u32 gRaySceneSmoke_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/smoke.4bpp.lz");
-const u32 gRaySceneSmoke_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/smoke.gbapal.lz");
-const u32 gRaySceneRayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.8bpp.lz");
-const u32 gRaySceneRayquaza_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.gbapal.lz");
-const u32 gRaySceneRayquaza_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.bin.lz");
-const u32 gRaySceneOvercast_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/bg.4bpp.lz"); // uses pal 2 of gRaySceneRayquaza_Pal
-const u32 gRaySceneOvercast_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/bg.bin.lz");
+const u32 gRaySceneTakesFlight_Smoke_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/smoke.4bpp.lz");
+const u32 gRaySceneTakesFlight_Smoke_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/smoke.gbapal.lz");
+const u32 gRaySceneTakesFlight_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.8bpp.lz");
+const u32 gRaySceneTakesFlight_Rayquaza_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.gbapal.lz");
+const u32 gRaySceneTakesFlight_Rayquaza_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.bin.lz");
+const u32 gRaySceneTakesFlight_Bg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/bg.4bpp.lz"); // uses pal 2 of gRaySceneTakesFlight_Rayquaza_Pal
+const u32 gRaySceneTakesFlight_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/bg.bin.lz");
// Scene 3 (RAY_ANIM_DESCENDS)
-const u32 gRaySceneRayquazaFly1_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/rayquaza.4bpp.lz");
+const u32 gRaySceneDescends_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/rayquaza.4bpp.lz");
// for some reason there are an extra 0xC bytes at the end of the original 4bpp, so in order to produce the correct lz,
// we have to cat the bytes at the end with a make rule. not sure why those bytes are there, it may have been a bug in Game Freak's software.
-const u32 gRaySceneRayquazaTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/rayquaza_tail_fix.4bpp.lz");
-const u32 gRaySceneOvercast2_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.4bpp.lz");
-const u32 gRaySceneRayquazaLight_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/light.4bpp.lz"); // uses pal 2 of gRaySceneOvercast2_Pal
-const u32 gRaySceneOvercast2_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.gbapal.lz");
-const u32 gRaySceneOvercast2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.bin.lz");
-const u32 gRaySceneRayquazaLight_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/light.bin.lz");
+const u32 gRaySceneDescends_RayquazaTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/rayquaza_tail_fix.4bpp.lz");
+const u32 gRaySceneDescends_Bg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.4bpp.lz");
+const u32 gRaySceneDescends_Light_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/light.4bpp.lz"); // uses pal 2 of gRaySceneDescends_Bg_Pal
+const u32 gRaySceneDescends_Bg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.gbapal.lz");
+const u32 gRaySceneDescends_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.bin.lz");
+const u32 gRaySceneDescends_Light_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/light.bin.lz");
// Scene 4 (RAY_ANIM_CHARGES)
-const u32 gRaySceneChaseBg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/bg.4bpp.lz");
-const u32 gRaySceneChaseBg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/bg.bin.lz");
-const u32 gRaySceneChaseStreaks_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/streaks.4bpp.lz");
-const u32 gRaySceneChaseStreaks_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/streaks.bin.lz");
-const u32 gRaySceneRayquazaChase_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/rayquaza.4bpp.lz");
-const u32 gRayChaseRayquazaChase_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/rayquaza.bin.lz");
-const u32 gRayChaseRayquazaChase2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/rayquaza2.bin.lz");
-const u32 gRaySceneChase_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/bg.gbapal.lz");
+const u32 gRaySceneCharges_Bg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/bg.4bpp.lz");
+const u32 gRaySceneCharges_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/bg.bin.lz");
+const u32 gRaySceneCharges_Streaks_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/streaks.4bpp.lz");
+const u32 gRaySceneCharges_Streaks_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/streaks.bin.lz");
+const u32 gRaySceneCharges_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/rayquaza.4bpp.lz");
+const u32 gRaySceneCharges_Rayquaza_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/rayquaza.bin.lz");
+const u32 gRaySceneCharges_Rayquaza2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/rayquaza2.bin.lz"); // TODO: Clarify
+const u32 gRaySceneCharges_Bg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/bg.gbapal.lz");
// Scene 5 (RAY_ANIM_CHASES_AWAY)
-const u32 gRaySceneGroudonLeft_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/groudon.4bpp.lz");
-const u32 gRaySceneGroudonTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/groudon_tail.4bpp.lz");
-const u32 gRaySceneKyogreRight_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre.4bpp.lz");
-const u32 gRaySceneRayquazaHover_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza.4bpp.lz");
-const u32 gRaySceneRayquazaFlyIn_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza_tail.4bpp.lz");
-const u32 gRaySceneSplash_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre_splash.4bpp.lz");
-const u32 gRaySceneGroudonLeft_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/groudon.gbapal.lz");
-const u32 gRaySceneKyogreRight_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre.gbapal.lz");
-const u32 gRaySceneRayquazaHover_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza.gbapal.lz");
-const u32 gRaySceneSplash_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre_splash.gbapal.lz");
-const u32 gRaySceneHushBg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/bg.4bpp.lz");
-const u32 gRaySceneHushRing_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/ring.8bpp.lz");
-const u32 gRaySceneHushBg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/bg.bin.lz");
-const u32 gRaySceneHushRing_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/ring.bin.lz");
-const u32 gRaySceneHushRing_Map[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/ring_map.bin.lz");
-const u32 gRaySceneHushBg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/bg.gbapal.lz");
+const u32 gRaySceneChasesAway_Groudon_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/groudon.4bpp.lz");
+const u32 gRaySceneChasesAway_GroudonTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/groudon_tail.4bpp.lz");
+const u32 gRaySceneChasesAway_Kyogre_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre.4bpp.lz");
+const u32 gRaySceneChasesAway_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza.4bpp.lz");
+const u32 gRaySceneChasesAway_RayquazaTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza_tail.4bpp.lz");
+const u32 gRaySceneChasesAway_KyogreSplash_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre_splash.4bpp.lz");
+const u32 gRaySceneChasesAway_Groudon_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/groudon.gbapal.lz");
+const u32 gRaySceneChasesAway_Kyogre_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre.gbapal.lz");
+const u32 gRaySceneChasesAway_Rayquaza_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza.gbapal.lz");
+const u32 gRaySceneChasesAway_KyogreSplash_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre_splash.gbapal.lz");
+const u32 gRaySceneChasesAway_Bg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/bg.4bpp.lz");
+const u32 gRaySceneChasesAway_Ring_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/ring.8bpp.lz");
+const u32 gRaySceneChasesAway_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/bg.bin.lz");
+const u32 gRaySceneChasesAway_Ring_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/ring.bin.lz");
+const u32 gRaySceneChasesAway_Ring_Map[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/ring_map.bin.lz"); // TODO: Clarify
+const u32 gRaySceneChasesAway_Bg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/bg.gbapal.lz");
diff --git a/src/palette.c b/src/palette.c
index eb49ce4c6..5d605494c 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -940,46 +940,62 @@ void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 b
}
}
-void sub_80A2C44(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7)
+#define tCoeff data[0]
+#define tCoeffTarget data[1]
+#define tCoeffDelta data[2]
+#define tDelay data[3]
+#define tDelayTimer data[4]
+#define tPalettes 5 // data[5] and data[6], set/get via Set/GetWordTaskArg
+#define tColor data[7]
+#define tId data[8]
+
+// Blend the selected palettes in a series of steps toward or away from the color.
+// Only used by the Groudon/Kyogre fight scene to flash the screen for lightning
+// One call is used to fade the bg from white, while another fades the duo from black
+void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id)
{
u8 taskId;
- taskId = CreateTask((void *)sub_80A2D54, a6);
- gTasks[taskId].data[0] = a3;
- gTasks[taskId].data[1] = a4;
+ taskId = CreateTask((void *)sub_80A2D54, priority);
+ gTasks[taskId].tCoeff = coeff;
+ gTasks[taskId].tCoeffTarget = coeffTarget;
- if (a2 >= 0)
+ if (delay >= 0)
{
- gTasks[taskId].data[3] = a2;
- gTasks[taskId].data[2] = 1;
+ gTasks[taskId].tDelay = delay;
+ gTasks[taskId].tCoeffDelta = 1;
}
else
{
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[2] = -a2 + 1;
+ gTasks[taskId].tDelay = 0;
+ gTasks[taskId].tCoeffDelta = -delay + 1;
}
- if (a4 < a3)
- gTasks[taskId].data[2] *= -1;
+ if (coeffTarget < coeff)
+ gTasks[taskId].tCoeffDelta *= -1;
- SetWordTaskArg(taskId, 5, a1);
- gTasks[taskId].data[7] = a5;
- gTasks[taskId].data[8] = a7;
+ SetWordTaskArg(taskId, tPalettes, selectedPalettes);
+ gTasks[taskId].tColor = color;
+ gTasks[taskId].tId = id;
gTasks[taskId].func(taskId);
}
-bool32 sub_80A2CF8(u8 var)
+// Unused
+static bool32 sub_80A2CF8(u8 id)
{
int i;
- for (i = 0; i < NUM_TASKS; i++) // check all the tasks.
- if ((gTasks[i].isActive == TRUE) && (gTasks[i].func == sub_80A2D54) && (gTasks[i].data[8] == var))
+ for (i = 0; i < NUM_TASKS; i++)
+ if ((gTasks[i].isActive == TRUE)
+ && (gTasks[i].func == sub_80A2D54)
+ && (gTasks[i].tId == id))
return TRUE;
return FALSE;
}
-void sub_80A2D34(void)
+// Unused
+static void sub_80A2D34(void)
{
u8 taskId;
@@ -992,39 +1008,37 @@ void sub_80A2D34(void)
}
}
-void sub_80A2D54(u8 taskId)
+static void sub_80A2D54(u8 taskId)
{
- u32 wordVar;
+ u32 palettes;
s16 *data;
- s16 temp;
+ s16 target;
data = gTasks[taskId].data;
- wordVar = GetWordTaskArg(taskId, 5);
+ palettes = GetWordTaskArg(taskId, tPalettes);
- if (++data[4] > data[3])
+ if (++tDelayTimer > tDelay)
{
- data[4] = 0;
- BlendPalettes(wordVar, data[0], data[7]);
- temp = data[1];
- if (data[0] == temp)
+ tDelayTimer = 0;
+ BlendPalettes(palettes, tCoeff, tColor);
+ target = tCoeffTarget;
+ if (tCoeff == target)
{
DestroyTask(taskId);
}
else
{
- data[0] += data[2];
- if (data[2] >= 0)
+ tCoeff += tCoeffDelta;
+ if (tCoeffDelta >= 0)
{
- if (data[0] < temp)
- {
+ if (tCoeff < target)
return;
- }
}
- else if (data[0] > temp)
+ else if (tCoeff > target)
{
return;
}
- data[0] = temp;
+ tCoeff = target;
}
}
}
diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c
index 7490668d2..92082b2c1 100644
--- a/src/rayquaza_scene.c
+++ b/src/rayquaza_scene.c
@@ -22,14 +22,14 @@
This file handles the cutscene showing Rayquaza arriving to settle the Groudon/Kyogre fight
It consists of 5 separate scenes:
- Groudon and Kyogre facing one another in a thunderstorm (RAY_ANIM_DUO_FIGHT)
- - Over the shoulder of Rayquaza flying (RAY_ANIM_TAKES_FLIGHT)
+ - Over-the-shoulder of Rayquaza flying (RAY_ANIM_TAKES_FLIGHT)
- Rayquaza emerging from a spotlight down through the clouds (RAY_ANIM_DESCENDS)
- A close-up of Rayquaza flying down (RAY_ANIM_CHARGES)
- Rayquaza floating above Groudon/Kyogre as they back away offscreen (RAY_ANIM_CHASES_AWAY)
- Notably this is re-used to show the Groudon/Kyogre fight when the player first arrives
- in Sootopolis during the conflict, which uses a shortened version of the first scene
- This is indicated by the endEarly argument to DoRayquazaScene
+ A shortened version of the first scene is used when the player first arrives
+ in Sootopolis during the Groudon/Kyogre conflict, before awakening Rayquaza (RAY_ANIM_DUO_FIGHT_PRE)
+ This is indicated with the first two arguments to DoRayquazaScene
*/
enum
@@ -43,18 +43,21 @@ enum
RAY_ANIM_END
};
-#define GFXTAG_GROUDON 30505
-#define GFXTAG_GROUDON_SHOULDER 30506
-#define GFXTAG_GROUDON_CLAW 30507
-#define GFXTAG_KYOGRE1 30508
-#define GFXTAG_KYOGRE2 30509
-#define GFXTAG_KYOGRE3 30510
-#define GFXTAG_SMOKE 30555
-#define GFXTAG_GROUDON_SIDE 30565
-
-#define PALTAG_GROUDON 30505
-#define PALTAG_KYOGRE 30508
-#define PALTAG_SMOKE 30555
+#define TAG_DUOFIGHT_GROUDON 30505
+#define TAG_DUOFIGHT_GROUDON_SHOULDER 30506
+#define TAG_DUOFIGHT_GROUDON_CLAW 30507
+#define TAG_DUOFIGHT_KYOGRE 30508
+#define TAG_DUOFIGHT_KYOGRE_SHOULDER 30509
+#define TAG_DUOFIGHT_KYOGRE_FIN 30510
+#define TAG_FLIGHT_SMOKE 30555
+#define TAG_DESCENDS_RAYQUAZA 30556
+#define TAG_DESCENDS_RAYQUAZA_TAIL 30557
+#define TAG_CHASE_GROUDON 30565
+#define TAG_CHASE_GROUDON_TAIL 30566
+#define TAG_CHASE_KYOGRE 30568
+#define TAG_CHASE_RAYQUAZA 30569
+#define TAG_CHASE_RAYQUAZA_TAIL 30570
+#define TAG_CHASE_SPLASH 30571
struct RayquazaScene
{
@@ -79,27 +82,27 @@ static void Task_DuoFightAnim(u8 taskId);
static void Task_HandleDuoFight(u8 taskId);
static void Task_DuoFightEnd(u8 taskId);
static void DuoFightEnd(u8 taskId, s8 palDelay);
-static void sub_81D7228(u8 taskId);
-static void sub_81D752C(u8 taskId);
-static void sub_81D750C(void);
-static void sub_81D7438(void);
-static void sub_81D7480(void);
-static void sub_81D74C8(void);
-static void sub_81D6A20(struct Sprite *sprite);
-static void sub_81D6D20(struct Sprite *sprite);
-static void sub_81D7860(struct Sprite *sprite);
-static void sub_81D7D14(struct Sprite *sprite);
-static void sub_81D7700(struct Sprite *sprite);
-static void sub_81D7A60(struct Sprite *sprite);
-static u8 sub_81D7664(void);
-static u8 sub_81D78BC(void);
+static void Task_DuoFight_AnimateClouds(u8 taskId);
+static void DuoFight_PanOffScene(u8 taskId);
+static void DuoFight_AnimateRain(void);
+static void DuoFight_Lightning1(void);
+static void DuoFight_Lightning2(void);
+static void DuoFight_LightningLong(void);
+static void SpriteCB_DuoFightPre_Groudon(struct Sprite *sprite);
+static void SpriteCB_DuoFightPre_Kyogre(struct Sprite *sprite);
+static void DuoFight_SlideGroudonDown(struct Sprite *sprite);
+static void DuoFight_SlideKyogreDown(struct Sprite *sprite);
+static void SpriteCB_DuoFight_Groudon(struct Sprite *sprite);
+static void SpriteCB_DuoFight_Kyogre(struct Sprite *sprite);
+static u8 CreateDuoFightGroudonSprites(void);
+static u8 CreateDuoFightKyogreSprites(void);
// RAY_ANIM_TAKES_FLIGHT
static void Task_RayTakesFlightAnim(u8 taskId);
static void Task_HandleRayTakesFlight(u8 taskId);
static void Task_RayTakesFlightEnd(u8 taskId);
static void sub_81D81A4(u8 taskId);
-static void sub_81D8260(struct Sprite *sprite);
+static void SpriteCB_TakesFlight_Smoke(struct Sprite *sprite);
// RAY_ANIM_DESCENDS
static void Task_RayDescendsAnim(u8 taskId);
@@ -128,7 +131,7 @@ static void sub_81D98B4(u8 taskId);
static void sub_81D9420(struct Sprite *sprite);
static void sub_81D97E0(struct Sprite *sprite);
static void sub_81D9528(struct Sprite *sprite);
-static void sub_81D961C(struct Sprite *sprite);
+static void SpriteCB_ChasesAway_Rayquaza(struct Sprite *sprite);
static void sub_81D9338(struct Sprite *sprite);
static void sub_81D9868(struct Sprite *sprite, u8 animNum, s16 x, s16 y);
@@ -143,7 +146,7 @@ static const TaskFunc sTasksForAnimations[] =
[RAY_ANIM_END] = Task_EndAfterFadeScreen,
};
-static const struct OamData sOamData_862A6BC =
+static const struct OamData sOam_64x64 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -160,7 +163,7 @@ static const struct OamData sOamData_862A6BC =
.affineParam = 0
};
-static const struct OamData sOamData_862A6C4 =
+static const struct OamData sOam_32x32 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -177,7 +180,7 @@ static const struct OamData sOamData_862A6C4 =
.affineParam = 0
};
-static const struct OamData sOamData_862A6CC =
+static const struct OamData sOam_64x32 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -194,7 +197,7 @@ static const struct OamData sOamData_862A6CC =
.affineParam = 0
};
-static const struct OamData sOamData_862A6D4 =
+static const struct OamData sOam_32x16 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -211,7 +214,7 @@ static const struct OamData sOamData_862A6D4 =
.affineParam = 0
};
-static const struct OamData sOamData_862A6DC =
+static const struct OamData sOam_16x8 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -228,7 +231,7 @@ static const struct OamData sOamData_862A6DC =
.affineParam = 0
};
-static const struct OamData sOamData_862A6E4 =
+static const struct OamData sOam_16x32 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -245,7 +248,7 @@ static const struct OamData sOamData_862A6E4 =
.affineParam = 0
};
-static const struct OamData sOamData_862A6EC =
+static const struct OamData sOam_16x16 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -262,7 +265,7 @@ static const struct OamData sOamData_862A6EC =
.affineParam = 0
};
-static const struct OamData sOamData_862A6F4 =
+static const struct OamData sOam_32x8 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -297,62 +300,62 @@ static const union AnimCmd sSpriteAnim_862A710[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862A724[] =
+static const union AnimCmd *const sAnims_DuoFightPre_Groudon[] =
{
sSpriteAnim_862A6FC,
sSpriteAnim_862A710
};
-static const struct SpriteTemplate sUnknown_0862A72C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_Groudon =
{
- .tileTag = GFXTAG_GROUDON,
- .paletteTag = PALTAG_GROUDON,
- .oam = &sOamData_862A6BC,
- .anims = sSpriteAnimTable_862A724,
+ .tileTag = TAG_DUOFIGHT_GROUDON,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_64x64,
+ .anims = sAnims_DuoFightPre_Groudon,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A744[] =
+static const union AnimCmd sAnim_DuoFightPre_GroudonShoulderKyogreFin[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862A74C[] =
+static const union AnimCmd *const sAnims_DuoFightPre_GroudonShoulderKyogreFin[] =
{
- sSpriteAnim_862A744
+ sAnim_DuoFightPre_GroudonShoulderKyogreFin
};
-static const struct SpriteTemplate sUnknown_0862A750 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_GroudonShoulder =
{
- .tileTag = GFXTAG_GROUDON_SHOULDER,
- .paletteTag = PALTAG_GROUDON,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862A74C,
+ .tileTag = TAG_DUOFIGHT_GROUDON_SHOULDER,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_32x32,
+ .anims = sAnims_DuoFightPre_GroudonShoulderKyogreFin,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A768[] =
+static const union AnimCmd sAnim_DuoFightPre_GroudonClaw[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862A770[] =
+static const union AnimCmd *const sAnims_DuoFightPre_GroudonClaw[] =
{
- sSpriteAnim_862A768
+ sAnim_DuoFightPre_GroudonClaw
};
-static const struct SpriteTemplate sUnknown_0862A774 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_GroudonClaw =
{
- .tileTag = GFXTAG_GROUDON_CLAW,
- .paletteTag = PALTAG_GROUDON,
- .oam = &sOamData_862A6CC,
- .anims = sSpriteAnimTable_862A770,
+ .tileTag = TAG_DUOFIGHT_GROUDON_CLAW,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_64x32,
+ .anims = sAnims_DuoFightPre_GroudonClaw,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
@@ -421,7 +424,7 @@ static const union AnimCmd sSpriteAnim_862A7E4[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862A7F8[] =
+static const union AnimCmd *const sAnims_DuoFightPre_Kyogre[] =
{
sSpriteAnim_862A78C,
sSpriteAnim_862A794,
@@ -434,18 +437,18 @@ static const union AnimCmd *const sSpriteAnimTable_862A7F8[] =
sSpriteAnim_862A7E4
};
-static const struct SpriteTemplate sUnknown_0862A81C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_Kyogre =
{
- .tileTag = GFXTAG_KYOGRE1,
- .paletteTag = PALTAG_KYOGRE,
- .oam = &sOamData_862A6D4,
- .anims = sSpriteAnimTable_862A7F8,
+ .tileTag = TAG_DUOFIGHT_KYOGRE,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_32x16,
+ .anims = sAnims_DuoFightPre_Kyogre,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A834[] =
+static const union AnimCmd sAnim_DuoFightPre_KyogreShoulder[] =
{
ANIMCMD_FRAME(0, 36),
ANIMCMD_FRAME(2, 36),
@@ -454,41 +457,41 @@ static const union AnimCmd sSpriteAnim_862A834[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862A848[] =
+static const union AnimCmd *const sAnims_DuoFightPre_KyogreShoulder[] =
{
- sSpriteAnim_862A834
+ sAnim_DuoFightPre_KyogreShoulder
};
-static const struct SpriteTemplate sUnknown_0862A84C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_KyogreShoulder =
{
- .tileTag = GFXTAG_KYOGRE2,
- .paletteTag = PALTAG_KYOGRE,
- .oam = &sOamData_862A6DC,
- .anims = sSpriteAnimTable_862A848,
+ .tileTag = TAG_DUOFIGHT_KYOGRE_SHOULDER,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_16x8,
+ .anims = sAnims_DuoFightPre_KyogreShoulder,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862A864 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_KyogreFin =
{
- .tileTag = GFXTAG_KYOGRE3,
- .paletteTag = PALTAG_KYOGRE,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862A74C,
+ .tileTag = TAG_DUOFIGHT_KYOGRE_FIN,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_32x32,
+ .anims = sAnims_DuoFightPre_GroudonShoulderKyogreFin,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct ScanlineEffectParams sUnknown_0862A87C =
+static const struct ScanlineEffectParams sScanlineParams_DuoFight_Clouds =
{
.dmaDest = (vu16 *)REG_ADDR_BG1HOFS,
- .dmaControl = 0xA2600001,
+ .dmaControl = SCANLINE_EFFECT_DMACNT_16BIT,
.initState = 1
};
-static const struct BgTemplate sUnknown_0862A888[] =
+static const struct BgTemplate sBgTemplates_DuoFight[] =
{
{
.bg = 0,
@@ -537,82 +540,82 @@ static const union AnimCmd sSpriteAnim_862A8A8[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862A8BC[] =
+static const union AnimCmd *const sAnims_DuoFight_Groudon[] =
{
sSpriteAnim_862A894,
sSpriteAnim_862A8A8
};
-static const struct CompressedSpriteSheet sUnknown_0862A8C4 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_Groudon =
{
- gRaySceneGroudon_Gfx, 0x3000, GFXTAG_GROUDON
+ gRaySceneDuoFight_Groudon_Gfx, 0x3000, TAG_DUOFIGHT_GROUDON
};
-static const struct CompressedSpritePalette sUnknown_0862A8CC =
+static const struct CompressedSpritePalette sSpritePal_DuoFight_Groudon =
{
- gRaySceneGroudon_Pal, PALTAG_GROUDON
+ gRaySceneDuoFight_Groudon_Pal, TAG_DUOFIGHT_GROUDON
};
-static const struct SpriteTemplate sUnknown_0862A8D4 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_Groudon =
{
- .tileTag = GFXTAG_GROUDON,
- .paletteTag = PALTAG_GROUDON,
- .oam = &sOamData_862A6BC,
- .anims = sSpriteAnimTable_862A8BC,
+ .tileTag = TAG_DUOFIGHT_GROUDON,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_64x64,
+ .anims = sAnims_DuoFight_Groudon,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A8EC[] =
+static const union AnimCmd sAnim_DuoFight_GroudonShoulderKyogreFin[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862A8F4[] =
+static const union AnimCmd *const sAnims_DuoFight_GroudonShoulderKyogreFin[] =
{
- sSpriteAnim_862A8EC
+ sAnim_DuoFight_GroudonShoulderKyogreFin
};
-static const struct CompressedSpriteSheet sUnknown_0862A8F8 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_GroudonShoulder =
{
- gRaySceneGroudonShoulder_Gfx, 0x200, GFXTAG_GROUDON_SHOULDER
+ gRaySceneDuoFight_GroudonShoulder_Gfx, 0x200, TAG_DUOFIGHT_GROUDON_SHOULDER
};
-static const struct SpriteTemplate sUnknown_0862A900 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_GroudonShoulder =
{
- .tileTag = GFXTAG_GROUDON_SHOULDER,
- .paletteTag = PALTAG_GROUDON,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862A8F4,
+ .tileTag = TAG_DUOFIGHT_GROUDON_SHOULDER,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_32x32,
+ .anims = sAnims_DuoFight_GroudonShoulderKyogreFin,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A918[] =
+static const union AnimCmd sAnim_DuoFight_GroudonClaw[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862A920[] =
+static const union AnimCmd *const sAnims_DuoFight_GroudonClaw[] =
{
- sSpriteAnim_862A918
+ sAnim_DuoFight_GroudonClaw
};
-static const struct CompressedSpriteSheet sUnknown_0862A924 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_GroudonClaw =
{
- gRaySceneGroudonClaw_Gfx, 0x400, GFXTAG_GROUDON_CLAW
+ gRaySceneDuoFight_GroudonClaw_Gfx, 0x400, TAG_DUOFIGHT_GROUDON_CLAW
};
-static const struct SpriteTemplate sUnknown_0862A92C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_GroudonClaw =
{
- .tileTag = GFXTAG_GROUDON_CLAW,
- .paletteTag = PALTAG_GROUDON,
- .oam = &sOamData_862A6CC,
- .anims = sSpriteAnimTable_862A920,
+ .tileTag = TAG_DUOFIGHT_GROUDON_CLAW,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_64x32,
+ .anims = sAnims_DuoFight_GroudonClaw,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
@@ -681,7 +684,7 @@ static const union AnimCmd sSpriteAnim_862A99C[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862A9B0[] =
+static const union AnimCmd *const sAnims_DuoFight_Kyogre[] =
{
sSpriteAnim_862A944,
sSpriteAnim_862A94C,
@@ -694,28 +697,28 @@ static const union AnimCmd *const sSpriteAnimTable_862A9B0[] =
sSpriteAnim_862A99C
};
-static const struct CompressedSpriteSheet sUnknown_0862A9D4 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_Kyogre =
{
- gRaySceneKyogre_Gfx, 0xF00, GFXTAG_KYOGRE1
+ gRaySceneDuoFight_Kyogre_Gfx, 0xF00, TAG_DUOFIGHT_KYOGRE
};
-static const struct CompressedSpritePalette sUnknown_0862A9DC =
+static const struct CompressedSpritePalette sSpritePal_DuoFight_Kyogre =
{
- gRaySceneKyogre_Pal, PALTAG_KYOGRE
+ gRaySceneDuoFight_Kyogre_Pal, TAG_DUOFIGHT_KYOGRE
};
-static const struct SpriteTemplate sUnknown_0862A9E4 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_Kyogre =
{
- .tileTag = GFXTAG_KYOGRE1,
- .paletteTag = PALTAG_KYOGRE,
- .oam = &sOamData_862A6D4,
- .anims = sSpriteAnimTable_862A9B0,
+ .tileTag = TAG_DUOFIGHT_KYOGRE,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_32x16,
+ .anims = sAnims_DuoFight_Kyogre,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A9FC[] =
+static const union AnimCmd sAnim_DuoFight_KyogreShoulder[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(2, 24),
@@ -724,44 +727,44 @@ static const union AnimCmd sSpriteAnim_862A9FC[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862AA10[] =
+static const union AnimCmd *const sAnims_DuoFight_KyogreShoulder[] =
{
- sSpriteAnim_862A9FC
+ sAnim_DuoFight_KyogreShoulder
};
-static const struct CompressedSpriteSheet sUnknown_0862AA14 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_KyogreShoulder =
{
- gRaySceneKyogre2_Gfx, 0xC0, GFXTAG_KYOGRE2
+ gRaySceneDuoFight_KyogreShoulder_Gfx, 0xC0, TAG_DUOFIGHT_KYOGRE_SHOULDER
};
-static const struct SpriteTemplate sUnknown_0862AA1C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_KyogreShoulder =
{
- .tileTag = GFXTAG_KYOGRE2,
- .paletteTag = PALTAG_KYOGRE,
- .oam = &sOamData_862A6DC,
- .anims = sSpriteAnimTable_862AA10,
+ .tileTag = TAG_DUOFIGHT_KYOGRE_SHOULDER,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_16x8,
+ .anims = sAnims_DuoFight_KyogreShoulder,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct CompressedSpriteSheet sUnknown_0862AA34 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_KyogreFin =
{
- gRaySceneKyogre3_Gfx, 0x200, GFXTAG_KYOGRE3
+ gRaySceneDuoFight_KyogreFin_Gfx, 0x200, TAG_DUOFIGHT_KYOGRE_FIN
};
-static const struct SpriteTemplate sUnknown_0862AA3C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_KyogreFin =
{
- .tileTag = GFXTAG_KYOGRE3,
- .paletteTag = PALTAG_KYOGRE,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862A8F4,
+ .tileTag = TAG_DUOFIGHT_KYOGRE_FIN,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_32x32,
+ .anims = sAnims_DuoFight_GroudonShoulderKyogreFin,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct BgTemplate sUnknown_0862AA54[] =
+static const struct BgTemplate sBgTemplates_TakesFlight[] =
{
{
.bg = 0,
@@ -792,18 +795,18 @@ static const struct BgTemplate sUnknown_0862AA54[] =
}
};
-static const union AnimCmd sSpriteAnim_862AA60[] =
+static const union AnimCmd sAnim_TakesFlight_Smoke[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862AA68[] =
+static const union AnimCmd *const sAnims_TakesFlight_Smoke[] =
{
- sSpriteAnim_862AA60
+ sAnim_TakesFlight_Smoke
};
-static const union AffineAnimCmd sSpriteAffineAnim_862AA6C[] =
+static const union AffineAnimCmd sAffineAnim_TakesFlight_Smoke[] =
{
AFFINEANIMCMD_FRAME(-64, -64, 0, 1),
AFFINEANIMCMD_FRAME(32, 32, 0, 14),
@@ -811,47 +814,47 @@ static const union AffineAnimCmd sSpriteAffineAnim_862AA6C[] =
AFFINEANIMCMD_JUMP(0)
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_862AA8C[] =
+static const union AffineAnimCmd *const sAffineAnims_TakesFlight_Smoke[] =
{
- sSpriteAffineAnim_862AA6C
+ sAffineAnim_TakesFlight_Smoke
};
-static const struct CompressedSpriteSheet sUnknown_0862AA90 =
+static const struct CompressedSpriteSheet sSpriteSheet_TakesFlight_Smoke =
{
- gRaySceneSmoke_Gfx, 0x100, GFXTAG_SMOKE
+ gRaySceneTakesFlight_Smoke_Gfx, 0x100, TAG_FLIGHT_SMOKE
};
-static const struct CompressedSpritePalette sUnknown_0862AA98 =
+static const struct CompressedSpritePalette sSpritePal_TakesFlight_Smoke =
{
- gRaySceneSmoke_Pal, PALTAG_SMOKE
+ gRaySceneTakesFlight_Smoke_Pal, TAG_FLIGHT_SMOKE
};
-static const struct SpriteTemplate sUnknown_0862AAA0 =
+static const struct SpriteTemplate sSpriteTemplate_TakesFlight_Smoke =
{
- .tileTag = GFXTAG_SMOKE,
- .paletteTag = PALTAG_SMOKE,
- .oam = &sOamData_862A6D4,
- .anims = sSpriteAnimTable_862AA68,
+ .tileTag = TAG_FLIGHT_SMOKE,
+ .paletteTag = TAG_FLIGHT_SMOKE,
+ .oam = &sOam_32x16,
+ .anims = sAnims_TakesFlight_Smoke,
.images = NULL,
- .affineAnims = sSpriteAffineAnimTable_862AA8C,
- .callback = sub_81D8260,
+ .affineAnims = sAffineAnims_TakesFlight_Smoke,
+ .callback = SpriteCB_TakesFlight_Smoke,
};
static const s8 sUnknown_0862AAB8[][2] =
{
- {-1, 5},
- {-3, -4},
- {5, -3},
- {-7, 2},
- {-9, -1},
- {1, -5},
- {3, 4},
- {-5, 3},
- {7, -2},
- {9, 1}
+ {-1, 5},
+ {-3, -4},
+ { 5, -3},
+ {-7, 2},
+ {-9, -1},
+ { 1, -5},
+ { 3, 4},
+ {-5, 3},
+ { 7, -2},
+ { 9, 1}
};
-static const struct BgTemplate sUnknown_0862AACC[] =
+static const struct BgTemplate sBgTemplates_Descends[] =
{
{
.bg = 0,
@@ -891,68 +894,68 @@ static const struct BgTemplate sUnknown_0862AACC[] =
}
};
-static const union AnimCmd sSpriteAnim_862AADC[] =
+static const union AnimCmd sAnim_Descends_Rayquaza[] =
{
ANIMCMD_FRAME(0, 32),
ANIMCMD_FRAME(64, 32),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862AAE8[] =
+static const union AnimCmd *const sAnims_Descends_Rayquaza[] =
{
- sSpriteAnim_862AADC
+ sAnim_Descends_Rayquaza
};
-static const union AnimCmd sSpriteAnim_862AAEC[] =
+static const union AnimCmd sAnim_Descends_RayquazaTail[] =
{
ANIMCMD_FRAME(0, 32),
ANIMCMD_FRAME(8, 32),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862AAF8[] =
+static const union AnimCmd *const sAnims_Descends_RayquazaTail[] =
{
- sSpriteAnim_862AAEC
+ sAnim_Descends_RayquazaTail
};
-static const struct CompressedSpriteSheet sUnknown_0862AAFC =
+static const struct CompressedSpriteSheet sSpriteSheet_Descends_Rayquaza =
{
- gRaySceneRayquazaFly1_Gfx, 0x1000, 30556
+ gRaySceneDescends_Rayquaza_Gfx, 0x1000, TAG_DESCENDS_RAYQUAZA
};
-static const struct CompressedSpriteSheet sUnknown_0862AB04 =
+static const struct CompressedSpriteSheet sSpriteSheet_Descends_RayquazaTail =
{
- gRaySceneRayquazaTail_Gfx, 0x200, 30557
+ gRaySceneDescends_RayquazaTail_Gfx, 0x200, TAG_DESCENDS_RAYQUAZA_TAIL
};
-static const struct CompressedSpritePalette sUnknown_0862AB0C =
+static const struct CompressedSpritePalette sSpritePal_Descends_Rayquaza =
{
- gRaySceneRayquaza_Pal, 30556
+ gRaySceneTakesFlight_Rayquaza_Pal, TAG_DESCENDS_RAYQUAZA // "Takes flight" palette re-used here
};
-static const struct SpriteTemplate sUnknown_0862AB14 =
+static const struct SpriteTemplate sSpriteTemplate_Descends_Rayquaza =
{
- .tileTag = 30556,
- .paletteTag = 30556,
- .oam = &sOamData_862A6BC,
- .anims = sSpriteAnimTable_862AAE8,
+ .tileTag = TAG_DESCENDS_RAYQUAZA,
+ .paletteTag = TAG_DESCENDS_RAYQUAZA,
+ .oam = &sOam_64x64,
+ .anims = sAnims_Descends_Rayquaza,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862AB2C =
+static const struct SpriteTemplate sSpriteTemplate_Descends_RayquazaTail =
{
- .tileTag = 30557,
- .paletteTag = 30556,
- .oam = &sOamData_862A6E4,
- .anims = sSpriteAnimTable_862AAF8,
+ .tileTag = TAG_DESCENDS_RAYQUAZA_TAIL,
+ .paletteTag = TAG_DESCENDS_RAYQUAZA,
+ .oam = &sOam_16x32,
+ .anims = sAnims_Descends_RayquazaTail,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct BgTemplate sUnknown_0862AB44[] =
+static const struct BgTemplate sBgTemplates_Charges[] =
{
{
.bg = 0,
@@ -1007,21 +1010,21 @@ static const union AnimCmd sSpriteAnim_862AB5C[] =
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const sSpriteAnimTable_862AB70[] =
+static const union AnimCmd *const sAnims_ChasesAway_Groudon[] =
{
sSpriteAnim_862AB54,
sSpriteAnim_862AB5C
};
-static const union AnimCmd sSpriteAnim_862AB78[] =
+static const union AnimCmd sAnim_ChasesAway_GroudonTail[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862AB80[] =
+static const union AnimCmd *const sAnims_ChasesAway_GroudonTail[] =
{
- sSpriteAnim_862AB78,
+ sAnim_ChasesAway_GroudonTail,
};
static const union AnimCmd sSpriteAnim_862AB84[] =
@@ -1042,7 +1045,7 @@ static const union AnimCmd sSpriteAnim_862AB94[] =
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862AB9C[] =
+static const union AnimCmd *const sAnims_ChasesAway_Kyogre[] =
{
sSpriteAnim_862AB84,
sSpriteAnim_862AB8C,
@@ -1073,7 +1076,7 @@ static const union AnimCmd sSpriteAnim_862ABC0[] =
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862ABC8[] =
+static const union AnimCmd *const sAnims_ChasesAway_Rayquaza[] =
{
sSpriteAnim_862ABA8,
sSpriteAnim_862ABB0,
@@ -1105,7 +1108,7 @@ static const union AnimCmd sSpriteAnim_862ABF0[] =
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862ABF8[] =
+static const union AnimCmd *const sAnims_ChasesAway_RayquazaTail[] =
{
sSpriteAnim_862ABD8,
sSpriteAnim_862ABE0,
@@ -1113,7 +1116,7 @@ static const union AnimCmd *const sSpriteAnimTable_862ABF8[] =
sSpriteAnim_862ABF0
};
-static const union AnimCmd sSpriteAnim_862AC08[] =
+static const union AnimCmd sAnim_ChasesAway_KyogreSplash[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(4, 8),
@@ -1124,128 +1127,128 @@ static const union AnimCmd sSpriteAnim_862AC08[] =
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const sSpriteAnimTable_862AC24[] =
+static const union AnimCmd *const sAnims_ChasesAway_KyogreSplash[] =
{
- sSpriteAnim_862AC08
+ sAnim_ChasesAway_KyogreSplash
};
-static const struct CompressedSpriteSheet sUnknown_0862AC28 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_Groudon =
{
- gRaySceneGroudonLeft_Gfx, 0x1800, GFXTAG_GROUDON_SIDE
+ gRaySceneChasesAway_Groudon_Gfx, 0x1800, TAG_CHASE_GROUDON
};
-static const struct CompressedSpriteSheet sUnknown_0862AC30 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_GroudonTail =
{
- gRaySceneGroudonTail_Gfx, 0x80, 30566
+ gRaySceneChasesAway_GroudonTail_Gfx, 0x80, TAG_CHASE_GROUDON_TAIL
};
-static const struct CompressedSpriteSheet sUnknown_0862AC38 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_Kyogre =
{
- gRaySceneKyogreRight_Gfx, 0x600, 30568
+ gRaySceneChasesAway_Kyogre_Gfx, 0x600, TAG_CHASE_KYOGRE
};
-static const struct CompressedSpriteSheet sUnknown_0862AC40 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_Rayquaza =
{
- gRaySceneRayquazaHover_Gfx, 0x2000, 30569
+ gRaySceneChasesAway_Rayquaza_Gfx, 0x2000, TAG_CHASE_RAYQUAZA
};
-static const struct CompressedSpriteSheet sUnknown_0862AC48 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_RayquazaTail =
{
- gRaySceneRayquazaFlyIn_Gfx, 0x800, 30570
+ gRaySceneChasesAway_RayquazaTail_Gfx, 0x800, TAG_CHASE_RAYQUAZA_TAIL
};
-static const struct CompressedSpriteSheet sUnknown_0862AC50 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_KyogreSplash =
{
- gRaySceneSplash_Gfx, 0x300, 30571
+ gRaySceneChasesAway_KyogreSplash_Gfx, 0x300, TAG_CHASE_SPLASH
};
-static const struct CompressedSpritePalette sUnknown_0862AC58 =
+static const struct CompressedSpritePalette sSpritePal_ChasesAway_Groudon =
{
- gRaySceneGroudonLeft_Pal, GFXTAG_GROUDON_SIDE
+ gRaySceneChasesAway_Groudon_Pal, TAG_CHASE_GROUDON
};
-static const struct CompressedSpritePalette sUnknown_0862AC60 =
+static const struct CompressedSpritePalette sSpritePal_ChasesAway_Kyogre =
{
- gRaySceneKyogreRight_Pal, 30568
+ gRaySceneChasesAway_Kyogre_Pal, TAG_CHASE_KYOGRE
};
-static const struct CompressedSpritePalette sUnknown_0862AC68 =
+static const struct CompressedSpritePalette sSpritePal_ChasesAway_Rayquaza =
{
- gRaySceneRayquazaHover_Pal, 30569
+ gRaySceneChasesAway_Rayquaza_Pal, TAG_CHASE_RAYQUAZA
};
-static const struct CompressedSpritePalette sUnknown_0862AC70 =
+static const struct CompressedSpritePalette sSpritePal_ChasesAway_KyogreSplash =
{
- gRaySceneSplash_Pal, 30571
+ gRaySceneChasesAway_KyogreSplash_Pal, TAG_CHASE_SPLASH
};
-static const struct SpriteTemplate sUnknown_0862AC78 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_Groudon =
{
- .tileTag = GFXTAG_GROUDON_SIDE,
- .paletteTag = 30565,
- .oam = &sOamData_862A6BC,
- .anims = sSpriteAnimTable_862AB70,
+ .tileTag = TAG_CHASE_GROUDON,
+ .paletteTag = TAG_CHASE_GROUDON,
+ .oam = &sOam_64x64,
+ .anims = sAnims_ChasesAway_Groudon,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862AC90 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_GroudonTail =
{
- .tileTag = 30566,
- .paletteTag = 30565,
- .oam = &sOamData_862A6EC,
- .anims = sSpriteAnimTable_862AB80,
+ .tileTag = TAG_CHASE_GROUDON_TAIL,
+ .paletteTag = TAG_CHASE_GROUDON,
+ .oam = &sOam_16x16,
+ .anims = sAnims_ChasesAway_GroudonTail,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862ACA8 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_Kyogre =
{
- .tileTag = 30568,
- .paletteTag = 30568,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862AB9C,
+ .tileTag = TAG_CHASE_KYOGRE,
+ .paletteTag = TAG_CHASE_KYOGRE,
+ .oam = &sOam_32x32,
+ .anims = sAnims_ChasesAway_Kyogre,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862ACC0 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_Rayquaza =
{
- .tileTag = 30569,
- .paletteTag = 30569,
- .oam = &sOamData_862A6BC,
- .anims = sSpriteAnimTable_862ABC8,
+ .tileTag = TAG_CHASE_RAYQUAZA,
+ .paletteTag = TAG_CHASE_RAYQUAZA,
+ .oam = &sOam_64x64,
+ .anims = sAnims_ChasesAway_Rayquaza,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81D961C,
+ .callback = SpriteCB_ChasesAway_Rayquaza,
};
-static const struct SpriteTemplate sUnknown_0862ACD8 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_RayquazaTail =
{
- .tileTag = 30570,
- .paletteTag = 30569,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862ABF8,
+ .tileTag = TAG_CHASE_RAYQUAZA_TAIL,
+ .paletteTag = TAG_CHASE_RAYQUAZA,
+ .oam = &sOam_32x32,
+ .anims = sAnims_ChasesAway_RayquazaTail,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862ACF0 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_KyogreSplash =
{
- .tileTag = 30571,
- .paletteTag = 30571,
- .oam = &sOamData_862A6F4,
- .anims = sSpriteAnimTable_862AC24,
+ .tileTag = TAG_CHASE_SPLASH,
+ .paletteTag = TAG_CHASE_SPLASH,
+ .oam = &sOam_32x8,
+ .anims = sAnims_ChasesAway_KyogreSplash,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct BgTemplate sUnknown_0862AD08[] =
+static const struct BgTemplate sBgTemplates_ChasesAway[] =
{
{
.bg = 0,
@@ -1276,7 +1279,6 @@ static const struct BgTemplate sUnknown_0862AD08[] =
}
};
-// code
void DoRayquazaScene(u8 animId, bool8 endEarly, void (*exitCallback)(void))
{
sRayScene = AllocZeroed(sizeof(*sRayScene));
@@ -1295,7 +1297,7 @@ static void CB2_InitRayquazaScene(void)
ResetPaletteFade();
ResetSpriteData();
ResetTasks();
- FillPalette(0, 0xF0, 0x20);
+ FillPalette(RGB_BLACK, 0xF0, 32);
CreateTask(sTasksForAnimations[sRayScene->animId], 0);
SetMainCallback2(CB2_RayquazaScene);
}
@@ -1347,34 +1349,43 @@ static void Task_SetNextAnim(u8 taskId)
static void sub_81D68C8(void)
{
- SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
SetGpuReg(REG_OFFSET_WINOUT, 0);
- SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
- SetGpuReg(REG_OFFSET_WIN0V, 0x1888);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, DISPLAY_WIDTH));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(24, DISPLAY_HEIGHT - 24));
gPlttBufferUnfaded[0] = 0;
gPlttBufferFaded[0] = 0;
}
static void sub_81D6904(void)
{
- SetGpuReg(REG_OFFSET_WININ, 0x3F);
- SetGpuReg(REG_OFFSET_WINOUT, 0x3F);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
}
+#define tCounter data[0]
+#define tHelperTaskId data[1]
+#define tGroudonSpriteId data[2]
+#define tKyogreSpriteId data[3]
+
+#define sGroudonBodySpriteId data[0]
+#define sGroudonShoulderSpriteId data[1]
+#define sGroudonClawSpriteId data[2]
+
static void Task_HandleDuoFightPre(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D750C();
+ DuoFight_AnimateRain();
if (!gPaletteFade.active)
{
- s16 counter = data[0];
+ s16 counter = tCounter;
if (counter == 64)
{
- sub_81D7438();
+ DuoFight_Lightning1();
}
else if (counter == 144)
{
- sub_81D7480();
+ DuoFight_Lightning2();
}
else
{
@@ -1384,31 +1395,31 @@ static void Task_HandleDuoFightPre(u8 taskId)
DuoFightEnd(taskId, 0);
return;
case 148:
- sub_81D74C8();
+ DuoFight_LightningLong();
break;
}
}
- data[0]++;
+ tCounter++;
}
}
-static u8 sub_81D6984(void)
+static u8 CreateDuoFightPreGroudonSprites(void)
{
u8 spriteId;
s16 *data;
- spriteId = CreateSprite(&sUnknown_0862A72C, 88, 72, 3);
- gSprites[spriteId].callback = sub_81D6A20;
+ spriteId = CreateSprite(&sSpriteTemplate_DuoFightPre_Groudon, 88, 72, 3);
+ gSprites[spriteId].callback = SpriteCB_DuoFightPre_Groudon;
data = gSprites[spriteId].data;
- data[0] = CreateSprite(&sUnknown_0862A72C, 56, 104, 3);
- data[1] = CreateSprite(&sUnknown_0862A750, 75, 101, 0);
- data[2] = CreateSprite(&sUnknown_0862A774, 109, 114, 1);
- StartSpriteAnim(&gSprites[data[0]], 1);
+ sGroudonBodySpriteId = CreateSprite(&sSpriteTemplate_DuoFightPre_Groudon, 56, 104, 3);
+ sGroudonShoulderSpriteId = CreateSprite(&sSpriteTemplate_DuoFightPre_GroudonShoulder, 75, 101, 0);
+ sGroudonClawSpriteId = CreateSprite(&sSpriteTemplate_DuoFightPre_GroudonClaw, 109, 114, 1);
+ StartSpriteAnim(&gSprites[sGroudonBodySpriteId], 1);
return spriteId;
}
-static void sub_81D6A20(struct Sprite *sprite)
+static void SpriteCB_DuoFightPre_Groudon(struct Sprite *sprite)
{
s16 *data = sprite->data;
data[5]++;
@@ -1416,54 +1427,54 @@ static void sub_81D6A20(struct Sprite *sprite)
if (data[5] == 0 && sprite->pos1.x != 72)
{
sprite->pos1.x--;
- gSprites[sprite->data[0]].pos1.x--;
- gSprites[data[1]].pos1.x--;
- gSprites[data[2]].pos1.x--;
+ gSprites[sprite->sGroudonBodySpriteId].pos1.x--;
+ gSprites[sGroudonShoulderSpriteId].pos1.x--;
+ gSprites[sGroudonClawSpriteId].pos1.x--;
}
switch (sprite->animCmdIndex)
{
case 0:
- gSprites[data[1]].pos2.x = 0;
- gSprites[data[1]].pos2.y = 0;
- gSprites[data[2]].pos2.x = 0;
- gSprites[data[2]].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
+ gSprites[sGroudonClawSpriteId].pos2.x = 0;
+ gSprites[sGroudonClawSpriteId].pos2.y = 0;
break;
case 1:
case 3:
- gSprites[data[1]].pos2.x = -1;
- gSprites[data[1]].pos2.y = 0;
- gSprites[data[2]].pos2.x = -1;
- gSprites[data[2]].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
+ gSprites[sGroudonClawSpriteId].pos2.x = -1;
+ gSprites[sGroudonClawSpriteId].pos2.y = 0;
break;
case 2:
- gSprites[data[1]].pos2.x = -1;
- gSprites[data[1]].pos2.y = 1;
- gSprites[data[2]].pos2.x = -2;
- gSprites[data[2]].pos2.y = 1;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 1;
+ gSprites[sGroudonClawSpriteId].pos2.x = -2;
+ gSprites[sGroudonClawSpriteId].pos2.y = 1;
break;
}
}
-static u8 sub_81D6B7C(void)
+static u8 CreateDuoFightPreKyogreSprites(void)
{
u8 spriteId;
s16 *data;
- spriteId = CreateSprite(&sUnknown_0862A81C, 136, 96, 1);
- gSprites[spriteId].callback = sub_81D6D20;
+ spriteId = CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 136, 96, 1);
+ gSprites[spriteId].callback = SpriteCB_DuoFightPre_Kyogre;
data = gSprites[spriteId].data;
- data[0] = CreateSprite(&sUnknown_0862A81C, 168, 96, 1) << 8;
- data[0] |= CreateSprite(&sUnknown_0862A81C, 136, 112, 1);
- data[1] = CreateSprite(&sUnknown_0862A81C, 168, 112, 1) << 8;
- data[1] |= CreateSprite(&sUnknown_0862A81C, 136, 128, 1);
- data[2] = CreateSprite(&sUnknown_0862A81C, 168, 128, 1) << 8;
- data[2] |= CreateSprite(&sUnknown_0862A81C, 104, 128, 2);
- data[3] = CreateSprite(&sUnknown_0862A81C, 136, 128, 2) << 8;
- data[3] |= CreateSprite(&sUnknown_0862A81C, 184, 128, 0);
- data[4] = CreateSprite(&sUnknown_0862A84C, 208, 132, 0) << 8;
- data[4] |= CreateSprite(&sUnknown_0862A864, 200, 120, 1);
+ data[0] = CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 168, 96, 1) << 8;
+ data[0] |= CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 136, 112, 1);
+ data[1] = CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 168, 112, 1) << 8;
+ data[1] |= CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 136, 128, 1);
+ data[2] = CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 168, 128, 1) << 8;
+ data[2] |= CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 104, 128, 2);
+ data[3] = CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 136, 128, 2) << 8;
+ data[3] |= CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 184, 128, 0);
+ data[4] = CreateSprite(&sSpriteTemplate_DuoFightPre_KyogreShoulder, 208, 132, 0) << 8;
+ data[4] |= CreateSprite(&sSpriteTemplate_DuoFightPre_KyogreFin, 200, 120, 1);
StartSpriteAnim(&gSprites[data[0] >> 8], 1);
StartSpriteAnim(&gSprites[data[0] & 0xFF], 2);
@@ -1477,7 +1488,7 @@ static u8 sub_81D6B7C(void)
return spriteId;
}
-static void sub_81D6D20(struct Sprite *sprite)
+static void SpriteCB_DuoFightPre_Kyogre(struct Sprite *sprite)
{
s16 *data = sprite->data;
data[5]++;
@@ -1544,11 +1555,11 @@ static void VBlankCB_DuoFight(void)
ScanlineEffect_InitHBlankDmaTransfer();
}
-static void sub_81D6FE0(void)
+static void InitDuoFightSceneBgs(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sUnknown_0862A888, ARRAY_COUNT(sUnknown_0862A888));
+ InitBgsFromTemplates(0, sBgTemplates_DuoFight, ARRAY_COUNT(sBgTemplates_DuoFight));
SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
@@ -1563,46 +1574,46 @@ static void sub_81D6FE0(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static void sub_81D706C(void)
+static void LoadDuoFightSceneGfx(void)
{
ResetTempTileDataBuffers();
- DecompressAndCopyTileDataToVram(0, gRaySceneClouds_Gfx, 0, 0, 0);
- while (FreeTempTileDataBuffersIfPossible());
-
- LZDecompressWram(gRaySceneClouds2_Tilemap, sRayScene->tilemapBuffers[0]);
- LZDecompressWram(gRaySceneClouds1_Tilemap, sRayScene->tilemapBuffers[1]);
- LZDecompressWram(gRaySceneClouds3_Tilemap, sRayScene->tilemapBuffers[2]);
- LoadCompressedPalette(gRaySceneClouds_Pal, 0, 0x40);
- LoadCompressedSpriteSheet(&sUnknown_0862A8C4);
- LoadCompressedSpriteSheet(&sUnknown_0862A8F8);
- LoadCompressedSpriteSheet(&sUnknown_0862A924);
- LoadCompressedSpriteSheet(&sUnknown_0862A9D4);
- LoadCompressedSpriteSheet(&sUnknown_0862AA14);
- LoadCompressedSpriteSheet(&sUnknown_0862AA34);
- LoadCompressedSpritePalette(&sUnknown_0862A8CC);
- LoadCompressedSpritePalette(&sUnknown_0862A9DC);
+ DecompressAndCopyTileDataToVram(0, gRaySceneDuoFight_Clouds_Gfx, 0, 0, 0);
+ while (FreeTempTileDataBuffersIfPossible())
+ ;
+ LZDecompressWram(gRaySceneDuoFight_Clouds2_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneDuoFight_Clouds1_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneDuoFight_Clouds3_Tilemap, sRayScene->tilemapBuffers[2]);
+ LoadCompressedPalette(gRaySceneDuoFight_Clouds_Pal, 0, 0x40);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_Groudon);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_GroudonShoulder);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_GroudonClaw);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_Kyogre);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_KyogreShoulder);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_KyogreFin);
+ LoadCompressedSpritePalette(&sSpritePal_DuoFight_Groudon);
+ LoadCompressedSpritePalette(&sSpritePal_DuoFight_Kyogre);
}
static void Task_DuoFightAnim(u8 taskId)
{
s16 *data = gTasks[taskId].data;
ScanlineEffect_Clear();
- sub_81D6FE0();
- sub_81D706C();
+ InitDuoFightSceneBgs();
+ LoadDuoFightSceneGfx();
CpuFastFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers));
- ScanlineEffect_SetParams(sUnknown_0862A87C);
- data[0] = 0;
- data[1] = CreateTask(sub_81D7228, 0);
+ ScanlineEffect_SetParams(sScanlineParams_DuoFight_Clouds);
+ tCounter = 0;
+ tHelperTaskId = CreateTask(Task_DuoFight_AnimateClouds, 0);
if (sRayScene->animId == RAY_ANIM_DUO_FIGHT_PRE)
{
- data[2] = sub_81D6984();
- data[3] = sub_81D6B7C();
+ tGroudonSpriteId = CreateDuoFightPreGroudonSprites();
+ tKyogreSpriteId = CreateDuoFightPreKyogreSprites();
gTasks[taskId].func = Task_HandleDuoFightPre;
}
else
{
- data[2] = sub_81D7664();
- data[3] = sub_81D78BC();
+ tGroudonSpriteId = CreateDuoFightGroudonSprites();
+ tKyogreSpriteId = CreateDuoFightKyogreSprites();
gTasks[taskId].func = Task_HandleDuoFight;
StopMapMusic();
}
@@ -1613,7 +1624,7 @@ static void Task_DuoFightAnim(u8 taskId)
PlaySE(SE_T_OOAME);
}
-static void sub_81D7228(u8 taskId)
+static void Task_DuoFight_AnimateClouds(u8 taskId)
{
s16 i;
u16 *data = gTasks[taskId].data;
@@ -1675,21 +1686,21 @@ static void sub_81D7228(u8 taskId)
static void Task_HandleDuoFight(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D750C();
+ DuoFight_AnimateRain();
if (!gPaletteFade.active)
{
- s16 counter = data[0];
+ s16 counter = tCounter;
if (counter == 32 || counter == 112)
{
- sub_81D7438();
+ DuoFight_Lightning1();
}
else if (counter == 216)
{
- sub_81D7480();
+ DuoFight_Lightning2();
}
else if (counter == 220)
{
- sub_81D74C8();
+ DuoFight_LightningLong();
}
else
{
@@ -1700,60 +1711,64 @@ static void Task_HandleDuoFight(u8 taskId)
return;
case 380:
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND);
- gTasks[data[1]].func = sub_81D752C;
- gTasks[data[1]].data[0] = 0;
- gTasks[data[1]].data[2] = data[2];
- gTasks[data[1]].data[3] = data[3];
+ gTasks[tHelperTaskId].func = DuoFight_PanOffScene;
+ gTasks[tHelperTaskId].data[0] = 0;
+ gTasks[tHelperTaskId].data[2] = data[2];
+ gTasks[tHelperTaskId].data[3] = data[3];
ScanlineEffect_Stop();
break;
}
}
- data[0]++;
+ tCounter++;
}
}
-static void sub_81D7438(void)
+// In the below functions, BlendPalettesGradually flashes the bg white and the duo black
+// and gradually fades them back to original color to simulate lightning
+static void DuoFight_Lightning1(void)
{
PlaySE(SE_T_KAMI);
- sub_80A2C44(0x7FFF, 0, 0x10, 0, -1, 0, 0);
- sub_80A2C44(0xFFFF0000, 0, 0x10, 0, 0, 0, 1);
+ BlendPalettesGradually(0x00007FFF, 0, 16, 0, RGB_WHITEALPHA, 0, 0);
+ BlendPalettesGradually(0xFFFF0000, 0, 16, 0, RGB_BLACK, 0, 1);
}
-static void sub_81D7480(void)
+static void DuoFight_Lightning2(void)
{
PlaySE(SE_T_KAMI);
- sub_80A2C44(0x7FFF, 0, 0x10, 0x10, -1, 0, 0);
- sub_80A2C44(0xFFFF0000, 0, 0x10, 0x10, 0, 0, 1);
+ BlendPalettesGradually(0x00007FFF, 0, 16, 16, RGB_WHITEALPHA, 0, 0);
+ BlendPalettesGradually(0xFFFF0000, 0, 16, 16, RGB_BLACK, 0, 1);
}
-static void sub_81D74C8(void)
+static void DuoFight_LightningLong(void)
{
- sub_80A2C44(0x7FFF, 4, 0x10, 0, -1, 0, 0);
- sub_80A2C44(0xFFFF0000, 4, 0x10, 0, 0, 0, 1);
+ BlendPalettesGradually(0x00007FFF, 4, 16, 0, RGB_WHITEALPHA, 0, 0);
+ BlendPalettesGradually(0xFFFF0000, 4, 16, 0, RGB_BLACK, 0, 1);
}
-static void sub_81D750C(void)
+static void DuoFight_AnimateRain(void)
{
ChangeBgX(2, 0x400, 1);
ChangeBgY(2, 0x800, 2);
}
-static void sub_81D752C(u8 taskId)
+// Only used by the full version, which pans up at the end (so scene objects move down)
+// DuoFightPre just fades to black with no pan
+static void DuoFight_PanOffScene(u8 taskId)
{
u16 bgY;
s16 *data = gTasks[taskId].data;
- sub_81D7860(&gSprites[data[2]]);
- sub_81D7D14(&gSprites[data[3]]);
+ DuoFight_SlideGroudonDown(&gSprites[tGroudonSpriteId]);
+ DuoFight_SlideKyogreDown(&gSprites[tKyogreSpriteId]);
bgY = GetBgY(1);
if (GetBgY(1) == 0 || bgY > 0x8000)
ChangeBgY(1, 0x400, 2);
- if (data[0] != 16)
+ if (tCounter != 16)
{
- data[0]++;
- SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - data[0], data[0]));
+ tCounter++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - tCounter, tCounter));
}
}
@@ -1767,36 +1782,36 @@ static void DuoFightEnd(u8 taskId, s8 palDelay)
static void Task_DuoFightEnd(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D750C();
+ DuoFight_AnimateRain();
if (!gPaletteFade.active)
{
- DestroyTask(data[1]);
+ DestroyTask(tHelperTaskId);
ChangeBgY(1, 0, 0);
SetVBlankCallback(NULL);
ScanlineEffect_Stop();
ResetSpriteData();
FreeAllSpritePalettes();
- data[0] = 0;
+ tCounter = 0;
gTasks[taskId].func = Task_SetNextAnim;
}
}
-static u8 sub_81D7664(void)
+static u8 CreateDuoFightGroudonSprites(void)
{
u8 spriteId;
s16 *data;
- spriteId = CreateSprite(&sUnknown_0862A8D4, 98, 72, 3);
- gSprites[spriteId].callback = sub_81D7700;
+ spriteId = CreateSprite(&sSpriteTemplate_DuoFight_Groudon, 98, 72, 3);
+ gSprites[spriteId].callback = SpriteCB_DuoFight_Groudon;
data = gSprites[spriteId].data;
- data[0] = CreateSprite(&sUnknown_0862A8D4, 66, 104, 3);
- data[1] = CreateSprite(&sUnknown_0862A900, 85, 101, 0);
- data[2] = CreateSprite(&sUnknown_0862A92C, 119, 114, 1);
- StartSpriteAnim(&gSprites[data[0]], 1);
+ sGroudonBodySpriteId = CreateSprite(&sSpriteTemplate_DuoFight_Groudon, 66, 104, 3);
+ sGroudonShoulderSpriteId = CreateSprite(&sSpriteTemplate_DuoFight_GroudonShoulder, 85, 101, 0);
+ sGroudonClawSpriteId = CreateSprite(&sSpriteTemplate_DuoFight_GroudonClaw, 119, 114, 1);
+ StartSpriteAnim(&gSprites[sGroudonBodySpriteId], 1);
return spriteId;
}
-static void sub_81D7700(struct Sprite *sprite)
+static void SpriteCB_DuoFight_Groudon(struct Sprite *sprite)
{
s16 *data = sprite->data;
data[5]++;
@@ -1804,66 +1819,66 @@ static void sub_81D7700(struct Sprite *sprite)
if (!(data[5] & 7) && sprite->pos1.x != 72)
{
sprite->pos1.x--;
- gSprites[sprite->data[0]].pos1.x--;
- gSprites[data[1]].pos1.x--;
- gSprites[data[2]].pos1.x--;
+ gSprites[sprite->sGroudonBodySpriteId].pos1.x--;
+ gSprites[sGroudonShoulderSpriteId].pos1.x--;
+ gSprites[sGroudonClawSpriteId].pos1.x--;
}
switch (sprite->animCmdIndex)
{
case 0:
- gSprites[data[1]].pos2.x = 0;
- gSprites[data[1]].pos2.y = 0;
- gSprites[data[2]].pos2.x = 0;
- gSprites[data[2]].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
+ gSprites[sGroudonClawSpriteId].pos2.x = 0;
+ gSprites[sGroudonClawSpriteId].pos2.y = 0;
break;
case 1:
case 3:
- gSprites[data[1]].pos2.x = -1;
- gSprites[data[1]].pos2.y = 0;
- gSprites[data[2]].pos2.x = -1;
- gSprites[data[2]].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
+ gSprites[sGroudonClawSpriteId].pos2.x = -1;
+ gSprites[sGroudonClawSpriteId].pos2.y = 0;
break;
case 2:
- gSprites[data[1]].pos2.x = -1;
- gSprites[data[1]].pos2.y = 1;
- gSprites[data[2]].pos2.x = -2;
- gSprites[data[2]].pos2.y = 1;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 1;
+ gSprites[sGroudonClawSpriteId].pos2.x = -2;
+ gSprites[sGroudonClawSpriteId].pos2.y = 1;
break;
}
}
-static void sub_81D7860(struct Sprite *sprite)
+static void DuoFight_SlideGroudonDown(struct Sprite *sprite)
{
s16 *data = sprite->data;
if (sprite->pos1.y <= 160)
{
sprite->pos1.y += 8;
- gSprites[sprite->data[0]].pos1.y += 8;
- gSprites[data[1]].pos1.y += 8;
- gSprites[data[2]].pos1.y += 8;
+ gSprites[sprite->sGroudonBodySpriteId].pos1.y += 8;
+ gSprites[sGroudonShoulderSpriteId].pos1.y += 8;
+ gSprites[sGroudonClawSpriteId].pos1.y += 8;
}
}
-static u8 sub_81D78BC(void)
+static u8 CreateDuoFightKyogreSprites(void)
{
u8 spriteId;
s16 *data;
- spriteId = CreateSprite(&sUnknown_0862A9E4, 126, 96, 1);
- gSprites[spriteId].callback = sub_81D7A60;
+ spriteId = CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 126, 96, 1);
+ gSprites[spriteId].callback = SpriteCB_DuoFight_Kyogre;
data = gSprites[spriteId].data;
- data[0] = CreateSprite(&sUnknown_0862A9E4, 158, 96, 1) << 8;
- data[0] |= CreateSprite(&sUnknown_0862A9E4, 126, 112, 1);
- data[1] = CreateSprite(&sUnknown_0862A9E4, 158, 112, 1) << 8;
- data[1] |= CreateSprite(&sUnknown_0862A9E4, 126, 128, 1);
- data[2] = CreateSprite(&sUnknown_0862A9E4, 158, 128, 1) << 8;
- data[2] |= CreateSprite(&sUnknown_0862A9E4, 94, 128, 2);
- data[3] = CreateSprite(&sUnknown_0862A9E4, 126, 128, 2) << 8;
- data[3] |= CreateSprite(&sUnknown_0862A9E4, 174, 128, 0);
- data[4] = CreateSprite(&sUnknown_0862AA1C, 198, 132, 0) << 8;
- data[4] |= CreateSprite(&sUnknown_0862AA3C, 190, 120, 1);
+ data[0] = CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 158, 96, 1) << 8;
+ data[0] |= CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 126, 112, 1);
+ data[1] = CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 158, 112, 1) << 8;
+ data[1] |= CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 126, 128, 1);
+ data[2] = CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 158, 128, 1) << 8;
+ data[2] |= CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 94, 128, 2);
+ data[3] = CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 126, 128, 2) << 8;
+ data[3] |= CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 174, 128, 0);
+ data[4] = CreateSprite(&sSpriteTemplate_DuoFight_KyogreShoulder, 198, 132, 0) << 8;
+ data[4] |= CreateSprite(&sSpriteTemplate_DuoFight_KyogreFin, 190, 120, 1);
StartSpriteAnim(&gSprites[data[0] >> 8], 1);
StartSpriteAnim(&gSprites[data[0] & 0xFF], 2);
@@ -1877,7 +1892,7 @@ static u8 sub_81D78BC(void)
return spriteId;
}
-static void sub_81D7A60(struct Sprite *sprite)
+static void SpriteCB_DuoFight_Kyogre(struct Sprite *sprite)
{
s16 *data = sprite->data;
data[5]++;
@@ -1938,7 +1953,7 @@ static void sub_81D7A60(struct Sprite *sprite)
}
}
-static void sub_81D7D14(struct Sprite *sprite)
+static void DuoFight_SlideKyogreDown(struct Sprite *sprite)
{
s16 *data = sprite->data;
if (sprite->pos1.y <= 160)
@@ -1957,11 +1972,11 @@ static void sub_81D7D14(struct Sprite *sprite)
}
}
-static void sub_81D7E10(void)
+static void InitTakesFlightSceneBgs(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(1, sUnknown_0862AA54, ARRAY_COUNT(sUnknown_0862AA54));
+ InitBgsFromTemplates(1, sBgTemplates_TakesFlight, ARRAY_COUNT(sBgTemplates_TakesFlight));
SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
@@ -1976,28 +1991,28 @@ static void sub_81D7E10(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static void sub_81D7E9C(void)
+static void LoadTakesFlightSceneGfx(void)
{
ResetTempTileDataBuffers();
- DecompressAndCopyTileDataToVram(0, gRaySceneClouds_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(1, gRaySceneOvercast_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(2, gRaySceneRayquaza_Gfx, 0, 0, 0);
- while (FreeTempTileDataBuffersIfPossible());
-
- LZDecompressWram(gRaySceneClouds2_Tilemap, sRayScene->tilemapBuffers[0]);
- LZDecompressWram(gRaySceneOvercast_Tilemap, sRayScene->tilemapBuffers[1]);
- LZDecompressWram(gRaySceneRayquaza_Tilemap, sRayScene->tilemapBuffers[2]);
- LoadCompressedPalette(gRaySceneRayquaza_Pal, 0, 0x40);
- LoadCompressedSpriteSheet(&sUnknown_0862AA90);
- LoadCompressedSpritePalette(&sUnknown_0862AA98);
+ DecompressAndCopyTileDataToVram(0, gRaySceneDuoFight_Clouds_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, gRaySceneTakesFlight_Bg_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(2, gRaySceneTakesFlight_Rayquaza_Gfx, 0, 0, 0);
+ while (FreeTempTileDataBuffersIfPossible())
+ ;
+ LZDecompressWram(gRaySceneDuoFight_Clouds2_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneTakesFlight_Bg_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneTakesFlight_Rayquaza_Tilemap, sRayScene->tilemapBuffers[2]);
+ LoadCompressedPalette(gRaySceneTakesFlight_Rayquaza_Pal, 0, 0x40);
+ LoadCompressedSpriteSheet(&sSpriteSheet_TakesFlight_Smoke);
+ LoadCompressedSpritePalette(&sSpritePal_TakesFlight_Smoke);
}
static void Task_RayTakesFlightAnim(u8 taskId)
{
s16 *data = gTasks[taskId].data;
PlayNewMapMusic(MUS_REKKUU_KOURIN);
- sub_81D7E10();
- sub_81D7E9C();
+ InitTakesFlightSceneBgs();
+ LoadTakesFlightSceneGfx();
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8));
BlendPalettes(-1, 0x10, 0);
@@ -2085,7 +2100,7 @@ static void sub_81D81A4(u8 taskId)
s16 *data = gTasks[taskId].data;
if ((data[1] & 3) == 0)
{
- u8 spriteId = CreateSprite(&sUnknown_0862AAA0,
+ u8 spriteId = CreateSprite(&sSpriteTemplate_TakesFlight_Smoke,
(sUnknown_0862AAB8[data[0]][0] * 4) + 120,
(sUnknown_0862AAB8[data[0]][1] * 4) + 80,
0);
@@ -2108,7 +2123,7 @@ static void sub_81D81A4(u8 taskId)
data[1]++;
}
-static void sub_81D8260(struct Sprite *sprite)
+static void SpriteCB_TakesFlight_Smoke(struct Sprite *sprite)
{
if (sprite->data[1] == 0)
{
@@ -2125,11 +2140,11 @@ static void sub_81D8260(struct Sprite *sprite)
sprite->data[1] &= 0xF;
}
-static void sub_81D82B0(void)
+static void InitDescendsSceneBgs(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sUnknown_0862AACC, ARRAY_COUNT(sUnknown_0862AACC));
+ InitBgsFromTemplates(0, sBgTemplates_Descends, ARRAY_COUNT(sBgTemplates_Descends));
SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
@@ -2147,28 +2162,28 @@ static void sub_81D82B0(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static void sub_81D8358(void)
+static void LoadDescendsSceneGfx(void)
{
ResetTempTileDataBuffers();
- DecompressAndCopyTileDataToVram(0, gRaySceneRayquazaLight_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(1, gRaySceneOvercast2_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(0, gRaySceneDescends_Light_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, gRaySceneDescends_Bg_Gfx, 0, 0, 0);
while (FreeTempTileDataBuffersIfPossible());
- LZDecompressWram(gRaySceneRayquazaLight_Tilemap, sRayScene->tilemapBuffers[0]);
- LZDecompressWram(gRaySceneOvercast2_Tilemap, sRayScene->tilemapBuffers[3]);
- CpuFastFill16(0, sRayScene->tilemapBuffers[2], 0x800);
- CpuFastCopy(sRayScene->tilemapBuffers[3], sRayScene->tilemapBuffers[1], 0x800);
+ LZDecompressWram(gRaySceneDescends_Light_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneDescends_Bg_Tilemap, sRayScene->tilemapBuffers[3]);
+ CpuFastFill16(0, sRayScene->tilemapBuffers[2], BG_SCREEN_SIZE);
+ CpuFastCopy(sRayScene->tilemapBuffers[3], sRayScene->tilemapBuffers[1], BG_SCREEN_SIZE);
CpuFastFill16(0, &sRayScene->tilemapBuffers[1][0x100], 0x340);
- LoadCompressedPalette(gRaySceneOvercast2_Pal, 0, 0x40);
+ LoadCompressedPalette(gRaySceneDescends_Bg_Pal, 0, 0x40);
gPlttBufferUnfaded[0] = RGB_WHITE;
gPlttBufferFaded[0] = RGB_WHITE;
- LoadCompressedSpriteSheet(&sUnknown_0862AAFC);
- LoadCompressedSpriteSheet(&sUnknown_0862AB04);
- LoadCompressedSpritePalette(&sUnknown_0862AB0C);
+ LoadCompressedSpriteSheet(&sSpriteSheet_Descends_Rayquaza);
+ LoadCompressedSpriteSheet(&sSpriteSheet_Descends_RayquazaTail);
+ LoadCompressedSpritePalette(&sSpritePal_Descends_Rayquaza);
}
-static void sub_81D844C(void)
+static void HBlankCB_RayDescends(void)
{
u16 VCOUNT = GetGpuReg(REG_OFFSET_VCOUNT);
if (VCOUNT >= 24 && VCOUNT <= 135 && VCOUNT - 24 <= sRayScene->field_2008)
@@ -2195,8 +2210,8 @@ static void sub_81D844C(void)
static void Task_RayDescendsAnim(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D82B0();
- sub_81D8358();
+ InitDescendsSceneBgs();
+ LoadDescendsSceneGfx();
SetGpuRegBits(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
BlendPalettes(-1, 0x10, 0);
@@ -2235,7 +2250,7 @@ static void Task_HandleRayDescends(u8 taskId)
{
data[1] = 0;
data[0]++;
- SetHBlankCallback(sub_81D844C);
+ SetHBlankCallback(HBlankCB_RayDescends);
EnableInterrupts(INTR_FLAG_HBLANK | INTR_FLAG_VBLANK);
}
else
@@ -2284,9 +2299,9 @@ static void Task_RayDescendsEnd(u8 taskId)
static u8 sub_81D86CC(void)
{
- u8 spriteId = CreateSprite(&sUnknown_0862AB14, 160, 0, 0);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_Descends_Rayquaza, 160, 0, 0);
s16 *data = gSprites[spriteId].data;
- data[0] = CreateSprite(&sUnknown_0862AB2C, 184, -48, 0);
+ data[0] = CreateSprite(&sSpriteTemplate_Descends_RayquazaTail, 184, -48, 0);
gSprites[spriteId].callback = sub_81D874C;
gSprites[spriteId].oam.priority = 3;
gSprites[data[0]].oam.priority = 3;
@@ -2347,11 +2362,11 @@ static void sub_81D874C(struct Sprite *sprite)
data[2]++;
}
-static void sub_81D8828(void)
+static void InitChargesSceneBgs(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sUnknown_0862AB44, ARRAY_COUNT(sUnknown_0862AB44));
+ InitBgsFromTemplates(0, sBgTemplates_Charges, ARRAY_COUNT(sBgTemplates_Charges));
SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
@@ -2369,26 +2384,26 @@ static void sub_81D8828(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static void sub_81D88D0(void)
+static void LoadChargesSceneGfx(void)
{
ResetTempTileDataBuffers();
- DecompressAndCopyTileDataToVram(1, gRaySceneRayquazaChase_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(2, gRaySceneChaseStreaks_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(3, gRaySceneChaseBg_Gfx, 0, 0, 0);
- while (FreeTempTileDataBuffersIfPossible());
-
- LZDecompressWram(gRayChaseRayquazaChase2_Tilemap, sRayScene->tilemapBuffers[0]);
- LZDecompressWram(gRayChaseRayquazaChase_Tilemap, sRayScene->tilemapBuffers[1]);
- LZDecompressWram(gRaySceneChaseStreaks_Tilemap, sRayScene->tilemapBuffers[2]);
- LZDecompressWram(gRaySceneChaseBg_Tilemap, sRayScene->tilemapBuffers[3]);
- LoadCompressedPalette(gRaySceneChase_Pal, 0, 0x80);
+ DecompressAndCopyTileDataToVram(1, gRaySceneCharges_Rayquaza_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(2, gRaySceneCharges_Streaks_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(3, gRaySceneCharges_Bg_Gfx, 0, 0, 0);
+ while (FreeTempTileDataBuffersIfPossible())
+ ;
+ LZDecompressWram(gRaySceneCharges_Rayquaza2_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneCharges_Rayquaza_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneCharges_Streaks_Tilemap, sRayScene->tilemapBuffers[2]);
+ LZDecompressWram(gRaySceneCharges_Bg_Tilemap, sRayScene->tilemapBuffers[3]);
+ LoadCompressedPalette(gRaySceneCharges_Bg_Pal, 0, 0x80);
}
static void Task_RayChargesAnim(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D8828();
- sub_81D88D0();
+ InitChargesSceneBgs();
+ LoadChargesSceneGfx();
sub_81D68C8();
BlendPalettes(-1, 0x10, 0);
SetVBlankCallback(VBlankCB_RayquazaScene);
@@ -2505,11 +2520,11 @@ static void Task_RayChargesEnd(u8 taskId)
}
}
-static void sub_81D8C38(void)
+static void InitChasesAwaySceneBgs(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(1, sUnknown_0862AD08, ARRAY_COUNT(sUnknown_0862AD08));
+ InitBgsFromTemplates(1, sBgTemplates_ChasesAway, ARRAY_COUNT(sBgTemplates_ChasesAway));
SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
@@ -2524,34 +2539,35 @@ static void sub_81D8C38(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static void sub_81D8CC4(void)
+static void LoadChasesAwaySceneGfx(void)
{
ResetTempTileDataBuffers();
- DecompressAndCopyTileDataToVram(2, gRaySceneHushRing_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(0, gRaySceneHushBg_Gfx, 0, 0, 0);
- while (FreeTempTileDataBuffersIfPossible());
-
- LZDecompressWram(gRaySceneHushRing_Tilemap, sRayScene->tilemapBuffers[1]);
- LZDecompressWram(gRaySceneHushBg_Tilemap, sRayScene->tilemapBuffers[0]);
- LZDecompressWram(gRaySceneHushRing_Map, sRayScene->tilemapBuffers[2]);
- LoadCompressedPalette(gRaySceneHushBg_Pal, 0, 0x60);
- LoadCompressedSpriteSheet(&sUnknown_0862AC28);
- LoadCompressedSpriteSheet(&sUnknown_0862AC30);
- LoadCompressedSpriteSheet(&sUnknown_0862AC38);
- LoadCompressedSpriteSheet(&sUnknown_0862AC40);
- LoadCompressedSpriteSheet(&sUnknown_0862AC48);
- LoadCompressedSpriteSheet(&sUnknown_0862AC50);
- LoadCompressedSpritePalette(&sUnknown_0862AC58);
- LoadCompressedSpritePalette(&sUnknown_0862AC60);
- LoadCompressedSpritePalette(&sUnknown_0862AC68);
- LoadCompressedSpritePalette(&sUnknown_0862AC70);
+ DecompressAndCopyTileDataToVram(2, gRaySceneChasesAway_Ring_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(0, gRaySceneChasesAway_Bg_Gfx, 0, 0, 0);
+ while (FreeTempTileDataBuffersIfPossible())
+ ;
+
+ LZDecompressWram(gRaySceneChasesAway_Ring_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneChasesAway_Bg_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneChasesAway_Ring_Map, sRayScene->tilemapBuffers[2]);
+ LoadCompressedPalette(gRaySceneChasesAway_Bg_Pal, 0, 0x60);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_Groudon);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_GroudonTail);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_Kyogre);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_Rayquaza);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_RayquazaTail);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_KyogreSplash);
+ LoadCompressedSpritePalette(&sSpritePal_ChasesAway_Groudon);
+ LoadCompressedSpritePalette(&sSpritePal_ChasesAway_Kyogre);
+ LoadCompressedSpritePalette(&sSpritePal_ChasesAway_Rayquaza);
+ LoadCompressedSpritePalette(&sSpritePal_ChasesAway_KyogreSplash);
}
static void Task_RayChasesAwayAnim(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D8C38();
- sub_81D8CC4();
+ InitChasesAwaySceneBgs();
+ LoadChasesAwaySceneGfx();
sub_81D68C8();
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND);
@@ -2614,8 +2630,8 @@ static void Task_HandleRayChasesAway(u8 taskId)
data[1]++;
if (data[1] % 144 == 0)
{
- sub_80A2C44(0xFFFE, 0, 0x10, 0, -1, 0, 0);
- sub_80A2C44(0xFFFF0000, 0, 0x10, 0, 0, 0, 1);
+ BlendPalettesGradually(0x0000FFFE, 0, 16, 0, RGB_WHITEALPHA, 0, 0);
+ BlendPalettesGradually(0xFFFF0000, 0, 16, 0, RGB_BLACK, 0, 1);
}
}
break;
@@ -2676,25 +2692,25 @@ static void sub_81D90A8(u8 taskId)
taskData = gTasks[taskId].data;
- taskData[3] = CreateSprite(&sUnknown_0862AC78, 64, 120, 0);
+ taskData[3] = CreateSprite(&sSpriteTemplate_ChasesAway_Groudon, 64, 120, 0);
spriteData = gSprites[taskData[3]].data;
- spriteData[0] = CreateSprite(&sUnknown_0862AC90, 16, 130, 0);
+ spriteData[0] = CreateSprite(&sSpriteTemplate_ChasesAway_GroudonTail, 16, 130, 0);
gSprites[taskData[3]].oam.priority = 1;
gSprites[spriteData[0]].oam.priority = 1;
- taskData[4] = CreateSprite(&sUnknown_0862ACA8, 160, 128, 1);
+ taskData[4] = CreateSprite(&sSpriteTemplate_ChasesAway_Kyogre, 160, 128, 1);
spriteData = gSprites[taskData[4]].data;
- spriteData[0] = CreateSprite(&sUnknown_0862ACA8, 192, 128, 1);
- spriteData[1] = CreateSprite(&sUnknown_0862ACA8, 224, 128, 1);
+ spriteData[0] = CreateSprite(&sSpriteTemplate_ChasesAway_Kyogre, 192, 128, 1);
+ spriteData[1] = CreateSprite(&sSpriteTemplate_ChasesAway_Kyogre, 224, 128, 1);
gSprites[taskData[4]].oam.priority = 1;
gSprites[spriteData[0]].oam.priority = 1;
gSprites[spriteData[1]].oam.priority = 1;
StartSpriteAnim(&gSprites[spriteData[0]], 1);
StartSpriteAnim(&gSprites[spriteData[1]], 2);
- taskData[5] = CreateSprite(&sUnknown_0862ACC0, 120, -65, 0);
+ taskData[5] = CreateSprite(&sSpriteTemplate_ChasesAway_Rayquaza, 120, -65, 0);
spriteData = gSprites[taskData[5]].data;
- spriteData[0] = CreateSprite(&sUnknown_0862ACD8, 120, -113, 0);
+ spriteData[0] = CreateSprite(&sSpriteTemplate_ChasesAway_RayquazaTail, 120, -113, 0);
gSprites[taskData[5]].oam.priority = 1;
gSprites[spriteData[0]].oam.priority = 1;
}
@@ -2802,9 +2818,9 @@ static void sub_81D9528(struct Sprite *sprite)
}
if (sprite->data[5] == 128)
{
- sprite->data[7] = CreateSprite(&sUnknown_0862ACF0, 152, 132, 0);
+ sprite->data[7] = CreateSprite(&sSpriteTemplate_ChasesAway_KyogreSplash, 152, 132, 0);
gSprites[sprite->data[7]].oam.priority = 1;
- sprite->data[7] = CreateSprite(&sUnknown_0862ACF0, 224, 132, 0);
+ sprite->data[7] = CreateSprite(&sSpriteTemplate_ChasesAway_KyogreSplash, 224, 132, 0);
gSprites[sprite->data[7]].oam.priority = 1;
gSprites[sprite->data[7]].hFlip = 1;
sprite->data[5]++;
@@ -2828,7 +2844,7 @@ static void sub_81D9528(struct Sprite *sprite)
sprite->data[4]++;
}
-static void sub_81D961C(struct Sprite *sprite)
+static void SpriteCB_ChasesAway_Rayquaza(struct Sprite *sprite)
{
s16 counter = sprite->data[7];
if (counter <= 64)
diff --git a/src/task.c b/src/task.c
index a2df66de8..a97496009 100644
--- a/src/task.c
+++ b/src/task.c
@@ -200,7 +200,7 @@ u8 GetTaskCount(void)
void SetWordTaskArg(u8 taskId, u8 dataElem, u32 value)
{
- if (dataElem <= 14)
+ if (dataElem < NUM_TASK_DATA - 1)
{
gTasks[taskId].data[dataElem] = value;
gTasks[taskId].data[dataElem + 1] = value >> 16;
@@ -209,7 +209,7 @@ void SetWordTaskArg(u8 taskId, u8 dataElem, u32 value)
u32 GetWordTaskArg(u8 taskId, u8 dataElem)
{
- if (dataElem <= 14)
+ if (dataElem < NUM_TASK_DATA - 1)
return (u16)gTasks[taskId].data[dataElem] | (gTasks[taskId].data[dataElem + 1] << 16);
else
return 0;