summaryrefslogtreecommitdiff
path: root/include/global.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/global.h')
-rw-r--r--include/global.h169
1 files changed, 151 insertions, 18 deletions
diff --git a/include/global.h b/include/global.h
index b1bfa25ad..a5932d175 100644
--- a/include/global.h
+++ b/include/global.h
@@ -2,10 +2,7 @@
#define GUARD_GLOBAL_H
#include "gba/gba.h"
-
-#ifndef REVISION
-#define REVISION 0
-#endif
+#include "config.h"
// Prevent cross-jump optimization.
#define BLOCK_CROSS_JUMP asm("");
@@ -27,8 +24,17 @@ enum
{
VERSION_SAPPHIRE = 1,
VERSION_RUBY = 2,
+ VERSION_EMERALD = 3,
+};
+
+enum LanguageId {
+ LANGUAGE_JAPANESE = 1,
+ LANGUAGE_ENGLISH = 2,
+ LANGUAGE_GERMAN = 5,
};
+#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
+
enum
{
MALE,
@@ -61,6 +67,15 @@ enum
OPTIONS_BATTLE_STYLE_SET
};
+enum
+{
+ BAG_ITEMS = 1,
+ BAG_POKEBALLS,
+ BAG_TMsHMs,
+ BAG_BERRIES,
+ BAG_KEYITEMS
+};
+
struct Coords16
{
s16 x;
@@ -95,8 +110,8 @@ struct SecretBaseRecord
};
#include "game_stat.h"
-#include "fieldmap.h"
-#include "berry.h"
+#include "global.fieldmap.h"
+#include "global.berry.h"
#include "pokemon.h"
struct WarpData
@@ -169,6 +184,93 @@ struct EasyChatPair
u16 words[2];
}; /*size = 0x8*/
+struct TVShowCommon {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+};
+
+struct TVShowFanClubLetter {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u16 species;
+ u8 pad04[12];
+ /*0x10*/ u8 playerName[8];
+ /*0x18*/ u8 var18;
+};
+
+struct TVShowRecentHappenings {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u16 var02;
+ u8 pad04[12];
+ /*0x10*/ u8 var10[8];
+ /*0x18*/ u8 var18;
+ u8 pad19[10];
+};
+
+struct TVShowFanclubOpinions {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u16 var02;
+ /*0x04*/ u8 var04A:4;
+ u8 var04B:4;
+ /*0x04*/ u8 var05[8];
+ /*0x0D*/ u8 var0D;
+ /*0x0E*/ u8 var0E;
+ /*0x0F*/ u8 var0F;
+ /*0x10*/ u8 var10[8];
+};
+
+struct TVShowNameRaterShow {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u16 species;
+ /*0x04*/ u8 pokemonName[11];
+ /*0x0F*/ u8 trainerName[11];
+ /*0x1A*/ u8 random;
+ /*0x1B*/ u8 random2;
+ /*0x1C*/ u16 var1C;
+ /*0x1E*/ u8 language;
+ /*0x1F*/ u8 var1F;
+};
+
+struct TVShowMassOutbreak {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u8 var02;
+ /*0x03*/ u8 var03;
+ /*0x04*/ u16 moves[4];
+ /*0x0C*/ u16 species;
+ /*0x0E*/ u16 var0E;
+ /*0x10*/ u8 locationMapNum;
+ /*0x11*/ u8 locationMapGroup;
+ /*0x12*/ u8 var12;
+ /*0x13*/ u8 probability;
+ /*0x14*/ u8 level;
+ /*0x15*/ u8 var15;
+ /*0x16*/ u16 var16;
+ /*0x18*/ u8 var18;
+ u8 pad19[11];
+};
+
+typedef union TVShow {
+ struct TVShowCommon common;
+ struct TVShowFanClubLetter fanclubLetter;
+ struct TVShowRecentHappenings recentHappenings;
+ struct TVShowFanclubOpinions fanclubOpinions;
+ struct TVShowNameRaterShow nameRaterShow;
+ struct TVShowMassOutbreak massOutbreak;
+} TVShow;
+
+struct MailStruct
+{
+ /*0x00*/ u16 words[9];
+ /*0x12*/ u8 playerName[8];
+ /*0x1A*/ u8 trainerId[4];
+ /*0x1E*/ u16 species;
+ /*0x20*/ u16 itemId;
+};
+
struct SaveBlock1
{
/*0x00*/ struct Coords16 pos;
@@ -218,17 +320,23 @@ struct SaveBlock1
/*0x2704*/ u8 decorDoll[40];
/*0x272C*/ u8 decorCushion[10];
/*0x2736*/ u8 padding_2736[2];
- /*0x2738*/ u8 tvShows[24][36]; // TODO: TV show struct
+ /*0x2738*/ TVShow tvShows[24];
/*0x2A98*/ u8 filler_2A98[0x64];
/*0x2AFC*/ u16 outbreakPokemonSpecies;
/*0x2AFE*/ u8 outbreakLocationMapNum;
/*0x2AFF*/ u8 outbreakLocationMapGroup;
/*0x2B00*/ u8 outbreakPokemonLevel;
- /*0x2B01*/ u8 filler_2B01[3];
+ /*0x2B01*/ u8 outbreakUnk1;
+ /*0x2B02*/ u16 outbreakUnk2;
/*0x2B04*/ u16 outbreakPokemonMoves[4];
- /*0x2B0C*/ u8 unk2B0C;
+ /*0x2B0C*/ u8 outbreakUnk4;
/*0x2B0D*/ u8 outbreakPokemonProbability;
- /*0x2B0E*/ u8 filler_2B0E[0x2C6];
+ /*0x2B0E*/ u16 outbreakUnk5;
+ /*0x2B10*/ u8 filler_2B0E[0xC];
+ /*0x2B1C*/ u16 unk2B1C[4];
+ /*0x2B24*/ u8 filler_2B24[0x28];
+ /*0x2B4C*/ struct MailStruct mail[16];
+ /*0x2D8C*/ u8 filler_2D8C[0x48];
/*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
/*0x2DFC*/ u8 filler_2DFC[0x100];
/*0x2EFC*/ struct SB1_2EFC_Struct sb1_2EFC_struct[5];
@@ -251,10 +359,10 @@ extern struct SaveBlock1 gSaveBlock1;
struct Time
{
- s16 days;
- s8 hours;
- s8 minutes;
- s8 seconds;
+ /*0x00*/ s16 days;
+ /*0x02*/ s8 hours;
+ /*0x03*/ s8 minutes;
+ /*0x04*/ s8 seconds;
};
struct Pokedex
@@ -270,18 +378,26 @@ struct Pokedex
/*0x44*/ u8 seen[52];
};
-struct SaveBlock2
+struct SaveBlock2_Sub
+{
+ /*0x0000, 0x00A8*/ u8 filler_000[0x4C8];
+ /*0x04C8, 0x0570*/ u16 var_4C8;
+ /*0x04CA, 0x0572*/ u16 var_4CA;
+ /*0x04CC, 0x0574*/ u8 filler_4CC[0x31C];
+};
+
+struct SaveBlock2 /* 0x02024EA4 */
{
/*0x00*/ u8 playerName[8];
/*0x08*/ u8 playerGender; // MALE, FEMALE
- /*0x09*/ u8 sb2_field_9;
+ /*0x09*/ u8 specialSaveWarp;
/*0x0A*/ u8 playerTrainerId[4];
/*0x0E*/ u16 playTimeHours;
/*0x10*/ u8 playTimeMinutes;
/*0x11*/ u8 playTimeSeconds;
/*0x12*/ u8 playTimeVBlanks;
/*0x13*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A]
- u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST]
+ /*0x14*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST]
u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes
u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO]
u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET]
@@ -291,7 +407,24 @@ struct SaveBlock2
/*0x90*/ u8 filler_90[0x8];
/*0x98*/ struct Time localTimeOffset;
/*0xA0*/ struct Time lastBerryTreeUpdate;
- /*0xA8*/ u8 filler_A8[0x7E8];
+ /*0xA8*/ struct SaveBlock2_Sub filler_A8;
+};
+
+struct UnkStruct_8054FF8_Substruct
+{
+ s16 x;
+ s16 y;
+ u8 field_8;
+};
+
+struct UnkStruct_8054FF8
+{
+ u8 a;
+ u8 b;
+ u8 c;
+ u8 d;
+ struct UnkStruct_8054FF8_Substruct sub;
+ u16 field_C;
};
extern struct SaveBlock2 gSaveBlock2;