diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-16 20:37:51 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-16 20:37:51 -0400 |
commit | 51eac4e14bc75f2b3d925b46d63969cfabf0d48e (patch) | |
tree | c79b9d5b88c1ddf8b81e4ccaf343ba19b8452786 /include | |
parent | 6e00e822101c4c3f68bce0789ba56133b24b586b (diff) |
field_weather_util
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 | 116 | ||||
-rw-r--r-- | include/field_weather_effects.h | 55 | ||||
-rw-r--r-- | include/global.h | 2 |
5 files changed, 175 insertions, 1 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 1f2d9902e..b4006b3ad 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -2,6 +2,119 @@ #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; + /*0x6C6*/ u8 palProcessingState; + /*0x6C7*/ u8 fadeScreenCounter; + /*0x6C8*/ bool8 readyForInit; + /*0x6C9*/ u8 taskId; + /*0x6CA*/ 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; + /*0x6DE*/ u8 cloudSpritesCreated; + u8 filler_6DF[1]; + u16 snowflakeVisibleCounter; + u16 unknown_6E2; + u8 snowflakeSpriteCount; + u8 targetSnowflakeSpriteCount; + u16 unknown_6E6; + u16 thunderCounter; + u8 unknown_6EA; + u8 unknown_6EB; + u8 unknown_6EC; + u8 thunderTriggered; + u16 fogHScrollPosX; + u16 fogHScrollCounter; + u16 fogHScrollOffset; + u8 lightenedFogSpritePals[6]; + u8 lightenedFogSpritePalsCount; + u8 fogHSpritesCreated; + u16 ashBaseSpritesX; + u16 unknown_6FE; + u8 ashSpritesCreated; + u8 filler_701[3]; + u32 sandstormXOffset; + u32 sandstormYOffset; + u8 filler_70C[2]; + u16 sandstormBaseSpritesX; + u16 sandstormPosY; + u16 sandstormWaveIndex; + u16 sandstormWaveCounter; + u8 sandstormSpritesCreated; + u8 sandstormSwirlSpritesCreated; + u16 fogDBaseSpritesX; + u16 fogDPosY; + u16 fogDScrollXCounter; + u16 fogDScrollYCounter; + u16 fogDXOffset; + u16 fogDYOffset; + u8 fogDSpritesCreated; + u8 filler_725[1]; + u16 bubblesDelayCounter; + u16 bubblesDelayIndex; + u16 bubblesCoordsIndex; + u16 bubblesSpriteCount; + u8 bubblesSpritesCreated; + 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; +}; + +extern struct Weather *const gWeatherPtr; void FadeScreen(u8 mode, s8 delay); @@ -22,4 +135,7 @@ void UpdateSpritePaletteWithWeather(u8 palIdx); void ResetPreservedPalettesInWeather(void); void PreservePaletteInWeather(u8 palIdx); +void SetNextWeather(u8 weather); +void SetCurrentAndNextWeather(u8 weather); + #endif // GUARD_WEATHER_H diff --git a/include/field_weather_effects.h b/include/field_weather_effects.h new file mode 100644 index 000000000..11d3314a2 --- /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 Fog1_Finish(void); +bool8 Fog2_Finish(void); +bool8 LightRain_Finish(void); +bool8 Rain_Finish(void); +bool8 Sandstorm_Finish(void); +bool8 Snow_Finish(void); +bool8 sub_807B434(void); +bool8 sub_807B6BC(void); +bool8 sub_807D8D0(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 Fog1_InitAll(void); +void Fog1_InitVars(void); +void Fog1_Main(void); +void Fog2_InitAll(void); +void Fog2_InitVars(void); +void Fog2_Main(void); +void LightRain_InitAll(void); +void LightRain_InitVars(void); +void LightRain_Main(void); +void Rain_Main(void); +void Sandstorm_InitAll(void); +void Sandstorm_InitVars(void); +void Sandstorm_Main(void); +void Snow_InitAll(void); +void Snow_InitVars(void); +void Weather11_InitAll(void); +void Weather11_InitVars(void); +void Weather2_InitAll(void); +void Weather2_InitVars(void); +void nullsub_48(void); +void nullsub_49(void); +void snowflakes_progress2(void); +void sub_807C2E4(void); +void sub_807C358(void); +void sub_807C388(void); +void sub_807C3F4(void); + +#endif //GUARD_FIELD_WEATHER_EFFECTS_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; |