diff options
author | camthesaxman <cameronghall@cox.net> | 2017-11-25 18:07:24 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-11-25 18:07:24 -0600 |
commit | 37418d05c404aec70745e238796c11b464da33ef (patch) | |
tree | da32e04d100701b005c8bdb230da6e53ae003198 /include | |
parent | c9a21f43bd074e532c745560b1d7d412f6ea8456 (diff) |
label and decompile more of field_weather_2
Diffstat (limited to 'include')
-rw-r--r-- | include/field_weather.h | 53 | ||||
-rw-r--r-- | include/gba/io_reg.h | 23 |
2 files changed, 54 insertions, 22 deletions
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 |