more documentation

This commit is contained in:
DizzyEggg 2025-02-24 11:20:40 +01:00
parent f184a6750d
commit 040c4a486e
41 changed files with 687 additions and 370 deletions

View File

@ -866,7 +866,7 @@ _08023F02:
lsls r2, 2
adds r0, r2
adds r1, r7, 0
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
mov r4, r8
ldr r0, [r4]

View File

@ -354,7 +354,7 @@ _0803B2DC:
ldr r1, _0803B340
adds r4, r1
adds r1, r5, 0
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r2, [r4, 0x4]
ldr r0, [r6]

View File

@ -3496,7 +3496,7 @@ _0806361E:
bl BufferMoveName
ldr r0, _08063690
mov r1, r9
bl sub_8013800
bl GetMenuEntryYCoord
adds r4, r0, 0
ldrb r1, [r7]
movs r0, 0x2
@ -7171,7 +7171,7 @@ _080652D2:
bl PrintFormattedStringOnWindow
adds r0, r4, 0
movs r1, 0
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _080653E0
ldr r2, [r0]
@ -7181,7 +7181,7 @@ _080652D2:
bl PrintFormattedStringOnWindow
adds r0, r4, 0
movs r1, 0x1
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _080653E4
ldr r2, [r0]
@ -7191,7 +7191,7 @@ _080652D2:
bl PrintFormattedStringOnWindow
adds r0, r4, 0
movs r1, 0x2
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _080653E8
ldr r2, [r0]
@ -7202,7 +7202,7 @@ _080652D2:
movs r5, 0x4
adds r0, r4, 0
movs r1, 0x3
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _080653EC
ldr r2, [r0]
@ -7225,7 +7225,7 @@ _080652D2:
movs r5, 0x5
adds r0, r4, 0
movs r1, 0x4
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _080653F0
ldr r2, [r0]
@ -7248,7 +7248,7 @@ _080653F4:
movs r5, 0x5
adds r0, r4, 0
movs r1, 0x4
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _08065440
ldr r2, [r0]
@ -7259,7 +7259,7 @@ _080653F4:
_0806540E:
ldr r0, _08065444
adds r1, r5, 0
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _08065448
ldr r2, [r0]
@ -7381,7 +7381,7 @@ sub_806544C:
bl PrintFormattedStringOnWindow
adds r0, r4, 0
movs r1, 0
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r6, _08065570
movs r2, 0xAC
@ -7394,7 +7394,7 @@ sub_806544C:
bl PrintFormattedStringOnWindow
adds r0, r4, 0
movs r1, 0x1
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
movs r2, 0xB8
lsls r2, 1
@ -7512,15 +7512,15 @@ CreateFieldGameOptionsMenu:
bl sub_80137B0
adds r0, r4, 0
movs r1, 0
bl sub_8013800
bl GetMenuEntryYCoord
str r0, [sp, 0x4]
adds r0, r4, 0
movs r1, 0x1
bl sub_8013800
bl GetMenuEntryYCoord
str r0, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x2
bl sub_8013800
bl GetMenuEntryYCoord
str r0, [sp, 0xC]
movs r0, 0
bl sub_80073B8
@ -7666,23 +7666,23 @@ CreateFieldDungeonMenu:
bl sub_80137B0
adds r0, r4, 0
movs r1, 0
bl sub_8013800
bl GetMenuEntryYCoord
str r0, [sp, 0x4]
adds r0, r4, 0
movs r1, 0x1
bl sub_8013800
bl GetMenuEntryYCoord
str r0, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x2
bl sub_8013800
bl GetMenuEntryYCoord
str r0, [sp, 0xC]
adds r0, r4, 0
movs r1, 0x3
bl sub_8013800
bl GetMenuEntryYCoord
str r0, [sp, 0x10]
adds r0, r4, 0
movs r1, 0x4
bl sub_8013800
bl GetMenuEntryYCoord
str r0, [sp, 0x14]
movs r0, 0
bl sub_80073B8
@ -7961,7 +7961,7 @@ CreateFieldOthersMenu:
_08065A0A:
ldr r0, _08065A7C
adds r1, r4, 0
bl sub_8013800
bl GetMenuEntryYCoord
stm r5!, {r0}
adds r4, 0x1
cmp r4, 0
@ -8418,7 +8418,7 @@ sub_8065CAC:
_08065D7A:
ldr r0, _08065DB0
adds r1, r4, 0
bl sub_8013800
bl GetMenuEntryYCoord
adds r1, r0, 0
ldm r5!, {r2}
movs r0, 0

View File

@ -526,7 +526,7 @@ _08068D1C:
add r1, sp, 0x214
movs r2, 0
movs r3, 0
bl sub_8092638
bl GetFriendAreaCapacity2
movs r7, 0
add r1, sp, 0x1F0
ldrh r0, [r1]

View File

@ -720,7 +720,7 @@ _080A7D12:
mov r1, sp
movs r2, 0
movs r3, 0
bl sub_8092638
bl GetFriendAreaCapacity2
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
@ -923,7 +923,7 @@ _080A7EB8:
mov r1, sp
movs r2, 0
movs r3, 0
bl sub_8092638
bl GetFriendAreaCapacity2
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
@ -2965,7 +2965,7 @@ _080A8DF8:
adds r1, r4, 0
movs r2, 0
movs r3, 0
bl sub_8092638
bl GetFriendAreaCapacity2
movs r1, 0
ldrsh r0, [r4, r1]
cmp r5, r0

View File

@ -10,13 +10,13 @@ typedef struct FriendAreaSettings
} FriendAreaSettings;
// size: 0xC
typedef struct unkStruct_8092638
{
/* 0x0 */ s16 numPokemon;
s16 unk2;
typedef struct FriendAreaCapacity
{
/* 0x0 */ s16 maxPokemon;
/* 0x2 */ s16 currNoPokemon;
/* 0x4 */ bool8 hasFriendArea;
s32 unk8;
} unkStruct_8092638;
} FriendAreaCapacity;
extern bool8 *gFriendAreas;
@ -38,7 +38,7 @@ void sub_8092404(u8, u16 *, bool8, bool8);
void sub_809249C(u8 friendArea, bool8 clear);
void sub_8092558(u8 *buffer, u8 index);
void WriteFriendAreaName(u8 *buffer, u8 index, bool8 printPrice);
void sub_8092638(u8 friendArea, unkStruct_8092638 *, bool8 checkLeader, bool8 checkDungeon);
void sub_80926F8(u8, unkStruct_8092638 *, u8);
void GetFriendAreaCapacity2(u8 friendArea, FriendAreaCapacity *dst, bool8 checkLeader, bool8 checkPartner);
void GetFriendAreaCapacity(u8 areaId, FriendAreaCapacity *dst, bool8 checkPartner);
#endif // GUARD_FRIEND_AREA_H
#endif // GUARD_FRIEND_AREA_H

View File

@ -25,7 +25,42 @@ struct MapLocation
axdata sprite;
};
#define NUM_FRIEND_AREA_LOCATIONS 32
enum FriendAreaLocations
{
LOCATION_MOUNTAIN_RANGE,
LOCATION_GLACIER,
LOCATION_PLAINS,
LOCATION_SOUTH_PLAINS,
LOCATION_BADLANDS,
LOCATION_EASTERN_FOREST,
LOCATION_WESTERN_FOREST,
LOCATION_RIVER,
LOCATION_EASTERN_PONDS,
LOCATION_POND,
LOCATION_NORTHERN_LAKES,
LOCATION_EASTERN_LAKES,
LOCATION_MARSH,
LOCATION_CAVE,
LOCATION_JUNGLE,
LOCATION_RUINS,
LOCATION_VOLCANO,
LOCATION_DESERT,
LOCATION_RELICS,
LOCATION_SKY,
LOCATION_NORTHERN_ISLES,
LOCATION_SOUTHERN_ISLES,
LOCATION_SOUTHWEST_ISLES,
LOCATION_WESTERN_ISLES,
LOCATION_NORTHERN_SEA,
LOCATION_SOUTHERN_SEA,
LOCATION_BEACH,
LOCATION_TEAM_BASE,
LOCATION_UNUSED_28,
LOCATION_UNUSED_29,
LOCATION_UNUSED_30,
LOCATION_UNUSED_31,
NUM_FRIEND_AREA_LOCATIONS
};
// size: 0x4DD8
struct FriendAreasMap
@ -65,7 +100,7 @@ struct struct_unk800F990
u32 unk0;
u8 startingFriendAreaId;
u8 unk5;
struct FriendAreasMap *unk8;
struct FriendAreasMap *friendAreasMapPtr;
u8 unkC;
};

View File

