mirror of
https://github.com/pret/pokeruby.git
synced 2026-10-01 23:31:52 -04:00
Sync BattleStruct.multiBuffer from Em/FR
This commit is contained in:
+17
-8
@@ -281,13 +281,22 @@ 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];
|
||||
/*0x00000*/ union{
|
||||
struct LinkPartnerHeader linkPartnerHeader;
|
||||
struct MultiBattlePokemonTx multiBattleMons[3];
|
||||
} multiBuffer;
|
||||
u8 filler60[0x15D7E];
|
||||
/*0x15DDE*/ u8 unk15DDE;
|
||||
/*0x15DDF*/ u8 unk15DDF;
|
||||
/*0x15DE0*/ u8 filler15DE0[0x220];
|
||||
@@ -393,7 +402,7 @@ struct BattleStruct /* 0x2000000 */
|
||||
/*0x160C7*/ u8 unk160C7;
|
||||
/*0x160C8*/ u8 AI_monToSwitchIntoId[2];
|
||||
/*0x160CA*/ u8 synchroniseEffect;
|
||||
/*0x160CB*/ u8 linkPlayerIndex;
|
||||
/*0x160CB*/ u8 multiplayerId;
|
||||
/*0x160CC*/ u16 usedHeldItems[4];
|
||||
/*0x160D4*/ u8 unk160D4;
|
||||
/*0x160D5*/ u8 unk160D5;
|
||||
@@ -659,7 +668,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 +676,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);
|
||||
|
||||
+1
-15
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
+10
-10
@@ -416,7 +416,7 @@ static void sub_800DAF8(u8 taskId, u8 windowId, u8 *dest)
|
||||
}
|
||||
CpuSet(src, dest, 3);
|
||||
} else {
|
||||
if (windowId == gBattleStruct->linkPlayerIndex) {
|
||||
if (windowId == gBattleStruct->multiplayerId) {
|
||||
r4 = gTasks[taskId].data[3];
|
||||
} else {
|
||||
r4 = gTasks[taskId].data[4];
|
||||
@@ -468,7 +468,7 @@ static void PrintLinkBattleWinLossTie(void)
|
||||
{
|
||||
|
||||
// id = player position?
|
||||
switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].id)
|
||||
switch (gLinkPlayers[gBattleStruct->multiplayerId].id)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
@@ -486,7 +486,7 @@ static void PrintLinkBattleWinLossTie(void)
|
||||
else
|
||||
{
|
||||
|
||||
switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].id)
|
||||
switch (gLinkPlayers[gBattleStruct->multiplayerId].id)
|
||||
{
|
||||
case 1:
|
||||
case 3:
|
||||
@@ -508,7 +508,7 @@ static void PrintLinkBattleWinLossTie(void)
|
||||
|
||||
if (gBattleOutcome == 1)
|
||||
{
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id != 0)
|
||||
if (gLinkPlayers[gBattleStruct->multiplayerId].id != 0)
|
||||
{
|
||||
PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
|
||||
PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
|
||||
@@ -521,7 +521,7 @@ static void PrintLinkBattleWinLossTie(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id != 0)
|
||||
if (gLinkPlayers[gBattleStruct->multiplayerId].id != 0)
|
||||
{
|
||||
PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
|
||||
PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
|
||||
@@ -535,7 +535,7 @@ static void PrintLinkBattleWinLossTie(void)
|
||||
}
|
||||
|
||||
|
||||
void sub_800DE30(u8 taskId)
|
||||
void InitLinkBattleVsScreen(u8 taskId)
|
||||
{
|
||||
u8 palette;
|
||||
int i;
|
||||
@@ -559,11 +559,11 @@ void sub_800DE30(u8 taskId)
|
||||
} else {
|
||||
u8 windowId = 4;
|
||||
|
||||
u8 playerId = gBattleStruct->linkPlayerIndex;
|
||||
u8 opponentId = gBattleStruct->linkPlayerIndex ^ 1;
|
||||
u8 playerId = gBattleStruct->multiplayerId;
|
||||
u8 opponentId = gBattleStruct->multiplayerId ^ 1;
|
||||
if (gLinkPlayers[playerId].id) {
|
||||
opponentId = gBattleStruct->linkPlayerIndex;
|
||||
playerId = gBattleStruct->linkPlayerIndex ^ 1;
|
||||
opponentId = gBattleStruct->multiplayerId;
|
||||
playerId = gBattleStruct->multiplayerId ^ 1;
|
||||
}
|
||||
|
||||
Text_InitWindow8002E4C(
|
||||
|
||||
+35
-34
@@ -76,7 +76,7 @@ extern const u8 gUnknown_Debug_821F7F3[];
|
||||
extern const u8 BattleText_YesNo[];
|
||||
extern u8 gStatStageRatios[][2];
|
||||
extern u8 gActionsByTurnOrder[4];
|
||||
extern struct UnknownPokemonStruct2 gMultiPartnerParty[];
|
||||
extern struct MultiBattlePokemonTx gMultiPartnerParty[];
|
||||
extern u8 gBattleBufferB[][0x200];
|
||||
extern u8 gActiveBattler;
|
||||
extern u32 gBattleControllerExecFlags;
|
||||
@@ -283,7 +283,7 @@ void CB2_InitBattleInternal(void)
|
||||
SetVBlankCallback(sub_800FCFC);
|
||||
SetUpBattleVarsAndBirchPoochyena();
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
SetMainCallback2(sub_800F298);
|
||||
SetMainCallback2(CB2_HandleStartMultiBattle);
|
||||
else
|
||||
SetMainCallback2(CB2_HandleStartBattle);
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
@@ -301,7 +301,7 @@ void CB2_InitBattleInternal(void)
|
||||
gBattleCommunication[0] = 0;
|
||||
}
|
||||
|
||||
void sub_800E9EC(void)
|
||||
void BufferPartyVsScreenHealth_AtStart(void)
|
||||
{
|
||||
u16 r6 = 0;
|
||||
u16 species;
|
||||
@@ -330,21 +330,21 @@ void sub_800E9EC(void)
|
||||
if (species != SPECIES_EGG && hp == 0)
|
||||
r6 |= 3 << i * 2;
|
||||
}
|
||||
gBattleStruct->unk2 = r6;
|
||||
gBattleStruct->unk3 = r6 >> 8;
|
||||
gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsLo = r6;
|
||||
gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsHi = r6 >> 8;
|
||||
}
|
||||
|
||||
static void SetPlayerBerryDataInBattleStruct(void)
|
||||
{
|
||||
s32 i;
|
||||
struct UnknownStruct8 *_ewram4 = &ewram4;
|
||||
struct BattleEnigmaBerry * battleBerry = &gBattleStruct->multiBuffer.linkPartnerHeader.battleEnigmaBerry;
|
||||
|
||||
for (i = 0; i < 7; i++)
|
||||
_ewram4->unk0[i] = gSaveBlock1.enigmaBerry.berry.name[i];
|
||||
battleBerry->name[i] = gSaveBlock1.enigmaBerry.berry.name[i];
|
||||
for (i = 0; i < 18; i++)
|
||||
_ewram4->unk8[i] = gSaveBlock1.enigmaBerry.itemEffect[i];
|
||||
_ewram4->unk7 = gSaveBlock1.enigmaBerry.holdEffect;
|
||||
_ewram4->unk1A = gSaveBlock1.enigmaBerry.holdEffectParam;
|
||||
battleBerry->itemEffect[i] = gSaveBlock1.enigmaBerry.itemEffect[i];
|
||||
battleBerry->holdEffect = gSaveBlock1.enigmaBerry.holdEffect;
|
||||
battleBerry->holdEffectParam = gSaveBlock1.enigmaBerry.holdEffectParam;
|
||||
}
|
||||
|
||||
void SetAllPlayersBerryData(void)
|
||||
@@ -419,7 +419,7 @@ void CB2_HandleStartBattle(void)
|
||||
BuildOamBuffer();
|
||||
|
||||
playerId = GetMultiplayerId();
|
||||
ewram160CB = playerId;
|
||||
gBattleStruct->multiplayerId = playerId;
|
||||
enemyId = playerId ^ 1;
|
||||
|
||||
switch (gBattleCommunication[0])
|
||||
@@ -429,9 +429,9 @@ void CB2_HandleStartBattle(void)
|
||||
{
|
||||
if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
|
||||
{
|
||||
gBattleStruct->unk0 = 1;
|
||||
gBattleStruct->unk1 = 1;
|
||||
sub_800E9EC();
|
||||
gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureLo = 1;
|
||||
gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureHi = 1;
|
||||
BufferPartyVsScreenHealth_AtStart();
|
||||
SetPlayerBerryDataInBattleStruct();
|
||||
#if DEBUG
|
||||
if (gUnknown_02023A14_50 & 8)
|
||||
@@ -443,7 +443,7 @@ void CB2_HandleStartBattle(void)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
SendBlock(bitmask_all_link_players_but_self(), gBattleStruct, 32);
|
||||
SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkPartnerHeader, sizeof(gBattleStruct->multiBuffer.linkPartnerHeader));
|
||||
gBattleCommunication[0] = 1;
|
||||
}
|
||||
}
|
||||
@@ -494,11 +494,11 @@ void CB2_HandleStartBattle(void)
|
||||
}
|
||||
}
|
||||
SetAllPlayersBerryData();
|
||||
taskId = CreateTask(sub_800DE30, 0);
|
||||
taskId = CreateTask(InitLinkBattleVsScreen, 0);
|
||||
gTasks[taskId].data[1] = 0x10E;
|
||||
gTasks[taskId].data[2] = 0x5A;
|
||||
gTasks[taskId].data[5] = 0;
|
||||
gTasks[taskId].data[3] = gBattleStruct->unk2 | (gBattleStruct->unk3 << 8);
|
||||
gTasks[taskId].data[3] = gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsLo | (gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsHi << 8);
|
||||
gTasks[taskId].data[4] = gBlockRecvBuffer[enemyId][1];
|
||||
gBattleCommunication[0]++;
|
||||
}
|
||||
@@ -576,7 +576,7 @@ void CB2_HandleStartBattle(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800F02C(void)
|
||||
void PrepareOwnMultiPartnerBuffer(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@@ -598,7 +598,7 @@ void sub_800F02C(void)
|
||||
if (gMultiPartnerParty[i].language != 1)
|
||||
PadNameString(nickname, 0);
|
||||
}
|
||||
memcpy(gSharedMem, gMultiPartnerParty, 0x60);
|
||||
memcpy(gBattleStruct->multiBuffer.multiBattleMons, gMultiPartnerParty, 3 * sizeof(struct MultiBattlePokemonTx));
|
||||
}
|
||||
|
||||
void sub_800F104(void)
|
||||
@@ -609,7 +609,7 @@ void sub_800F104(void)
|
||||
s32 i;
|
||||
|
||||
playerId = GetMultiplayerId();
|
||||
ewram160CB = playerId;
|
||||
gBattleStruct->multiplayerId = playerId;
|
||||
// Seriously, Game Freak?
|
||||
pSavedCallback = ewram160C4_Callback;
|
||||
pSavedBattleTypeFlags = ewram160C2_Flags;
|
||||
@@ -634,8 +634,8 @@ void sub_800F104(void)
|
||||
#endif
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
sub_800F02C();
|
||||
SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60);
|
||||
PrepareOwnMultiPartnerBuffer();
|
||||
SendBlock(bitmask_all_link_players_but_self(), gBattleStruct->multiBuffer.multiBattleMons, 3 * sizeof(struct MultiBattlePokemonTx));
|
||||
gBattleCommunication[0]++;
|
||||
}
|
||||
}
|
||||
@@ -652,7 +652,7 @@ void sub_800F104(void)
|
||||
{
|
||||
if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[playerId].id & 1))
|
||||
|| ((gLinkPlayers[i].id & 1) && (gLinkPlayers[playerId].id & 1)))
|
||||
memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], 0x60);
|
||||
memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], 3 * sizeof(struct MultiBattlePokemonTx));
|
||||
}
|
||||
}
|
||||
gBattleCommunication[0]++;
|
||||
@@ -680,13 +680,13 @@ void sub_800F104(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800F298(void)
|
||||
void CB2_HandleStartMultiBattle(void)
|
||||
{
|
||||
u8 playerId;
|
||||
s32 id;
|
||||
|
||||
playerId = GetMultiplayerId();
|
||||
ewram160CB = playerId;
|
||||
gBattleStruct->multiplayerId = playerId;
|
||||
RunTasks();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
@@ -707,11 +707,11 @@ void sub_800F298(void)
|
||||
#endif
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
gBattleStruct->unk0 = 1;
|
||||
gBattleStruct->unk1 = 1;
|
||||
sub_800E9EC();
|
||||
*(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureLo) = 1;
|
||||
*(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureHi) = 1;
|
||||
BufferPartyVsScreenHealth_AtStart();
|
||||
SetPlayerBerryDataInBattleStruct();
|
||||
SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20);
|
||||
SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkPartnerHeader, sizeof(gBattleStruct->multiBuffer.linkPartnerHeader));
|
||||
gBattleCommunication[0]++;
|
||||
}
|
||||
}
|
||||
@@ -722,6 +722,7 @@ void sub_800F298(void)
|
||||
u8 taskId;
|
||||
|
||||
ResetBlockReceivedFlags();
|
||||
// LinkBattleComputeBattleTypeFlags
|
||||
id = 0;
|
||||
if (gBlockRecvBuffer[0][0] == 0x100)
|
||||
{
|
||||
@@ -767,9 +768,9 @@ void sub_800F298(void)
|
||||
}
|
||||
SetAllPlayersBerryData();
|
||||
memcpy(ewram1D000, gPlayerParty, sizeof(struct Pokemon) * 3);
|
||||
taskId = CreateTask(sub_800DE30, 0);
|
||||
gTasks[taskId].data[1] = 0x10E;
|
||||
gTasks[taskId].data[2] = 0x5A;
|
||||
taskId = CreateTask(InitLinkBattleVsScreen, 0);
|
||||
gTasks[taskId].data[1] = 270;
|
||||
gTasks[taskId].data[2] = 90;
|
||||
gTasks[taskId].data[5] = 0;
|
||||
gTasks[taskId].data[3] = 0;
|
||||
gTasks[taskId].data[4] = 0;
|
||||
@@ -1195,7 +1196,7 @@ void sub_800FE40(u8 taskId)
|
||||
{
|
||||
struct Pokemon *sp4 = NULL;
|
||||
struct Pokemon *sp8 = NULL;
|
||||
u8 r2 = ewram160CB;
|
||||
u8 r2 = gBattleStruct->multiplayerId;
|
||||
u32 r7;
|
||||
s32 i;
|
||||
|
||||
@@ -1321,7 +1322,7 @@ void c2_8011A1C(void)
|
||||
FreeAllSpritePalettes();
|
||||
gReservedSpritePaletteCount = 4;
|
||||
SetVBlankCallback(sub_800FCFC);
|
||||
taskId = CreateTask(sub_800DE30, 0);
|
||||
taskId = CreateTask(InitLinkBattleVsScreen, 0);
|
||||
gTasks[taskId].data[1] = 0x10E;
|
||||
gTasks[taskId].data[2] = 0x5A;
|
||||
gTasks[taskId].data[5] = 1;
|
||||
|
||||
@@ -658,7 +658,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
|
||||
{
|
||||
if (gLastUsedItem == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id == gPotentialItemEffectBattler)
|
||||
if (gLinkPlayers[gBattleStruct->multiplayerId].id == gPotentialItemEffectBattler)
|
||||
{
|
||||
StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name);
|
||||
#ifdef ENGLISH
|
||||
@@ -949,7 +949,7 @@ void ExpandBattleTextBuffPlaceholders(u8* src, u8* dst)
|
||||
{
|
||||
if (hword == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id == gPotentialItemEffectBattler)
|
||||
if (gLinkPlayers[gBattleStruct->multiplayerId].id == gPotentialItemEffectBattler)
|
||||
{
|
||||
StringCopy(dst, gEnigmaBerries[gPotentialItemEffectBattler].name);
|
||||
#ifdef ENGLISH
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
extern u8 gPlayerPartyCount;
|
||||
extern u8 gLastFieldPokeMenuOpened;
|
||||
extern u8 gUnknown_020384F0;
|
||||
extern struct UnknownPokemonStruct2 gMultiPartnerParty[3];
|
||||
extern struct MultiBattlePokemonTx gMultiPartnerParty[3];
|
||||
extern u8 gUnknown_0202E8F6;
|
||||
extern const u16 gBattleTowerBannedSpecies[];
|
||||
|
||||
|
||||
+1
-1
@@ -2828,7 +2828,7 @@ void unref_sub_806D964(u8 taskId)
|
||||
TryCreatePartyMenuMonIcon(taskId, i, &gPlayerParty[i]);
|
||||
}
|
||||
|
||||
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 x = gUnknown_08376678[menuType][monIndex].x;
|
||||
u8 y = gUnknown_08376678[menuType][monIndex].y;
|
||||
|
||||
Reference in New Issue
Block a user