summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle.h118
-rw-r--r--include/ewram.h69
-rw-r--r--include/global.h29
-rw-r--r--include/party_menu.h16
-rw-r--r--include/pokemon.h14
5 files changed, 85 insertions, 161 deletions
diff --git a/include/battle.h b/include/battle.h
index afebbc781..8911218eb 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -4,6 +4,7 @@
#include "sprite.h"
#include "constants/battle.h"
#include "battle_setup.h"
+#include "main.h"
#define GET_BATTLER_POSITION(battler) (gBattlerPositions[battler])
#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
@@ -281,15 +282,24 @@ struct AI_Stack
u8 size;
};
+struct LinkPartnerHeader
+{
+ u8 versionSignatureLo;
+ u8 versionSignatureHi;
+ u8 vsScreenHealthFlagsLo;
+ u8 vsScreenHealthFlagsHi;
+ struct BattleEnigmaBerry battleEnigmaBerry;
+};
+
struct BattleStruct /* 0x2000000 */
{
- /*0x00000*/ u8 unk0;
- /*0x00001*/ bool8 unk1;
- /*0x00002*/ u8 unk2;
- /*0x00003*/ bool8 unk3;
- u8 filler4[0x15DDA];
- /*0x15DDE*/ u8 unk15DDE;
- /*0x15DDF*/ u8 unk15DDF;
+ /*0x00000*/ union{
+ struct LinkPartnerHeader linkPartnerHeader;
+ struct MultiBattlePokemonTx multiBattleMons[3];
+ } multiBuffer;
+ u8 filler60[0x15D7E];
+ /*0x15DDE*/ u8 contestWinnerSaveIdx;
+ /*0x15DDF*/ u8 contestWinnerIsForArtist;
/*0x15DE0*/ u8 filler15DE0[0x220];
/*0x16000*/ u8 turnEffectsTracker;
/*0x16001*/ u8 turnEffectsBattlerId;
@@ -330,14 +340,14 @@ struct BattleStruct /* 0x2000000 */
/*0x16064*/ u8 unk16064[4];
/*0x16068*/ u8 monToSwitchIntoId[MAX_BATTLERS_COUNT];
/*0x1606C*/ u8 unk1606C[4][3];
- /*0x16078*/ u8 unk16078;
+ /*0x16078*/ u8 runTries;
/*0x16079*/ u8 caughtNick[11];
- /*0x16084*/ u8 unk16084;
+ /*0x16084*/ u8 battleStyle;
/*0x16085*/ u8 unk16085;
- /*0x16086*/ u8 unk16086;
- /*0x16087*/ u8 unk16087;
+ /*0x16086*/ u8 safariGoNearCounter;
+ /*0x16087*/ u8 safariPkblThrowCounter;
/*0x16088*/ u8 safariFleeRate;
- /*0x16089*/ u8 unk16089;
+ /*0x16089*/ u8 safariCatchFactor;
/*0x1608A*/ u8 unk1608A;
/*0x1608B*/ u8 unk1608B;
/*0x1608C*/ u8 ChosenMoveID[4];
@@ -366,34 +376,15 @@ struct BattleStruct /* 0x2000000 */
/*0x160A9*/ u8 unk160A9;
/*0x160AA*/ u8 unk160Aa;
/*0x160AB*/ u8 unk160Ab;
- /*0x160AC*/ u8 unk160AC;
- /*0x160AD*/ u8 unk160AD;
- /*0x160AE*/ u8 unk160AE;
- /*0x160AF*/ u8 unk160AF;
- /*0x160B0*/ u8 unk160B0;
- /*0x160B1*/ u8 unk160B1;
- /*0x160B2*/ u8 unk160B2;
- /*0x160B3*/ u8 unk160B3;
- /*0x160B4*/ u8 unk160B4;
- /*0x160B5*/ u8 unk160B5;
- /*0x160B6*/ u8 unk160B6;
- /*0x160B7*/ u8 unk160B7;
- /*0x160B8*/ u8 unk160B8;
- /*0x160B9*/ u8 unk160B9;
- /*0x160BA*/ u8 unk160Ba;
- /*0x160BB*/ u8 unk160Bb;
+ /*0x160AC*/ u16 lastTakenMove[4 * 2];
/*0x160BC*/ u16 HP_OnSwitchout[2];
/*0x160C0*/ u8 unk160C0;
/*0x160C1*/ u8 hpScale;
- /*0x160C2*/ u8 unk160C2;
- /*0x160C3*/ u8 unk160C3;
- /*0x160C4*/ u8 unk160C4;
- /*0x160C5*/ u8 unk160C5;
- /*0x160C6*/ u8 unk160C6;
- /*0x160C7*/ u8 unk160C7;
+ /*0x160C2*/ u16 unk160C2;
+ /*0x160C4*/ MainCallback unk160C4;
/*0x160C8*/ u8 AI_monToSwitchIntoId[2];
/*0x160CA*/ u8 synchroniseEffect;
- /*0x160CB*/ u8 linkPlayerIndex;
+ /*0x160CB*/ u8 multiplayerId;
/*0x160CC*/ u16 usedHeldItems[4];
/*0x160D4*/ u8 unk160D4;
/*0x160D5*/ u8 unk160D5;
@@ -413,22 +404,8 @@ struct BattleStruct /* 0x2000000 */
/*0x160E5*/ u8 unk160E5;
/*0x160E6*/ u8 unk160E6;
/*0x160E7*/ u8 atkCancellerTracker;
- /*0x160E8*/ u8 unk160E8;
- /*0x160E9*/ u8 unk160E9;
- /*0x160EA*/ u8 unk160EA;
- /*0x160EB*/ u8 unk160EB;
- /*0x160EC*/ u8 unk160EC;
- /*0x160ED*/ u8 unk160ED;
- /*0x160EE*/ u8 unk160EE;
- /*0x160EF*/ u8 unk160EF;
- /*0x160F0*/ u8 unk160F0;
- /*0x160F1*/ u8 unk160F1;
- /*0x160F2*/ u8 unk160F2;
- /*0x160F3*/ u8 unk160F3;
- /*0x160F4*/ u8 unk160F4;
- /*0x160F5*/ u8 unk160F5;
- /*0x160F6*/ u8 unk160F6;
- /*0x160F7*/ u8 unk160F7;
+ /*0x160E8*/ u16 choicedMove[4];
+ /*0x160F0*/ u16 changedItems[4];
/*0x160F8*/ u8 unk160F8;
/*0x160F9*/ u8 unk160F9;
/*0x160FA*/ u8 unk160FA;
@@ -437,26 +414,11 @@ struct BattleStruct /* 0x2000000 */
/*0x160FD*/ u8 unk160FD;
/*0x160FE*/ u8 unk160FE;
/*0x160FF*/ u8 unk160FF;
- /*0x16100*/ u8 unk16100;
- /*0x16101*/ u8 unk16101;
- /*0x16102*/ u8 unk16102;
- /*0x16103*/ u8 unk16103;
- /*0x16104*/ u8 unk16104;
- /*0x16105*/ u8 unk16105;
- /*0x16106*/ u8 unk16106;
- /*0x16107*/ u8 unk16107;
- /*0x16108*/ u8 unk16108;
- /*0x16109*/ u8 unk16109;
- /*0x1610A*/ u8 unk1610A;
- /*0x1610B*/ u8 unk1610B;
- /*0x1610C*/ u8 unk1610C;
- /*0x1610D*/ u8 unk1610D;
- /*0x1610E*/ u8 unk1610E;
- /*0x1610F*/ u8 unk1610F;
+ /*0x16100*/ u8 lastTakenMoveFrom[2 * 2 * 4];
/*0x16110*/ u8 wishPerishSongState;
/*0x16111*/ u8 wishPerishSongBattlerId;
- /*0x16112*/ u8 unk16112;
- /*0x16113*/ u8 unk16113;
+ /*0x16112*/ u8 multihitMoveEffect;
+ /*0x16113*/ u8 givenExpMons;
/*0x16114*/ u8 unk16114;
/*0x16115*/ u8 unk16115;
/*0x16116*/ u8 unk16116;
@@ -474,18 +436,18 @@ struct BattleStruct /* 0x2000000 */
/* 0x16A00 */ struct BattleHistory unk_2016A00_2;
};
-struct Struct2017100
+struct ResourceFlags
{
u32 arr[4];
};
-struct Struct2017800
+struct BattleSpriteInfo
{
u8 invisible:1;
- u8 unk0_1:1;
+ u8 lowHpSong:1;
u8 substituteSprite:1;
- u8 unk0_3:1;
- u8 unk0_4:1;
+ u8 flag_x8:1;
+ u8 hpNumbersNoBars:1;
u16 transformedSpecies;
};
@@ -529,8 +491,6 @@ struct Struct20238C8
u8 unk0_7:1;
};
-#define gBattleResources_statsBeforeLvlUp ((struct StatsArray *)(gSharedMem + 0x17180))
-
#define GET_MOVE_TYPE(move, typeArg) \
{ \
if (gBattleStruct->dynamicMoveType) \
@@ -659,7 +619,7 @@ void sub_800D6D4();
void ApplyPlayerChosenFrameToBattleMenu();
void DrawMainBattleBackground(void);
void LoadBattleTextboxAndBackground();
-void sub_800DE30(u8);
+void InitLinkBattleVsScreen(u8);
void DrawBattleEntryBackground();
// src/battle_2.o
@@ -667,7 +627,7 @@ void CB2_InitBattle(void);
void CB2_InitBattleInternal(void);
void CB2_HandleStartBattle(void);
void sub_800F104(void);
-void sub_800F298(void);
+void CB2_HandleStartMultiBattle(void);
void BattleMainCB2(void);
void sub_800F838(struct Sprite *);
u8 CreateNPCTrainerParty(struct Pokemon *, u16);
@@ -688,7 +648,7 @@ void objc_dp11b_pingpong(struct Sprite *);
void nullsub_41(void);
void sub_8010800(void);
void BattleMainCB1(void);
-void sub_8010874(void);
+void BattleStartClearSetData(void);
void bc_8012FAC(void);
void sub_8011384(void);
void bc_801333C(void);
diff --git a/include/ewram.h b/include/ewram.h
index da544f5c2..0efac7bda 100644
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -87,74 +87,39 @@ extern u8 gSharedMem[];
#define ewram15000 (&gSharedMem[0x15000])
#define ewram15000arr(i, data) (gSharedMem[0x15000 + data + i])
#define ewram15800 (&gSharedMem[0x15800])
-#define ewram15DDE (gSharedMem[0x15DDE])
-#define ewram15DDF (gSharedMem[0x15DDF])
#define ewram15DE0 ((*(struct ContestEntry*)(gSharedMem + 0x15DE0)))
#define ewram15E00 ((*(struct Unk2015E00*)(gSharedMem + 0x15E00)))
#define ewram16000 (gSharedMem[0x16000])
#define ewram16000_2 (&gSharedMem[0x16000])
-#define ewram16001 (gSharedMem[0x16001])
-#define ewram16002 (gSharedMem[0x16002])
#define ewram16003 (gSharedMem[0x16003])
#define ewram16004arr(i, battler) (gSharedMem[0x16004 + i + battler * 2])
-#define ewram1600C (gSharedMem[0x1600C])
-#define ewram1600E (gSharedMem[0x1600E])
#define ewram16010arr(battler) (gSharedMem[0x16010 + battler])
-#define ewram1601B (gSharedMem[0x1601B])
#define eDynamicMoveType (gSharedMem[0x1601C])
#define eFocusPunchBattler (gSharedMem[0x1601D])
#define eDmgMultiplier (gSharedMem[0x1601F])
#define ewram16020 ((u8 *)(gSharedMem + 0x16020))
#define ewram16020arr(i) (gSharedMem[0x16020 + i])
-#define ewram16054 (gSharedMem[0x16054])
-#define ewram16056 (gSharedMem[0x16056])
#define ewram16058 (gSharedMem[0x16058])
-#define ewram16059 (gSharedMem[0x16059])
#define ewram16060(battler) (gSharedMem[0x16060 + battler])
#define BATTLE_PARTY_ID(battler) (gSharedMem[0x16064 + battler])
-#define ewram16064 (&gSharedMem[0x16064])
#define ewram16064arr(battler) (gSharedMem[0x16064 + battler])
#define ewram16068arr(i) (gSharedMem[0x16068 + i])
#define UNK_201606C_ARRAY (gSharedMem + 0x1606C) // lazy define but whatever.
#define ewram1606Carr(i, a) (gSharedMem[0x1606C + i + a * 3])
-#define ewram16078 (gSharedMem[0x16078])
-#define ewram16084 (gSharedMem[0x16084])
-#define ewram16086 (gSharedMem[0x16086])
-#define ewram16087 (gSharedMem[0x16087])
#define ewram16088 (gSharedMem[0x16088])
-#define ewram16088_2 (*(u8 *)(gSharedMem + 0x16088))
#define ewram16089 (gSharedMem[0x16089])
-#define ewram16089_2 (*(u8 *)(gSharedMem + 0x16089))
-
-// src/battle/anim/battle_intro.c
-#define ewram1608A gSharedMem[0x1608A]
-#define ewram1608B gSharedMem[0x1608B]
#define ewram1608Carr(battler) (gSharedMem[0x1608C + battler])
#define ewram16094arr(battler) (gSharedMem[0x16094 + battler])
#define EWRAM_1609D (gSharedMem[0x1609D])
-#define ewram1609e(flank) (gSharedMem[0x1609E + (flank)])
-#define ewram160A1 (gSharedMem[0x160A1])
-#define ewram160A4 (gSharedMem[0x160A4])
-#define ewram160A5 (gSharedMem[0x160A5])
-#define ewram160A6 (gSharedMem[0x160A6])
#define ewram160A8 (gSharedMem[0x160A8])
#define ewram160A9 (gSharedMem[0x160A9])
#define ewram160AA (gSharedMem[0x160AA])
#define ewram160AB (gSharedMem[0x160AB])
-#define ewram160AC ((u8 *)(gSharedMem + 0x160AC))
-#define ewram160ACarr(i) (gSharedMem[0x160AC + i])
-#define ewram160ACarr2(i, battler) (gSharedMem[0x160AC + i + battler * 2])
-#define ewram160BC ((u16 *)(gSharedMem + 0x160BC)) // hp
-#define ewram160BCarr(battler) (gSharedMem[0x160BC + battler * 2])
-#define ewram160C0 (gSharedMem[0x160C0])
-#define ewram160C2_Flags ((u16 *)(gSharedMem + 0x160C2))
-#define ewram160C4_Callback ((MainCallback *)(gSharedMem + 0x160C4))
-#define ewram160C8 (gSharedMem[0x160C8])
+#define eLastTakenMove_flat(i) (gSharedMem[0x160AC + i])
+#define eLastTakenMove_2d(i, battler) (gSharedMem[0x160AC + i + battler * 2])
+#define eHpOnSwitchout(battler) (gSharedMem[0x160BC + battler * 2])
#define ewram160C8arr(battler) (gSharedMem[0x160C8 + (battler / 2)])
-#define ewram160C9 (gSharedMem[0x160C9])
-#define ewram160CB (gSharedMem[0x160CB])
-#define ewram160CC ((u8 *)(gSharedMem + 0x160CC))
#define ewram160CCarr(i) (gSharedMem[0x160CC + i])
#define USED_HELD_ITEM(battler) ((((u16*)(&gSharedMem[0x160CC + battler * 2]))))
#define USED_HELD_ITEMS(battler) (*(u16 *)&gSharedMem[0x160CC + 2 * (battler)])
@@ -163,8 +128,6 @@ extern u8 gSharedMem[];
#define ewram160DA(battler) (gSharedMem[0x160DA + (battler >> 1)])
#define ewram160DD (gSharedMem[0x160DD])
#define ewram160E0(i) (gSharedMem[0x160E0 + i])
-#define ewram160E6 (gSharedMem[0x160E6])
-#define ewram160E7 (gSharedMem[0x160E7])
#define CHOICED_MOVE(battler) (((u16*)(&gSharedMem[0x160E8 + battler * 2])))
#define ewram160E8 ((u8 *)(gSharedMem + 0x160E8))
#define ewram160E8arr(i) (gSharedMem[0x160E8 + i])
@@ -172,7 +135,6 @@ extern u8 gSharedMem[];
#define ewram160F0 ((u8 *)(gSharedMem + 0x160F0))
#define ewram160F0arr(i) (gSharedMem[0x160F0 + i])
#define ewram160F8 (gSharedMem[0x160F8])
-#define ewram160F9 (gSharedMem[0x160F9])
#define eStatHp (gSharedMem[0x160FA])
#define ewram160FB (gSharedMem[0x160FB])
#define ewram16100 ((u8 *)(gSharedMem + 0x16100))
@@ -180,27 +142,24 @@ extern u8 gSharedMem[];
#define ewram16100arr2(i, battler) (gSharedMem[0x16100 + i + battler * 4])
#define ewram16108 ((u8 *)(gSharedMem + 0x16108))
#define ewram16108arr(i) (gSharedMem[0x16108 + i])
-#define ewram16110 (gSharedMem[0x16110])
-#define ewram16111 (gSharedMem[0x16111])
-#define eMultihitMoveEffect (gSharedMem[0x16112])
-#define ewram16113 (gSharedMem[0x16113])
#define ewram16400 (gSharedMem + 0x16400)
+#define AI_ARRAY_160CC(i) (gSharedMem[0x160CC + i * 2])
+#define ewram16800 (&gSharedMem[0x16800])
+
+// gBattleResources
#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(gSharedMem + 0x16800))
#define AI_BATTLE_HISTORY ((struct BattleHistory *) (gSharedMem + 0x16A00))
#define AI_STACK ((struct AI_Stack *) (gSharedMem + 0x16C00))
-#define AI_ARRAY_160CC(i) (gSharedMem[0x160CC + i * 2])
-#define ewram16800 (&gSharedMem[0x16800])
-#define ewram17000 (&gSharedMem[0x17000])
-#define eMoveTutorMenu (struct MoveTutorMenu *)(gSharedMem + 0x17000)
#define eSecretBaseRecord ((struct SecretBaseRecord *)(gSharedMem + 0x17000))
-#define eCableCar1 ((struct CableCarEwramStruct1 *)(gSharedMem + 0x17000))
-#define ewram17002 (&gSharedMem[0x17002])
-#define eFlashFireArr (*(struct Struct2017100 *)(gSharedMem + 0x17100))
+#define eBattleFlagsArr (*(struct ResourceFlags *)(gSharedMem + 0x17100))
#define B_BATTLESCRIPTS_STACK ((struct BattleScriptsStack *) (gSharedMem + 0x17110))
-#define ewram17130 (gSharedMem[0x17130])
#define B_FUNCTION_STACK ((struct BattleCallbacksStack *) (gSharedMem + 0x17140))
-#define ewram17160 (gSharedMem[0x17160])
-#define ewram17800 ((struct Struct2017800 *) (gSharedMem + 0x17800))
+#define gBattleResources_statsBeforeLvlUp ((struct StatsArray *)(gSharedMem + 0x17180))
+
+#define ewram17000 (&gSharedMem[0x17000])
+#define eMoveTutorMenu (struct MoveTutorMenu *)(gSharedMem + 0x17000)
+#define eCableCar1 ((struct CableCarEwramStruct1 *)(gSharedMem + 0x17000))
+#define gBattleSpriteInfo ((struct BattleSpriteInfo *) (gSharedMem + 0x17800))
#define ewram17800_2 (&gSharedMem[0x17800])
#define EWRAM_17800 ((struct UnknownStruct1 *)(gSharedMem + 0x17800))
#define eTransformStatuses ((struct TransformStatus *)(gSharedMem + 0x17800))
diff --git a/include/global.h b/include/global.h
index e5114c396..ed74fcf77 100644
--- a/include/global.h
+++ b/include/global.h
@@ -115,26 +115,31 @@ struct UCoords16
u16 y;
};
+struct SecretBaseParty
+{
+ /*0x1A3C*/ u32 personality[PARTY_SIZE];
+ /*0x1A54*/ u16 moves[PARTY_SIZE * 4];
+ /*0x1A84*/ u16 species[PARTY_SIZE];
+ /*0x1A90*/ u16 heldItems[PARTY_SIZE];
+ /*0x1A9C*/ u8 levels[PARTY_SIZE];
+ /*0x1AA2*/ u8 EVs[PARTY_SIZE];
+};
+
struct SecretBaseRecord
{
/*0x1A08*/ u8 secretBaseId;
- /*0x1A09*/ u8 sbr_field_1_0:4;
+ /*0x1A09*/ u8 toRegister:4;
/*0x1A09*/ u8 gender:1;
- /*0x1A09*/ u8 sbr_field_1_5:1;
- /*0x1A09*/ u8 sbr_field_1_6:2;
+ /*0x1A09*/ u8 battledOwnerToday:1;
+ /*0x1A09*/ u8 registryStatus:2;
/*0x1A0A*/ u8 playerName[OT_NAME_LENGTH];
/*0x1A11*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
- /*0x1A16*/ u16 sbr_field_e;
- /*0x1A18*/ u8 sbr_field_10;
- /*0x1A19*/ u8 sbr_field_11;
+ /*0x1A16*/ u16 numSecretBasesReceived;
+ /*0x1A18*/ u8 numTimesEntered;
+ /*0x1A19*/ u8 unused;
/*0x1A1A*/ u8 decorations[DECOR_MAX_SECRET_BASE];
/*0x1A2A*/ u8 decorationPos[DECOR_MAX_SECRET_BASE];
- /*0x1A3C*/ u32 partyPersonality[PARTY_SIZE];
- /*0x1A54*/ u16 partyMoves[PARTY_SIZE * 4];
- /*0x1A84*/ u16 partySpecies[PARTY_SIZE];
- /*0x1A90*/ u16 partyHeldItems[PARTY_SIZE];
- /*0x1A9C*/ u8 partyLevels[PARTY_SIZE];
- /*0x1AA2*/ u8 partyEVs[PARTY_SIZE];
+ /*0x1A3C*/ struct SecretBaseParty party;
};
#include "constants/game_stat.h"
diff --git a/include/party_menu.h b/include/party_menu.h
index 172435b2d..98ac0ddde 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -97,20 +97,6 @@ struct Unk2001000
u16 array[53561];
};
-struct UnknownPokemonStruct2
-{
- /*0x00*/ u16 species;
- /*0x02*/ u16 heldItem;
- /*0x04*/ u8 nickname[11];
- /*0x0F*/ u8 level;
- /*0x10*/ u16 hp;
- /*0x12*/ u16 maxhp;
- /*0x14*/ u32 status;
- /*0x18*/ u32 personality;
- /*0x1C*/ u8 gender;
- /*0x1D*/ u8 language;
-};
-
void CB2_PartyMenuMain(void);
void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed);
void SetPartyMenuSettings(u8 menuType, u8 battleTypeFlags, TaskFunc menuHandlerFunc, u8 textId);
@@ -151,7 +137,7 @@ void SetHeldItemIconVisibility(u8 a, u8 monIndex);
void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer);
void PrintPartyMenuMonNickname(u8 monIndex, u8 b, struct Pokemon *pokemon);
void PrintPartyMenuMonNicknames(void);
-void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct UnknownPokemonStruct2 *pokemon);
+void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct MultiBattlePokemonTx *pokemon);
u8 *GetMonNickname(struct Pokemon *pokemon, u8 *stringBuffer);
void PartyMenuPutStatusTilemap(u8 monIndex, u8 b, u8 status);
void PartyMenuDoPrintLevel(u8 monIndex, u8 b, u8 level);
diff --git a/include/pokemon.h b/include/pokemon.h
index d2ab1335c..57da75e16 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -193,6 +193,20 @@ struct UnknownPokemonStruct
/*0x2B*/u8 friendship;
};
+struct MultiBattlePokemonTx
+{
+ /*0x00*/ u16 species;
+ /*0x02*/ u16 heldItem;
+ /*0x04*/ u8 nickname[11];
+ /*0x0F*/ u8 level;
+ /*0x10*/ u16 hp;
+ /*0x12*/ u16 maxhp;
+ /*0x14*/ u32 status;
+ /*0x18*/ u32 personality;
+ /*0x1C*/ u8 gender;
+ /*0x1D*/ u8 language;
+};
+
#define BATTLE_STATS_NO 8
struct BattlePokemon