diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/blend_palette.h | 1 | ||||
-rw-r--r-- | include/constants/weather.h | 2 | ||||
-rw-r--r-- | include/field_weather.h | 136 | ||||
-rw-r--r-- | include/field_weather_effects.h | 55 | ||||
-rw-r--r-- | include/field_weather_util.h | 6 | ||||
-rw-r--r-- | include/global.h | 2 | ||||
-rw-r--r-- | include/graphics.h | 2 |
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[]; |