diff options
Diffstat (limited to 'src/water.c')
-rw-r--r-- | src/water.c | 357 |
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\ |