summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/blend_palette.h1
-rw-r--r--include/constants/weather.h2
-rw-r--r--include/field_weather.h136
-rw-r--r--include/field_weather_effects.h55
-rw-r--r--include/field_weather_util.h6
-rw-r--r--include/global.h2
-rw-r--r--include/graphics.h2
7 files changed, 201 insertions, 3 deletions
diff --git a/include/blend_palette.h b/include/blend_palette.h
index 4ece15d69..7f0826187 100644
--- a/include/blend_palette.h
+++ b/include/blend_palette.h
@@ -10,5 +10,6 @@
// Exported ROM declarations
void BlendPalette(u16, u16, u8, u16);
+void sub_8045314(u16 * palbuff, u16 blend_pal, u32 coefficient, s32 size);
#endif //GUARD_BLEND_PALETTE_H
diff --git a/include/constants/weather.h b/include/constants/weather.h
index 77be45c51..241dc5e2a 100644
--- a/include/constants/weather.h
+++ b/include/constants/weather.h
@@ -16,5 +16,7 @@
#define WEATHER_DROUGHT 12 // unused and broken in overworld
#define WEATHER_DOWNPOUR 13 // unused
#define WEATHER_UNDERWATER_BUBBLES 14 // unused
+#define WEATHER_ROUTE119_CYCLE 20 // unused
+#define WEATHER_ROUTE123_CYCLE 21 // unused
#endif // GUARD_CONSTANTS_WEATHER_H
diff --git a/include/field_weather.h b/include/field_weather.h
index 6b62f0edd..432c8c100 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -2,6 +2,114 @@
#define GUARD_WEATHER_H
#include "global.h"
+#include "constants/field_weather.h"
+
+struct Weather
+{
+ union
+ {
+ struct
+ {
+ struct Sprite *rainSprites[MAX_RAIN_SPRITES];
+ struct Sprite *snowflakeSprites[101];
+ struct Sprite *cloudSprites[NUM_CLOUD_SPRITES];
+ } s1;
+ struct
+ {
+ u8 filler0[0xA0];
+ struct Sprite *fogHSprites[NUM_FOG_HORIZONTAL_SPRITES];
+ struct Sprite *ashSprites[NUM_ASH_SPRITES];
+ struct Sprite *fogDSprites[NUM_FOG_DIAGONAL_SPRITES];
+ struct Sprite *sandstormSprites1[NUM_SANDSTORM_SPRITES];
+ struct Sprite *sandstormSprites2[NUM_SWIRL_SANDSTORM_SPRITES];
+ } s2;
+ } sprites;
+ u8 gammaShifts[19][32];
+ u8 altGammaShifts[19][32];
+ s8 gammaIndex;
+ s8 gammaTargetIndex;
+ u8 gammaStepDelay;
+ u8 gammaStepFrameCounter;
+ u16 fadeDestColor;
+ u8 palProcessingState;
+ u8 fadeScreenCounter;
+ bool8 readyForInit;
+ u8 taskId;
+ u8 unknown_6CA;
+ u8 unknown_6CB;
+ u16 initStep;
+ u16 finishStep;
+ u8 currWeather;
+ u8 nextWeather;
+ u8 weatherGfxLoaded;
+ bool8 weatherChangeComplete;
+ u8 weatherPicSpritePalIndex;
+ u8 altGammaSpritePalIndex;
+ u16 rainSpriteVisibleCounter;
+ u8 curRainSpriteIndex;
+ u8 targetRainSpriteCount;
+ u8 rainSpriteCount;
+ u8 rainSpriteVisibleDelay;
+ u8 isDownpour;
+ u8 rainStrength;
+ bool8 cloudSpritesCreated;
+ u16 snowflakeVisibleCounter;
+ u16 unknown_6E2;
+ u8 snowflakeSpriteCount;
+ u8 targetSnowflakeSpriteCount;
+ u16 unknown_6E6;
+ u16 thunderCounter;
+ u8 unknown_6EA;
+ u8 unknown_6EB;
+ u8 unknown_6EC;
+ bool8 thunderTriggered;
+ u16 fogHScrollPosX;
+ u16 fogHScrollCounter;
+ u16 fogHScrollOffset;
+ u8 lightenedFogSpritePals[6];
+ u8 lightenedFogSpritePalsCount;
+ bool8 fogHSpritesCreated;
+ u16 ashBaseSpritesX;
+ u16 unknown_6FE;
+ bool8 ashSpritesCreated;
+ u32 sandstormXOffset;
+ u32 sandstormYOffset;
+ u8 filler_70C[2];
+ u16 sandstormBaseSpritesX;
+ u16 sandstormPosY;
+ u16 sandstormWaveIndex;
+ u16 sandstormWaveCounter;
+ bool8 sandstormSpritesCreated;
+ bool8 sandstormSwirlSpritesCreated;
+ u16 fogDBaseSpritesX;
+ u16 fogDPosY;
+ u16 fogDScrollXCounter;
+ u16 fogDScrollYCounter;
+ u16 fogDXOffset;
+ u16 fogDYOffset;
+ bool8 fogDSpritesCreated;
+ u16 bubblesDelayCounter;
+ u16 bubblesDelayIndex;
+ u16 bubblesCoordsIndex;
+ u16 bubblesSpriteCount;
+ bool8 bubblesSpritesCreated;
+ u16 currBlendEVA;
+ u16 currBlendEVB;
+ u16 targetBlendEVA;
+ u16 targetBlendEVB;
+ u8 blendUpdateCounter;
+ u8 blendFrameCounter;
+ u8 blendDelay;
+ s16 unknown_73C;
+ s16 unknown_73E;
+ s16 unknown_740;
+ s16 unknown_742;
+ u8 filler_744[0xD-4];
+ s8 loadDroughtPalsIndex;
+ u8 loadDroughtPalsOffset;
+};
+
+extern struct Weather *const gWeatherPtr;
void FadeScreen(u8 mode, s8 delay);
@@ -17,9 +125,35 @@ bool8 IsWeatherNotFadingIn(void);
void SetWeatherScreenFadeOut(void);
void sub_807B070(void);
u8 GetCurrentWeather(void);
-void FieldWeather_StartFadingOutCreditsMap(u8, u8, u32);
+void delay(u8, u8, u32);
void UpdateSpritePaletteWithWeather(u8 palIdx);
void ResetPreservedPalettesInWeather(void);
void PreservePaletteInWeather(u8 palIdx);
+void SetNextWeather(u8 weather);
+void SetCurrentAndNextWeather(u8 weather);
+void Weather_SetBlendCoeffs(u8 eva, u8 evb);
+void Weather_SetTargetBlendCoeffs(u8 eva, u8 evb, int delay);
+bool8 Weather_UpdateBlend(void);
+void LoadCustomWeatherSpritePalette(const u16 *palette);
+void ResetDroughtWeatherPaletteLoading(void);
+bool8 LoadDroughtWeatherPalettes(void);
+void sub_807AC60(void);
+void sub_807AC98(void);
+void SetRainStrengthFromSoundEffect(u16 soundEffect);
+void sub_807A790(s8 gammaIndex);
+void sub_807A7C4(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay);
+
+extern const u16 gCloudsWeatherPalette[];
+extern const u16 gSandstormWeatherPalette[];
+extern const u8 gWeatherFogDiagonalTiles[];
+extern const u8 gWeatherFogHorizontalTiles[];
+extern const u8 gWeatherCloudTiles[];
+extern const u8 gWeatherSnow1Tiles[];
+extern const u8 gWeatherSnow2Tiles[];
+extern const u8 gWeatherBubbleTiles[];
+extern const u8 gWeatherAshTiles[];
+extern const u8 gWeatherRainTiles[];
+extern const u8 gWeatherSandstormTiles[];
+
#endif // GUARD_WEATHER_H
diff --git a/include/field_weather_effects.h b/include/field_weather_effects.h
new file mode 100644
index 000000000..8ff3bae9c
--- /dev/null
+++ b/include/field_weather_effects.h
@@ -0,0 +1,55 @@
+#ifndef GUARD_FIELD_WEATHER_EFFECTS_H
+#define GUARD_FIELD_WEATHER_EFFECTS_H
+
+bool8 Ash_Finish(void);
+bool8 Bubbles_Finish(void);
+bool8 Clouds_Finish(void);
+bool8 FogHorizontal_Finish(void);
+bool8 FogDiagonal_Finish(void);
+bool8 Rain_Finish(void);
+bool8 Thunderstorm_Finish(void);
+bool8 Sandstorm_Finish(void);
+bool8 Snow_Finish(void);
+bool8 Sunny_Finish(void);
+bool8 Drought_Finish(void);
+bool8 Shade_Finish(void);
+void Ash_InitAll(void);
+void Ash_InitVars(void);
+void Ash_Main(void);
+void Bubbles_InitAll(void);
+void Bubbles_InitVars(void);
+void Bubbles_Main(void);
+void Clouds_InitAll(void);
+void Clouds_InitVars(void);
+void Clouds_Main(void);
+void Drought_InitAll(void);
+void Drought_InitVars(void);
+void Drought_Main(void);
+void FogHorizontal_InitAll(void);
+void FogHorizontal_InitVars(void);
+void FogHorizontal_Main(void);
+void FogDiagonal_InitAll(void);
+void FogDiagonal_InitVars(void);
+void FogDiagonal_Main(void);
+void Rain_InitAll(void);
+void Rain_InitVars(void);
+void Rain_Main(void);
+void Thunderstorm_Main(void);
+void Sandstorm_InitAll(void);
+void Sandstorm_InitVars(void);
+void Sandstorm_Main(void);
+void Snow_InitAll(void);
+void Snow_InitVars(void);
+void Shade_InitAll(void);
+void Shade_InitVars(void);
+void Sunny_InitAll(void);
+void Sunny_InitVars(void);
+void Sunny_Main(void);
+void Shade_Main(void);
+void Snow_Main(void);
+void Thunderstorm_InitVars(void);
+void Thunderstorm_InitAll(void);
+void Downpour_InitVars(void);
+void Downpour_InitAll(void);
+
+#endif //GUARD_FIELD_WEATHER_EFFECTS_H
diff --git a/include/field_weather_util.h b/include/field_weather_util.h
new file mode 100644
index 000000000..da49d3869
--- /dev/null
+++ b/include/field_weather_util.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_FIELD_WEATHER_UTIL_H
+#define GUARD_FIELD_WEATHER_UTIL_H
+
+void SetWeather(u8 weather);
+
+#endif //GUARD_FIELD_WEATHER_UTIL_H
diff --git a/include/global.h b/include/global.h
index 8a8877143..b2fd67b4b 100644
--- a/include/global.h
+++ b/include/global.h
@@ -749,7 +749,7 @@ struct SaveBlock1
/*0x0024*/ struct WarpData escapeWarp;
/*0x002C*/ u16 savedMusic;
/*0x002E*/ u8 weather;
- /*0x002F*/ u8 filler_2F;
+ /*0x002F*/ u8 weatherCycleStage;
/*0x0030*/ u8 flashLevel;
/*0x0032*/ u16 mapLayoutId;
/*0x0034*/ u8 playerPartyCount;
diff --git a/include/graphics.h b/include/graphics.h
index 3930861f8..8978719a8 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4322,7 +4322,7 @@ extern const u32 gSubstituteDollTilemap[];
extern const u32 gSubstituteDollPal[];
// ice
-extern const u8 gWeatherFog1Tiles[];
+extern const u8 gWeatherFogHorizontalTiles[];
extern const u32 gBattleAnimFogTilemap[];
extern const u16 gUnknown_83C2CE0[];