summaryrefslogtreecommitdiff
path: root/src/water.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/water.c')
-rw-r--r--src/water.c357
1 files changed, 177 insertions, 180 deletions
diff --git a/src/water.c b/src/water.c
index 03b06ea82..5d3e9505b 100644
--- a/src/water.c
+++ b/src/water.c
@@ -13,12 +13,12 @@
#include "constants/battle.h"
#include "constants/rgb.h"
-static void sub_810721C(struct Sprite *);
-static void sub_8107228(struct Sprite *);
-static void AnimMovingWaterBubble(struct Sprite *);
-static void AnimMovingWaterBubble_Step1(struct Sprite *);
-static void AnimMovingWaterBubble_Step2(struct Sprite *);
-static void AnimMovingWaterBubble_Step3(struct Sprite *);
+static void AnimRainDrop(struct Sprite *);
+static void AnimRainDrop_Step(struct Sprite *);
+static void AnimWaterBubbleProjectile(struct Sprite *);
+static void AnimWaterBubbleProjectile_Step1(struct Sprite *);
+static void AnimWaterBubbleProjectile_Step2(struct Sprite *);
+static void AnimWaterBubbleProjectile_Step3(struct Sprite *);
static void AnimAuroraBeamRings(struct Sprite *);
static void AnimAuroraBeamRings_Step(struct Sprite *);
static void AnimToTargetInSinWave(struct Sprite *);
@@ -31,38 +31,34 @@ static void AnimSmallBubblePair(struct Sprite *);
static void AnimSmallBubblePair_Step(struct Sprite *);
static void AnimSmallDriftingBubbles(struct Sprite *);
static void AnimSmallDriftingBubbles_Step(struct Sprite *);
-static void sub_810851C(struct Sprite *);
-static void sub_81087C0(struct Sprite *);
-static void sub_810886C(struct Sprite *);
-static void sub_8108B2C(struct Sprite *);
-static void sub_8108B94(struct Sprite *);
+static void AnimSmallWaterOrb(struct Sprite *);
+static void AnimWaterSpoutRain(struct Sprite *);
+static void AnimWaterSpoutRainHit(struct Sprite *);
+static void AnimWaterSportDroplet(struct Sprite *);
+static void AnimWaterSportDroplet_Step(struct Sprite *);
static void AnimWaterPulseBubble(struct Sprite *);
static void AnimWaterPulseBubble_Step(struct Sprite *);
-static void sub_8108C54(struct Sprite *);
+static void AnimWaterPulseRingBubble(struct Sprite *);
static void AnimWaterPulseRing_Step(struct Sprite *);
-static void sub_810756C(u8);
+static void AnimTask_RotateAuroraRingColors_Step(u8);
static void AnimTask_RunSinAnimTimer(u8);
-static void sub_8107B84(u8);
-static void sub_8107CC4(u8);
-static void sub_8107D58(u8);
+static void AnimTask_CreateSurfWave_Step1(u8);
+static void AnimTask_CreateSurfWave_Step2(u8);
+static void AnimTask_SurfWaveScanlineEffect(u8);
static void AnimTask_WaterSpoutLaunch_Step(u8);
static void AnimTask_WaterSpoutRain_Step(u8);
-static void sub_8108978(u8);
-static u8 sub_8108384(void);
-static void sub_8108408(struct Task*, u8);
-static void sub_810871C(struct Task*, u8);
-static void sub_8108AC0(struct Task*);
-static void sub_8108D54(struct Sprite*, int, int);
-
-extern const union AffineAnimCmd *const gGrowingRingAffineAnimTable[];
-extern const union AffineAnimCmd *const gUnknown_08596208[];
-extern const union AnimCmd *const gUnknown_08595AB8[];
-
-// what is this?
+static u8 GetWaterSpoutPowerForAnim(void);
+static void CreateWaterSpoutLaunchDroplets(struct Task*, u8);
+static void CreateWaterSpoutRainDroplet(struct Task*, u8);
+static void AnimTask_WaterSport_Step(u8);
+static void CreateWaterSportDroplet(struct Task*);
+static void CreateWaterPulseRingBubbles(struct Sprite*, int, int);
+
+// Both unused
const u8 gUnknown_8593C80[] = INCBIN_U8("graphics/unknown/unknown_593C80.4bpp");
const u8 gUnknown_8593FFC[] = INCBIN_U8("graphics/unknown/unknown_593FFC.bin");
-const union AnimCmd gUnknown_08594FFC[] =
+static const union AnimCmd sAnim_RainDrop[] =
{
ANIMCMD_FRAME(0, 2),
ANIMCMD_FRAME(8, 2),
@@ -74,35 +70,35 @@ const union AnimCmd gUnknown_08594FFC[] =
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_0859501C[] =
+static const union AnimCmd *const sAnims_RainDrop[] =
{
- gUnknown_08594FFC,
+ sAnim_RainDrop,
};
-const struct SpriteTemplate gUnknown_08595020 =
+const struct SpriteTemplate gRainDropSpriteTemplate =
{
.tileTag = ANIM_TAG_RAIN_DROPS,
.paletteTag = ANIM_TAG_RAIN_DROPS,
.oam = &gOamData_AffineOff_ObjNormal_16x32,
- .anims = gUnknown_0859501C,
+ .anims = sAnims_RainDrop,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810721C,
+ .callback = AnimRainDrop,
};
-const union AffineAnimCmd gUnknown_08595038[] =
+static const union AffineAnimCmd sAffineAnim_WaterBubbleProjectile[] =
{
AFFINEANIMCMD_FRAME(0xFFFB, 0xFFFB, 0, 10),
AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10),
AFFINEANIMCMD_JUMP(0),
};
-const union AffineAnimCmd *const gUnknown_08595050[] =
+static const union AffineAnimCmd *const sAffineAnims_WaterBubbleProjectile[] =
{
- gUnknown_08595038,
+ sAffineAnim_WaterBubbleProjectile,
};
-const union AnimCmd gUnknown_08595054[] =
+static const union AnimCmd sAnim_WaterBubbleProjectile[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(4, 5),
@@ -110,50 +106,50 @@ const union AnimCmd gUnknown_08595054[] =
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_08595064[] =
+static const union AnimCmd *const sAnims_WaterBubbleProjectile[] =
{
- gUnknown_08595054,
+ sAnim_WaterBubbleProjectile,
};
-const struct SpriteTemplate gMovingWaterBubbleSpriteTemplate =
+const struct SpriteTemplate gWaterBubbleProjectileSpriteTemplate =
{
.tileTag = ANIM_TAG_BUBBLE,
.paletteTag = ANIM_TAG_BUBBLE,
.oam = &gOamData_AffineNormal_ObjBlend_16x16,
- .anims = gUnknown_08595064,
+ .anims = sAnims_WaterBubbleProjectile,
.images = NULL,
- .affineAnims = gUnknown_08595050,
- .callback = AnimMovingWaterBubble,
+ .affineAnims = sAffineAnims_WaterBubbleProjectile,
+ .callback = AnimWaterBubbleProjectile,
};
-const union AnimCmd gUnknown_08595080[] =
+static const union AnimCmd sAnim_AuroraBeamRing_0[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08595088[] =
+static const union AnimCmd sAnim_AuroraBeamRing_1[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_08595090[] =
+static const union AnimCmd *const sAnims_AuroraBeamRing[] =
{
- gUnknown_08595080,
- gUnknown_08595088,
+ sAnim_AuroraBeamRing_0,
+ sAnim_AuroraBeamRing_1,
};
-const union AffineAnimCmd gUnknown_08595098[] =
+static const union AffineAnimCmd sAffineAnim_AuroraBeamRing[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
AFFINEANIMCMD_FRAME(0x60, 0x60, 0, 1),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd *const gUnknown_085950B0[] =
+static const union AffineAnimCmd *const sAffineAnims_AuroraBeamRing[] =
{
- gUnknown_08595098,
+ sAffineAnim_AuroraBeamRing,
};
const struct SpriteTemplate gAuroraBeamRingSpriteTemplate =
@@ -161,13 +157,13 @@ const struct SpriteTemplate gAuroraBeamRingSpriteTemplate =
.tileTag = ANIM_TAG_RAINBOW_RINGS,
.paletteTag = ANIM_TAG_RAINBOW_RINGS,
.oam = &gOamData_AffineDouble_ObjNormal_8x16,
- .anims = gUnknown_08595090,
+ .anims = sAnims_AuroraBeamRing,
.images = NULL,
- .affineAnims = gUnknown_085950B0,
+ .affineAnims = sAffineAnims_AuroraBeamRing,
.callback = AnimAuroraBeamRings,
};
-const union AnimCmd gUnknown_085950CC[] =
+static const union AnimCmd sAnim_WaterMudOrb[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(4, 1),
@@ -176,9 +172,9 @@ const union AnimCmd gUnknown_085950CC[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gUnknown_085950E0[] =
+const union AnimCmd *const gAnims_WaterMudOrb[] =
{
- gUnknown_085950CC,
+ sAnim_WaterMudOrb,
};
const struct SpriteTemplate gHydroPumpOrbSpriteTemplate =
@@ -186,7 +182,7 @@ const struct SpriteTemplate gHydroPumpOrbSpriteTemplate =
.tileTag = ANIM_TAG_WATER_ORB,
.paletteTag = ANIM_TAG_WATER_ORB,
.oam = &gOamData_AffineOff_ObjBlend_16x16,
- .anims = gUnknown_085950E0,
+ .anims = gAnims_WaterMudOrb,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimToTargetInSinWave,
@@ -197,7 +193,7 @@ const struct SpriteTemplate gMudShotOrbSpriteTemplate =
.tileTag = ANIM_TAG_BROWN_ORB,
.paletteTag = ANIM_TAG_BROWN_ORB,
.oam = &gOamData_AffineOff_ObjBlend_16x16,
- .anims = gUnknown_085950E0,
+ .anims = gAnims_WaterMudOrb,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimToTargetInSinWave,
@@ -225,7 +221,7 @@ const struct SpriteTemplate gSignalBeamGreenOrbSpriteTemplate =
.callback = AnimToTargetInSinWave,
};
-const union AnimCmd gUnknown_08595144[] =
+static const union AnimCmd sAnim_FlamethrowerFlame[] =
{
ANIMCMD_FRAME(16, 2),
ANIMCMD_FRAME(32, 2),
@@ -233,9 +229,9 @@ const union AnimCmd gUnknown_08595144[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gUnknown_08595154[] =
+static const union AnimCmd *const sAnims_FlamethrowerFlame[] =
{
- gUnknown_08595144,
+ sAnim_FlamethrowerFlame,
};
const struct SpriteTemplate gFlamethrowerFlameSpriteTemplate =
@@ -243,7 +239,7 @@ const struct SpriteTemplate gFlamethrowerFlameSpriteTemplate =
.tileTag = ANIM_TAG_SMALL_EMBER,
.paletteTag = ANIM_TAG_SMALL_EMBER,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = gUnknown_08595154,
+ .anims = sAnims_FlamethrowerFlame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimToTargetInSinWave,
@@ -260,7 +256,7 @@ const struct SpriteTemplate gPsywaveRingSpriteTemplate =
.callback = AnimToTargetInSinWave,
};
-const union AffineAnimCmd gUnknown_08595188[] =
+static const union AffineAnimCmd sAffineAnim_HydroCannonCharge[] =
{
AFFINEANIMCMD_FRAME(0x3, 0x3, 10, 50),
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 10),
@@ -268,20 +264,20 @@ const union AffineAnimCmd gUnknown_08595188[] =
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_085951A8[] =
+static const union AffineAnimCmd sAffineAnim_HydroCannonBeam[] =
{
AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd *const gUnknown_085951B8[] =
+static const union AffineAnimCmd *const sAffineAnims_HydroCannonCharge[] =
{
- gUnknown_08595188,
+ sAffineAnim_HydroCannonCharge,
};
-const union AffineAnimCmd *const gUnknown_085951BC[] =
+static const union AffineAnimCmd *const sAffineAnims_HydroCannonBeam[] =
{
- gUnknown_085951A8,
+ sAffineAnim_HydroCannonBeam,
};
const struct SpriteTemplate gHydroCannonChargeSpriteTemplate =
@@ -289,9 +285,9 @@ const struct SpriteTemplate gHydroCannonChargeSpriteTemplate =
.tileTag = ANIM_TAG_WATER_ORB,
.paletteTag = ANIM_TAG_WATER_ORB,
.oam = &gOamData_AffineDouble_ObjBlend_16x16,
- .anims = gUnknown_085950E0,
+ .anims = gAnims_WaterMudOrb,
.images = NULL,
- .affineAnims = gUnknown_085951B8,
+ .affineAnims = sAffineAnims_HydroCannonCharge,
.callback = AnimHydroCannonCharge,
};
@@ -300,32 +296,32 @@ const struct SpriteTemplate gHydroCannonBeamSpriteTemplate =
.tileTag = ANIM_TAG_WATER_ORB,
.paletteTag = ANIM_TAG_WATER_ORB,
.oam = &gOamData_AffineDouble_ObjBlend_16x16,
- .anims = gUnknown_085950E0,
+ .anims = gAnims_WaterMudOrb,
.images = NULL,
- .affineAnims = gUnknown_085951BC,
+ .affineAnims = sAffineAnims_HydroCannonBeam,
.callback = AnimHydroCannonBeam,
};
-const union AnimCmd gUnknown_085951F0[] =
+static const union AnimCmd sAnim_WaterBubble[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_085951F8[] =
+static const union AnimCmd sAnim_WaterGunDroplet[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_08595200[] =
+const union AnimCmd *const gAnims_WaterBubble[] =
{
- gUnknown_085951F0,
+ sAnim_WaterBubble,
};
-const union AnimCmd *const gUnknown_08595204[] =
+static const union AnimCmd *const sAnims_WaterGunDroplet[] =
{
- gUnknown_085951F8,
+ sAnim_WaterGunDroplet,
};
const struct SpriteTemplate gWaterGunProjectileSpriteTemplate =
@@ -333,7 +329,7 @@ const struct SpriteTemplate gWaterGunProjectileSpriteTemplate =
.tileTag = ANIM_TAG_SMALL_BUBBLES,
.paletteTag = ANIM_TAG_SMALL_BUBBLES,
.oam = &gOamData_AffineOff_ObjBlend_16x16,
- .anims = gUnknown_08595200,
+ .anims = gAnims_WaterBubble,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimThrowProjectile,
@@ -344,18 +340,18 @@ const struct SpriteTemplate gWaterGunDropletSpriteTemplate =
.tileTag = ANIM_TAG_SMALL_BUBBLES,
.paletteTag = ANIM_TAG_SMALL_BUBBLES,
.oam = &gOamData_AffineDouble_ObjBlend_16x16,
- .anims = gUnknown_08595204,
+ .anims = sAnims_WaterGunDroplet,
.images = NULL,
- .affineAnims = gUnknown_08596208,
+ .affineAnims = gAffineAnims_Droplet,
.callback = AnimWaterGunDroplet,
};
const struct SpriteTemplate gSmallBubblePairSpriteTemplate =
{
- .tileTag = ANIM_TAG_ICE_CRYSTALS, // Little confusing. ice_crystals_4, which are basically bubbles. TODO: rename?
+ .tileTag = ANIM_TAG_ICE_CRYSTALS, // ice_crystals_4, which are bubbles
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gUnknown_08595AB8,
+ .anims = gAnims_SmallBubblePair,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimSmallBubblePair,
@@ -372,7 +368,8 @@ const struct SpriteTemplate gSmallDriftingBubblesSpriteTemplate =
.callback = AnimSmallDriftingBubbles,
};
-const struct SpriteTemplate gUnknown_08595268 =
+// Used by Water Spout / Water Sport
+const struct SpriteTemplate gSmallWaterOrbSpriteTemplate =
{
.tileTag = ANIM_TAG_GLOWY_BLUE_ORB,
.paletteTag = ANIM_TAG_GLOWY_BLUE_ORB,
@@ -380,68 +377,68 @@ const struct SpriteTemplate gUnknown_08595268 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810851C,
+ .callback = AnimSmallWaterOrb,
};
-const union AnimCmd gUnknown_08595280[] =
+static const union AnimCmd sAnim_WaterPulseBubble_0[] =
{
ANIMCMD_FRAME(8, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08595288[] =
+static const union AnimCmd sAnim_WaterPulseBubble_1[] =
{
ANIMCMD_FRAME(9, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08595290[] =
+static const union AnimCmd sAnim_WeatherBallWaterDown[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_08595298[] =
+static const union AnimCmd *const sAnims_WaterPulseBubble[] =
{
- gUnknown_08595280,
- gUnknown_08595288,
+ sAnim_WaterPulseBubble_0,
+ sAnim_WaterPulseBubble_1,
};
-const union AnimCmd *const gUnknown_085952A0[] =
+static const union AnimCmd *const sAnims_WeatherBallWaterDown[] =
{
- gUnknown_08595290,
+ sAnim_WeatherBallWaterDown,
};
-const union AffineAnimCmd gUnknown_085952A4[] =
+static const union AffineAnimCmd sAffineAnim_WaterPulseRingBubble_0[] =
{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 15),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_085952BC[] =
+static const union AffineAnimCmd sAffineAnim_WaterPulseRingBubble_1[] =
{
AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 15),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_085952D4[] =
+static const union AffineAnimCmd sAffineAnim_WeatherBallWaterDown[] =
{
AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 15),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd *const gUnknown_085952EC[] =
+static const union AffineAnimCmd *const sAffineAnims_WaterPulseRingBubble[] =
{
- gUnknown_085952A4,
- gUnknown_085952BC,
+ sAffineAnim_WaterPulseRingBubble_0,
+ sAffineAnim_WaterPulseRingBubble_1,
};
-const union AffineAnimCmd *const gUnknown_085952F4[] =
+static const union AffineAnimCmd *const sAffineAnims_WeatherBallWaterDown[] =
{
- gUnknown_085952D4,
+ sAffineAnim_WeatherBallWaterDown,
};
const struct SpriteTemplate gWaterPulseBubbleSpriteTemplate =
@@ -449,21 +446,21 @@ const struct SpriteTemplate gWaterPulseBubbleSpriteTemplate =
.tileTag = ANIM_TAG_SMALL_BUBBLES,
.paletteTag = ANIM_TAG_SMALL_BUBBLES,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gUnknown_08595298,
+ .anims = sAnims_WaterPulseBubble,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimWaterPulseBubble,
};
-const struct SpriteTemplate gUnknown_08595310 =
+const struct SpriteTemplate gWaterPulseRingBubbleSpriteTemplate =
{
.tileTag = ANIM_TAG_SMALL_BUBBLES,
.paletteTag = ANIM_TAG_SMALL_BUBBLES,
.oam = &gOamData_AffineNormal_ObjNormal_8x8,
- .anims = gUnknown_08595298,
+ .anims = sAnims_WaterPulseBubble,
.images = NULL,
- .affineAnims = gUnknown_085952EC,
- .callback = sub_8108C54,
+ .affineAnims = sAffineAnims_WaterPulseRingBubble,
+ .callback = AnimWaterPulseRingBubble,
};
const struct SpriteTemplate gWeatherBallWaterDownSpriteTemplate =
@@ -471,14 +468,12 @@ const struct SpriteTemplate gWeatherBallWaterDownSpriteTemplate =
.tileTag = ANIM_TAG_SMALL_BUBBLES,
.paletteTag = ANIM_TAG_SMALL_BUBBLES,
.oam = &gOamData_AffineNormal_ObjNormal_16x16,
- .anims = gUnknown_085952A0,
+ .anims = sAnims_WeatherBallWaterDown,
.images = NULL,
- .affineAnims = gUnknown_085952F4,
+ .affineAnims = sAffineAnims_WeatherBallWaterDown,
.callback = AnimWeatherBallDown,
};
-extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate;
-
void AnimTask_CreateRaindrops(u8 taskId)
{
u8 x, y;
@@ -494,18 +489,18 @@ void AnimTask_CreateRaindrops(u8 taskId)
{
x = Random2() % 240;
y = Random2() % 80;
- CreateSprite(&gUnknown_08595020, x, y, 4);
+ CreateSprite(&gRainDropSpriteTemplate, x, y, 4);
}
if (gTasks[taskId].data[0] == gTasks[taskId].data[3])
DestroyAnimVisualTask(taskId);
}
-static void sub_810721C(struct Sprite *sprite)
+static void AnimRainDrop(struct Sprite *sprite)
{
- sprite->callback = sub_8107228;
+ sprite->callback = AnimRainDrop_Step;
}
-static void sub_8107228(struct Sprite *sprite)
+static void AnimRainDrop_Step(struct Sprite *sprite)
{
if (++sprite->data[0] <= 13)
{
@@ -517,7 +512,7 @@ static void sub_8107228(struct Sprite *sprite)
}
// For water bubbles that move to a dest, as in Bubble/Bubblebeam
-static void AnimMovingWaterBubble(struct Sprite *sprite)
+static void AnimWaterBubbleProjectile(struct Sprite *sprite)
{
u8 spriteId;
@@ -550,11 +545,11 @@ static void AnimMovingWaterBubble(struct Sprite *sprite)
gSprites[spriteId].data[2] = gBattleAnimArgs[5];
gSprites[spriteId].data[3] = (u8)gBattleAnimArgs[4] * 256;
gSprites[spriteId].data[4] = gBattleAnimArgs[6];
- sprite->callback = AnimMovingWaterBubble_Step1;
+ sprite->callback = AnimWaterBubbleProjectile_Step1;
sprite->callback(sprite);
}
-static void AnimMovingWaterBubble_Step1(struct Sprite *sprite)
+static void AnimWaterBubbleProjectile_Step1(struct Sprite *sprite)
{
u8 otherSpriteId = sprite->data[5];
u8 timer = gSprites[otherSpriteId].data[4];
@@ -571,19 +566,19 @@ static void AnimMovingWaterBubble_Step1(struct Sprite *sprite)
}
else
{
- sprite->callback = AnimMovingWaterBubble_Step2;
+ sprite->callback = AnimWaterBubbleProjectile_Step2;
DestroySprite(&gSprites[otherSpriteId]);
}
}
-static void AnimMovingWaterBubble_Step2(struct Sprite *sprite)
+static void AnimWaterBubbleProjectile_Step2(struct Sprite *sprite)
{
sprite->animPaused = FALSE;
sprite->callback = RunStoredCallbackWhenAnimEnds;
- StoreSpriteCallbackInData6(sprite, AnimMovingWaterBubble_Step3);
+ StoreSpriteCallbackInData6(sprite, AnimWaterBubbleProjectile_Step3);
}
-static void AnimMovingWaterBubble_Step3(struct Sprite *sprite)
+static void AnimWaterBubbleProjectile_Step3(struct Sprite *sprite)
{
sprite->data[0] = 10;
sprite->callback = WaitAnimForDuration;
@@ -626,11 +621,11 @@ void AnimTask_RotateAuroraRingColors(u8 taskId)
{
gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_RAINBOW_RINGS) * 16 + 256;
- gTasks[taskId].func = sub_810756C;
+ gTasks[taskId].func = AnimTask_RotateAuroraRingColors_Step;
}
#ifdef NONMATCHING
-static void sub_810756C(u8 taskId)
+static void AnimTask_RotateAuroraRingColors_Step(u8 taskId)
{
int i;
u16 palIndex;
@@ -654,7 +649,7 @@ static void sub_810756C(u8 taskId)
}
#else
NAKED
-static void sub_810756C(u8 taskId)
+static void AnimTask_RotateAuroraRingColors_Step(u8 taskId)
{
asm_unified("push {r4-r7,lr}\n\
lsls r0, 24\n\
@@ -891,20 +886,20 @@ void AnimTask_CreateSurfWave(u8 taskId)
{
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
- AnimLoadCompressedBgTilemap(animBg.bgId, gUnknown_08D95E00);
+ AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimBgTilemap_SurfOpponent);
else
- AnimLoadCompressedBgTilemap(animBg.bgId, gUnknown_08D960D0);
+ AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimBgTilemap_SurfPlayer);
}
else
{
- sub_80A6D60(&animBg, gUnknown_08D963A4, 1);
+ AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_SurfContest, 1);
}
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Surf, animBg.tilesOffset);
if (gBattleAnimArgs[0] == 0)
LoadCompressedPalette(gBattleAnimBgPalette_Surf, animBg.paletteId * 16, 32);
else
LoadCompressedPalette(gBattleAnimBackgroundImageMuddyWater_Pal, animBg.paletteId * 16, 32);
- taskId2 = CreateTask(sub_8107D58, gTasks[taskId].priority + 1);
+ taskId2 = CreateTask(AnimTask_SurfWaveScanlineEffect, gTasks[taskId].priority + 1);
gTasks[taskId].data[15] = taskId2;
gTasks[taskId2].data[0] = 0;
gTasks[taskId2].data[1] = 0x1000;
@@ -946,7 +941,7 @@ void AnimTask_CreateSurfWave(u8 taskId)
gTasks[taskId2].data[5] = 0;
}
gTasks[taskId].data[6] = 1;
- gTasks[taskId].func = sub_8107B84;
+ gTasks[taskId].func = AnimTask_CreateSurfWave_Step1;
}
#else
NAKED
@@ -995,22 +990,22 @@ void AnimTask_CreateSurfWave(u8 taskId)
bne _081079D0\n\
mov r0, sp\n\
ldrb r0, [r0, 0x9]\n\
- ldr r1, =gUnknown_08D95E00\n\
+ ldr r1, =gBattleAnimBgTilemap_SurfOpponent\n\
bl AnimLoadCompressedBgTilemap\n\
b _081079EA\n\
.pool\n\
_081079D0:\n\
mov r0, sp\n\
ldrb r0, [r0, 0x9]\n\
- ldr r1, =gUnknown_08D960D0\n\
+ ldr r1, =gBattleAnimBgTilemap_SurfPlayer\n\
bl AnimLoadCompressedBgTilemap\n\
b _081079EA\n\
.pool\n\
_081079E0:\n\
- ldr r1, =gUnknown_08D963A4\n\
+ ldr r1, =gBattleAnimBgTilemap_SurfContest\n\
mov r0, sp\n\
movs r2, 0x1\n\
- bl sub_80A6D60\n\
+ bl AnimLoadCompressedBgTilemapHandleContest\n\
_081079EA:\n\
mov r0, sp\n\
ldrb r0, [r0, 0x9]\n\
@@ -1039,7 +1034,7 @@ _08107A24:\n\
movs r2, 0x20\n\
bl LoadCompressedPalette\n\
_08107A32:\n\
- ldr r0, =sub_8107D58\n\
+ ldr r0, =AnimTask_SurfWaveScanlineEffect\n\
ldr r4, =gTasks\n\
mov r2, r10\n\
lsls r5, r2, 2\n\
@@ -1162,7 +1157,7 @@ _08107B58:\n\
adds r0, r1\n\
movs r1, 0x1\n\
strh r1, [r0, 0x14]\n\
- ldr r1, =sub_8107B84\n\
+ ldr r1, =AnimTask_CreateSurfWave_Step1\n\
str r1, [r0]\n\
add sp, 0x10\n\
pop {r3-r5}\n\
@@ -1177,7 +1172,7 @@ _08107B58:\n\
#endif
#ifdef NONMATCHING
-static void sub_8107B84(u8 taskId)
+static void AnimTask_CreateSurfWave_Step1(u8 taskId)
{
struct BattleAnimBgData animBg;
u8 i;
@@ -1222,12 +1217,12 @@ static void sub_8107B84(u8 taskId)
if (!(gTasks[gTasks[taskId].data[15]].data[1] & 0x1F))
{
gTasks[taskId].data[0] = gTasks[gTasks[taskId].data[15]].data[1] & 0x1F;
- gTasks[taskId].func = sub_8107CC4;
+ gTasks[taskId].func = AnimTask_CreateSurfWave_Step2;
}
}
#else
NAKED
-static void sub_8107B84(u8 taskId)
+static void AnimTask_CreateSurfWave_Step1(u8 taskId)
{
asm_unified("push {r4-r7,lr}\n\
sub sp, 0x10\n\
@@ -1376,7 +1371,7 @@ _08107C86:\n\
cmp r3, 0\n\
bne _08107CA8\n\
strh r3, [r2, 0x8]\n\
- ldr r0, =sub_8107CC4\n\
+ ldr r0, =AnimTask_CreateSurfWave_Step2\n\
str r0, [r2]\n\
_08107CA8:\n\
add sp, 0x10\n\
@@ -1387,7 +1382,7 @@ _08107CA8:\n\
}
#endif
-static void sub_8107CC4(u8 taskId)
+static void AnimTask_CreateSurfWave_Step2(u8 taskId)
{
u16 *BGptrX = &gBattle_BG1_X;
u16 *BGptrY = &gBattle_BG1_Y;
@@ -1410,7 +1405,7 @@ static void sub_8107CC4(u8 taskId)
}
}
-static void sub_8107D58(u8 taskId)
+static void AnimTask_SurfWaveScanlineEffect(u8 taskId)
{
s16 i;
struct ScanlineEffectParams params;
@@ -1511,7 +1506,7 @@ void AnimTask_WaterSpoutLaunch(u8 taskId)
task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
task->data[5] = gSprites[task->data[15]].pos1.y;
- task->data[1] = sub_8108384();
+ task->data[1] = GetWaterSpoutPowerForAnim();
PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
task->func = AnimTask_WaterSpoutLaunch_Step;
}
@@ -1565,7 +1560,7 @@ static void AnimTask_WaterSpoutLaunch_Step(u8 taskId)
}
break;
case 4:
- sub_8108408(task, taskId);
+ CreateWaterSpoutLaunchDroplets(task, taskId);
task->data[0]++;
case 5:
if (++task->data[3] > 1)
@@ -1601,7 +1596,9 @@ static void AnimTask_WaterSpoutLaunch_Step(u8 taskId)
}
}
-static u8 sub_8108384(void)
+// Returns a value 0-3 relative to which quarter HP the attacker is in
+// A higher number results in more water sprites during the Water Spout animation
+static u8 GetWaterSpoutPowerForAnim(void)
{
u8 i;
u16 hp;
@@ -1633,7 +1630,7 @@ static u8 sub_8108384(void)
return 3;
}
-static void sub_8108408(struct Task *task, u8 taskId)
+static void CreateWaterSpoutLaunchDroplets(struct Task *task, u8 taskId)
{
s16 i;
s16 attackerCoordX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
@@ -1647,7 +1644,7 @@ static void sub_8108408(struct Task *task, u8 taskId)
increment = 1;
for (i = 0; i < 20; i += increment)
{
- spriteId = CreateSprite(&gUnknown_08595268, attackerCoordX, attackerCoordY, subpriority);
+ spriteId = CreateSprite(&gSmallWaterOrbSpriteTemplate, attackerCoordX, attackerCoordY, subpriority);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].data[1] = i;
@@ -1658,7 +1655,7 @@ static void sub_8108408(struct Task *task, u8 taskId)
gSprites[spriteId].data[6] = taskId;
gSprites[spriteId].data[7] = 2;
if (task->data[2] & 1)
- sub_810851C(&gSprites[spriteId]);
+ AnimSmallWaterOrb(&gSprites[spriteId]);
task->data[2]++;
}
trigIndex = (trigIndex + increment * 2);
@@ -1666,7 +1663,7 @@ static void sub_8108408(struct Task *task, u8 taskId)
}
}
-static void sub_810851C(struct Sprite *sprite)
+static void AnimSmallWaterOrb(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -1692,7 +1689,7 @@ void AnimTask_WaterSpoutRain(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- task->data[1] = sub_8108384();
+ task->data[1] = GetWaterSpoutPowerForAnim();
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
task->data[4] = 136;
@@ -1720,7 +1717,7 @@ static void AnimTask_WaterSpoutRain_Step(u8 taskId)
if (++task->data[2] > 2)
{
task->data[2] = 0;
- sub_810871C(task, taskId);
+ CreateWaterSpoutRainDroplet(task, taskId);
}
if (task->data[10] != 0 && task->data[13] == 0)
{
@@ -1752,14 +1749,14 @@ static void AnimTask_WaterSpoutRain_Step(u8 taskId)
}
}
-static void sub_810871C(struct Task *task, u8 taskId)
+static void CreateWaterSpoutRainDroplet(struct Task *task, u8 taskId)
{
u16 yPosArg = ((gSineTable[task->data[8]] + 3) >> 4) + task->data[6];
- u8 spriteId = CreateSprite(&gUnknown_08595268, task->data[7], 0, 0);
+ u8 spriteId = CreateSprite(&gSmallWaterOrbSpriteTemplate, task->data[7], 0, 0);
if (spriteId != MAX_SPRITES)
{
- gSprites[spriteId].callback = sub_81087C0;
+ gSprites[spriteId].callback = AnimWaterSpoutRain;
gSprites[spriteId].data[5] = yPosArg;
gSprites[spriteId].data[6] = taskId;
gSprites[spriteId].data[7] = 9;
@@ -1770,7 +1767,7 @@ static void sub_810871C(struct Task *task, u8 taskId)
task->data[7] = (ISO_RANDOMIZE2(task->data[7]) % task->data[5]) + task->data[4];
}
-static void sub_81087C0(struct Sprite *sprite)
+static void AnimWaterSpoutRain(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
@@ -1784,14 +1781,14 @@ static void sub_81087C0(struct Sprite *sprite)
StartSpriteAffineAnim(&gSprites[sprite->data[1]], 3);
gSprites[sprite->data[1]].data[6] = sprite->data[6];
gSprites[sprite->data[1]].data[7] = sprite->data[7];
- gSprites[sprite->data[1]].callback = sub_810886C;
+ gSprites[sprite->data[1]].callback = AnimWaterSpoutRainHit;
}
DestroySprite(sprite);
}
}
}
-static void sub_810886C(struct Sprite *sprite)
+static void AnimWaterSpoutRainHit(struct Sprite *sprite)
{
if (++sprite->data[1] > 1)
{
@@ -1820,22 +1817,22 @@ void AnimTask_WaterSport(u8 taskId)
task->data[9] = -32;
task->data[1] = 0;
task->data[0] = 0;
- task->func = sub_8108978;
+ task->func = AnimTask_WaterSport_Step;
}
-static void sub_8108978(u8 taskId)
+static void AnimTask_WaterSport_Step(u8 taskId)
{
struct Task *task = &gTasks[taskId];
switch (task->data[0])
{
case 0:
- sub_8108AC0(task);
+ CreateWaterSportDroplet(task);
if (task->data[10] != 0)
task->data[0]++;
break;
case 1:
- sub_8108AC0(task);
+ CreateWaterSportDroplet(task);
if (++task->data[1] > 16)
{
task->data[1] = 0;
@@ -1843,7 +1840,7 @@ static void sub_8108978(u8 taskId)
}
break;
case 2:
- sub_8108AC0(task);
+ CreateWaterSportDroplet(task);
task->data[5] += task->data[7] * 6;
if (!(task->data[5] >= -16 && task->data[5] <= 256))
{
@@ -1861,13 +1858,13 @@ static void sub_8108978(u8 taskId)
}
break;
case 3:
- sub_8108AC0(task);
+ CreateWaterSportDroplet(task);
task->data[6] -= task->data[7] * 2;
if (++task->data[1] > 7)
task->data[0]++;
break;
case 4:
- sub_8108AC0(task);
+ CreateWaterSportDroplet(task);
task->data[5] -= task->data[7] * 6;
if (!(task->data[5] >= -16 && task->data[5] <= 256))
{
@@ -1877,7 +1874,7 @@ static void sub_8108978(u8 taskId)
}
break;
case 5:
- sub_8108AC0(task);
+ CreateWaterSportDroplet(task);
task->data[6] -= task->data[7] * 2;
if (++task->data[1] > 7)
task->data[0] = 2;
@@ -1892,14 +1889,14 @@ static void sub_8108978(u8 taskId)
}
}
-static void sub_8108AC0(struct Task *task)
+static void CreateWaterSportDroplet(struct Task *task)
{
u8 spriteId;
if (++task->data[2] > 1)
{
task->data[2] = 0;
- spriteId = CreateSprite(&gUnknown_08595268, task->data[3], task->data[4], 10);
+ spriteId = CreateSprite(&gSmallWaterOrbSpriteTemplate, task->data[3], task->data[4], 10);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].data[0] = 16;
@@ -1907,13 +1904,13 @@ static void sub_8108AC0(struct Task *task)
gSprites[spriteId].data[4] = task->data[6];
gSprites[spriteId].data[5] = task->data[9];
InitAnimArcTranslation(&gSprites[spriteId]);
- gSprites[spriteId].callback = sub_8108B2C;
+ gSprites[spriteId].callback = AnimWaterSportDroplet;
task->data[8]++;
}
}
}
-static void sub_8108B2C(struct Sprite *sprite)
+static void AnimWaterSportDroplet(struct Sprite *sprite)
{
if (TranslateAnimHorizontalArc(sprite))
{
@@ -1924,11 +1921,11 @@ static void sub_8108B2C(struct Sprite *sprite)
sprite->data[4] = (Random2() & 0x1F) - 16 + sprite->pos1.y;
sprite->data[5] = ~(Random2() & 7);
InitAnimArcTranslation(sprite);
- sprite->callback = sub_8108B94;
+ sprite->callback = AnimWaterSportDroplet_Step;
}
}
-static void sub_8108B94(struct Sprite *sprite)
+static void AnimWaterSportDroplet_Step(struct Sprite *sprite)
{
u16 i;
@@ -1936,7 +1933,7 @@ static void sub_8108B94(struct Sprite *sprite)
{
for (i = 0; i < NUM_TASKS; i++)
{
- if (gTasks[i].func == sub_8108978)
+ if (gTasks[i].func == AnimTask_WaterSport_Step)
{
gTasks[i].data[10] = 1;
gTasks[i].data[8]--;
@@ -1967,7 +1964,7 @@ static void AnimWaterPulseBubble_Step(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
-static void sub_8108C54(struct Sprite *sprite)
+static void AnimWaterPulseRingBubble(struct Sprite *sprite)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
@@ -2000,7 +1997,7 @@ static void AnimWaterPulseRing_Step(struct Sprite *sprite)
if (++sprite->data[5] == sprite->data[4])
{
sprite->data[5] = 0;
- sub_8108D54(sprite, xDiff, yDiff);
+ CreateWaterPulseRingBubbles(sprite, xDiff, yDiff);
}
if (sprite->data[3] == sprite->data[0])
DestroyAnimSprite(sprite);
@@ -2008,7 +2005,7 @@ static void AnimWaterPulseRing_Step(struct Sprite *sprite)
}
#ifdef NONMATCHING
-static void sub_8108D54(struct Sprite *sprite, int xDiff, int yDiff)
+static void CreateWaterPulseRingBubbles(struct Sprite *sprite, int xDiff, int yDiff)
{
s16 something = sprite->data[0] / 2;
s16 combinedX = sprite->pos1.x + sprite->pos2.x;
@@ -2020,7 +2017,7 @@ static void sub_8108D54(struct Sprite *sprite, int xDiff, int yDiff)
for (i = 0; i <= 0; i++)
{
- spriteId = CreateSprite(&gUnknown_08595310, combinedX, combinedY + something, 130);
+ spriteId = CreateSprite(&gWaterPulseRingBubbleSpriteTemplate, combinedX, combinedY + something, 130);
gSprites[spriteId].data[0] = 20;
gSprites[spriteId].data[1] = randomSomethingY;
gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
@@ -2031,7 +2028,7 @@ static void sub_8108D54(struct Sprite *sprite, int xDiff, int yDiff)
}
for (i = 0; i <= 0; i++)
{
- spriteId = CreateSprite(&gUnknown_08595310, combinedX, combinedY - something, 130);
+ spriteId = CreateSprite(&gWaterPulseRingBubbleSpriteTemplate, combinedX, combinedY - something, 130);
gSprites[spriteId].data[0] = 20;
gSprites[spriteId].data[1] = randomSomethingY;
gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
@@ -2043,7 +2040,7 @@ static void sub_8108D54(struct Sprite *sprite, int xDiff, int yDiff)
}
#else
NAKED
-static void sub_8108D54(struct Sprite *sprite, int xDiff, int yDiff)
+static void CreateWaterPulseRingBubbles(struct Sprite *sprite, int xDiff, int yDiff)
{
asm_unified("push {r4-r7,lr}\n\
mov r7, r10\n\
@@ -2113,7 +2110,7 @@ static void sub_8108D54(struct Sprite *sprite, int xDiff, int yDiff)
lsls r1, 16\n\
mov r10, r1\n\
_08108DE2:\n\
- ldr r0, =gUnknown_08595310\n\
+ ldr r0, =gWaterPulseRingBubbleSpriteTemplate\n\
mov r2, r8\n\
asrs r1, r2, 16\n\
mov r3, r10\n\
@@ -2168,7 +2165,7 @@ _08108E32:\n\
lsls r1, 16\n\
mov r10, r1\n\
_08108E58:\n\
- ldr r0, =gUnknown_08595310\n\
+ ldr r0, =gWaterPulseRingBubbleSpriteTemplate\n\
mov r2, r8\n\
asrs r1, r2, 16\n\
mov r3, r10\n\