diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/battle.h | 118 | ||||
-rw-r--r-- | include/ewram.h | 69 | ||||
-rw-r--r-- | include/global.h | 29 | ||||
-rw-r--r-- | include/party_menu.h | 16 | ||||
-rw-r--r-- | include/pokemon.h | 14 |
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 |