@ -31,7 +31,7 @@ void sub_8013780(MenuInputStruct *param_1, s32 param_2);
s32 sub_80137A8(MenuInputStruct *param_1);
void sub_80137B0(MenuInputStruct *param_1, s32 param_2);
void sub_80137F8(MenuInputStruct *param_1, u32 param_2);
s32 sub_8013800(MenuInputStruct *param_1, s32 param_2);
s32 GetMenuEntryYCoord(MenuInputStruct *menu, s32 entryId);
void sub_8013818(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4);
void sub_8013848(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4);
void sub_8013878(MenuInputStruct *param_1, s32 param_2);

View File

@ -24,7 +24,7 @@ typedef struct MenuInputStruct
{
s32 unk0;
u16 unk4;
s16 unk6;
s16 firstEntryY;
DungeonPos unk8;
s16 unkC; // Maybe DungeonPos
s16 unkE;

View File

@ -107,31 +107,31 @@ static void DisplayAdventureLog(void)
case AA_NUM_FLOORS_EXPLORED: {
s32 v1 = GetAdventureFloorsExplored();
gFormatArgs[0] = (s16)v1;
PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
break;
}
case AA_NUM_MOVES_LEARNED: {
s32 v2 = GetAdventureMovesLearned();
gFormatArgs[0] = (s16)v2;
PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
break;
}
case AA_NUM_THIEVING_SUCCESSES: {
s32 v3 = GetThievingSuccesses();
gFormatArgs[0] = (s16)v3;
PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
break;
}
case AA_NUM_FRIEND_RESCUE_SUCCESSES: {
s32 v4 = GetFriendRescueSuccesses();
gFormatArgs[0] = v4;
PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
break;
}
case AA_NUM_POKEMON_EVOLVED: {
s32 v5 = GetAdventureNumEvolved();
gFormatArgs[0] = v5;
PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
break;
}
case AA_NUM_POKEMON_JOINED: {
@ -140,13 +140,13 @@ static void DisplayAdventureLog(void)
// fallthrough
}
default: {
PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0);
break;
}
}
}
else
PrintStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), sPlaceholder, sAdventureLog->s0.unk34, 0);
PrintStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), sPlaceholder, sAdventureLog->s0.unk34, 0);
}
sub_80073E0(sAdventureLog->s0.unk34);

View File

@ -161,13 +161,13 @@ void sub_801CCD8(void)
for(index = 0; index < sUnknown_203B244->unk4B4.s0.input.unk1A; index++) {
itemID = sUnknown_203B244->itemIDs[(sUnknown_203B244->unk4B4.s0.input.unk1E * sUnknown_203B244->unk4B4.s0.input.unk1C) + index];
BufferItemName(buffer, itemID, NULL);
y = sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index);
y = GetMenuEntryYCoord(&sUnknown_203B244->unk4B4.s0.input, index);
PrintStringOnWindow(8, y, buffer, sUnknown_203B244->unk4B4.s0.unk34, 0);
y2 = sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index);
y2 = GetMenuEntryYCoord(&sUnknown_203B244->unk4B4.s0.input, index);
sub_8012BC4((sUnknown_203B244->unk4B4.s0.unk38->width * 8) - 2, y2, gTeamInventoryRef->teamStorage[itemID], 3, 5, sUnknown_203B244->unk4B4.s0.unk34);
if (sub_801CFE0(itemID) & 1)
sub_8007B7C(sUnknown_203B244->unk4B4.s0.unk34, 8, sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index), (sUnknown_203B244->unk4B4.s0.unk38->width - 1) * '\b', 10); // TODO: Ghidra being crazy
sub_8007B7C(sUnknown_203B244->unk4B4.s0.unk34, 8, GetMenuEntryYCoord(&sUnknown_203B244->unk4B4.s0.input, index), (sUnknown_203B244->unk4B4.s0.unk38->width - 1) * '\b', 10); // TODO: Ghidra being crazy
}
sub_80073E0(sUnknown_203B244->unk4B4.s0.unk34);

View File

@ -125,10 +125,10 @@ static void sub_801DBD4(void)
temp = &gGroundConversion_811BAF4[index];
temp2 = &gUnknown_81188F0[temp->unk4];
y = sub_8013800(&sUnknown_203B258->s0.input, counter);
y = GetMenuEntryYCoord(&sUnknown_203B258->s0.input, counter);
PrintStringOnWindow(8, y, temp2->text1, sUnknown_203B258->s0.unk34, 0);
y = sub_8013800(&sUnknown_203B258->s0.input, counter);
y = GetMenuEntryYCoord(&sUnknown_203B258->s0.input, counter);
PrintStringOnWindow(62, y, temp->text, sUnknown_203B258->s0.unk34, 0);
}

View File

@ -316,7 +316,7 @@ void sub_801F280(bool8 param_1)
}
sub_80928A0(gFormatBuffer_Items[0],move,&uStack_30);
y = sub_8013800(&gUnknown_203B270->input,i);
y = GetMenuEntryYCoord(&gUnknown_203B270->input,i);
linkChain = MoveFlagLinkChain(move);
x = !linkChain ? 0x8 : 0xD;
if (!linkChain && i != 0) {

View File

@ -147,7 +147,7 @@ void sub_801F700(void)
for(index = 0; index < gUnknown_203B274->s348.s0.input.unk1A; index++)
{
sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->s348.s0.input.unk1E * gUnknown_203B274->s348.s0.input.unk1C + index]);
y = sub_8013800(&gUnknown_203B274->s348.s0.input, index);
y = GetMenuEntryYCoord(&gUnknown_203B274->s348.s0.input, index);
PrintStringOnWindow(8,y,buffer2,gUnknown_203B274->s348.s0.unk34,0);
}
sub_80073E0(gUnknown_203B274->s348.s0.unk34);

View File

