2017-10-12 09:06:19 +02:00
|
|
|
#ifndef GUARD_WEATHER_H
|
|
|
|
#define GUARD_WEATHER_H
|
|
|
|
|
2018-01-29 15:55:34 +01:00
|
|
|
#include "sprite.h"
|
2017-10-12 09:06:19 +02:00
|
|
|
|
2018-01-29 15:55:34 +01:00
|
|
|
// Controls how the weather should be changing the screen palettes.
|
|
|
|
enum {
|
|
|
|
WEATHER_PAL_STATE_CHANGING_WEATHER,
|
|
|
|
WEATHER_PAL_STATE_SCREEN_FADING_IN,
|
|
|
|
WEATHER_PAL_STATE_SCREEN_FADING_OUT,
|
|
|
|
WEATHER_PAL_STATE_IDLE,
|
|
|
|
};
|
|
|
|
|
|
|
|
struct Weather
|
|
|
|
{
|
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
struct Sprite *rainSprites[24];
|
|
|
|
struct Sprite *snowflakeSprites[101];
|
|
|
|
struct Sprite *cloudSprites[3];
|
|
|
|
} s1;
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
u8 filler0[0xA0];
|
|
|
|
struct Sprite *fog1Sprites[20];
|
|
|
|
struct Sprite *ashSprites[20];
|
|
|
|
struct Sprite *fog2Sprites[20];
|
|
|
|
struct Sprite *sandstormSprites1[20];
|
|
|
|
struct Sprite *sandstormSprites2[5];
|
|
|
|
} 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 unknown_6D6;
|
|
|
|
u8 unknown_6D8;
|
|
|
|
u8 unknown_6D9;
|
|
|
|
u8 rainSpriteCount;
|
|
|
|
u8 unknown_6DB;
|
|
|
|
u8 unknown_6DC;
|
|
|
|
u8 rainStrength;
|
|
|
|
/*0x6DE*/ u8 cloudSpritesCreated;
|
|
|
|
u8 filler_6DF[1];
|
|
|
|
u16 unknown_6E0;
|
|
|
|
u16 unknown_6E2;
|
|
|
|
u8 snowflakeSpriteCount;
|
|
|
|
u8 unknown_6E5;
|
|
|
|
u16 unknown_6E6;
|
|
|
|
u16 thunderCounter;
|
|
|
|
u8 unknown_6EA;
|
|
|
|
u8 unknown_6EB;
|
|
|
|
u8 unknown_6EC;
|
|
|
|
u8 unknown_6ED;
|
|
|
|
u16 fog1ScrollPosX;
|
|
|
|
u16 unknown_6F0;
|
|
|
|
u16 unknown_6F2;
|
|
|
|
u8 lightenedFogSpritePals[6];
|
|
|
|
u8 lightenedFogSpritePalsCount;
|
|
|
|
u8 fog1SpritesCreated;
|
|
|
|
u16 unknown_6FC;
|
|
|
|
u16 unknown_6FE;
|
|
|
|
u8 ashSpritesCreated;
|
|
|
|
u8 filler_701[3];
|
|
|
|
u32 unknown_704;
|
|
|
|
u32 unknown_708;
|
|
|
|
u8 filler_70C[2];
|
|
|
|
u16 unknown_70E;
|
|
|
|
u16 unknown_710;
|
|
|
|
u16 unknown_712;
|
|
|
|
u16 unknown_714;
|
|
|
|
u8 sandstormSprites1Created;
|
|
|
|
u8 sandstormSprites2Created;
|
|
|
|
u16 unknown_718;
|
|
|
|
u16 unknown_71A;
|
|
|
|
u16 unknown_71C;
|
|
|
|
u16 unknown_71E;
|
|
|
|
u16 unknown_720;
|
|
|
|
u16 unknown_722;
|
|
|
|
u8 fog2SpritesCreated;
|
|
|
|
u8 filler_725[1];
|
|
|
|
u16 unknown_726;
|
|
|
|
u16 unknown_728;
|
|
|
|
u16 unknown_72A;
|
|
|
|
u16 unknown_72C;
|
|
|
|
u8 unknown_72E;
|
|
|
|
u8 filler_72F;
|
|
|
|
u16 currBlendEVA;
|
|
|
|
u16 currBlendEVB;
|
|
|
|
u16 targetBlendEVA;
|
|
|
|
u16 targetBlendEVB;
|
|
|
|
u8 blendUpdateCounter;
|
|
|
|
u8 blendFrameCounter;
|
|
|
|
u8 blendDelay;
|
|
|
|
u8 filler_73B[0x3C-0x3B];
|
|
|
|
s16 unknown_73C;
|
|
|
|
s16 unknown_73E;
|
|
|
|
s16 unknown_740;
|
|
|
|
s16 unknown_742;
|
|
|
|
u8 filler_744[0xD-4];
|
|
|
|
s8 loadDroughtPalsIndex;
|
|
|
|
u8 loadDroughtPalsOffset;
|
|
|
|
};
|
|
|
|
|
|
|
|
void StartWeather(void);
|
|
|
|
void ChangeWeather(u8 weather);
|
|
|
|
void sub_807C988(u8 effect);
|
|
|
|
void sub_807C9B4(u8 effect);
|
|
|
|
void Task_WeatherInit(u8);
|
|
|
|
void Task_WeatherMain(u8);
|
|
|
|
void sub_807CAE8(void);
|
|
|
|
void nullsub_38(void);
|
|
|
|
void SetWeatherScreenFadeOut(void);
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
FADE_FROM_BLACK,
|
|
|
|
FADE_TO_BLACK,
|
|
|
|
FADE_FROM_WHITE,
|
|
|
|
FADE_TO_WHITE,
|
|
|
|
};
|
|
|
|
|
2018-01-29 16:25:09 +01:00
|
|
|
void FadeScreen(u8, s8);
|
2018-01-29 15:55:34 +01:00
|
|
|
// ...
|
|
|
|
void UpdateSpritePaletteWithWeather(u8 tag);
|
|
|
|
void ApplyWeatherGammaShiftToPal(u8);
|
|
|
|
// ...
|
|
|
|
void Weather_SetBlendCoeffs(u8, u8);
|
|
|
|
// ...
|
|
|
|
void PlayRainSoundEffect(void);
|
|
|
|
// ...
|
2017-10-12 09:06:19 +02:00
|
|
|
void SetSav1Weather(u32);
|
|
|
|
u8 GetSav1Weather(void);
|
|
|
|
void sub_80AEDBC(void);
|
|
|
|
|
2018-01-29 15:55:34 +01:00
|
|
|
void SetSav1WeatherFromCurrMapHeader(void);
|
|
|
|
// ...
|
2017-10-12 09:06:19 +02:00
|
|
|
void DoCurrentWeather(void);
|
2018-10-14 20:00:14 +02:00
|
|
|
void sub_8080750(void);
|
2018-01-29 15:55:34 +01:00
|
|
|
|
|
|
|
bool8 IsWeatherNotFadingIn(void);
|
|
|
|
bool8 IsWeatherChangeComplete(void);
|
|
|
|
void SetWeather(u32);
|
|
|
|
void UpdateWeatherPerDay(u16);
|
|
|
|
void PreservePaletteInWeather(u8 index);
|
|
|
|
void ResetPreservedPalettesInWeather(void);
|
|
|
|
extern void ResetDroughtWeatherPaletteLoading(void);
|
|
|
|
void ResetDroughtWeatherPaletteLoading(void);
|
|
|
|
bool8 LoadDroughtWeatherPalettes(void);
|
|
|
|
u8 GetCurrentWeather(void);
|
|
|
|
void LoadCustomWeatherSpritePalette(const u16 *palette);
|
|
|
|
|
|
|
|
|
|
|
|
extern struct Weather gWeather;
|
|
|
|
|
|
|
|
extern struct Weather *const gWeatherPtr;
|
2017-10-12 09:06:19 +02:00
|
|
|
|
|
|
|
#endif // GUARD_WEATHER_H
|