summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-11-25 18:07:24 -0600
committercamthesaxman <cameronghall@cox.net>2017-11-25 18:07:24 -0600
commit37418d05c404aec70745e238796c11b464da33ef (patch)
treeda32e04d100701b005c8bdb230da6e53ae003198 /include
parentc9a21f43bd074e532c745560b1d7d412f6ea8456 (diff)
label and decompile more of field_weather_2
Diffstat (limited to 'include')
-rw-r--r--include/field_weather.h53
-rw-r--r--include/gba/io_reg.h23
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