@ -156,7 +156,7 @@ static void sub_80234BC(void)
s32 i;
u8 buffer2[256];
u8 buffer1[100];
unkStruct_8092638 auStack_2c;
FriendAreaCapacity auStack_2c;
CallPrepareTextbox_8008C54(gUnknown_3001B5C->s35C.s0.unk34);
sub_80073B8(gUnknown_3001B5C->s35C.s0.unk34);
@ -165,9 +165,9 @@ static void sub_80234BC(void)
sub_8012BC4((gUnknown_3001B5C->s35C.unk9C.f2 * 8) + 4, 0, gUnknown_3001B5C->s35C.s0.input.unk1E + 1, 2, 7, gUnknown_3001B5C->s35C.s0.unk34);
for (i = 0; i < gUnknown_3001B5C->s35C.s0.input.unk1A; i++) {
y = sub_8013800(&gUnknown_3001B5C->s35C.s0.input, i);
y = GetMenuEntryYCoord(&gUnknown_3001B5C->s35C.s0.input, i);
species = gUnknown_3001B5C->unkC[(gUnknown_3001B5C->s35C.s0.input.unk1E * gUnknown_3001B5C->s35C.s0.input.unk1C) + i];
sub_8092638(GetFriendArea(species), &auStack_2c, FALSE, FALSE);
GetFriendAreaCapacity2(GetFriendArea(species), &auStack_2c, FALSE, FALSE);
color = COLOR_WHITE_2;
if (auStack_2c.hasFriendArea)
color = HasRecruitedMon(species) ? COLOR_CYAN : COLOR_GREEN;

View File

@ -1561,7 +1561,7 @@ void DrawFieldMenu(u8 a0)
gUnknown_202EE10.unk1C = 5;
gUnknown_202EE10.unk1E = 0;
gUnknown_202EE10.unk4 = 0;
gUnknown_202EE10.unk6 = 2;
gUnknown_202EE10.firstEntryY = 2;
gUnknown_202EE10.unkC = 0;
gUnknown_202EE10.unkE = 0;
gUnknown_202EE10.unk0 = 0;
@ -1592,19 +1592,19 @@ void DrawFieldMenu(u8 a0)
gUnknown_202749A[5] = 7;
}
y = sub_8013800(&gUnknown_202EE10, 0);
y = GetMenuEntryYCoord(&gUnknown_202EE10, 0);
PrintStringOnWindow(8, y, gFieldMenuMovesPtr, 0, 0);
y = sub_8013800(&gUnknown_202EE10, 1);
y = GetMenuEntryYCoord(&gUnknown_202EE10, 1);
PrintStringOnWindow(8, y, gFieldMenuItemsPtr, 0, 0);
y = sub_8013800(&gUnknown_202EE10, 2);
y = GetMenuEntryYCoord(&gUnknown_202EE10, 2);
PrintStringOnWindow(8, y, gFieldMenuTeamPtr, 0, 0);
y = sub_8013800(&gUnknown_202EE10, 3);
y = GetMenuEntryYCoord(&gUnknown_202EE10, 3);
PrintStringOnWindow(8, y, gFieldMenuOthersPtr, 0, 0);
y = sub_8013800(&gUnknown_202EE10, 4);
y = GetMenuEntryYCoord(&gUnknown_202EE10, 4);
PrintStringOnWindow(8, y, gFieldMenuGroundPtr, 0, 0);
sub_80073E0(0);
@ -1708,7 +1708,7 @@ void sub_805FC30(Windows *a0, s32 a1)
gUnknown_202EE10.unk1E = 0;
gUnknown_202EE10.unk20 = 0;
gUnknown_202EE10.unk4 = 0;
gUnknown_202EE10.unk6 = 0;
gUnknown_202EE10.firstEntryY = 0;
gUnknown_202EE10.unk0 = 1;
gUnknown_202EE10.unkC = 0;
gUnknown_202EE10.unkE = 0;
@ -1729,7 +1729,7 @@ void sub_805FC30(Windows *a0, s32 a1)
r4 = (sub_8044F3C(i) != 0) ? 7 : 2;
sprintfStatic(text, gUnknown_8106B50, r4, sub_8044EC8(i));
y = sub_8013800(&gUnknown_202EE10, i);
y = GetMenuEntryYCoord(&gUnknown_202EE10, i);
PrintStringOnWindow(8, y, text, 1, 0);
}
sub_80073E0(1);
@ -2066,7 +2066,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows
windows->id[0].unk10 = 0x10;
windows->id[0].height = 0x10;
a5->f2 = 0xC;
gUnknown_202EE10.unk6 = 0x10;
gUnknown_202EE10.firstEntryY = 0x10;
gUnknown_202EE10.unk1C = 0xA;
gDungeon->unk181e8.unk18212 = 1;
break;
@ -2074,7 +2074,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows
windows->id[0].unk10 = 4;
windows->id[0].height = 4;
a5->f2 = 6;
gUnknown_202EE10.unk6 = 0x12;
gUnknown_202EE10.firstEntryY = 0x12;
gUnknown_202EE10.unk1C = 1;
break;
case 3:
@ -2082,7 +2082,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows
windows->id[0].unk10 = 4;
windows->id[0].height = 4;
a5->f2 = 0xC;
gUnknown_202EE10.unk6 = 0x12;
gUnknown_202EE10.firstEntryY = 0x12;
gUnknown_202EE10.unk1C = 1;
break;
}
@ -2112,7 +2112,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows
if (ItemExists(&gTeamInventoryRef->teamItems[i])) {
gUnknown_202EE10.unk1A++;
sub_8090E14(txtBuff, &gTeamInventoryRef->teamItems[i], &gUnknown_8106B60);
y = sub_8013800(&gUnknown_202EE10, i);
y = GetMenuEntryYCoord(&gUnknown_202EE10, i);
PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0);
}
else {
@ -2126,7 +2126,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows
if (ItemExists(&gTeamInventoryRef->teamItems[i + 10])) {
gUnknown_202EE10.unk1A++;
sub_8090E14(txtBuff, &gTeamInventoryRef->teamItems[i + 10], &gUnknown_8106B60);
y = sub_8013800(&gUnknown_202EE10, i);
y = GetMenuEntryYCoord(&gUnknown_202EE10, i);
PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0);
}
else {
@ -2141,7 +2141,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows
if (item->flags & ITEM_FLAG_EXISTS) {
gUnknown_202EE10.unk1A++;
sub_8090E14(txtBuff, item, &gUnknown_8106B60);
y = sub_8013800(&gUnknown_202EE10, 0);
y = GetMenuEntryYCoord(&gUnknown_202EE10, 0);
PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0);
}
if (a3) {
@ -2156,7 +2156,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows
if (item->flags & ITEM_FLAG_EXISTS) {
gUnknown_202EE10.unk1A++;
sub_8090E14(txtBuff, item, &gUnknown_8106B60);
y = sub_8013800(&gUnknown_202EE10, 0);
y = GetMenuEntryYCoord(&gUnknown_202EE10, 0);
PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0);
}
}
@ -2171,7 +2171,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows
if (item->flags & ITEM_FLAG_EXISTS) {
gUnknown_202EE10.unk1A++;
sub_8090E14(txtBuff, item, &gUnknown_8106B60);
y = sub_8013800(&gUnknown_202EE10, 0);
y = GetMenuEntryYCoord(&gUnknown_202EE10, 0);
PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0);
}
}
@ -2723,7 +2723,7 @@ void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, Windows *windows, bool
gUnknown_202EE10.unk1E = 0;
gUnknown_202EE10.unk20 = 0;
gUnknown_202EE10.unk4 = 0;
gUnknown_202EE10.unk6 = (r10 != FALSE) * 16;
gUnknown_202EE10.firstEntryY = (r10 != FALSE) * 16;
gUnknown_202EE10.unkC = 0;
gUnknown_202EE10.unkE = 0;
gUnknown_202EE10.unk14.x = 0;
@ -2790,7 +2790,7 @@ void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, Windows *windows, bool
gFormatArgs[0] = monInfo->HP;
gFormatArgs[1] = monInfo->maxHPStat;
y = sub_8013800(&gUnknown_202EE10, i);
y = GetMenuEntryYCoord(&gUnknown_202EE10, i);
if (monInfo->isTeamLeader) {
PrintFormattedStringOnWindow(9, y, gUnknown_8106BD4, 0, 0);
}
@ -2922,7 +2922,7 @@ void ShowTacticsMenu(ActionContainer *a0)
gUnknown_202EE10.unk1E = 0;
gUnknown_202EE10.unk20 = 0;
gUnknown_202EE10.unk4 = 0;
gUnknown_202EE10.unk6 = 16;
gUnknown_202EE10.firstEntryY = 16;
gUnknown_202EE10.unkC = 0;
gUnknown_202EE10.unkE = 0;
gUnknown_202EE10.unk14.x = 0;

View File

@ -994,7 +994,7 @@ void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3)
gUnknown_202EE10.unk1E = 0;
gUnknown_202EE10.unk20 = 0;
gUnknown_202EE10.unk4 = 0;
gUnknown_202EE10.unk6 = 18;
gUnknown_202EE10.firstEntryY = 18;
gUnknown_202EE10.unkC = 0;
gUnknown_202EE10.unkE = 0;
gUnknown_202EE10.unk14.x = 0;
@ -1292,7 +1292,7 @@ void sub_806806C(PokemonStruct1 *a0)
gUnknown_202EE10.menuIndex = 0;
gUnknown_202EE10.unk1C = 0;
gUnknown_202EE10.unk4 = 0;
gUnknown_202EE10.unk6 = 16;
gUnknown_202EE10.firstEntryY = 16;
gUnknown_202EE10.unk14.x = 0;
gUnknown_202EE10.unk0 = 0;

View File

