From 37418d05c404aec70745e238796c11b464da33ef Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 25 Nov 2017 18:07:24 -0600 Subject: label and decompile more of field_weather_2 --- include/field_weather.h | 53 +++++++++++++++++++++++++++++-------------------- include/gba/io_reg.h | 23 ++++++++++++++++++++- 2 files changed, 54 insertions(+), 22 deletions(-) (limited to 'include') diff --git a/include/field_weather.h b/include/field_weather.h index e99b64344..c099a4977 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -1,20 +1,30 @@ #ifndef GUARD_WEATHER_H #define GUARD_WEATHER_H +#define WEATHER_NONE 0 #define WEATHER_CLOUDS 1 #define WEATHER_RAIN_LIGHT 3 #define WEATHER_SNOW 4 #define WEATHER_RAIN_MED 5 +#define WEATHER_FOG_2 6 +#define WEATHER_FOG_1 7 #define WEATHER_DROUGHT 12 #define WEATHER_RAIN_HEAVY 13 struct Sprite; +// TODO: This might be a union +struct Weather2 +{ + /*0x00*/ u8 filler0[0xA0]; + /*0xA0*/ struct Sprite *fogSprites[20]; +}; + struct Weather { - struct Sprite *unknown_0[24]; - struct Sprite *snowflakeSprites[0x65]; // snowflakes? - struct Sprite *cloudSprites[3]; + /*0x000*/ struct Sprite *rainSprites[24]; + /*0x060*/ struct Sprite *snowflakeSprites[0x65]; // snowflakes? + /*0x1F4*/ struct Sprite *cloudSprites[3]; u8 unknown_200[2][32]; u8 filler_240[0x460-0x240]; u8 unk460[2][32]; @@ -32,11 +42,11 @@ struct Weather u8 unknown_6C9; u8 unknown_6CA; u8 unknown_6CB; - u16 unknown_6CC; + u16 initStep; u16 unknown_6CE; u8 currWeather; - u8 unknown_6D1; - u8 unknown_6D2; + u8 nextWeather; + u8 weatherGfxLoaded; u8 unknown_6D3; u8 unknown_6D4; u8 unknown_6D5; @@ -47,25 +57,26 @@ struct Weather u8 unknown_6DB; u8 unknown_6DC; u8 rainStrength; - u8 unknown_6DE; + /*0x6DE*/ u8 cloudsActive; u8 filler_6DF[1]; u16 unknown_6E0; u16 unknown_6E2; - u8 unknown_6E4; + u8 snowflakeSpriteCount; u8 unknown_6E5; u16 unknown_6E6; - u16 unknown_6E8; + u16 thunderCounter; u8 unknown_6EA; u8 unknown_6EB; u8 unknown_6EC; u8 unknown_6ED; - u16 unknown_6EE; + u16 fog2ScrollPosX; u16 unknown_6F0; u16 unknown_6F2; u8 unknown_6F4[6]; u8 unknown_6FA; - u8 unknown_6FB; - u8 filler_6FC[4]; + u8 unknown_6FB; // fogActive + u16 unknown_6FC; + u16 unknown_6FE; u8 unknown_700; u8 filler_701[0x15]; u8 unknown_716; @@ -75,13 +86,13 @@ struct Weather u8 filler_725[9]; u8 unknown_72E; u8 filler_72F; - u16 unknown_730; - u16 unknown_732; - u16 unknown_734; - u16 unknown_736; + u16 currBlendEVA; + u16 currBlendEVB; + u16 targetBlendEVA; + u16 targetBlendEVB; u8 unknown_738; u8 unknown_739; - u8 unknown_73A; + u8 blendDelay; u8 filler_73B[0x3C-0x3B]; s16 unknown_73C; s16 unknown_73E; @@ -92,12 +103,12 @@ struct Weather u8 unknown_74E; }; -void sub_807C828(void); +void StartWeather(void); void DoWeatherEffect(u8 effect); void sub_807C988(u8 effect); void sub_807C9B4(u8 effect); -void sub_807C9E4(u8); -void sub_807CA34(u8); +void Task_WeatherInit(u8); +void Task_WeatherMain(u8); void sub_807CAE8(void); void nullsub_38(void); void sub_807CB10(void); @@ -120,7 +131,7 @@ void fade_screen(u8, u8); void sub_807D78C(u8 tag); void sub_807D874(u8); // ... -void sub_807DB64(u8, u8); +void Weather_SetBlendCoeffs(u8, u8); // ... void sub_807DE68(void); // ... diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index d483d4ddc..6dbe5e8ed 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -539,7 +539,28 @@ #define BGCNT_AFF1024x1024 0xC000 // BLDCNT - +// Bits 0-5 select layers for the 1st target +#define BLDCNT_TGT1_BG0 (1 << 0) +#define BLDCNT_TGT1_BG1 (1 << 1) +#define BLDCNT_TGT1_BG2 (1 << 2) +#define BLDCNT_TGT1_BG3 (1 << 3) +#define BLDCNT_TGT1_OBJ (1 << 4) +#define BLDCNT_TGT1_BD (1 << 5) +// Bits 6-7 select the special effect +#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect +#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA) +#define BLDCNT_EFFECT_LIGHTEN (2 << 6) // 1st target becomes whiter (controlled by BLDY) +#define BLDCNT_EFFECT_DARKEN (3 << 6) // 1st target becomes blacker (controlled by BLDY) +// Bits 8-13 select layers for the 2nd target +#define BLDCNT_TGT2_BG0 (1 << 8) +#define BLDCNT_TGT2_BG1 (1 << 9) +#define BLDCNT_TGT2_BG2 (1 << 10) +#define BLDCNT_TGT2_BG3 (1 << 11) +#define BLDCNT_TGT2_OBJ (1 << 12) +#define BLDCNT_TGT2_BD (1 << 13) + +// BLDALPHA +#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1)) // SOUNDCNT_H #define SOUND_CGB_MIX_QUARTER 0x0000 -- cgit v1.2.3 From a8c22a9f1de634d75d8ddc117bcd2fda59aac522 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 25 Nov 2017 23:33:16 -0600 Subject: finish decompiling field_weather_2 --- include/field_weather.h | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/field_weather.h b/include/field_weather.h index c099a4977..7c5c94cd8 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -16,8 +16,12 @@ struct Sprite; // TODO: This might be a union struct Weather2 { - /*0x00*/ u8 filler0[0xA0]; - /*0xA0*/ struct Sprite *fogSprites[20]; + /*0x000*/ u8 filler0[0xA0]; + /*0x0A0*/ struct Sprite *fogSprites[20]; + /*0x0F0*/ struct Sprite *fog1Sprites[20]; + /*0x140*/ struct Sprite *unknown_140[20]; + /*0x190*/ struct Sprite *unknown_190[20]; + /*0x1E0*/ struct Sprite *unknown_1E0[5]; }; struct Weather @@ -78,12 +82,28 @@ struct Weather u16 unknown_6FC; u16 unknown_6FE; u8 unknown_700; - u8 filler_701[0x15]; + 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 unknown_716; u8 unknown_717; - u8 filler_718[0xc]; + u16 unknown_718; + u16 unknown_71A; + u16 unknown_71C; + u16 unknown_71E; + u16 unknown_720; + u16 unknown_722; u8 unknown_724; - u8 filler_725[9]; + u8 filler_725[1]; + u16 unknown_726; + u16 unknown_728; + u16 unknown_72A; + u16 unknown_72C; u8 unknown_72E; u8 filler_72F; u16 currBlendEVA; @@ -139,7 +159,7 @@ void PlayRainSoundEffect(void); // ... void SetSav1Weather(u32); u8 GetSav1Weather(void); -void sub_80806E4(void); +void SetSav1WeatherFromCurrMapHeader(void); // ... void DoCurrentWeather(void); void sub_8080750(); -- cgit v1.2.3 From 4e1098beb6a84a46f0ac2bff37013a3f675f6750 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 26 Nov 2017 01:41:51 -0600 Subject: label more functions and variables --- include/field_weather.h | 56 +++++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 25 deletions(-) (limited to 'include') diff --git a/include/field_weather.h b/include/field_weather.h index 7c5c94cd8..ed16b2bf6 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -6,29 +6,35 @@ #define WEATHER_RAIN_LIGHT 3 #define WEATHER_SNOW 4 #define WEATHER_RAIN_MED 5 -#define WEATHER_FOG_2 6 -#define WEATHER_FOG_1 7 +#define WEATHER_FOG_1 6 +#define WEATHER_ASH 7 +#define WEATHER_FOG_2 9 #define WEATHER_DROUGHT 12 #define WEATHER_RAIN_HEAVY 13 +#define WEATHER_BUBBLES 14 struct Sprite; -// TODO: This might be a union -struct Weather2 -{ - /*0x000*/ u8 filler0[0xA0]; - /*0x0A0*/ struct Sprite *fogSprites[20]; - /*0x0F0*/ struct Sprite *fog1Sprites[20]; - /*0x140*/ struct Sprite *unknown_140[20]; - /*0x190*/ struct Sprite *unknown_190[20]; - /*0x1E0*/ struct Sprite *unknown_1E0[5]; -}; - struct Weather { - /*0x000*/ struct Sprite *rainSprites[24]; - /*0x060*/ struct Sprite *snowflakeSprites[0x65]; // snowflakes? - /*0x1F4*/ struct Sprite *cloudSprites[3]; + 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 unknown_200[2][32]; u8 filler_240[0x460-0x240]; u8 unk460[2][32]; @@ -47,7 +53,7 @@ struct Weather u8 unknown_6CA; u8 unknown_6CB; u16 initStep; - u16 unknown_6CE; + u16 finishStep; u8 currWeather; u8 nextWeather; u8 weatherGfxLoaded; @@ -57,11 +63,11 @@ struct Weather u16 unknown_6D6; u8 unknown_6D8; u8 unknown_6D9; - u8 unknown_6DA; + u8 rainSpriteCount; u8 unknown_6DB; u8 unknown_6DC; u8 rainStrength; - /*0x6DE*/ u8 cloudsActive; + /*0x6DE*/ u8 cloudSpritesCreated; u8 filler_6DF[1]; u16 unknown_6E0; u16 unknown_6E2; @@ -73,15 +79,15 @@ struct Weather u8 unknown_6EB; u8 unknown_6EC; u8 unknown_6ED; - u16 fog2ScrollPosX; + u16 fog1ScrollPosX; u16 unknown_6F0; u16 unknown_6F2; u8 unknown_6F4[6]; u8 unknown_6FA; - u8 unknown_6FB; // fogActive + u8 fog1SpritesCreated; u16 unknown_6FC; u16 unknown_6FE; - u8 unknown_700; + u8 ashSpritesCreated; u8 filler_701[3]; u32 unknown_704; u32 unknown_708; @@ -90,15 +96,15 @@ struct Weather u16 unknown_710; u16 unknown_712; u16 unknown_714; - u8 unknown_716; - u8 unknown_717; + u8 sandstormSprites1Created; + u8 sandstormSprites2Created; u16 unknown_718; u16 unknown_71A; u16 unknown_71C; u16 unknown_71E; u16 unknown_720; u16 unknown_722; - u8 unknown_724; + u8 fog2SpritesCreated; u8 filler_725[1]; u16 unknown_726; u16 unknown_728; -- cgit v1.2.3