summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rwxr-xr-xinclude/ewram.h1
-rw-r--r--include/field_weather.h99
-rw-r--r--include/gba/io_reg.h23
-rw-r--r--include/gba/macro.h16
-rw-r--r--include/learn_move.h15
-rw-r--r--include/party_menu.h1
-rw-r--r--include/pokemon.h4
-rw-r--r--include/pokemon_summary_screen.h61
-rw-r--r--include/random.h (renamed from include/rng.h)7
9 files changed, 189 insertions, 38 deletions
diff --git a/include/ewram.h b/include/ewram.h
index 06ea513a3..eacc02cab 100755
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -207,6 +207,7 @@ extern u8 gSharedMem[];
#define eEggHatchData (struct EggHatchData*)(&gSharedMem[0x18000])
#define ePokedexView1 (struct PokedexView *)(gSharedMem + 0x18000)
#define UNK_2018000_STRUCT (*(struct UnknownStruct2018000 *)(gSharedMem + 0x18000))
+#define pssData (*(struct PokemonSummaryScreenStruct *)(gSharedMem + 0x18000))
#define ewram18300 ((u16 *)(gSharedMem + 0x18300))
#define ewram18800 (&gSharedMem[0x18800])
#define ePokedexView2 (struct PokedexView *)(gSharedMem + 0x18800)
diff --git a/include/field_weather.h b/include/field_weather.h
index e99b64344..ed16b2bf6 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -1,20 +1,40 @@
#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_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;
struct Weather
{
- struct Sprite *unknown_0[24];
- struct Sprite *snowflakeSprites[0x65]; // snowflakes?
- 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];
@@ -32,56 +52,73 @@ struct Weather
u8 unknown_6C9;
u8 unknown_6CA;
u8 unknown_6CB;
- u16 unknown_6CC;
- u16 unknown_6CE;
+ u16 initStep;
+ u16 finishStep;
u8 currWeather;
- u8 unknown_6D1;
- u8 unknown_6D2;
+ u8 nextWeather;
+ u8 weatherGfxLoaded;
u8 unknown_6D3;
u8 unknown_6D4;
u8 unknown_6D5;
u16 unknown_6D6;
u8 unknown_6D8;
u8 unknown_6D9;
- u8 unknown_6DA;
+ u8 rainSpriteCount;
u8 unknown_6DB;
u8 unknown_6DC;
u8 rainStrength;
- u8 unknown_6DE;
+ /*0x6DE*/ u8 cloudSpritesCreated;
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 fog1ScrollPosX;
u16 unknown_6F0;
u16 unknown_6F2;
u8 unknown_6F4[6];
u8 unknown_6FA;
- u8 unknown_6FB;
- u8 filler_6FC[4];
- u8 unknown_700;
- u8 filler_701[0x15];
- u8 unknown_716;
- u8 unknown_717;
- u8 filler_718[0xc];
- u8 unknown_724;
- u8 filler_725[9];
+ 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 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 +129,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 +157,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);
// ...
@@ -128,7 +165,7 @@ void PlayRainSoundEffect(void);
// ...
void SetSav1Weather(u32);
u8 GetSav1Weather(void);
-void sub_80806E4(void);
+void SetSav1WeatherFromCurrMapHeader(void);
// ...
void DoCurrentWeather(void);
void sub_8080750();
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
diff --git a/include/gba/macro.h b/include/gba/macro.h
index 1e0254806..a0edf2a49 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -103,6 +103,22 @@
} \
}
+#define DmaClearLarge(dmaNum, dest, size, block, bit) \
+{ \
+ u32 _size = size; \
+ while (1) \
+ { \
+ DmaFill##bit(dmaNum, 0, dest, (block)); \
+ dest += (block); \
+ _size -= (block); \
+ if (_size <= (block)) \
+ { \
+ DmaFill##bit(dmaNum, 0, dest, _size); \
+ break; \
+ } \
+ } \
+}
+
#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16)
#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32)
diff --git a/include/learn_move.h b/include/learn_move.h
index 85fbf046e..7a05ea60b 100644
--- a/include/learn_move.h
+++ b/include/learn_move.h
@@ -1,6 +1,21 @@
#ifndef GUARD_LEARN_MOVE_H
#define GUARD_LEARN_MOVE_H
+struct ContestMove
+{
+ u8 effect;
+ u8 contestCategory:3;
+ u8 comboStarterId;
+ u8 comboMoves[4];
+};
+
+struct ContestEffect
+{
+ u8 effectType;
+ u8 appeal;
+ u8 jam;
+};
+
void sub_8132670(void);
#endif // GUARD_LEARN_MOVE_H
diff --git a/include/party_menu.h b/include/party_menu.h
index 304389e78..3998054da 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -216,5 +216,6 @@ void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func);
void sub_806D668(u8 monIndex);
void TaughtMove(u8 taskId);
void StopTryingToTeachMove_806F588(u8 taskId);
+bool8 IsHMMove(u16 move);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 7fc8e181f..a1c30f1f3 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -578,6 +578,7 @@ void MonRestorePP(struct Pokemon *);
u8 *sub_803F378(u16 itemId);
+u16 SpeciesToPokedexNum(u16 species);
u16 NationalPokedexNumToSpecies(u16 nationalNum);
u16 NationalToHoennOrder(u16);
u16 SpeciesToNationalPokedexNum(u16);
@@ -611,6 +612,9 @@ const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *);
bool8 IsPokeSpriteNotFlipped(u16);
u8 GetLevelUpMovesBySpecies(u16, u16 *);
u8 TryIncrementMonLevel(struct Pokemon *);
+bool8 IsShiny(struct Pokemon *mon);
+
+struct Sprite *sub_80F7920(u16, u16, const u16 *);
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index c1b99c367..945e810a3 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -1,11 +1,65 @@
#ifndef GUARD_POKEMON_SUMMARY_SCREEN_H
#define GUARD_POKEMON_SUMMARY_SCREEN_H
+#include "main.h"
+#include "task.h"
+
extern const u8 *const gNatureNames[];
-void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int);
-void sub_809D9F0(struct Pokemon *party, u8, u8, void *, u32);
-void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32);
+// The Pokemon Summary Screen can operate in different modes. Certain features,
+// such as move re-ordering, are available in the different modes.
+enum PokemonSummaryScreenMode
+{
+ PSS_MODE_NORMAL,
+ PSS_MODE_MOVES_ONLY,
+ PSS_MODE_SELECT_MOVE,
+ PSS_MODE_UNKNOWN, // TODO: this mode might be used by pokemon_storage_system
+ PSS_MODE_NO_MOVE_ORDER_EDIT,
+ PSS_MODE_PC_NORMAL,
+ PSS_MODE_PC_MOVES_ONLY,
+};
+
+enum PokemonSummaryScreenPage
+{
+ PSS_PAGE_INFO,
+ PSS_PAGE_SKILLS,
+ PSS_PAGE_BATTLE_MOVES,
+ PSS_PAGE_CONTEST_MOVES,
+};
+
+struct PokemonSummaryScreenStruct
+{
+ /*0x00*/ union {
+ struct Pokemon *partyMons;
+ struct BoxPokemon *boxMons;
+ } monList;
+ /*0x04*/ MainCallback callback;
+ /*0x08*/ u8 mode; // see enum PokemonSummaryScreenMode
+ /*0x09*/ u8 monIndex;
+ /*0x0A*/ u8 maxMonIndex;
+ /*0x0B*/ u8 page; // enum PokemonSummaryScreenPage
+ /*0x0C*/ u8 monSpriteId;
+ /*0x0D*/ u8 ballSpriteId;
+ /*0x0E*/ bool8 usingPC;
+ /*0x0F*/ u8 inputHandlingTaskId;
+ /*0x10*/ struct Pokemon loadedMon;
+ /*0x74*/ u8 loadGfxState;
+ /*0x75*/ u8 firstPage;
+ /*0x76*/ u8 lastPage;
+ /*0x77*/ u8 unk77;
+ /*0x78*/ u8 unk78;
+ /*0x79*/ u8 selectedMoveIndex;
+ /*0x7A*/ u8 switchMoveIndex;
+ /*0x7B*/ bool8 disableMoveOrderEditing;
+ /*0x7C*/ u16 moveToLearn;
+ /*0x7E*/ u8 headerTextId; // used as index into sPageHeaderTexts
+ /*0x7F*/ u8 headerActionTextId; // used as index into sPageHeaderTexts
+ /*0x80*/ u8 bgToggle;
+ /*0x84*/ TaskFunc unk84;
+};
+
+void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u8);
+void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
u8 sub_809FA30(void);
u8 pokemon_ailments_get_primary(u32);
u8 GetMonStatusAndPokerus();
@@ -14,4 +68,5 @@ u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level);
u8 PokemonSummaryScreen_CheckOT(struct Pokemon *pokemon);
bool8 CheckPartyPokerus(struct Pokemon *, u8);
+
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/include/rng.h b/include/random.h
index dec8c6e26..a928a97b5 100644
--- a/include/rng.h
+++ b/include/random.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_RNG_H
-#define GUARD_RNG_H
+#ifndef GUARD_RANDOM_H
+#define GUARD_RANDOM_H
extern u32 gRngValue;
@@ -12,4 +12,5 @@ u16 Random(void);
//Sets the initial seed value of the pseudorandom number generator
void SeedRng(u16 seed);
-#endif // GUARD_RNG_H
+#endif // GUARD_RANDOM_H
+