@ -329,7 +329,7 @@ bool8 sub_806F9BC(s16 species)
{
u8 friendArea;
s32 id;
unkStruct_8092638 auStack_18;
FriendAreaCapacity auStack_18;
id = species;
if (((gDungeon->unk644.unk14 == 0) || (sub_808529C(id) == 0)) ||
@ -359,7 +359,7 @@ bool8 sub_806F9BC(s16 species)
else {
if (GetUnk12(id) == 0) {
friendArea = GetFriendArea(id);
sub_8092638(friendArea, &auStack_18, FALSE, FALSE);
GetFriendAreaCapacity2(friendArea, &auStack_18, FALSE, FALSE);
if (auStack_18.hasFriendArea == FALSE)
return FALSE;
}

View File

@ -203,7 +203,7 @@ void sub_802FA50(void)
if (gUnknown_203B314->unkB8 != 0) {
for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++)
{
y = sub_8013800(&gUnknown_203B314->sBC.s0.input,counter);
y = GetMenuEntryYCoord(&gUnknown_203B314->sBC.s0.input,counter);
index = gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter;
sVar1 = gUnknown_203B314->unk0[index];
if (gUnknown_203B314->unk5C[index] != 0) {
@ -218,7 +218,7 @@ void sub_802FA50(void)
else {
for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++)
{
y2 = sub_8013800(&gUnknown_203B314->sBC.s0.input,counter);
y2 = GetMenuEntryYCoord(&gUnknown_203B314->sBC.s0.input,counter);
text = sub_80974A0(gUnknown_203B314->unk0[gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter]);
PrintStringOnWindow(8,y2,text,gUnknown_203B314->sBC.s0.unk34,0);
}

View File

@ -155,7 +155,7 @@ bool8 HasAllFriendAreas(void)
return TRUE;
}
void sub_8092638(u8 friendArea, unkStruct_8092638 *param_2, bool8 checkLeader, bool8 checkDungeon)
void GetFriendAreaCapacity2(u8 friendArea, FriendAreaCapacity *dst, bool8 checkLeader, bool8 checkPartner)
{
PokemonStruct1 *pokeStruct;
s32 i;
@ -166,30 +166,30 @@ void sub_8092638(u8 friendArea, unkStruct_8092638 *param_2, bool8 checkLeader, b
for (i = 0; i < friendArea; i++)
iVar4 += sFriendAreaSettings[i].num_pokemon;
param_2->unk8 = iVar4;
param_2->hasFriendArea = gFriendAreas[i];
dst->unk8 = iVar4;
dst->hasFriendArea = gFriendAreas[i];
if (param_2->hasFriendArea) {
param_2->unk2 = 0;
param_2->numPokemon = sFriendAreaSettings[i].num_pokemon;
if (dst->hasFriendArea) {
dst->currNoPokemon = 0;
dst->maxPokemon = sFriendAreaSettings[i].num_pokemon;
for (i = 0; i < param_2->numPokemon; i++, iVar4++) {
for (i = 0; i < dst->maxPokemon; i++, iVar4++) {
pokeStruct = &gRecruitedPokemonRef->pokemon[iVar4];
if (PokemonFlag1(pokeStruct) &&
(!checkLeader || !IsMonTeamLeader(pokeStruct)) &&
(!checkDungeon || pokeStruct->dungeonLocation.id != DUNGEON_JOIN_LOCATION_PARTNER)) {
param_2->unk2++;
(!checkPartner || pokeStruct->dungeonLocation.id != DUNGEON_JOIN_LOCATION_PARTNER)) {
dst->currNoPokemon++;
}
}
}
else {
param_2->unk2 = 0;
param_2->numPokemon = 0;
dst->currNoPokemon = 0;
dst->maxPokemon = 0;
}
}
void sub_80926F8(u8 a0, unkStruct_8092638 *a1, u8 a2)
void GetFriendAreaCapacity(u8 areaId, FriendAreaCapacity *dst, bool8 checkPartner)
{
PokemonStruct1 *mon;
s32 r5;
@ -198,30 +198,30 @@ void sub_80926F8(u8 a0, unkStruct_8092638 *a1, u8 a2)
r5 = 0;
for (i = 0; i < a0; i++)
for (i = 0; i < areaId; i++)
r5 += sFriendAreaSettings[i].num_pokemon;
a1->unk8 = r5;
a1->hasFriendArea = gFriendAreas[i];
dst->unk8 = r5;
dst->hasFriendArea = gFriendAreas[i];
if (a1->hasFriendArea) {
a1->unk2 = 0;
a1->numPokemon = sFriendAreaSettings[i].num_pokemon;
max = a1->numPokemon;
if (dst->hasFriendArea) {
dst->currNoPokemon = 0;
dst->maxPokemon = sFriendAreaSettings[i].num_pokemon;
max = dst->maxPokemon;
for (i = 0; i < max; i++, r5++) {
mon = &gRecruitedPokemonRef->pokemon[r5];
if (PokemonFlag1(mon)) {
if (mon->isTeamLeader || (a2 == 0 && mon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER))
a1->numPokemon--;
if (mon->isTeamLeader || (!checkPartner && mon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER))
dst->maxPokemon--;
else
a1->unk2++;
dst->currNoPokemon++;
}
}
}
else {
a1->unk2 = 0;
a1->numPokemon = 0;
dst->currNoPokemon = 0;
dst->maxPokemon = 0;
}
}

View File

@ -50,230 +50,515 @@ extern u16 gUnknown_2026E4E;
#define NO_AREA NUM_FRIEND_AREAS + 5
// ななし means without name
// ななし means 'without name'
#define DUMMY_LOCATION \
{ \
.name = _("ななし"), \
.pos = {0, 0}, \
.areasIds = {NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, \
.adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, \
.adjacentLocations = {-1, -1, -1, -1, -1, -1, -1, -1}, \
}
static const struct FriendAreaLocationInfo gFriendAreaLocations[64] =
// The second set is all dummies, maybe it was used for testing purposes?
static const struct FriendAreaLocationInfo sFriendAreaLocations[2][NUM_FRIEND_AREA_LOCATIONS] =
{
{
.name = "Mountain Range",
.pos = {0x1C5, 0x71},
.areasIds = {8, 9, 0xA, 0x27, 0x2F, 0xB, 0x3F, 0x3F},
.adjacentLocations = {5, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC, 2, 7},
[LOCATION_MOUNTAIN_RANGE] =
{
.name = "Mountain Range",
.pos = {0x1C5, 0x71},
.areasIds = {MT_DEEPGREEN, MT_CLEFT, MT_MOONVIEW, MT_DISCIPLINE, DARKNESS_RIDGE, RAINBOW_PEAK, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_EASTERN_FOREST,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = LOCATION_MARSH,
[DIRECTION_WEST] = LOCATION_PLAINS,
[DIRECTION_SOUTHWEST] = LOCATION_RIVER,
},
},
[LOCATION_GLACIER] =
{
.name = "Glacier",
.pos = {0x1CD, 0x1C},
.areasIds = {FRIGID_CAVERN, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = LOCATION_NORTHERN_LAKES,
[DIRECTION_SOUTHWEST] = LOCATION_MARSH,
},
},
[LOCATION_PLAINS] =
{
.name = "Plains",
.pos = {0x161, 0x78},
.areasIds = {BEAU_PLAINS, SKY_BLUE_PLAINS, SACRED_FIELD, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_TEAM_BASE,
[DIRECTION_SOUTHEAST] = LOCATION_RIVER,
[DIRECTION_EAST] = 0,
[DIRECTION_NORTHEAST] = LOCATION_MARSH,
[DIRECTION_NORTH] = LOCATION_CAVE,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = LOCATION_POND,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_SOUTH_PLAINS] =
{
.name = "South Plains",
.pos = {0x162, 0x12D},
.areasIds = {SAFARI, WILD_PLAINS, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = LOCATION_BADLANDS,
[DIRECTION_NORTH] = LOCATION_JUNGLE,
[DIRECTION_NORTHWEST] = LOCATION_RELICS,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_BADLANDS] =
{
.name = "Badlands",
.pos = {0x194, 0x102},
.areasIds = {RAVAGED_FIELD, MAGNETIC_QUARRY, THUNDER_MEADOW, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = LOCATION_DESERT,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = LOCATION_EASTERN_LAKES,
[DIRECTION_NORTH] = LOCATION_EASTERN_PONDS,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = LOCATION_JUNGLE,
[DIRECTION_SOUTHWEST] = LOCATION_SOUTH_PLAINS,
},
},
[LOCATION_EASTERN_FOREST] =
{
.name = "Eastern Forest",
.pos = {0x1C7, 0x9D},
.areasIds = {MIST_RISE_FOREST, FLYAWAY_FOREST, OVERGROWN_FOREST, ENERGETIC_FOREST, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_EASTERN_LAKES,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = 0,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = LOCATION_RIVER,
[DIRECTION_SOUTHWEST] = LOCATION_EASTERN_PONDS,
},
},
[LOCATION_WESTERN_FOREST] =
{
.name = "Western Forest",
.pos = {0x108, 0x9D},
.areasIds = {MUSHROOM_FOREST, HEALING_FOREST, TRANSFORM_FOREST, SECRETIVE_FOREST, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_VOLCANO,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = LOCATION_TEAM_BASE,
[DIRECTION_NORTHEAST] = LOCATION_POND,
[DIRECTION_NORTH] = LOCATION_NORTHERN_ISLES,
[DIRECTION_NORTHWEST] = LOCATION_BEACH,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_RIVER] =
{
.name = "River",
.pos = {0x197, 0xA0},
.areasIds = {RUB_A_DUB_RIVER, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_EASTERN_PONDS,
[DIRECTION_SOUTHEAST] = LOCATION_EASTERN_LAKES,
[DIRECTION_EAST] = LOCATION_EASTERN_FOREST,
[DIRECTION_NORTHEAST] = LOCATION_MOUNTAIN_RANGE,
[DIRECTION_NORTH] = LOCATION_MARSH,
[DIRECTION_NORTHWEST] = LOCATION_PLAINS,
[DIRECTION_WEST] = LOCATION_TEAM_BASE,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_EASTERN_PONDS] =
{
.name = "Eastern Ponds",
.pos = {0x198, 0xCF},
.areasIds = {TADPOLE_POND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_BADLANDS,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = LOCATION_EASTERN_LAKES,
[DIRECTION_NORTHEAST] = LOCATION_EASTERN_FOREST,
[DIRECTION_NORTH] = LOCATION_RIVER,
[DIRECTION_NORTHWEST] = LOCATION_TEAM_BASE,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = LOCATION_JUNGLE,
},
},
[LOCATION_POND] =
{
.name = "Pond",
.pos = {0x133, 0x79},
.areasIds = {TURTLESHELL_POND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = LOCATION_TEAM_BASE,
[DIRECTION_EAST] = LOCATION_PLAINS,
[DIRECTION_NORTHEAST] = LOCATION_CAVE,
[DIRECTION_NORTH] = LOCATION_RUINS,
[DIRECTION_NORTHWEST] = LOCATION_NORTHERN_ISLES,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = LOCATION_WESTERN_FOREST,
},
},
[LOCATION_NORTHERN_LAKES] =
{
.name = "Northern Lakes",
.pos = {0x182, 0x1D},
.areasIds = {MYSTIC_LAKE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = LOCATION_MARSH,
[DIRECTION_EAST] = 1,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = LOCATION_RUINS,
[DIRECTION_SOUTHWEST] = LOCATION_CAVE,
},
},
[LOCATION_EASTERN_LAKES] =
{
.name = "Eastern Lakes",
.pos = {0x1C6, 0xD0},
.areasIds = {WATERFALL_LAKE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = LOCATION_EASTERN_FOREST,
[DIRECTION_NORTHWEST] = LOCATION_RIVER,
[DIRECTION_WEST] = LOCATION_EASTERN_PONDS,
[DIRECTION_SOUTHWEST] = LOCATION_BADLANDS,
},
},
[LOCATION_MARSH] =
{
.name = "Marsh",
.pos = {0x1A2, 0x46},
.areasIds = {PEANUT_SWAMP, POISON_SWAMP, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_RIVER,
[DIRECTION_SOUTHEAST] = LOCATION_MOUNTAIN_RANGE,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = 1,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = LOCATION_NORTHERN_LAKES,
[DIRECTION_WEST] = LOCATION_CAVE,
[DIRECTION_SOUTHWEST] = LOCATION_PLAINS,
},
},
[LOCATION_CAVE] =
{
.name = "Cave",
.pos = {0x160, 0x47},
.areasIds = {ECHO_CAVE, DRAGON_CAVE, BOULDER_CAVE, CRYPTIC_CAVE, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_PLAINS,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = LOCATION_MARSH,
[DIRECTION_NORTHEAST] = LOCATION_NORTHERN_LAKES,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = LOCATION_RUINS,
[DIRECTION_WEST] = LOCATION_NORTHERN_ISLES,
[DIRECTION_SOUTHWEST] = LOCATION_POND,
},
},
[LOCATION_JUNGLE] =
{
.name = "Jungle",
.pos = {0x163, 0x104},
.areasIds = {JUNGLE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_SOUTH_PLAINS,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = LOCATION_BADLANDS,
[DIRECTION_NORTHEAST] = LOCATION_EASTERN_PONDS,
[DIRECTION_NORTH] = LOCATION_TEAM_BASE,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = LOCATION_RELICS,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_RUINS] =
{
.name = "Ruins",
.pos = {0x136, 0x1C},
.areasIds = {DECREPIT_LAB, POWER_PLANT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_POND,
[DIRECTION_SOUTHEAST] = LOCATION_CAVE,
[DIRECTION_EAST] = LOCATION_NORTHERN_LAKES,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = LOCATION_NORTHERN_SEA,
[DIRECTION_SOUTHWEST] = LOCATION_NORTHERN_ISLES,
},
},
[LOCATION_VOLCANO] =
{
.name = "Volcano",
.pos = {0x107, 0xCB},
.areasIds = {SCORCHED_PLAINS, CRATER, VOLCANIC_PIT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = LOCATION_RELICS,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = LOCATION_TEAM_BASE,
[DIRECTION_NORTH] = LOCATION_WESTERN_FOREST,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = LOCATION_SOUTHERN_SEA,
},
},
[LOCATION_DESERT] =
{
.name = "Desert",
.pos = {0x1C4, 0x12D},
.areasIds = {FURNACE_DESERT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = LOCATION_BADLANDS,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_RELICS] =
{
.name = "Relics",
.pos = {0x131, 0x105},
.areasIds = {ANCIENT_RELIC, AGED_CHAMBER_AN, AGED_CHAMBER_O_EXCLAIM, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = LOCATION_SOUTH_PLAINS,
[DIRECTION_EAST] = LOCATION_JUNGLE,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = LOCATION_VOLCANO,
[DIRECTION_WEST] = LOCATION_SOUTHERN_SEA,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_SKY] =
{
.name = "Sky",
.pos = {0x2F, 0x15},
.areasIds = {STRATOS_LOOKOUT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_WESTERN_ISLES,
[DIRECTION_SOUTHEAST] = LOCATION_BEACH,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_NORTHERN_ISLES] =
{
.name = "Northern Isles",
.pos = {0x107, 0x47},
.areasIds = {LEGENDARY_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = 6,
[DIRECTION_SOUTHEAST] = 9,
[DIRECTION_EAST] = 0xD,
[DIRECTION_NORTHEAST] = 0xF,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = 0x18,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_SOUTHERN_ISLES] =
{
.name = "Southern Isles",
.pos = {0x5D, 0x10C},
.areasIds = {SOUTHERN_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = LOCATION_SOUTHERN_SEA,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = LOCATION_SOUTHWEST_ISLES,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_SOUTHWEST_ISLES] =
{
.name = "Southwest Isles",
.pos = {0x2D, 0xCB},
.areasIds = {ENCLOSED_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = LOCATION_SOUTHERN_ISLES,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = LOCATION_WESTERN_ISLES,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_WESTERN_ISLES] =
{
.name = "Western Isles",
.pos = {0x2D, 0x70},
.areasIds = {FINAL_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_SOUTHWEST_ISLES,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = LOCATION_BEACH,
[DIRECTION_NORTH] = LOCATION_SKY,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_NORTHERN_SEA] =
{
.name = "Northern Sea",
.pos = {0xD0, 0x16},
.areasIds = {BOUNTIFUL_SEA, SERENE_SEA, DEEP_SEA_CURRENT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = LOCATION_NORTHERN_ISLES,
[DIRECTION_EAST] = LOCATION_RUINS,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = LOCATION_BEACH,
},
},
[LOCATION_SOUTHERN_SEA] =
{
.name = "Southern Sea",
.pos = {0xB2, 0x10D},
.areasIds = {TREASURE_SEA, DEEP_SEA_FLOOR, SEAFLOOR_CAVE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = -1,
[DIRECTION_EAST] = LOCATION_RELICS,
[DIRECTION_NORTHEAST] = LOCATION_VOLCANO,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = -1,
[DIRECTION_WEST] = LOCATION_SOUTHERN_ISLES,
[DIRECTION_SOUTHWEST] = -1,
},
},
[LOCATION_BEACH] =
{
.name = "Beach",
.pos = {0x81, 0x42},
.areasIds = {SHALLOW_BEACH, ICE_FLOE_BEACH, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = -1,
[DIRECTION_SOUTHEAST] = LOCATION_WESTERN_FOREST,
[DIRECTION_EAST] = -1,
[DIRECTION_NORTHEAST] = LOCATION_NORTHERN_SEA,
[DIRECTION_NORTH] = -1,
[DIRECTION_NORTHWEST] = LOCATION_SKY,
[DIRECTION_WEST] = -1,
[DIRECTION_SOUTHWEST] = LOCATION_WESTERN_ISLES,
},
},
[LOCATION_TEAM_BASE] =
{
.name = _("$t"),
.pos = {0x163, 0xA1},
.areasIds = {FRIEND_AREA_NONE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA},
.adjacentLocations = {
[DIRECTION_SOUTH] = LOCATION_JUNGLE,
[DIRECTION_SOUTHEAST] = LOCATION_EASTERN_PONDS,
[DIRECTION_EAST] = LOCATION_RIVER,
[DIRECTION_NORTHEAST] = -1,
[DIRECTION_NORTH] = LOCATION_PLAINS,
[DIRECTION_NORTHWEST] = LOCATION_POND,
[DIRECTION_WEST] = LOCATION_WESTERN_FOREST,
[DIRECTION_SOUTHWEST] = LOCATION_VOLCANO,
},
},
[LOCATION_UNUSED_28] = DUMMY_LOCATION,
[LOCATION_UNUSED_29] = DUMMY_LOCATION,
[LOCATION_UNUSED_30] = DUMMY_LOCATION,
[LOCATION_UNUSED_31] = DUMMY_LOCATION,
},
{
.name = "Glacier",
.pos = {0x1CD, 0x1C},
.areasIds = {0x30, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA, 0xC},
},
{
.name = "Plains",
.pos = {0x161, 0x78},
.areasIds = {0xD, 0xE, 0x11, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0x1B, 7, 0, 0xC, 0xD, 0xFFFF, 9, 0xFFFF},
},
{
.name = "South Plains",
.pos = {0x162, 0x12D},
.areasIds = {0xF, 0xC, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 4, 0xE, 0x12, 0xFFFF, 0xFFFF},
},
{
.name = "Badlands",
.pos = {0x194, 0x102},
.areasIds = {0x34, 0x35, 0x28, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0x11, 0xFFFF, 0xB, 8, 0xFFFF, 0xE, 3},
},
{
.name = "Eastern Forest",
.pos = {0x1C7, 0x9D},
.areasIds = {0x12, 0x13, 0x14, 0x15, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xB, 0xFFFF, 0xFFFF, 0xFFFF, 0, 0xFFFF, 7, 8},
},
{
.name = "Western Forest",
.pos = {0x108, 0x9D},
.areasIds = {0x16, 0x17, 0x18, 0x19, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0x10, 0xFFFF, 0x1B, 9, 0x14, 0x1A, 0xFFFF, 0xFFFF},
},
{
.name = "River",
.pos = {0x197, 0xA0},
.areasIds = {0x1A, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {8, 0xB, 5, 0, 0xC, 2, 0x1B, 0xFFFF},
},
{
.name = "Eastern Ponds",
.pos = {0x198, 0xCF},
.areasIds = {0x1B, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {4, 0xFFFF, 0xB, 5, 7, 0x1B, 0xFFFF, 0xE},
},
{
.name = "Pond",
.pos = {0x133, 0x79},
.areasIds = {0x1C, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0x1B, 2, 0xD, 0xF, 0x14, 0xFFFF, 6},
},
{
.name = "Northern Lakes",
.pos = {0x182, 0x1D},
.areasIds = {0x1D, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0xC, 1, 0xFFFF, 0xFFFF, 0xFFFF, 0xF, 0xD},
},
{
.name = "Eastern Lakes",
.pos = {0x1C6, 0xD0},
.areasIds = {0x1E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 5, 7, 8, 4},
},
{
.name = "Marsh",
.pos = {0x1A2, 0x46},
.areasIds = {0x1F, 0x20, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {7, 0, 0xFFFF, 1, 0xFFFF, 0xA, 0xD, 2},
},
{
.name = "Cave",
.pos = {0x160, 0x47},
.areasIds = {0x21, 0x23, 0x24, 0x22, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {2, 0xFFFF, 0xC, 0xA, 0xFFFF, 0xF, 0x14, 9},
},
{
.name = "Jungle",
.pos = {0x163, 0x104},
.areasIds = {0x25, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {3, 0xFFFF, 4, 8, 0x1B, 0xFFFF, 0x12, 0xFFFF},
},
{
.name = "Ruins",
.pos = {0x136, 0x1C},
.areasIds = {0x26, 0x29, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {9, 0xD, 0xA, 0xFFFF, 0xFFFF, 0xFFFF, 0x18, 0x14},
},
{
.name = "Volcano",
.pos = {0x107, 0xCB},
.areasIds = {0x10, 0x2A, 0x32, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0x12, 0xFFFF, 0x1B, 6, 0xFFFF, 0xFFFF, 0x19},
},
{
.name = "Desert",
.pos = {0x1C4, 0x12D},
.areasIds = {0x2B, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 4, 0xFFFF, 0xFFFF},
},
{
.name = "Relics",
.pos = {0x131, 0x105},
.areasIds = {0x2E, 0x2C, 0x2D, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 3, 0xE, 0xFFFF, 0xFFFF, 0x10, 0x19, 0xFFFF},
},
{
.name = "Sky",
.pos = {0x2F, 0x15},
.areasIds = {0x33, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0x17, 0x1A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
},
{
.name = "Northern Isles",
.pos = {0x107, 0x47},
.areasIds = {0x36, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {6, 9, 0xD, 0xF, 0xFFFF, 0x18, 0xFFFF, 0xFFFF},
},
{
.name = "Southern Isles",
.pos = {0x5D, 0x10C},
.areasIds = {0x37, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0xFFFF, 0x19, 0xFFFF, 0xFFFF, 0x16, 0xFFFF, 0xFFFF},
},
{
.name = "Southwest Isles",
.pos = {0x2D, 0xCB},
.areasIds = {0x38, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0x15, 0xFFFF, 0xFFFF, 0x17, 0xFFFF, 0xFFFF, 0xFFFF},
},
{
.name = "Western Isles",
.pos = {0x2D, 0x70},
.areasIds = {0x39, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0x16, 0xFFFF, 0xFFFF, 0x1A, 0x13, 0xFFFF, 0xFFFF, 0xFFFF},
},
{
.name = "Northern Sea",
.pos = {0xD0, 0x16},
.areasIds = {1, 3, 5, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0x14, 0xF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x1A},
},
{
.name = "Southern Sea",
.pos = {0xB2, 0x10D},
.areasIds = {2, 4, 6, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 0xFFFF, 0x12, 0x10, 0xFFFF, 0xFFFF, 0x15, 0xFFFF},
},
{
.name = "Beach",
.pos = {0x81, 0x42},
.areasIds = {7, 0x31, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xFFFF, 6, 0xFFFF, 0x18, 0xFFFF, 0x13, 0xFFFF, 0x17},
},
{
.name = _("$t"),
.pos = {0x163, 0xA1},
.areasIds = {0, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F},
.adjacentLocations = {0xE, 8, 7, 0xFFFF, 2, 9, 6, 0x10},
},
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
DUMMY_LOCATION,
}
};
void ShowFriendAreasMap(struct struct_unk800F990 *param_1)
{
gFriendAreasMapPtr = param_1->unk8;
gFriendAreasMapPtr = param_1->friendAreasMapPtr;
gUnknown_2026E4E = 0x1010;
sub_80095CC(0,0x14);
UpdateFadeInTile(2);
gFriendAreasMapPtr->locationsInfo = gFriendAreaLocations;
gFriendAreasMapPtr->locationsInfo = sFriendAreaLocations[0];
gFriendAreasMapPtr->unk4A2C = param_1->unk5;
FriendAreasMap_InitGfx();
gFriendAreasMapPtr->unk4A28 = -1;
@ -645,7 +930,7 @@ static UNUSED void GetAreaMapPosition(u8 areaId, DungeonPos *dst)
s32 i, j;
for (i = 0; i < NUM_FRIEND_AREA_LOCATIONS; i++) {
const struct FriendAreaLocationInfo *locationInfo = &gFriendAreaLocations[i];
const struct FriendAreaLocationInfo *locationInfo = &sFriendAreaLocations[0][i];
for (j = 0; j < MAX_AREAS_PER_LOCATION; j++) {
if (locationInfo->areasIds[j] == areaId) {
dst->x = locationInfo->pos.x;

View File

@ -337,7 +337,7 @@ void FriendAreasMap_PrintAvailableSubAreas(void)
menuInput->unk1E = 0;
menuInput->unk20 = 0;
menuInput->unk4 = 0;
menuInput->unk6 = 16;
menuInput->firstEntryY = 16;
menuInput->unk0 = 0;
menuInput->unkC = 0;
menuInput->unkE = 0;
@ -360,19 +360,19 @@ void FriendAreasMap_PrintAvailableSubAreas(void)
PrintFormattedStringOnWindow(16, 0, _("Where would you like to go?"), 0, '\0');
for (i = 0; i < count; i++) {
unkStruct_8092638 unkFriendAreaStruct;
s32 r4 = sub_8013800(menuInput, i);
FriendAreaCapacity friendAreaCapacity;
s32 y = GetMenuEntryYCoord(menuInput, i);
u8 areaId = gFriendAreasMapPtr->displayedAreas[i];
PrintFriendAreaNameInMap(gFormatBuffer_Items[0], areaId);
if (areaId == 0) {
PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}"), 0, '\0');
PrintFormattedStringOnWindow(12, y, _("{MOVE_ITEM_0}"), 0, '\0');
}
else {
sub_80926F8(areaId, &unkFriendAreaStruct, gFriendAreasMapPtr->unk4A2C);
gFormatArgs[0] = unkFriendAreaStruct.unk2;
gFormatArgs[1] = unkFriendAreaStruct.numPokemon;
PrintFormattedStringOnWindow(12, r4, _("{MOVE_ITEM_0}($v02$v12)"), 0, '\0');
GetFriendAreaCapacity(areaId, &friendAreaCapacity, gFriendAreasMapPtr->unk4A2C);
gFormatArgs[0] = friendAreaCapacity.currNoPokemon;
gFormatArgs[1] = friendAreaCapacity.maxPokemon;
PrintFormattedStringOnWindow(12, y, _("{MOVE_ITEM_0}($v02$v12)"), 0, '\0');
}
}

View File

@ -108,7 +108,7 @@ static void DrawHintSelectionMenu(void)
PrintStringOnWindow(16, 0, sHints, sUnknown_203B264->unk34, 0);
for (hintIndex = 0; hintIndex < HINT_MAX; hintIndex++) {
y = sub_8013800(&sUnknown_203B264->input, hintIndex);
y = GetMenuEntryYCoord(&sUnknown_203B264->input, hintIndex);
PrintStringOnWindow(10, y, gCommonHints[hintIndex].heading, sUnknown_203B264->unk34, 0);
}

View File

@ -132,7 +132,7 @@ void BuildIQSkillList(void)
for (counter = 0; counter < sIQSkillListMenu->s24.s0.input.unk1A; counter++) {
skillIndex = sIQSkillListMenu->iqSkills[(sIQSkillListMenu->s24.s0.input.unk1E * sIQSkillListMenu->s24.s0.input.unk1C) + counter];
y = sub_8013800(&sIQSkillListMenu->s24.s0.input, counter);
y = GetMenuEntryYCoord(&sIQSkillListMenu->s24.s0.input, counter);
strncpy(gFormatBuffer_Items[1], GetIQSkillName(skillIndex), 80);
if (IsIQSkillSet(&sIQSkillListMenu->pokeStruct->IQSkills, 1 << skillIndex))

View File

@ -145,12 +145,12 @@ void sub_801A0D8(void)
buyPrice = GetStackBuyPrice(&item);
if (buyPrice <= gTeamInventoryRef->teamMoney) {
y = sub_8013800(&gUnknown_203B214->s0.input, index);
y = GetMenuEntryYCoord(&gUnknown_203B214->s0.input, index);
PrintStringOnWindow(8, y, auStack204, gUnknown_203B214->s0.unk34, 0);
}
else {
sprintfStatic(auStack112, sFmtRed, auStack204);
y = sub_8013800(&gUnknown_203B214->s0.input, index);
y = GetMenuEntryYCoord(&gUnknown_203B214->s0.input, index);
PrintStringOnWindow(8, y, auStack112, gUnknown_203B214->s0.unk34, 0);
}
}

View File

@ -146,12 +146,12 @@ void sub_801A4A4(void)
buyPrice = GetStackBuyPrice(&item);
if (buyPrice <= gTeamInventoryRef->teamMoney) {
y = sub_8013800(&gUnknown_203B21C->s0.input, index);
y = GetMenuEntryYCoord(&gUnknown_203B21C->s0.input, index);
PrintStringOnWindow(8, y, buffer1, gUnknown_203B21C->s0.unk34, 0);
}
else {
sprintfStatic(buffer2, sFmtRed, buffer1);
y = sub_8013800(&gUnknown_203B21C->s0.input, index);
y = GetMenuEntryYCoord(&gUnknown_203B21C->s0.input, index);
PrintStringOnWindow(8, y, buffer2, gUnknown_203B21C->s0.unk34, 0);
}
}

View File

@ -205,7 +205,7 @@ void sub_801A9E0(void)
switch (gUnknown_203B224->unk0) {
case 0: {
sub_8090E14(buf1, &item, 0);
PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0);
PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0);
break;
}
case 1:
@ -218,7 +218,7 @@ void sub_801A9E0(void)
item.flags = 1;
sub_8090E14(buf1, &item, &thing);
PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0);
PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0);
break;
}
case 3: {
@ -231,10 +231,10 @@ void sub_801A9E0(void)
sub_8090E14(buf1, &item, &thing);
if (gUnknown_203B224->unk4[teamItemIndex] != 0 || sub_801ADA0(teamItemIndex))
PrintStringOnWindow(8,sub_8013800(&gUnknown_203B224->unk54.s0.input,r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0);
PrintStringOnWindow(8,GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input,r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0);
else {
strncpy(gFormatBuffer_Items[0], buf1, 80);
PrintFormattedStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0);
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0);
}
break;
}
@ -252,15 +252,15 @@ void sub_801A9E0(void)
if (GetStackSellPrice(&item) + gTeamInventoryRef->teamMoney > MAX_TEAM_MONEY) {
sprintfStatic(buf2, sFmtRed, buf1);
PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf2, gUnknown_203B224->unk54.s0.unk34, 0);
PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf2, gUnknown_203B224->unk54.s0.unk34, 0);
}
else
PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0);
PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0);
}
else {
sub_8090E14(buf1, &item, 0);
strncpy(gFormatBuffer_Items[0], buf1, 80);
PrintFormattedStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0);
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0);
}
break;
}
@ -275,17 +275,17 @@ void sub_801A9E0(void)
sub_8090E14(buf1, &item, &thing);
if (IsGummiItem(item.id))
PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0);
PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0);
else {
strncpy(gFormatBuffer_Items[0], buf1, 80);
PrintFormattedStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0);
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0);
}
break;
}
}
if (sub_801AED0(teamItemIndex) & 1)
sub_8007B7C(gUnknown_203B224->unk54.s0.unk34, 8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), (gUnknown_203B224->unk54.s0.unk38->width - 2) * 8, 10);
sub_8007B7C(gUnknown_203B224->unk54.s0.unk34, 8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), (gUnknown_203B224->unk54.s0.unk38->width - 2) * 8, 10);
}
sub_80073E0(gUnknown_203B224->unk54.s0.unk34);

View File

@ -130,7 +130,7 @@ static void MakuhitaDojo_DrawCourseList(void)
mazeIndex = sub_80A2668(iVar6);
y = sub_8013800(&sMakuhitaDojoWork2->s30.s0.input, i);
y = GetMenuEntryYCoord(&sMakuhitaDojoWork2->s30.s0.input, i);
color = COLOR_WHITE_2; // COLOR_WHITE again?
if ((bool8)IsMazeCompleted(mazeIndex)) {
PrintStringOnWindow(8, y, sStarBullet, sMakuhitaDojoWork2->s30.s0.unk34, 0);

View File

@ -424,7 +424,7 @@ void sub_8012EBC(MenuStruct *param_1)
color = colorArray[0]; // Use the default white
sprintfStatic(buffer,gUnknown_80D4828, color, textPtr);
y = sub_8013800(&param_1->input, counter);
y = GetMenuEntryYCoord(&param_1->input, counter);
PrintFormattedStringOnWindow(8, y, buffer, param_1->index, 0);
menuItemsPtr++;
counter++;
@ -552,9 +552,9 @@ static void sub_8013134(MenuInputStruct *param_1, u32 menuItemCounter, u32 index
param_1->unk4 = 0;
if (temp->unkC == 6)
param_1->unk6 = 16;
param_1->firstEntryY = 16;
else
param_1->unk6 = 2;
param_1->firstEntryY = 2;
param_1->unkC = 0;
param_1->unkE = 0;
@ -701,7 +701,7 @@ void UpdateMenuCursorSpriteCoords(MenuInputStruct *param_1)
index = param_1->unk0;
temp = &gUnknown_2027370[index];
param_1->unk8.x = temp->unk0 * 8 + param_1->unk4;
param_1->unk8.y = temp->unk2 * 8 + sub_8013800(param_1, param_1->menuIndex);
param_1->unk8.y = temp->unk2 * 8 + GetMenuEntryYCoord(param_1, param_1->menuIndex);
}
void MoveMenuCursorDown(MenuInputStruct *param_1)
@ -810,15 +810,12 @@ void sub_80137F8(MenuInputStruct *param_1, u32 param_2)
param_1->unk10 = param_2 << 8;
}
s32 sub_8013800(MenuInputStruct *param_1, s32 param_2)
s32 GetMenuEntryYCoord(MenuInputStruct *menu, s32 entryId)
{
s32 iVar1;
s32 iVar2;
s32 firstY = menu->firstEntryY;
s32 iVar1 = entryId * menu->unk10;
iVar2 = param_1->unk6;
iVar1 = param_2 * param_1->unk10;
return iVar2 + (iVar1 / 256);
return firstY + (iVar1 / 256);
}
void sub_8013818(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4)
@ -957,9 +954,9 @@ void sub_8013984(MenuInputStruct *param_1)
param_1->unk4 = 0;
if (ptr->unkC == 6)
param_1->unk6 = 16;
param_1->firstEntryY = 16;
else
param_1->unk6 = 0;
param_1->firstEntryY = 0;
if (param_1->unk20 < 2)
param_1->unkC = 0;

View File

@ -104,7 +104,7 @@ static void CreateOptionsMenu(void)
sub_80073B8(sUnknown_203B260->unk44);
PrintStringOnWindow(16, 0, sGameOptions,sUnknown_203B260->unk44, 0);
y = sub_8013800(&sUnknown_203B260->input, 0);
y = GetMenuEntryYCoord(&sUnknown_203B260->input, 0);
PrintStringOnWindow(8, y, sUnknown_80DC064, sUnknown_203B260->unk44, 0);
switch (sUnknown_203B260->optionsMenu->windowColor) {

View File

@ -129,7 +129,7 @@ static void RedrawPartnerSelectionMenu(void)
monCounter = 0;
while (monCounter < gUnknown_203B404->s18.s0.input.unk1A) {
yCoord = sub_8013800(&gUnknown_203B404->s18.s0.input, monCounter);
yCoord = GetMenuEntryYCoord(&gUnknown_203B404->s18.s0.input, monCounter);
monName = GetMonSpecies(gUnknown_203B404->PartnerArray[monCounter]);
PrintStringOnWindow(8, yCoord, monName, gUnknown_203B404->s18.s0.unk34, 0);
monCounter++;

View File

@ -928,7 +928,7 @@ void sub_808F468(PokemonStruct1 *param_1, EvolveStatus *evolveStatus, u8 param_3
u8 friendArea;
u8 uVar2;
s32 numPokemon;
unkStruct_8092638 local_40; // sp 0x0
FriendAreaCapacity local_40; // sp 0x0
unkEvolve evolveConditions; // r7
s32 index, index2;
#ifndef NONMATCHING
@ -961,17 +961,17 @@ void sub_808F468(PokemonStruct1 *param_1, EvolveStatus *evolveStatus, u8 param_3
if ((evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_NONE) || (param_1->speciesNum != evolveConditions.preEvolution.evolveFrom)) continue;
friendArea = ((u8 (*)(s32))GetFriendArea)(index2); // UB
uVar2 = GetFriendArea(param_1->speciesNum);
sub_8092638(friendArea,&local_40,FALSE,FALSE);
GetFriendAreaCapacity2(friendArea,&local_40,FALSE,FALSE);
if (!local_40.hasFriendArea) {
evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_FRIEND_AREA;
evolFlag = TRUE;
}
else {
numPokemon = local_40.unk2;
numPokemon = local_40.currNoPokemon;
if (friendArea == uVar2) {
numPokemon--;
}
if (local_40.numPokemon <= numPokemon) {
if (local_40.maxPokemon <= numPokemon) {
evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ROOM;
evolFlag = TRUE;
}

View File

@ -139,7 +139,7 @@ static void CreatePKMNNewsMenu(void)
sub_8012BC4((sUnknown_80DFBE8.f2 * 8) + 4, 0, sUnknown_203B2CC->s38.input.unk1E + 1, 2, 7, sUnknown_203B2CC->s38.unk34);
for (index = 0; index < sUnknown_203B2CC->s38.input.unk1A; index++) {
y = sub_8013800(&sUnknown_203B2CC->s38.input, index);
y = GetMenuEntryYCoord(&sUnknown_203B2CC->s38.input, index);
new_index = (sUnknown_203B2CC->s38.input.unk1E * sUnknown_203B2CC->s38.input.unk1C) + index;
mailIndex = sUnknown_203B2CC->receivedNewsletters[new_index];
sub_803B6B0(10, y, 6, sUnknown_203B2CC->s38.unk34);

View File

@ -136,10 +136,10 @@ void CreateMailMenu(void)
for (i = 0; i < sUnknown_203B2D8->unk4.s0.input.unk1A; i++) {
mail = GetMailboxSlotInfo(sUnknown_203B2D8->unk0[(sUnknown_203B2D8->unk4.s0.input.unk1E * sUnknown_203B2D8->unk4.s0.input.unk1C) + i]);
local.unk0[0] = sUnknown_203B2D8->unk4.s0.unk34;
local.y = sub_8013800(&sUnknown_203B2D8->unk4.s0.input, i);
local.y = GetMenuEntryYCoord(&sUnknown_203B2D8->unk4.s0.input, i);
if (mail->mailType == MAIL_TYPE_UNK1) {
y = sub_8013800(&sUnknown_203B2D8->unk4.s0.input, i);
y = GetMenuEntryYCoord(&sUnknown_203B2D8->unk4.s0.input, i);
sub_803B6B0(10, y, 6, sUnknown_203B2D8->unk4.s0.unk34);
PrintPokeNameToBuffer(gFormatBuffer_Monsters[0], GetPlayerPokemonStruct());
sprintfStatic(buffer, GetPokemonMailHeadline(mail->unk4.dungeon.floor), gFormatBuffer_Monsters[0]);

View File

@ -143,22 +143,22 @@ void sub_8021494(void)
WriteFriendAreaName(buffer1, friendAreaIndex, TRUE);
if (GetFriendAreaPrice(friendAreaIndex) <= gTeamInventoryRef->teamMoney)
PrintStringOnWindow(8,sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer1, sWigglytuffShop1Work->s40.s0.unk34, 0);
PrintStringOnWindow(8,GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), buffer1, sWigglytuffShop1Work->s40.s0.unk34, 0);
else {
sprintfStatic(buffer2, sFmtRedString, buffer1);
PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0);
PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0);
}
}
else if (sWigglytuffShop1Work->mode == 0) {
if (gFriendAreas[friendAreaIndex] == TRUE)
PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0);
PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0);
else {
sprintfStatic(buffer2, sFmtGreenString, GetFriendAreaName(friendAreaIndex));
PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0);
PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0);
}
}
else
PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0);
PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0);
}
sub_80073E0(sWigglytuffShop1Work->s40.s0.unk34);

View File

@ -165,7 +165,7 @@ static void sub_8021D5C(void)
static void UpdateWigglytuffDialogue(void)
{
u8 *string;
unkStruct_8092638 uStack_14;
FriendAreaCapacity uStack_14;
switch (sWigglytuffShop3Work->state) {
case WIGGLYTUFF_INIT:
@ -273,7 +273,7 @@ static void UpdateWigglytuffDialogue(void)
sub_8023354(TRUE);
break;
case DISPLAY_POKEMON_FRIEND_AREA_INFO:
sub_8092638(sWigglytuffShop3Work->chosenFriendArea, &uStack_14, FALSE, FALSE);
GetFriendAreaCapacity2(sWigglytuffShop3Work->chosenFriendArea, &uStack_14, FALSE, FALSE);
if (uStack_14.hasFriendArea)
sWigglytuffShop3Work->fallbackState = WIGGLYTUFF_CHECK_HAS_FRIEND_AREA;

View File

@ -200,7 +200,7 @@ void sub_803092C(void)
for (index = 0; index < gUnknown_203B320->s28.s0.input.unk1A; index++) {
mail = GetMailatIndex(gUnknown_203B320->unk0[(gUnknown_203B320->s28.s0.input.unk1E * gUnknown_203B320->s28.s0.input.unk1C) + index]);
local.unk0[0] = gUnknown_203B320->s28.s0.unk34;
local.y = sub_8013800(&gUnknown_203B320->s28.s0.input,index);
local.y = GetMenuEntryYCoord(&gUnknown_203B320->s28.s0.input,index);
local.mailTitleType = 7;
local.mailMissionType = MISSION_TYPE_FRIEND_RESCUE;
local.mailStatus = MAIL_STATUS_SUSPENDED;

View File

@ -140,7 +140,7 @@ void DrawPelipperBoardJobMenu(void)
slotIndex = (gUnknown_203B2E0->pelipperBoardSlots[(gUnknown_203B2E0->unk8.s0.input.unk1E * gUnknown_203B2E0->unk8.s0.input.unk1C) + i]);
mail = GetPelipperBoardSlotInfo(slotIndex);
local.unk0[0] = gUnknown_203B2E0->unk8.s0.unk34;
local.y = sub_8013800(&gUnknown_203B2E0->unk8.s0.input, i);
local.y = GetMenuEntryYCoord(&gUnknown_203B2E0->unk8.s0.input, i);
sub_803B35C(mail, &local);
if (IsMailinJobSlot(GetPelipperBoardSlotInfo(slotIndex)))

View File

@ -139,7 +139,7 @@ void DrawJobListMenu(void)
for (i = 0; i < gUnknown_203B2E8->unk8.s0.input.unk1A; i++) {
mail = GetJobSlotInfo(gUnknown_203B2E8->pelipperBoardSlots[(gUnknown_203B2E8->unk8.s0.input.unk1E * gUnknown_203B2E8->unk8.s0.input.unk1C) + i]);
local.unk0[0] = gUnknown_203B2E8->unk8.s0.unk34;
local.y = sub_8013800(&gUnknown_203B2E8->unk8.s0.input, i);
local.y = GetMenuEntryYCoord(&gUnknown_203B2E8->unk8.s0.input, i);
sub_803B35C(mail, &local);
CreateRescueTitle(&local);
}

View File

@ -120,7 +120,7 @@ void sub_802CFD0(void)
iVar1 = sub_803B344((sUnknown_203B2F4->s0.input.unk1E * sUnknown_203B2F4->s0.input.unk1C) + r5);
local.unk0[0] = sUnknown_203B2F4->s0.unk34;
local.y = sub_8013800(&sUnknown_203B2F4->s0.input, r5);
local.y = GetMenuEntryYCoord(&sUnknown_203B2F4->s0.input, r5);
sub_803B35C(&iVar1->mail, &local);
local.unk43 = 1;

View File

@ -561,7 +561,7 @@ static bool8 ShowYesNoWindow(u8 *str)
menuInput.unk1E = 0;
menuInput.unk20 = 0;
menuInput.unk4 = 0;
menuInput.unk6 = 0;
menuInput.firstEntryY = 0;
menuInput.unk0 = 1;
menuInput.unkC = 0;
menuInput.unkE = 0;