Start pokenav conditions doc

This commit is contained in:
GriffinR 2021-11-09 20:02:12 -05:00
parent 43e942c3af
commit 343ac99049
10 changed files with 453 additions and 449 deletions

View File

Before

Width:  |  Height:  |  Size: 134 B

After

Width:  |  Height:  |  Size: 134 B

View File

@ -270,7 +270,9 @@
#define FRIENDSHIP_EVENT_FAINT_FIELD_PSN 7
#define FRIENDSHIP_EVENT_FAINT_LARGE 8 // If opponent was >= 30 levels higher. See AdjustFriendshipOnBattleFaint
#define MAX_FRIENDSHIP 0xFF
#define MAX_FRIENDSHIP 255
#define MAX_SHEEN 255
#define MAX_CONDITION 255
#define MAX_PER_STAT_IVS 31
#define MAX_IV_MASK 31

View File

@ -6,7 +6,6 @@
#define TRUE 1
#define FALSE 0
#define BSS_DATA __attribute__((section(".bss")))
#define IWRAM_DATA __attribute__((section("iwram_data")))
#define EWRAM_DATA __attribute__((section("ewram_data")))
#define UNUSED __attribute__((unused))

View File

@ -7,14 +7,24 @@
#include "pokemon.h"
#include "constants/berry.h"
#define TAG_CONDITION_MON 100
#define TAG_CONDITION_BALL 101
#define TAG_CONDITION_CANCEL 102
#define TAG_CONDITION_BALL_PLACEHOLDER 103
#define TAG_CONDITION_SPARKLE 104
enum {
TAG_CONDITION_MON = 100,
TAG_CONDITION_BALL,
TAG_CONDITION_CANCEL,
TAG_CONDITION_BALL_PLACEHOLDER,
TAG_CONDITION_SPARKLE,
TAG_CONDITION_MON_MARKINGS,
TAG_CONDITION_MARKINGS_MENU,
TAG_CONDITION_MARKINGS_MENU_2, // Used implicitly by CreateMonMarkingsMenuSprites
};
#define MAX_CONDITION_SPARKLES 10
// The number of extra sparkles shown on a Pokémon's condition screen.
// All Pokémon start with 1, so the max here is MAX_CONDITION_SPARKLES - 1
#define GET_NUM_CONDITION_SPARKLES(sheen)((sheen) != MAX_SHEEN) ? (sheen) / ((u32)MAX_SHEEN / (MAX_CONDITION_SPARKLES - 1) + 1) : MAX_CONDITION_SPARKLES - 1;
// Window IDs for the Player PC Mailbox
enum {
MAILBOXWIN_TITLE,
@ -29,17 +39,35 @@ struct UnknownSubStruct_81D1ED4
u16 unk2;
};
#define CONDITION_GRAPH_CENTER_X 155
#define CONDITION_GRAPH_TOP_Y 56
#define CONDITION_GRAPH_BOTTOM_Y 121
#define CONDITION_GRAPH_HEIGHT (CONDITION_GRAPH_BOTTOM_Y - CONDITION_GRAPH_TOP_Y + 1)
#define CONDITION_GRAPH_UNK_1 10
#define CONDITION_GRAPH_UNK_2 9
#define CONDITION_GRAPH_UNK 91
// Equivalent to flavor and contest values, but in a different order.
enum {
CONDITION_COOL,
CONDITION_TOUGH,
CONDITION_SMART,
CONDITION_CUTE,
CONDITION_BEAUTY,
CONDITION_COUNT
};
struct ConditionGraph
{
/*0x000*/ u8 stat[4][FLAVOR_COUNT];
/*0x014*/ struct UnknownSubStruct_81D1ED4 unk14[4][FLAVOR_COUNT];
/*0x064*/ struct UnknownSubStruct_81D1ED4 unk64[10][FLAVOR_COUNT];
/*0x12C*/ struct UnknownSubStruct_81D1ED4 unk12C[FLAVOR_COUNT];
/*0x140*/ u16 unk140[66][2];
/*0x248*/ u16 unk248[66][2];
/*0x000*/ u8 conditions[4][CONDITION_COUNT];
/*0x014*/ struct UnknownSubStruct_81D1ED4 unk14[4][CONDITION_COUNT];
/*0x064*/ struct UnknownSubStruct_81D1ED4 unk64[CONDITION_GRAPH_UNK_1][CONDITION_COUNT];
/*0x12C*/ struct UnknownSubStruct_81D1ED4 unk12C[CONDITION_COUNT];
/*0x140*/ u16 scanlineRight[CONDITION_GRAPH_HEIGHT][2];
/*0x248*/ u16 scanlineLeft[CONDITION_GRAPH_HEIGHT][2];
/*0x350*/ u16 unk350;
/*0x352*/ u16 unk352;
/*0x354*/ u8 unk354;
/*0x354*/ bool8 unk354;
/*0x355*/ u8 state;
};
@ -49,13 +77,13 @@ u8 MailboxMenu_CreateList(struct PlayerPCItemPageStruct *page);
void MailboxMenu_AddScrollArrows(struct PlayerPCItemPageStruct *page);
void MailboxMenu_Free(void);
void MailboxMenu_RemoveWindow(u8 windowIdx);
void InitConditionGraphData(struct ConditionGraph *graph);
void ConditionGraph_Init(struct ConditionGraph *graph);
void sub_81D2108(struct ConditionGraph *graph);
void SetConditionGraphIOWindows(u8 bg);
void InitConditionGraphState(struct ConditionGraph *graph);
void sub_81D2230(struct ConditionGraph *graph);
bool8 SetupConditionGraphScanlineParams(struct ConditionGraph *graph);
bool32 TransitionConditionGraph(struct ConditionGraph *graph);
bool8 TransitionConditionGraph(struct ConditionGraph *graph);
void sub_81D2754(u8 *arg0, struct UnknownSubStruct_81D1ED4 *arg1);
void sub_81D1F84(struct ConditionGraph *graph, struct UnknownSubStruct_81D1ED4 *arg1, struct UnknownSubStruct_81D1ED4 *arg2);
void MoveRelearnerPrintText(u8 *str);
@ -69,8 +97,8 @@ void GetConditionMenuMonConditions(struct ConditionGraph *graph, u8 *sheen, u16
void GetConditionMenuMonGfx(void *tilesDst, void *palDst, u16 boxId, u16 monId, u16 partyId, u16 numMons, bool8 excludesCancel);
bool8 MoveConditionMonOnscreen(s16 *x);
bool8 MoveConditionMonOffscreen(s16 *x);
bool8 TryUpdateConditionMonTransitionOn(struct ConditionGraph *graph, s16 *x);
bool8 TryUpdateConditionMonTransitionOff(struct ConditionGraph *graph, s16 *x);
bool8 ConditionGraph_UpdateMonEnter(struct ConditionGraph *graph, s16 *x);
bool8 ConditionGraph_UpdateMonExit(struct ConditionGraph *graph, s16 *x);
void LoadConditionMonPicTemplate(struct SpriteSheet *sheet, struct SpriteTemplate *template, struct SpritePalette *pal);
void LoadConditionSelectionIcons(struct SpriteSheet *sheets, struct SpriteTemplate * template, struct SpritePalette *pals);
void LoadConditionSparkle(struct SpriteSheet *sheet, struct SpritePalette *pal);

View File

@ -256,6 +256,14 @@ enum PartyConditionFuncIds
PARTY_CONDITION_FUNC_CLOSE_MARKINGS,
};
enum
{
CONDITION_MON_0,
CONDITION_MON_1,
CONDITION_MON_2,
NUM_CONDITION_MONS
};
#define POKENAV_MENU_FUNC_EXIT -1
enum
@ -432,11 +440,11 @@ bool32 IsConditionMenuSearchMode(void);
struct ConditionGraph *GetConditionGraphDataPtr(void);
u16 GetConditionGraphCurrentMonIndex(void);
u16 GetMonListCount(void);
u8 GetMonSheen(void);
bool32 SetConditionGraphData(u8 arg0);
u8 GetNumConditionMonSparkles(void);
bool32 SetConditionGraphData(u8 mode);
u8 TryGetMonMarkId(void);
u8 *GetConditionMonNameBuffer(u8 id);
u8 *GetConditionMonLocationBuffer(u8 id);
u8 *GetConditionMonNameText(u8 id);
u8 *GetConditionMonLocationText(u8 id);
u16 GetConditionMonDataBuffer(void);
void *GetConditionMonPicGfx(u8 id);
void *GetConditionMonPal(u8 id);

View File

@ -31,14 +31,14 @@ extern const struct CompressedSpriteSheet gMonFrontPicTable[];
EWRAM_DATA static u8 sMailboxWindowIds[MAILBOXWIN_COUNT] = {0};
EWRAM_DATA static struct ListMenuItem *sMailboxList = NULL;
static void MailboxMenu_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
static void sub_81D24A4(struct ConditionGraph *a0);
static void sub_81D2634(struct ConditionGraph *a0);
static void MoveRelearnerCursorCallback(s32 itemIndex, bool8 onInit, struct ListMenu *list);
static void nullsub_79(void);
static void SetNextConditionSparkle(struct Sprite *sprite);
static void SpriteCB_ConditionSparkle(struct Sprite *sprite);
static void ShowAllConditionSparkles(struct Sprite *sprite);
static void MailboxMenu_MoveCursorFunc(s32, bool8, struct ListMenu *);
static void sub_81D24A4(struct ConditionGraph *);
static void sub_81D2634(struct ConditionGraph *);
static void MoveRelearnerCursorCallback(s32, bool8, struct ListMenu *);
static void MoveRelearnerDummy(void);
static void SetNextConditionSparkle(struct Sprite *);
static void SpriteCB_ConditionSparkle(struct Sprite *);
static void ShowAllConditionSparkles(struct Sprite *);
static const struct WindowTemplate sWindowTemplates_MailboxMenu[MAILBOXWIN_COUNT] =
{
@ -80,46 +80,29 @@ static const u8 sEmptyItemName[] = _("");
static const struct ScanlineEffectParams sConditionGraphScanline =
{
.dmaDest = (void*)REG_ADDR_WIN0H,
.dmaDest = &REG_WIN0H,
.dmaControl = SCANLINE_EFFECT_DMACNT_32BIT,
.initState = 1,
};
static const u8 sUnknown_08625410[] =
static const u8 sUnknown_08625410[MAX_CONDITION + 1] =
{
4,
5,
6,
7,
8,
9, 9,
10, 10,
0xB, 0xB,
0xC, 0xC,
0xD, 0xD,
0xD, 0xD,
0xE, 0xE, 0xE, 0xE,
0xF, 0xF, 0xF, 0xF,
0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19,
0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D,
0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
0x23
4, 5, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 13,
13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 17,
17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19,
19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21,
21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35
};
@ -320,29 +303,29 @@ void MailboxMenu_Free(void)
Free(sMailboxList);
}
void InitConditionGraphData(struct ConditionGraph *graph)
void ConditionGraph_Init(struct ConditionGraph *graph)
{
u8 i, j;
for (j = 0; j < FLAVOR_COUNT; j++)
for (j = 0; j < CONDITION_COUNT; j++)
{
for (i = 0; i < 10; i++)
for (i = 0; i < CONDITION_GRAPH_UNK_1; i++)
{
graph->unk64[i][j].unk0 = 0;
graph->unk64[i][j].unk2 = 0;
}
for (i = 0; i < 4; i++)
{
graph->stat[i][j] = 0;
graph->unk14[i][j].unk0 = 155;
graph->unk14[i][j].unk2 = 91;
graph->conditions[i][j] = 0;
graph->unk14[i][j].unk0 = CONDITION_GRAPH_CENTER_X;
graph->unk14[i][j].unk2 = CONDITION_GRAPH_UNK;
}
graph->unk12C[j].unk0 = 0;
graph->unk12C[j].unk2 = 0;
}
graph->unk354 = 0;
graph->unk354 = FALSE;
graph->unk352 = 0;
}
@ -351,11 +334,11 @@ void sub_81D1F84(struct ConditionGraph *graph, struct UnknownSubStruct_81D1ED4 *
u16 i, j;
s32 r5, r6;
for (i = 0; i < FLAVOR_COUNT; i++)
for (i = 0; i < CONDITION_COUNT; i++)
{
r5 = arg1[i].unk0 << 8;
r6 = ((arg2[i].unk0 - arg1[i].unk0) << 8) / 10;
for (j = 0; j < 9; j++)
r6 = ((arg2[i].unk0 - arg1[i].unk0) << 8) / CONDITION_GRAPH_UNK_1;
for (j = 0; j < CONDITION_GRAPH_UNK_2; j++)
{
graph->unk64[j][i].unk0 = (r5 >> 8) + ((r5 >> 7) & 1);
r5 += r6;
@ -363,8 +346,8 @@ void sub_81D1F84(struct ConditionGraph *graph, struct UnknownSubStruct_81D1ED4 *
graph->unk64[j][i].unk0 = arg2[i].unk0;
r5 = arg1[i].unk2 << 8;
r6 = ((arg2[i].unk2 - arg1[i].unk2) << 8) / 10;
for (j = 0; j < 9; j++)
r6 = ((arg2[i].unk2 - arg1[i].unk2) << 8) / CONDITION_GRAPH_UNK_1;
for (j = 0; j < CONDITION_GRAPH_UNK_2; j++)
{
graph->unk64[j][i].unk2 = (r5 >> 8) + ((r5 >> 7) & 1);
r5 += r6;
@ -375,12 +358,12 @@ void sub_81D1F84(struct ConditionGraph *graph, struct UnknownSubStruct_81D1ED4 *
graph->unk352 = 0;
}
bool32 TransitionConditionGraph(struct ConditionGraph *graph)
bool8 TransitionConditionGraph(struct ConditionGraph *graph)
{
if (graph->unk352 < 10)
if (graph->unk352 < CONDITION_GRAPH_UNK_1)
{
sub_81D2230(graph);
return (++graph->unk352 != 10);
return (++graph->unk352 != CONDITION_GRAPH_UNK_1);
}
else
{
@ -417,35 +400,36 @@ void sub_81D2108(struct ConditionGraph *graph)
{
u16 i;
if (graph->unk354 == 0)
if (!graph->unk354)
return;
sub_81D24A4(graph);
sub_81D2634(graph);
for (i = 0; i < 66; i++)
for (i = 0; i < CONDITION_GRAPH_HEIGHT; i++)
{
gScanlineEffectRegBuffers[1][(i + 55) * 2] = gScanlineEffectRegBuffers[0][(i + 55) * 2] = (graph->unk140[i][0] << 8) | (graph->unk140[i][1]);
gScanlineEffectRegBuffers[1][(i + 55) * 2 + 1] = gScanlineEffectRegBuffers[0][(i + 55) * 2 + 1] = (graph->unk248[i][0] << 8) | (graph->unk248[i][1]);
gScanlineEffectRegBuffers[1][(i + 55) * 2] = gScanlineEffectRegBuffers[0][(i + 55) * 2] = (graph->scanlineRight[i][0] << 8) | (graph->scanlineRight[i][1]);
gScanlineEffectRegBuffers[1][(i + 55) * 2 + 1] = gScanlineEffectRegBuffers[0][(i + 55) * 2 + 1] = (graph->scanlineLeft[i][0] << 8) | (graph->scanlineLeft[i][1]);
}
graph->unk354 = 0;
graph->unk354 = FALSE;
}
void SetConditionGraphIOWindows(u8 bg)
{
u32 flags;
if (bg > 3)
if (bg >= NUM_BACKGROUNDS)
bg = 0;
// Unset the WINOUT flag for the bg.
flags = (WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ) & ~(1 << bg);
SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE( 0, DISPLAY_WIDTH));
SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE( 0, 155));
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(56, 121));
SetGpuReg(REG_OFFSET_WIN1V, WIN_RANGE(56, 121));
// Set limits for graph data
SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE( 0, DISPLAY_WIDTH)); // Right side horizontal
SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE( 0, CONDITION_GRAPH_CENTER_X)); // Left side horizontal
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(CONDITION_GRAPH_TOP_Y, CONDITION_GRAPH_BOTTOM_Y)); // Right side vertical
SetGpuReg(REG_OFFSET_WIN1V, WIN_RANGE(CONDITION_GRAPH_TOP_Y, CONDITION_GRAPH_BOTTOM_Y)); // Left side vertical
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
SetGpuReg(REG_OFFSET_WINOUT, flags);
}
@ -453,19 +437,18 @@ void SetConditionGraphIOWindows(u8 bg)
void sub_81D2230(struct ConditionGraph *graph)
{
u16 i;
for (i = 0; i < FLAVOR_COUNT; i++)
for (i = 0; i < CONDITION_COUNT; i++)
graph->unk12C[i] = graph->unk64[graph->unk352][i];
graph->unk354 = 1;
graph->unk354 = TRUE;
}
static void sub_81D2278(struct ConditionGraph *graph, u16 *arg1, struct UnknownSubStruct_81D1ED4 *arg2, struct UnknownSubStruct_81D1ED4 *arg3, u8 arg4, u16 *arg5)
{
u16 i, r8, r10, r0, var_30;
u16 *ptr;
s32 r4, var_2C;
s32 r4, var_2C = 0;
var_2C = 0;
if (arg2->unk2 < arg3->unk2)
{
r10 = arg2->unk2;
@ -490,7 +473,7 @@ static void sub_81D2278(struct ConditionGraph *graph, u16 *arg1, struct UnknownS
r8++;
if (arg5 == NULL)
{
arg1 += (r10 - 56) * 2;
arg1 += (r10 - CONDITION_GRAPH_TOP_Y) * 2;
for (i = 0; i < r8; i++)
{
arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
@ -502,16 +485,16 @@ static void sub_81D2278(struct ConditionGraph *graph, u16 *arg1, struct UnknownS
}
else if (var_2C > 0)
{
arg5 += (r10 - 56) * 2;
arg5 += (r10 - CONDITION_GRAPH_TOP_Y) * 2;
// Less readable than the other loops, but it has to be written this way to match.
for (i = 0; i < r8; arg5[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4, r4 += var_2C, arg5 += 2, i++)
{
if (r4 >= (155 << 10))
if (r4 >= (CONDITION_GRAPH_CENTER_X << 10))
break;
}
graph->unk350 = r10 + i;
arg1 += (graph->unk350 - 56) * 2;
arg1 += (graph->unk350 - CONDITION_GRAPH_TOP_Y) * 2;
for (; i < r8; i++)
{
arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
@ -523,13 +506,13 @@ static void sub_81D2278(struct ConditionGraph *graph, u16 *arg1, struct UnknownS
}
else if (var_2C < 0)
{
arg1 += (r10 - 56) * 2;
arg1 += (r10 - CONDITION_GRAPH_TOP_Y) * 2;
for (i = 0; i < r8; i++)
{
arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
if (r4 < (155 << 10))
if (r4 < (CONDITION_GRAPH_CENTER_X << 10))
{
arg1[arg4] = 155;
arg1[arg4] = CONDITION_GRAPH_CENTER_X;
break;
}
r4 += var_2C;
@ -537,7 +520,7 @@ static void sub_81D2278(struct ConditionGraph *graph, u16 *arg1, struct UnknownS
}
graph->unk350 = r10 + i;
arg5 += (graph->unk350 - 56) * 2;
arg5 += (graph->unk350 - CONDITION_GRAPH_TOP_Y) * 2;
for (; i < r8; i++)
{
arg5[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
@ -550,11 +533,11 @@ static void sub_81D2278(struct ConditionGraph *graph, u16 *arg1, struct UnknownS
else
{
graph->unk350 = r10;
arg1 += (r10 - 56) * 2;
arg5 += (r10 - 56) * 2;
arg1 += (r10 - CONDITION_GRAPH_TOP_Y) * 2;
arg5 += (r10 - CONDITION_GRAPH_TOP_Y) * 2;
arg1[1] = arg2->unk0 + 1;
arg5[0] = arg3->unk0;
arg5[1] = 155;
arg5[1] = CONDITION_GRAPH_CENTER_X;
return;
}
@ -568,38 +551,38 @@ static void sub_81D24A4(struct ConditionGraph *graph)
if (graph->unk12C[0].unk2 < graph->unk12C[1].unk2)
{
r6 = graph->unk12C[0].unk2;
sub_81D2278(graph, graph->unk140[0], &graph->unk12C[0], &graph->unk12C[1], 1, NULL);
sub_81D2278(graph, graph->scanlineRight[0], &graph->unk12C[0], &graph->unk12C[1], 1, NULL);
}
else
{
r6 = graph->unk12C[1].unk2;
sub_81D2278(graph, graph->unk140[0], &graph->unk12C[1], &graph->unk12C[0], 0, NULL);
sub_81D2278(graph, graph->scanlineRight[0], &graph->unk12C[1], &graph->unk12C[0], 0, NULL);
}
sub_81D2278(graph, graph->unk140[0], &graph->unk12C[1], &graph->unk12C[2], 1, NULL);
sub_81D2278(graph, graph->scanlineRight[0], &graph->unk12C[1], &graph->unk12C[2], 1, NULL);
i = (graph->unk12C[2].unk2 <= graph->unk12C[3].unk2);
sub_81D2278(graph, graph->unk140[0], &graph->unk12C[2], &graph->unk12C[3], i, graph->unk248[0]);
for (i = 56; i < r6; i++)
sub_81D2278(graph, graph->scanlineRight[0], &graph->unk12C[2], &graph->unk12C[3], i, graph->scanlineLeft[0]);
for (i = CONDITION_GRAPH_TOP_Y; i < r6; i++)
{
graph->unk140[i - 56][0] = 0;
graph->unk140[i - 56][1] = 0;
graph->scanlineRight[i - CONDITION_GRAPH_TOP_Y][0] = 0;
graph->scanlineRight[i - CONDITION_GRAPH_TOP_Y][1] = 0;
}
for (i = graph->unk12C[0].unk2; i <= graph->unk350; i++)
graph->unk140[i - 56][0] = 155;
graph->scanlineRight[i - CONDITION_GRAPH_TOP_Y][0] = CONDITION_GRAPH_CENTER_X;
varMax = max(graph->unk350, graph->unk12C[2].unk2);
for (i = varMax + 1; i < 122; i++)
for (i = varMax + 1; i <= CONDITION_GRAPH_BOTTOM_Y; i++)
{
graph->unk140[i - 56][0] = 0;
graph->unk140[i - 56][1] = 0;
graph->scanlineRight[i - CONDITION_GRAPH_TOP_Y][0] = 0;
graph->scanlineRight[i - CONDITION_GRAPH_TOP_Y][1] = 0;
}
for (i = 56; i < 122; i++)
for (i = CONDITION_GRAPH_TOP_Y; i <= CONDITION_GRAPH_BOTTOM_Y; i++)
{
if (graph->unk140[i - 56][0] == 0 && graph->unk140[i - 56][1] != 0)
graph->unk140[i - 56][0] = 155;
if (graph->scanlineRight[i - CONDITION_GRAPH_TOP_Y][0] == 0 && graph->scanlineRight[i - 56][1] != 0)
graph->scanlineRight[i - CONDITION_GRAPH_TOP_Y][0] = CONDITION_GRAPH_CENTER_X;
}
}
@ -610,69 +593,69 @@ static void sub_81D2634(struct ConditionGraph *graph)
if (graph->unk12C[0].unk2 < graph->unk12C[4].unk2)
{
r6 = graph->unk12C[0].unk2;
sub_81D2278(graph, graph->unk248[0], &graph->unk12C[0], &graph->unk12C[4], 0, NULL);
sub_81D2278(graph, graph->scanlineLeft[0], &graph->unk12C[0], &graph->unk12C[4], 0, NULL);
}
else
{
r6 = graph->unk12C[4].unk2;
sub_81D2278(graph, graph->unk248[0], &graph->unk12C[4], &graph->unk12C[0], 1, NULL);
sub_81D2278(graph, graph->scanlineLeft[0], &graph->unk12C[4], &graph->unk12C[0], 1, NULL);
}
sub_81D2278(graph, graph->unk248[0], &graph->unk12C[4], &graph->unk12C[3], 0, NULL);
sub_81D2278(graph, graph->scanlineLeft[0], &graph->unk12C[4], &graph->unk12C[3], 0, NULL);
for (i = 56; i < r6; i++)
for (i = CONDITION_GRAPH_TOP_Y; i < r6; i++)
{
graph->unk140[i + 10][0] = 0;
graph->unk140[i + 10][1] = 0;
graph->scanlineRight[i + CONDITION_GRAPH_UNK_1][0] = 0;
graph->scanlineRight[i + CONDITION_GRAPH_UNK_1][1] = 0;
}
for (i = graph->unk12C[0].unk2; i <= graph->unk350; i++)
graph->unk140[i + 10][1] = 155;
graph->scanlineRight[i + CONDITION_GRAPH_UNK_1][1] = CONDITION_GRAPH_CENTER_X;
varMax = max(graph->unk350, graph->unk12C[3].unk2 + 1);
for (i = varMax; i < 122; i++)
for (i = varMax; i <= CONDITION_GRAPH_BOTTOM_Y; i++)
{
graph->unk140[i + 10][0] = 0;
graph->unk140[i + 10][1] = 0;
graph->scanlineRight[i + CONDITION_GRAPH_UNK_1][0] = 0;
graph->scanlineRight[i + CONDITION_GRAPH_UNK_1][1] = 0;
}
for (i = 0; i < 66; i++)
for (i = 0; i < CONDITION_GRAPH_HEIGHT; i++)
{
if (graph->unk248[i][0] >= graph->unk248[i][1])
if (graph->scanlineLeft[i][0] >= graph->scanlineLeft[i][1])
{
graph->unk248[i][1] = 0;
graph->unk248[i][0] = 0;
graph->scanlineLeft[i][1] = 0;
graph->scanlineLeft[i][0] = 0;
}
}
}
void sub_81D2754(u8 *arg0, struct UnknownSubStruct_81D1ED4 *arg1)
void sub_81D2754(u8 *conditions, struct UnknownSubStruct_81D1ED4 *arg1)
{
u8 r2, r7;
u8 r2, sinIdx;
s8 r12;
u16 i;
r2 = sUnknown_08625410[*(arg0++)];
arg1->unk0 = 155;
arg1->unk2 = 91 - r2;
r2 = sUnknown_08625410[*(conditions++)];
arg1->unk0 = CONDITION_GRAPH_CENTER_X;
arg1->unk2 = CONDITION_GRAPH_UNK - r2;
r7 = 64;
sinIdx = 64;
r12 = 0;
for (i = 1; i < 5; i++)
for (i = 1; i < CONDITION_COUNT; i++)
{
r7 += 51;
sinIdx += 51;
if (--r12 < 0)
r12 = 4;
if (r12 == 2)
r7++;
sinIdx++;
r2 = sUnknown_08625410[*(arg0++)];
arg1[r12].unk0 = 155 + ((r2 * gSineTable[64 + r7]) >> 8);
arg1[r12].unk2 = 91 - ((r2 * gSineTable[r7]) >> 8);
r2 = sUnknown_08625410[*(conditions++)];
arg1[r12].unk0 = CONDITION_GRAPH_CENTER_X + ((r2 * gSineTable[64 + sinIdx]) >> 8);
arg1[r12].unk2 = CONDITION_GRAPH_UNK - ((r2 * gSineTable[sinIdx]) >> 8);
if (r12 < 3 && (r2 != 32 || r12 != 2))
arg1[r12].unk0 = 156 + ((r2 * gSineTable[64 + r7]) >> 8);
arg1[r12].unk0 = CONDITION_GRAPH_CENTER_X + 1 + ((r2 * gSineTable[64 + sinIdx]) >> 8);
}
}
@ -685,10 +668,8 @@ void InitMoveRelearnerWindows(bool8 useContextWindow)
LoadUserWindowBorderGfx(0, 1, 0xE0);
LoadPalette(gStandardMenuPalette, 0xF0, 0x20);
for (i = 0; i < 5; i++)
{
for (i = 0; i < ARRAY_COUNT(sMoveRelearnerWindowTemplates) - 1; i++)
FillWindowPixelBuffer(i, PIXEL_FILL(1));
}
if (!useContextWindow)
{
@ -704,11 +685,11 @@ void InitMoveRelearnerWindows(bool8 useContextWindow)
PutWindowTilemap(3);
DrawStdFrameWithCustomTileAndPalette(2, 0, 1, 0xE);
DrawStdFrameWithCustomTileAndPalette(3, 0, 1, 0xE);
nullsub_79();
MoveRelearnerDummy();
ScheduleBgCopyTilemapToVram(1);
}
static void nullsub_79(void)
static void MoveRelearnerDummy(void)
{
}
@ -720,13 +701,10 @@ u8 LoadMoveRelearnerMovesList(const struct ListMenuItem *items, u16 numChoices)
gMultiuseListMenuTemplate.items = items;
if (numChoices < 6)
{
gMultiuseListMenuTemplate.maxShowed = numChoices;
}
else
{
gMultiuseListMenuTemplate.maxShowed = 6;
}
return gMultiuseListMenuTemplate.maxShowed;
}
@ -734,7 +712,7 @@ static void MoveRelearnerLoadBattleMoveDescription(u32 chosenMove)
{
s32 x;
const struct BattleMove *move;
u8 buffer[0x20];
u8 buffer[32];
const u8 *str;
FillWindowPixelBuffer(0, PIXEL_FILL(1));
@ -1010,7 +988,7 @@ void GetConditionMenuMonNameAndLocString(u8 *locationDst, u8 *nameDst, u16 boxId
}
}
void GetConditionMenuMonConditions(struct ConditionGraph *graph, u8 *sheen, u16 boxId, u16 monId, u16 partyId, u16 id, u16 numMons, bool8 excludesCancel)
void GetConditionMenuMonConditions(struct ConditionGraph *graph, u8 *numSparkles, u16 boxId, u16 monId, u16 partyId, u16 id, u16 numMons, bool8 excludesCancel)
{
u16 i;
@ -1019,25 +997,23 @@ void GetConditionMenuMonConditions(struct ConditionGraph *graph, u8 *sheen, u16
if (partyId != numMons)
{
graph->stat[id][0] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_COOL, NULL);
graph->stat[id][1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_TOUGH, NULL);
graph->stat[id][2] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SMART, NULL);
graph->stat[id][3] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_CUTE, NULL);
graph->stat[id][4] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_BEAUTY, NULL);
graph->conditions[id][CONDITION_COOL] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_COOL, NULL);
graph->conditions[id][CONDITION_TOUGH] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_TOUGH, NULL);
graph->conditions[id][CONDITION_SMART] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SMART, NULL);
graph->conditions[id][CONDITION_CUTE] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_CUTE, NULL);
graph->conditions[id][CONDITION_BEAUTY] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_BEAUTY, NULL);
sheen[id] = (GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) != 0xFF)
? GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) / 29u
: 9;
numSparkles[id] = GET_NUM_CONDITION_SPARKLES(GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL));
sub_81D2754(graph->stat[id], graph->unk14[id]);
sub_81D2754(graph->conditions[id], graph->unk14[id]);
}
else
{
for (i = 0; i < FLAVOR_COUNT; i++)
for (i = 0; i < CONDITION_COUNT; i++)
{
graph->stat[id][i] = 0;
graph->unk14[id][i].unk0 = 155;
graph->unk14[id][i].unk2 = 91;
graph->conditions[id][i] = 0;
graph->unk14[id][i].unk0 = CONDITION_GRAPH_CENTER_X;
graph->unk14[id][i].unk2 = CONDITION_GRAPH_UNK;
}
}
}
@ -1076,7 +1052,7 @@ bool8 MoveConditionMonOffscreen(s16 *x)
return (*x != -80);
}
bool8 TryUpdateConditionMonTransitionOn(struct ConditionGraph *graph, s16 *x)
bool8 ConditionGraph_UpdateMonEnter(struct ConditionGraph *graph, s16 *x)
{
bool8 graphUpdating = TransitionConditionGraph(graph);
bool8 monUpdating = MoveConditionMonOnscreen(x);
@ -1084,7 +1060,7 @@ bool8 TryUpdateConditionMonTransitionOn(struct ConditionGraph *graph, s16 *x)
return (graphUpdating || monUpdating);
}
bool8 TryUpdateConditionMonTransitionOff(struct ConditionGraph *graph, s16 *x)
bool8 ConditionGraph_UpdateMonExit(struct ConditionGraph *graph, s16 *x)
{
bool8 graphUpdating = TransitionConditionGraph(graph);
bool8 monUpdating = MoveConditionMonOffscreen(x);

View File

@ -15,18 +15,18 @@
struct PokenavSub11
{
u32 monPal[3][0x20];
u32 monPal[NUM_CONDITION_MONS][0x20];
u8 fill[0x180];
u32 monPicGfx[3][MON_PIC_SIZE];
u32 monPicGfx[NUM_CONDITION_MONS][MON_PIC_SIZE];
u8 searchMode;
s16 monIndex;
u32 (*callback)(struct PokenavSub11 *);
u8 fill2[0x6320 - 0x6308];
u8 searchLocBuffer[3][24];
u8 nameBuffer[3][64];
u8 locationText[NUM_CONDITION_MONS][24];
u8 nameText[NUM_CONDITION_MONS][64];
struct ConditionGraph conditionData;
u8 sheen[3];
u8 monMarks[3];
u8 numSparkles[NUM_CONDITION_MONS];
u8 monMarks[NUM_CONDITION_MONS];
s8 mark;
s8 unk6787;
s8 unk6788;
@ -34,18 +34,17 @@ struct PokenavSub11
u8 state;
};
void InitPartyConditionListParameters(void);
void sub_81CD9F8(void);
u32 HandlePartyConditionInput(struct PokenavSub11 *structPtr);
u32 GetConditionReturnCallback(struct PokenavSub11 *structPtr);
u32 ConditionMenu_OpenMarkingsMenu(struct PokenavSub11 *structPtr);
u8 ConditionGraphHandleDpadInput(struct PokenavSub11 *structPtr);
u8 SwitchConditionSummaryIndex(u8 moveUp);
void CopyMonNameGenderLocation(s16 id, u8 arg1);
void GetMonConditionGraphData(s16 id, u8 arg1);
void ConditionGraphDrawMonPic(s16 id, u8 arg1);
static void InitPartyConditionListParameters(void);
static void InitSearchResultsConditionList(void);
static u32 HandlePartyConditionInput(struct PokenavSub11 *);
static u32 GetConditionReturnCallback(struct PokenavSub11 *);
static u32 ConditionMenu_OpenMarkingsMenu(struct PokenavSub11 *);
static u8 ConditionGraphHandleDpadInput(struct PokenavSub11 *);
static u8 SwitchConditionSummaryIndex(bool8);
static void CopyMonNameGenderLocation(s16, u8);
static void GetMonConditionGraphData(s16, u8);
static void ConditionGraphDrawMonPic(s16, u8);
// code
bool32 PokenavCallback_Init_PartyCondition(void)
{
struct PokenavSub11 *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_CONDITION_GRAPH, sizeof(struct PokenavSub11));
@ -53,7 +52,7 @@ bool32 PokenavCallback_Init_PartyCondition(void)
if (structPtr == NULL)
return FALSE;
InitConditionGraphData(&structPtr->conditionData);
ConditionGraph_Init(&structPtr->conditionData);
InitPartyConditionListParameters();
gKeyRepeatStartDelay = 20;
structPtr->callback = HandlePartyConditionInput;
@ -67,8 +66,8 @@ bool32 PokenavCallback_Init_ConditionGraphFromSearch(void)
if (structPtr == NULL)
return FALSE;
InitConditionGraphData(&structPtr->conditionData);
sub_81CD9F8();
ConditionGraph_Init(&structPtr->conditionData);
InitSearchResultsConditionList();
gKeyRepeatStartDelay = 20;
structPtr->callback = HandlePartyConditionInput;
return TRUE;
@ -81,7 +80,7 @@ u32 GetPartyConditionCallback(void)
return structPtr->callback(structPtr);
}
u32 HandlePartyConditionInput(struct PokenavSub11 *structPtr)
static u32 HandlePartyConditionInput(struct PokenavSub11 *structPtr)
{
struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
u32 ret = ConditionGraphHandleDpadInput(structPtr);
@ -117,7 +116,7 @@ u32 HandlePartyConditionInput(struct PokenavSub11 *structPtr)
return ret;
}
u32 ConditionMenu_OpenMarkingsMenu(struct PokenavSub11 *structPtr)
static u32 ConditionMenu_OpenMarkingsMenu(struct PokenavSub11 *structPtr)
{
struct PokenavSub18 *monListPtr;
u8 markings;
@ -143,7 +142,7 @@ u32 ConditionMenu_OpenMarkingsMenu(struct PokenavSub11 *structPtr)
return ret;
}
u32 GetConditionReturnCallback(struct PokenavSub11 *structPtr)
static u32 GetConditionReturnCallback(struct PokenavSub11 *structPtr)
{
if (structPtr->searchMode == 0)
return POKENAV_CONDITION_MENU;
@ -160,7 +159,7 @@ void FreePartyConditionSubstruct1(void)
FreePokenavSubstruct(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
}
u8 ConditionGraphHandleDpadInput(struct PokenavSub11 *structPtr)
static u8 ConditionGraphHandleDpadInput(struct PokenavSub11 *structPtr)
{
struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
u8 ret = 0;
@ -170,7 +169,7 @@ u8 ConditionGraphHandleDpadInput(struct PokenavSub11 *structPtr)
if (structPtr->searchMode == 0 || monListPtr->currIndex != 0)
{
PlaySE(SE_SELECT);
ret = SwitchConditionSummaryIndex(1);
ret = SwitchConditionSummaryIndex(TRUE);
}
}
else if (JOY_HELD(DPAD_DOWN))
@ -178,14 +177,14 @@ u8 ConditionGraphHandleDpadInput(struct PokenavSub11 *structPtr)
if (structPtr->searchMode == 0 || monListPtr->currIndex < monListPtr->listCount - 1)
{
PlaySE(SE_SELECT);
ret = SwitchConditionSummaryIndex(0);
ret = SwitchConditionSummaryIndex(FALSE);
}
}
return ret;
}
u8 SwitchConditionSummaryIndex(u8 moveUp)
static u8 SwitchConditionSummaryIndex(u8 moveUp)
{
u16 r7;
bool8 wasNotLastMon, isNotLastMon;
@ -235,28 +234,28 @@ bool32 LoadPartyConditionMenuGfx(void)
switch (structPtr->state)
{
case 0:
CopyMonNameGenderLocation(monListPtr->currIndex, 0);
CopyMonNameGenderLocation(monListPtr->currIndex, CONDITION_MON_0);
break;
case 1:
GetMonConditionGraphData(monListPtr->currIndex, 0);
GetMonConditionGraphData(monListPtr->currIndex, CONDITION_MON_0);
break;
case 2:
ConditionGraphDrawMonPic(monListPtr->currIndex, 0);
ConditionGraphDrawMonPic(monListPtr->currIndex, CONDITION_MON_0);
break;
case 3:
if (monListPtr->listCount == 1)
{
structPtr->mark = 0;
structPtr->unk6787 = 0;
structPtr->unk6788 = 0;
structPtr->mark = CONDITION_MON_0;
structPtr->unk6787 = CONDITION_MON_0;
structPtr->unk6788 = CONDITION_MON_0;
structPtr->state = 0;
return TRUE;
}
else
{
structPtr->mark = 0;
structPtr->unk6787 = 1;
structPtr->unk6788 = 2;
structPtr->mark = CONDITION_MON_0;
structPtr->unk6787 = CONDITION_MON_1;
structPtr->unk6788 = CONDITION_MON_2;
}
break;
// These were probably ternaries just like cases 7-9, but couldn't match it any other way.
@ -264,28 +263,28 @@ bool32 LoadPartyConditionMenuGfx(void)
var = monListPtr->currIndex + 1;
if (var >= monListPtr->listCount)
var = 0;
CopyMonNameGenderLocation(var, 1);
CopyMonNameGenderLocation(var, CONDITION_MON_1);
break;
case 5:
var = monListPtr->currIndex + 1;
if (var >= monListPtr->listCount)
var = 0;
GetMonConditionGraphData(var, 1);
GetMonConditionGraphData(var, CONDITION_MON_1);
break;
case 6:
var = monListPtr->currIndex + 1;
if (var >= monListPtr->listCount)
var = 0;
ConditionGraphDrawMonPic(var, 1);
ConditionGraphDrawMonPic(var, CONDITION_MON_1);
break;
case 7:
CopyMonNameGenderLocation((monListPtr->currIndex - 1 >= 0) ? monListPtr->currIndex - 1 : monListPtr->listCount - 1, 2);
CopyMonNameGenderLocation((monListPtr->currIndex - 1 >= 0) ? monListPtr->currIndex - 1 : monListPtr->listCount - 1, CONDITION_MON_2);
break;
case 8:
GetMonConditionGraphData((monListPtr->currIndex - 1 >= 0) ? monListPtr->currIndex - 1 : monListPtr->listCount - 1, 2);
GetMonConditionGraphData((monListPtr->currIndex - 1 >= 0) ? monListPtr->currIndex - 1 : monListPtr->listCount - 1, CONDITION_MON_2);
break;
case 9:
ConditionGraphDrawMonPic((monListPtr->currIndex - 1 >= 0) ? monListPtr->currIndex - 1 : monListPtr->listCount - 1, 2);
ConditionGraphDrawMonPic((monListPtr->currIndex - 1 >= 0) ? monListPtr->currIndex - 1 : monListPtr->listCount - 1, CONDITION_MON_2);
structPtr->state = 0;
return TRUE;
}
@ -326,15 +325,15 @@ u8 *CopyStringLeftAlignedToConditionData(u8 *dst, const u8 *src, s16 n)
return dst;
}
u8 *CopyMonConditionNameGender(u8 *str, u16 id, bool8 arg3)
static u8 *CopyConditionMonNameGender(u8 *str, u16 listId, bool8 arg3)
{
u16 boxId, monId, gender, species, level, lvlDigits;
struct BoxPokemon *boxMon;
u8 *txtPtr, *str_;
struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
boxId = monListPtr->monData[id].boxId;
monId = monListPtr->monData[id].monId;
boxId = monListPtr->monData[listId].boxId;
monId = monListPtr->monData[listId].monId;
*(str++) = EXT_CTRL_CODE_BEGIN;
*(str++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
*(str++) = TEXT_COLOR_BLUE;
@ -417,39 +416,39 @@ u8 *CopyMonConditionNameGender(u8 *str, u16 id, bool8 arg3)
return str_;
}
void CopyMonNameGenderLocation(s16 id, u8 arg1)
static void CopyMonNameGenderLocation(s16 listId, u8 loadId)
{
u16 boxId, i;
struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
if (id != (IsConditionMenuSearchMode() != 0 ? monListPtr->listCount : monListPtr->listCount - 1))
if (listId != (IsConditionMenuSearchMode() != 0 ? monListPtr->listCount : monListPtr->listCount - 1))
{
CopyMonConditionNameGender(structPtr->nameBuffer[arg1], id, FALSE);
boxId = monListPtr->monData[id].boxId;
structPtr->searchLocBuffer[arg1][0] = EXT_CTRL_CODE_BEGIN;
structPtr->searchLocBuffer[arg1][1] = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
structPtr->searchLocBuffer[arg1][2] = TEXT_COLOR_BLUE;
structPtr->searchLocBuffer[arg1][3] = TEXT_COLOR_TRANSPARENT;
structPtr->searchLocBuffer[arg1][4] = TEXT_COLOR_LIGHT_BLUE;
CopyConditionMonNameGender(structPtr->nameText[loadId], listId, FALSE);
boxId = monListPtr->monData[listId].boxId;
structPtr->locationText[loadId][0] = EXT_CTRL_CODE_BEGIN;
structPtr->locationText[loadId][1] = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
structPtr->locationText[loadId][2] = TEXT_COLOR_BLUE;
structPtr->locationText[loadId][3] = TEXT_COLOR_TRANSPARENT;
structPtr->locationText[loadId][4] = TEXT_COLOR_LIGHT_BLUE;
if (boxId == TOTAL_BOXES_COUNT)
CopyStringLeftAlignedToConditionData(&structPtr->searchLocBuffer[arg1][5], gText_InParty, 8);
CopyStringLeftAlignedToConditionData(&structPtr->locationText[loadId][5], gText_InParty, BOX_NAME_LENGTH);
else
CopyStringLeftAlignedToConditionData(&structPtr->searchLocBuffer[arg1][5], GetBoxNamePtr(boxId), BOX_NAME_LENGTH);
CopyStringLeftAlignedToConditionData(&structPtr->locationText[loadId][5], GetBoxNamePtr(boxId), BOX_NAME_LENGTH);
}
else
{
for (i = 0; i < 12; i++)
structPtr->nameBuffer[arg1][i] = CHAR_SPACE;
structPtr->nameBuffer[arg1][i] = EOS;
structPtr->nameText[loadId][i] = CHAR_SPACE;
structPtr->nameText[loadId][i] = EOS;
for (i = 0; i < 8; i++)
structPtr->searchLocBuffer[arg1][i] = CHAR_SPACE;
structPtr->searchLocBuffer[arg1][i] = EOS;
for (i = 0; i < BOX_NAME_LENGTH; i++)
structPtr->locationText[loadId][i] = CHAR_SPACE;
structPtr->locationText[loadId][i] = EOS;
}
}
void InitPartyConditionListParameters(void)
static void InitPartyConditionListParameters(void)
{
u16 i, count;
struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
@ -475,62 +474,60 @@ void InitPartyConditionListParameters(void)
structPtr->state = 0;
}
void sub_81CD9F8(void)
static void InitSearchResultsConditionList(void)
{
struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
structPtr->searchMode = 1;
structPtr->state = 0;
}
void GetMonConditionGraphData(s16 id, u8 arg1)
static void GetMonConditionGraphData(s16 listId, u8 loadId)
{
u16 boxId, monId, i;
struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
if (id != (IsConditionMenuSearchMode() != 0 ? monListPtr->listCount : monListPtr->listCount - 1))
if (listId != (IsConditionMenuSearchMode() != 0 ? monListPtr->listCount : monListPtr->listCount - 1))
{
boxId = monListPtr->monData[id].boxId;
monId = monListPtr->monData[id].monId;
structPtr->conditionData.stat[arg1][0] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_COOL, NULL);
structPtr->conditionData.stat[arg1][1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_TOUGH, NULL);
structPtr->conditionData.stat[arg1][2] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SMART, NULL);
structPtr->conditionData.stat[arg1][3] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_CUTE, NULL);
structPtr->conditionData.stat[arg1][4] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_BEAUTY, NULL);
structPtr->sheen[arg1] = (GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) != 255)
? GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) / 29u
: 9;
structPtr->monMarks[arg1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_MARKINGS, NULL);
sub_81D2754(structPtr->conditionData.stat[arg1], structPtr->conditionData.unk14[arg1]);
boxId = monListPtr->monData[listId].boxId;
monId = monListPtr->monData[listId].monId;
structPtr->conditionData.conditions[loadId][CONDITION_COOL] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_COOL, NULL);
structPtr->conditionData.conditions[loadId][CONDITION_TOUGH] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_TOUGH, NULL);
structPtr->conditionData.conditions[loadId][CONDITION_SMART] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SMART, NULL);
structPtr->conditionData.conditions[loadId][CONDITION_CUTE] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_CUTE, NULL);
structPtr->conditionData.conditions[loadId][CONDITION_BEAUTY] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_BEAUTY, NULL);
structPtr->numSparkles[loadId] = GET_NUM_CONDITION_SPARKLES(GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL));
structPtr->monMarks[loadId] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_MARKINGS, NULL);
sub_81D2754(structPtr->conditionData.conditions[loadId], structPtr->conditionData.unk14[loadId]);
}
else
{
for (i = 0; i < FLAVOR_COUNT; i++)
for (i = 0; i < CONDITION_COUNT; i++)
{
structPtr->conditionData.stat[arg1][i] = 0;
structPtr->conditionData.unk14[arg1][i].unk0 = 155;
structPtr->conditionData.unk14[arg1][i].unk2 = 91;
structPtr->conditionData.conditions[loadId][i] = 0;
structPtr->conditionData.unk14[loadId][i].unk0 = CONDITION_GRAPH_CENTER_X;
structPtr->conditionData.unk14[loadId][i].unk2 = CONDITION_GRAPH_UNK;
}
}
}
void ConditionGraphDrawMonPic(s16 index, u8 arg1)
static void ConditionGraphDrawMonPic(s16 listId, u8 loadId)
{
u16 boxId, monId, species;
u32 personality, tid;
struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
if (index == (IsConditionMenuSearchMode() != 0 ? monListPtr->listCount : monListPtr->listCount - 1))
if (listId == (IsConditionMenuSearchMode() != 0 ? monListPtr->listCount : monListPtr->listCount - 1))
return;
boxId = monListPtr->monData[index].boxId;
monId = monListPtr->monData[index].monId;
boxId = monListPtr->monData[listId].boxId;
monId = monListPtr->monData[listId].monId;
species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES2, NULL);
tid = GetBoxOrPartyMonData(boxId, monId, MON_DATA_OT_ID, NULL);
personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL);
LoadSpecialPokePic(&gMonFrontPicTable[species], structPtr->monPicGfx[arg1], species, personality, TRUE);
LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, tid, personality), structPtr->monPal[arg1]);
LoadSpecialPokePic(&gMonFrontPicTable[species], structPtr->monPicGfx[loadId], species, personality, TRUE);
LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, tid, personality), structPtr->monPal[loadId]);
}
u16 GetMonListCount(void)
@ -563,16 +560,16 @@ u8 sub_81CDC9C(void)
return structPtr->monIndex;
}
void *GetConditionMonPicGfx(u8 id)
void *GetConditionMonPicGfx(u8 loadId)
{
struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
return structPtr->monPicGfx[id];
return structPtr->monPicGfx[loadId];
}
void *GetConditionMonPal(u8 id)
void *GetConditionMonPal(u8 loadId)
{
struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
return structPtr->monPal[id];
return structPtr->monPal[loadId];
}
u8 sub_81CDCEC(void)
@ -581,16 +578,16 @@ u8 sub_81CDCEC(void)
return structPtr->unk6789;
}
u8 *GetConditionMonNameBuffer(u8 id)
u8 *GetConditionMonNameText(u8 loadId)
{
struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
return structPtr->nameBuffer[id];
return structPtr->nameText[loadId];
}
u8 *GetConditionMonLocationBuffer(u8 id)
u8 *GetConditionMonLocationText(u8 loadId)
{
struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
return structPtr->searchLocBuffer[id];
return structPtr->locationText[loadId];
}
u16 GetConditionMonDataBuffer(void)
@ -617,8 +614,8 @@ u8 TryGetMonMarkId(void)
return 0;
}
u8 GetMonSheen(void)
u8 GetNumConditionMonSparkles(void)
{
struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
return structPtr->sheen[structPtr->mark];
return structPtr->numSparkles[structPtr->mark];
}

View File

@ -15,22 +15,22 @@
#include "strings.h"
#include "text.h"
u32 LoopedTask_TransitionMons(s32);
u32 LoopedTask_ExitPartyConditionMenu(s32);
u32 LoopedTask_MoveCursorNoTransition(s32);
u32 LoopedTask_SlideMonOut(s32);
u32 LoopedTask_OpenMonMarkingsWindow(s32);
u32 LoopedTask_CloseMonMarkingsWindow(s32);
static u32 LoopedTask_TransitionMons(s32);
static u32 LoopedTask_ExitPartyConditionMenu(s32);
static u32 LoopedTask_MoveCursorNoTransition(s32);
static u32 LoopedTask_SlideMonOut(s32);
static u32 LoopedTask_OpenMonMarkingsWindow(s32);
static u32 LoopedTask_CloseMonMarkingsWindow(s32);
BSS_DATA u8 gUnknown_030012BC;
static u8 sUnknown_030012BC;
const u16 gConditionGraphData_Pal[] = INCBIN_U16("graphics/pokenav/condition/graph_data.gbapal");
const u16 gConditionText_Pal[] = INCBIN_U16("graphics/pokenav/condition/text.gbapal");
const u32 gUnknown_08623228[] = INCBIN_U32("graphics/pokenav/8623228.4bpp.lz");
const u32 sConditionGraph_Tilemap[] = INCBIN_U32("graphics/pokenav/862323C.bin.lz");
const u16 sConditionGraphMonMarkingsPal[] = INCBIN_U16("graphics/pokenav/8623338.gbapal");
static const u32 sUnknown_08623228[] = INCBIN_U32("graphics/pokenav/condition/graph_data.4bpp.lz");
static const u32 sConditionGraph_Tilemap[] = INCBIN_U32("graphics/pokenav/862323C.bin.lz");
static const u16 sConditionGraphMonMarkingsPal[] = INCBIN_U16("graphics/pokenav/8623338.gbapal");
const struct BgTemplate sPartyConditionBgTemplates[3] =
static const struct BgTemplate sPartyConditionBgTemplates[3] =
{
{
.bg = 1,
@ -61,7 +61,7 @@ const struct BgTemplate sPartyConditionBgTemplates[3] =
}
};
const struct WindowTemplate sMonNameGenderWindowTemplate =
static const struct WindowTemplate sMonNameGenderWindowTemplate =
{
.bg = 1,
.tilemapLeft = 13,
@ -72,7 +72,7 @@ const struct WindowTemplate sMonNameGenderWindowTemplate =
.baseBlock = 2
};
const struct WindowTemplate sConditionGraphListIdWindowTemplate =
static const struct WindowTemplate sConditionGraphListIdWindowTemplate =
{
.bg = 1,
.tilemapLeft = 1,
@ -83,7 +83,7 @@ const struct WindowTemplate sConditionGraphListIdWindowTemplate =
.baseBlock = 0x36
};
const struct WindowTemplate sUnusedWindowTemplate1 =
static const struct WindowTemplate sUnusedWindowTemplate1 =
{
.bg = 1,
.tilemapLeft = 1,
@ -94,7 +94,7 @@ const struct WindowTemplate sUnusedWindowTemplate1 =
.baseBlock = 0x44
};
const struct WindowTemplate sUnusedWindowTemplate2 =
static const struct WindowTemplate sUnusedWindowTemplate2 =
{
.bg = 1,
.tilemapLeft = 13,
@ -105,7 +105,7 @@ const struct WindowTemplate sUnusedWindowTemplate2 =
.baseBlock = 0x44
};
const LoopedTask sPartyConditionLoopedTaskFuncs[] =
static const LoopedTask sPartyConditionLoopedTaskFuncs[] =
{
[PARTY_CONDITION_FUNC_NONE] = NULL,
[PARTY_CONDITION_FUNC_SLIDE_MON_IN] = LoopedTask_TransitionMons,
@ -132,26 +132,26 @@ struct Pokenav7Struct
u8 listIndexWindowId;
u8 unusedWindowId1;
u8 unusedWindowId2;
struct MonMarkingsMenu monMarks;
struct MonMarkingsMenu marksMenu;
struct Sprite *monMarksSprite;
struct Sprite *conditionSparkleSprites[MAX_CONDITION_SPARKLES];
u8 windowModeState;
u8 filler2[0x38ac - 0x2909];
u8 filler2[0xFA3];
};
extern s8 GetMonMarkIndex(void); // This function's declaration here is s8 vs. u8 in pokenav_conditions_1.c
u32 LoopedTask_OpenPartyConditionGraph(s32 state);
u32 GetPartyConditionLoopedTaskActive(void);
void CreateConditionMonPic(u8 var);
void CreateMonMarkingsOrPokeballIndicators(void);
void CopyUnusedConditionWindowsToVram(void);
bool32 UpdateConditionGraphWindows(u8 a0, u16 a1, bool8 a2);
void sub_81CEE44(void);
void DoConditionGraphTransition(void);
void sub_81CEEC8(void);
void sub_81CEE68(void);
void ToggleBg2(bool8 showBg);
static u32 LoopedTask_OpenPartyConditionGraph(s32 state);
static u32 GetPartyConditionLoopedTaskActive(void);
static void CreateConditionMonPic(u8 var);
static void CreateMonMarkingsOrPokeballIndicators(void);
static void CopyUnusedConditionWindowsToVram(void);
static bool32 UpdateConditionGraphWindows(u8 a0, u16 a1, bool8 a2);
static void sub_81CEE44(void);
static void DoConditionGraphTransition(void);
static void sub_81CEEC8(void);
static void sub_81CEE68(void);
static void ToggleGraphData(bool8 showBg);
// code
bool32 OpenPartyConditionMenu(void)
@ -181,13 +181,13 @@ u32 IsPartyConditionLoopedTaskActive(void)
return structPtr->callback();
}
u32 GetPartyConditionLoopedTaskActive(void)
static u32 GetPartyConditionLoopedTaskActive(void)
{
struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
return IsLoopedTaskActive(structPtr->loopedTaskId);
}
u32 LoopedTask_OpenPartyConditionGraph(s32 state)
static u32 LoopedTask_OpenPartyConditionGraph(s32 state)
{
struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
@ -213,7 +213,7 @@ u32 LoopedTask_OpenPartyConditionGraph(s32 state)
case 2:
if (FreeTempTileDataBuffersIfPossible())
return LT_PAUSE;
DecompressAndCopyTileDataToVram(2, gUnknown_08623228, 0, 0, 0);
DecompressAndCopyTileDataToVram(2, sUnknown_08623228, 0, 0, 0);
return LT_INC_AND_PAUSE;
case 3:
if (FreeTempTileDataBuffersIfPossible())
@ -320,14 +320,14 @@ u32 LoopedTask_OpenPartyConditionGraph(s32 state)
return LT_PAUSE;
return LT_INC_AND_PAUSE;
case 19:
ToggleBg2(TRUE);
ToggleGraphData(TRUE);
return LT_INC_AND_PAUSE;
case 20:
if (!TryUpdateConditionMonTransitionOn(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
if (!ConditionGraph_UpdateMonEnter(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
{
ResetConditionSparkleSprites(structPtr->conditionSparkleSprites);
if (IsConditionMenuSearchMode() == TRUE || GetConditionGraphCurrentMonIndex() != GetMonListCount())
CreateConditionSparkleSprites(structPtr->conditionSparkleSprites, structPtr->monPicSpriteId, GetMonSheen());
CreateConditionSparkleSprites(structPtr->conditionSparkleSprites, structPtr->monPicSpriteId, GetNumConditionMonSparkles());
return LT_FINISH;
}
@ -337,7 +337,7 @@ u32 LoopedTask_OpenPartyConditionGraph(s32 state)
return LT_FINISH;
}
u32 LoopedTask_ExitPartyConditionMenu(s32 state)
static u32 LoopedTask_ExitPartyConditionMenu(s32 state)
{
struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
@ -348,9 +348,9 @@ u32 LoopedTask_ExitPartyConditionMenu(s32 state)
DestroyConditionSparkleSprites(structPtr->conditionSparkleSprites);
return LT_INC_AND_CONTINUE;
case 1:
if (TryUpdateConditionMonTransitionOff(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
if (ConditionGraph_UpdateMonExit(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
return 2;
ToggleBg2(FALSE);
ToggleGraphData(FALSE);
return LT_INC_AND_CONTINUE;
case 2:
PokenavFadeScreen(0);
@ -370,10 +370,10 @@ u32 LoopedTask_ExitPartyConditionMenu(s32 state)
return LT_FINISH;
}
u32 LoopedTask_TransitionMons(s32 state)
static u32 LoopedTask_TransitionMons(s32 state)
{
struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
struct ConditionGraph *unkPtr = GetConditionGraphDataPtr();
struct ConditionGraph *graph = GetConditionGraphDataPtr();
switch (state)
{
@ -388,7 +388,7 @@ u32 LoopedTask_TransitionMons(s32 state)
DestroyConditionSparkleSprites(structPtr->conditionSparkleSprites);
return LT_INC_AND_CONTINUE;
case 3:
TransitionConditionGraph(unkPtr);
TransitionConditionGraph(graph);
return LT_INC_AND_CONTINUE;
case 4:
if (!MoveConditionMonOffscreen(&structPtr->monTransitionX))
@ -411,14 +411,14 @@ u32 LoopedTask_TransitionMons(s32 state)
return LT_INC_AND_CONTINUE;
return LT_PAUSE;
case 9:
unkPtr = GetConditionGraphDataPtr();
if (!TryUpdateConditionMonTransitionOn(unkPtr, &structPtr->monTransitionX))
graph = GetConditionGraphDataPtr();
if (!ConditionGraph_UpdateMonEnter(graph, &structPtr->monTransitionX))
{
ResetConditionSparkleSprites(structPtr->conditionSparkleSprites);
if (IsConditionMenuSearchMode() != TRUE && GetConditionGraphCurrentMonIndex() == GetMonListCount())
return LT_INC_AND_CONTINUE;
CreateConditionSparkleSprites(structPtr->conditionSparkleSprites, structPtr->monPicSpriteId, GetMonSheen());
CreateConditionSparkleSprites(structPtr->conditionSparkleSprites, structPtr->monPicSpriteId, GetNumConditionMonSparkles());
return LT_INC_AND_CONTINUE;
}
return LT_PAUSE;
@ -427,7 +427,7 @@ u32 LoopedTask_TransitionMons(s32 state)
return LT_FINISH;
}
u32 LoopedTask_MoveCursorNoTransition(s32 state)
static u32 LoopedTask_MoveCursorNoTransition(s32 state)
{
struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
@ -459,10 +459,10 @@ u32 LoopedTask_MoveCursorNoTransition(s32 state)
return LT_INC_AND_CONTINUE;
return LT_PAUSE;
case 8:
if (!TryUpdateConditionMonTransitionOn(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
if (!ConditionGraph_UpdateMonEnter(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
{
ResetConditionSparkleSprites(structPtr->conditionSparkleSprites);
CreateConditionSparkleSprites(structPtr->conditionSparkleSprites, structPtr->monPicSpriteId, GetMonSheen());
CreateConditionSparkleSprites(structPtr->conditionSparkleSprites, structPtr->monPicSpriteId, GetNumConditionMonSparkles());
return LT_INC_AND_CONTINUE;
}
return LT_PAUSE;
@ -471,7 +471,7 @@ u32 LoopedTask_MoveCursorNoTransition(s32 state)
return LT_FINISH;
}
u32 LoopedTask_SlideMonOut(s32 state)
static u32 LoopedTask_SlideMonOut(s32 state)
{
struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
@ -488,7 +488,7 @@ u32 LoopedTask_SlideMonOut(s32 state)
DestroyConditionSparkleSprites(structPtr->conditionSparkleSprites);
return LT_INC_AND_CONTINUE;
case 3:
if (!TryUpdateConditionMonTransitionOff(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
if (!ConditionGraph_UpdateMonExit(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
return LT_INC_AND_CONTINUE;
return LT_PAUSE;
case 4:
@ -509,7 +509,7 @@ u32 LoopedTask_SlideMonOut(s32 state)
return LT_FINISH;
}
u32 LoopedTask_OpenMonMarkingsWindow(s32 state)
static u32 LoopedTask_OpenMonMarkingsWindow(s32 state)
{
switch (state)
{
@ -528,7 +528,7 @@ u32 LoopedTask_OpenMonMarkingsWindow(s32 state)
return LT_FINISH;
}
u32 LoopedTask_CloseMonMarkingsWindow(s32 state)
static u32 LoopedTask_CloseMonMarkingsWindow(s32 state)
{
switch (state)
{
@ -555,7 +555,7 @@ static u8 *UnusedPrintNumberString(u8 *dst, u16 num)
return txtPtr;
}
bool32 UpdateConditionGraphWindows(u8 mode, u16 bufferIndex, bool8 winMode)
static bool32 UpdateConditionGraphWindows(u8 mode, u16 bufferIndex, bool8 winMode)
{
u8 text[32];
const u8 *str;
@ -571,23 +571,23 @@ bool32 UpdateConditionGraphWindows(u8 mode, u16 bufferIndex, bool8 winMode)
case 1:
if (GetConditionGraphCurrentMonIndex() != GetMonListCount() - 1 || IsConditionMenuSearchMode() == TRUE)
{
str = GetConditionMonNameBuffer(bufferIndex);
str = GetConditionMonNameText(bufferIndex);
AddTextPrinterParameterized(structPtr->nameGenderWindowId, FONT_NORMAL, str, 0, 1, 0, NULL);
}
break;
case 2:
if (IsConditionMenuSearchMode() == TRUE)
{
str = GetConditionMonLocationBuffer(bufferIndex);
str = GetConditionMonLocationText(bufferIndex);
AddTextPrinterParameterized(structPtr->nameGenderWindowId, FONT_NORMAL, str, 0, 17, 0, NULL);
text[0] = EXT_CTRL_CODE_BEGIN;
text[1] = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
text[2] = TEXT_COLOR_BLUE;
text[3] = TEXT_COLOR_TRANSPARENT;
text[4] = TEXT_COLOR_LIGHT_BLUE;
StringCopy(text + 5, gText_Number2);
StringCopy(&text[5], gText_Number2);
AddTextPrinterParameterized(structPtr->listIndexWindowId, FONT_NORMAL, text, 4, 1, 0, NULL);
ConvertIntToDecimalStringN(text + 5, GetConditionMonDataBuffer(), STR_CONV_MODE_RIGHT_ALIGN, 4);
ConvertIntToDecimalStringN(&text[5], GetConditionMonDataBuffer(), STR_CONV_MODE_RIGHT_ALIGN, 4);
AddTextPrinterParameterized(structPtr->listIndexWindowId, FONT_NORMAL, text, 28, 1, 0, NULL);
}
break;
@ -624,7 +624,7 @@ bool32 UpdateConditionGraphWindows(u8 mode, u16 bufferIndex, bool8 winMode)
return FALSE;
}
void CopyUnusedConditionWindowsToVram(void)
static void CopyUnusedConditionWindowsToVram(void)
{
struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
@ -643,9 +643,9 @@ void sub_81CE964(struct Sprite *sprite)
void HighlightCurrentPartyIndexPokeball(struct Sprite *sprite)
{
if (GetConditionGraphCurrentMonIndex() == GetMonListCount() - 1)
sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x65);
sprite->oam.paletteNum = IndexOfSpritePaletteTag(TAG_CONDITION_BALL);
else
sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x66);
sprite->oam.paletteNum = IndexOfSpritePaletteTag(TAG_CONDITION_CANCEL);
}
void MonMarkingsCallback(struct Sprite *sprite)
@ -653,7 +653,7 @@ void MonMarkingsCallback(struct Sprite *sprite)
StartSpriteAnim(sprite, TryGetMonMarkId());
}
void CreateMonMarkingsOrPokeballIndicators(void)
static void CreateMonMarkingsOrPokeballIndicators(void)
{
struct SpriteSheet sprSheets[4];
struct SpriteTemplate sprTemplate;
@ -666,17 +666,17 @@ void CreateMonMarkingsOrPokeballIndicators(void)
LoadConditionSelectionIcons(sprSheets, &sprTemplate, sprPals);
if (IsConditionMenuSearchMode() == TRUE)
{
structPtr->monMarks.baseTileTag = 0x6A;
structPtr->monMarks.basePaletteTag = 0x6A;
InitMonMarkingsMenu(&structPtr->monMarks);
structPtr->marksMenu.baseTileTag = TAG_CONDITION_MARKINGS_MENU;
structPtr->marksMenu.basePaletteTag = TAG_CONDITION_MARKINGS_MENU;
InitMonMarkingsMenu(&structPtr->marksMenu);
BufferMonMarkingsMenuTiles();
sprite = CreateMonMarkingAllCombosSprite(0x69, 0x69, sConditionGraphMonMarkingsPal);
sprite = CreateMonMarkingAllCombosSprite(TAG_CONDITION_MON_MARKINGS, TAG_CONDITION_MON_MARKINGS, sConditionGraphMonMarkingsPal);
sprite->oam.priority = 3;
sprite->x = 192;
sprite->y = 32;
sprite->callback = MonMarkingsCallback;
structPtr->monMarksSprite = sprite;
PokenavFillPalette(IndexOfSpritePaletteTag(0x69), 0);
PokenavFillPalette(IndexOfSpritePaletteTag(TAG_CONDITION_MON_MARKINGS), 0);
}
else
{
@ -698,7 +698,7 @@ void CreateMonMarkingsOrPokeballIndicators(void)
}
}
sprTemplate.tileTag = 0x67;
sprTemplate.tileTag = TAG_CONDITION_BALL_PLACEHOLDER;
sprTemplate.callback = SpriteCallbackDummy;
for (; i < 6; i++)
{
@ -714,7 +714,7 @@ void CreateMonMarkingsOrPokeballIndicators(void)
}
}
sprTemplate.tileTag = 0x66;
sprTemplate.tileTag = TAG_CONDITION_CANCEL;
sprTemplate.callback = HighlightCurrentPartyIndexPokeball;
spriteId = CreateSprite(&sprTemplate, 222, (i * 20) + 8, 0);
if (spriteId != MAX_SPRITES)
@ -742,28 +742,28 @@ void sub_81CEBF4(struct Pokenav7Struct *structPtr)
if (IsConditionMenuSearchMode() == TRUE)
{
DestroySprite(structPtr->monMarksSprite);
FreeSpriteTilesByTag(0x6A);
FreeSpriteTilesByTag(0x69);
FreeSpritePaletteByTag(0x6A);
FreeSpritePaletteByTag(0x69);
FreeSpriteTilesByTag(TAG_CONDITION_MARKINGS_MENU);
FreeSpriteTilesByTag(TAG_CONDITION_MON_MARKINGS);
FreeSpritePaletteByTag(TAG_CONDITION_MARKINGS_MENU);
FreeSpritePaletteByTag(TAG_CONDITION_MON_MARKINGS);
}
else
{
for (i = 0; i < 7; i++)
DestroySprite(&gSprites[structPtr->partyPokeballSpriteIds[i]]);
FreeSpriteTilesByTag(0x65);
FreeSpriteTilesByTag(0x66);
FreeSpriteTilesByTag(0x67);
FreeSpritePaletteByTag(0x65);
FreeSpritePaletteByTag(0x66);
FreeSpriteTilesByTag(TAG_CONDITION_BALL);
FreeSpriteTilesByTag(TAG_CONDITION_CANCEL);
FreeSpriteTilesByTag(TAG_CONDITION_BALL_PLACEHOLDER);
FreeSpritePaletteByTag(TAG_CONDITION_BALL);
FreeSpritePaletteByTag(TAG_CONDITION_CANCEL);
}
if (structPtr->monPicSpriteId != SPRITE_NONE)
{
DestroySprite(&gSprites[structPtr->monPicSpriteId]);
FreeSpriteTilesByTag(0x64);
FreeSpritePaletteByTag(0x64);
FreeSpriteTilesByTag(TAG_CONDITION_MON);
FreeSpritePaletteByTag(TAG_CONDITION_MON);
}
}
@ -795,7 +795,7 @@ void MonPicGfxSpriteCallback(struct Sprite *sprite)
sprite->x = structPtr->monTransitionX + 38;
}
void CreateConditionMonPic(u8 id)
static void CreateConditionMonPic(u8 id)
{
struct SpriteTemplate sprTemplate;
struct SpriteSheet sprSheet;
@ -814,15 +814,15 @@ void CreateConditionMonPic(u8 id)
structPtr->monPicSpriteId = spriteId;
if (spriteId == MAX_SPRITES)
{
FreeSpriteTilesByTag(0x64);
FreeSpritePaletteByTag(0x64);
FreeSpriteTilesByTag(TAG_CONDITION_MON);
FreeSpritePaletteByTag(TAG_CONDITION_MON);
structPtr->monPicSpriteId = SPRITE_NONE;
}
else
{
structPtr->monPicSpriteId = spriteId;
gSprites[structPtr->monPicSpriteId].callback = MonPicGfxSpriteCallback;
structPtr->unk181C = (void*)(VRAM) + 0x10000 + (structPtr->monGfxTileStart * 32);
structPtr->unk181C = (void*)VRAM + BG_VRAM_SIZE + (structPtr->monGfxTileStart * 32);
structPtr->monPalIndex = (structPtr->monPalIndex * 16) + 0x100;
}
}
@ -833,22 +833,22 @@ void CreateConditionMonPic(u8 id)
}
}
void sub_81CEE44(void)
static void sub_81CEE44(void)
{
struct ConditionGraph *unk = GetConditionGraphDataPtr();
struct ConditionGraph *graph = GetConditionGraphDataPtr();
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
sub_81D2108(unk);
sub_81D2108(graph);
ScanlineEffect_InitHBlankDmaTransfer();
}
void sub_81CEE68(void)
static void sub_81CEE68(void)
{
SetPokenavVBlankCallback();
}
void ToggleBg2(bool8 showBg)
static void ToggleGraphData(bool8 showBg)
{
if (showBg)
ShowBg(2);
@ -856,17 +856,17 @@ void ToggleBg2(bool8 showBg)
HideBg(2);
}
void DoConditionGraphTransition(void)
static void DoConditionGraphTransition(void)
{
struct ConditionGraph *conditionPtr = GetConditionGraphDataPtr();
u8 id = GetMonMarkIndex();
gUnknown_030012BC = id;
sUnknown_030012BC = id;
sub_81D1F84(conditionPtr, conditionPtr->unk14[3], conditionPtr->unk14[id]);
TransitionConditionGraph(conditionPtr);
}
void sub_81CEEC8(void)
static void sub_81CEEC8(void)
{
struct ConditionGraph *conditionPtr = GetConditionGraphDataPtr();
@ -879,7 +879,7 @@ u8 GetMonMarkingsData(void)
struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
if (IsConditionMenuSearchMode() == 1)
return structPtr->monMarks.markings;
return structPtr->marksMenu.markings;
else
return 0;
}

View File

@ -314,10 +314,10 @@ static const struct SpriteTemplate sMatchCallBlueLightSpriteTemplate =
static const struct ScanlineEffectParams sPokenavMainMenuScanlineEffectParams =
{
(void *)REG_ADDR_WIN0H,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
1,
0
&REG_WIN0H,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
1,
0
};
static bool32 PlayerHasTrainerRematches(void)

View File

@ -57,14 +57,14 @@ struct UsePokeblockSession
u8 mainState;
u8 unused1;
u8 timer;
u8 statId;
u8 condition;
u8 numEnhancements;
u8 unused2;
bool8 monInTopHalf;
u8 conditionsBeforeBlock[FLAVOR_COUNT];
u8 conditionsAfterBlock[FLAVOR_COUNT];
u8 enhancements[FLAVOR_COUNT];
s16 pokeblockStatBoosts[FLAVOR_COUNT];
u8 conditionsBeforeBlock[CONDITION_COUNT];
u8 conditionsAfterBlock[CONDITION_COUNT];
u8 enhancements[CONDITION_COUNT];
s16 pokeblockStatBoosts[CONDITION_COUNT];
u8 numSelections; // num in party + 1 (for Cancel)
u8 curSelection;
bool8 (*loadNewSelection)(void);
@ -142,7 +142,7 @@ static void LoadAndCreateUpDownSprites(void);
static void CalculateNumAdditionalSparkles(u8);
static void PrintFirstEnhancement(void);
static bool8 TryPrintNextEnhancement(void);
static void BufferEnhancedStatText(u8 *, u8, s16);
static void BufferEnhancedText(u8 *, u8, s16);
static void PrintMenuWindowText(const u8 *);
static void CalculatePokeblockEffectiveness(struct Pokeblock *, struct Pokemon *);
static void SpriteCB_UpDown(struct Sprite *);
@ -178,22 +178,22 @@ static const u32 sGraphData_Tilemap[] = INCBIN_U32("graphics/pokeblock/use_scree
// The condition/flavors aren't listed in their normal order in this file, they're listed as shown on the graph going counter-clockwise
// Normally they would go Cool/Spicy, Beauty/Dry, Cute/Sweet, Smart/Bitter, Tough/Sour (also graph order, but clockwise)
static const u32 sMonDataConditions[FLAVOR_COUNT] =
static const u32 sConditionToMonData[CONDITION_COUNT] =
{
MON_DATA_COOL,
MON_DATA_TOUGH,
MON_DATA_SMART,
MON_DATA_CUTE,
MON_DATA_BEAUTY
[CONDITION_COOL] = MON_DATA_COOL,
[CONDITION_TOUGH] = MON_DATA_TOUGH,
[CONDITION_SMART] = MON_DATA_SMART,
[CONDITION_CUTE] = MON_DATA_CUTE,
[CONDITION_BEAUTY] = MON_DATA_BEAUTY
};
static const u8 sFlavors[FLAVOR_COUNT] =
static const u8 sConditionToFlavor[CONDITION_COUNT] =
{
FLAVOR_SPICY,
FLAVOR_SOUR,
FLAVOR_BITTER,
FLAVOR_SWEET,
FLAVOR_DRY
[CONDITION_COOL] = FLAVOR_SPICY,
[CONDITION_TOUGH] = FLAVOR_SOUR,
[CONDITION_SMART] = FLAVOR_BITTER,
[CONDITION_CUTE] = FLAVOR_SWEET,
[CONDITION_BEAUTY] = FLAVOR_DRY
};
static const u8 sNatureTextColors[] =
@ -286,13 +286,13 @@ static const struct WindowTemplate sUsePokeblockYesNoWinTemplate =
.baseBlock = 0x83
};
static const u8 *const sContestStatNames[] =
static const u8 *const sConditionNames[CONDITION_COUNT] =
{
gText_Coolness,
gText_Toughness,
gText_Smartness,
gText_Cuteness,
gText_Beauty3
[CONDITION_COOL] = gText_Coolness,
[CONDITION_TOUGH] = gText_Toughness,
[CONDITION_SMART] = gText_Smartness,
[CONDITION_CUTE] = gText_Cuteness,
[CONDITION_BEAUTY] = gText_Beauty3
};
static const struct SpriteSheet sSpriteSheet_UpDown =
@ -305,13 +305,13 @@ static const struct SpritePalette sSpritePalette_UpDown =
gUsePokeblockUpDown_Pal, TAG_UP_DOWN
};
static const s16 sUpDownCoordsOnGraph[FLAVOR_COUNT][2] =
static const s16 sUpDownCoordsOnGraph[CONDITION_COUNT][2] =
{
{156, 36},
{117, 59},
{117, 118},
{197, 118},
{197, 59}
[CONDITION_COOL] = {156, 36},
[CONDITION_TOUGH] = {117, 59},
[CONDITION_SMART] = {117, 118},
[CONDITION_CUTE] = {197, 118},
[CONDITION_BEAUTY] = {197, 59}
};
static const struct OamData sOam_UpDown =
@ -487,7 +487,7 @@ static void LoadUsePokeblockMenu(void)
{
case 0:
sMenu->curMonSpriteId = SPRITE_NONE;
InitConditionGraphData(&sMenu->graph);
ConditionGraph_Init(&sMenu->graph);
sInfo->mainState++;
break;
case 1:
@ -537,7 +537,7 @@ static void LoadUsePokeblockMenu(void)
sInfo->mainState++;
break;
case 11:
sub_81D2754(sMenu->graph.stat[0], sMenu->graph.unk14[0]);
sub_81D2754(sMenu->graph.conditions[0], sMenu->graph.unk14[0]);
InitConditionGraphState(&sMenu->graph);
sInfo->mainState++;
break;
@ -767,8 +767,6 @@ static void ShowUsePokeblockMenuForResults(void)
static void ShowPokeblockResults(void)
{
u8 var;
switch (sInfo->mainState)
{
case 0:
@ -789,8 +787,7 @@ static void ShowPokeblockResults(void)
sInfo->mainState++;
break;
case 3:
var = TransitionConditionGraph(&sMenu->graph);
if (!var)
if (!TransitionConditionGraph(&sMenu->graph))
{
CalculateNumAdditionalSparkles(GetPartyIdFromSelectionId(sMenu->info.curSelection));
if (sMenu->info.curSelection != sMenu->info.numSelections - 1)
@ -906,16 +903,16 @@ static void PrintFirstEnhancement(void)
DrawTextBorderOuter(WIN_TEXT, 151, 14);
FillWindowPixelBuffer(WIN_TEXT, 17);
for (sInfo->statId = 0; sInfo->statId < FLAVOR_COUNT; sInfo->statId++)
for (sInfo->condition = 0; sInfo->condition < CONDITION_COUNT; sInfo->condition++)
{
if (sInfo->enhancements[sInfo->statId] != 0)
if (sInfo->enhancements[sInfo->condition] != 0)
break;
}
if (sInfo->statId < FLAVOR_COUNT)
BufferEnhancedStatText(gStringVar4, sInfo->statId, sInfo->enhancements[sInfo->statId]);
if (sInfo->condition < CONDITION_COUNT)
BufferEnhancedText(gStringVar4, sInfo->condition, sInfo->enhancements[sInfo->condition]);
else
BufferEnhancedStatText(gStringVar4, sInfo->statId, 0);
BufferEnhancedText(gStringVar4, sInfo->condition, 0);
PrintMenuWindowText(gStringVar4);
PutWindowTilemap(WIN_TEXT);
@ -928,20 +925,20 @@ static bool8 TryPrintNextEnhancement(void)
while (1)
{
sInfo->statId++;
if (sInfo->statId < FLAVOR_COUNT)
sInfo->condition++;
if (sInfo->condition < CONDITION_COUNT)
{
if (sInfo->enhancements[sInfo->statId] != 0)
if (sInfo->enhancements[sInfo->condition] != 0)
break;
}
else
{
sInfo->statId = FLAVOR_COUNT;
sInfo->condition = CONDITION_COUNT;
return FALSE;
}
}
BufferEnhancedStatText(gStringVar4, sInfo->statId, sInfo->enhancements[sInfo->statId]);
BufferEnhancedText(gStringVar4, sInfo->condition, sInfo->enhancements[sInfo->condition]);
PrintMenuWindowText(gStringVar4);
CopyWindowToVram(WIN_TEXT, COPYWIN_GFX);
@ -969,7 +966,7 @@ static void PrintMenuWindowText(const u8 *message)
AddTextPrinterParameterized(WIN_TEXT, FONT_NORMAL, gStringVar4, 0, 1, 0, NULL);
}
static void BufferEnhancedStatText(u8 *dest, u8 statId, s16 enhancement)
static void BufferEnhancedText(u8 *dest, u8 condition, s16 enhancement)
{
switch (enhancement)
{
@ -979,7 +976,7 @@ static void BufferEnhancedStatText(u8 *dest, u8 statId, s16 enhancement)
case -32768 ... -1: // if < 0
if (enhancement)
dest[(u16)enhancement] += 0; // something you can't imagine
StringCopy(dest, sContestStatNames[statId]);
StringCopy(dest, sConditionNames[condition]);
StringAppend(dest, gText_WasEnhanced);
break;
case 0:
@ -992,36 +989,36 @@ static void GetMonConditions(struct Pokemon *mon, u8 *data)
{
u16 i;
for (i = 0; i < FLAVOR_COUNT; i++)
data[i] = GetMonData(mon, sMonDataConditions[i]);
for (i = 0; i < CONDITION_COUNT; i++)
data[i] = GetMonData(mon, sConditionToMonData[i]);
}
static void AddPokeblockToConditions(struct Pokeblock *pokeblock, struct Pokemon *mon)
{
u16 i;
s16 cstat;
s16 stat;
u8 data;
if (GetMonData(mon, MON_DATA_SHEEN) != 255)
if (GetMonData(mon, MON_DATA_SHEEN) != MAX_SHEEN)
{
CalculatePokeblockEffectiveness(pokeblock, mon);
for (i = 0; i < FLAVOR_COUNT; i++)
for (i = 0; i < CONDITION_COUNT; i++)
{
data = GetMonData(mon, sMonDataConditions[i]);
cstat = data + sInfo->pokeblockStatBoosts[i];
if (cstat < 0)
cstat = 0;
if (cstat > 255)
cstat = 255;
data = cstat;
SetMonData(mon, sMonDataConditions[i], &data);
data = GetMonData(mon, sConditionToMonData[i]);
stat = data + sInfo->pokeblockStatBoosts[i];
if (stat < 0)
stat = 0;
if (stat > MAX_CONDITION)
stat = MAX_CONDITION;
data = stat;
SetMonData(mon, sConditionToMonData[i], &data);
}
cstat = (u8)(GetMonData(mon, MON_DATA_SHEEN)) + pokeblock->feel;
if (cstat > 255)
cstat = 255;
stat = (u8)(GetMonData(mon, MON_DATA_SHEEN)) + pokeblock->feel;
if (stat > MAX_SHEEN)
stat = MAX_SHEEN;
data = cstat;
data = stat;
SetMonData(mon, MON_DATA_SHEEN, &data);
}
}
@ -1035,19 +1032,19 @@ static void CalculateConditionEnhancements(void)
GetMonConditions(mon, sInfo->conditionsBeforeBlock);
AddPokeblockToConditions(sInfo->pokeblock, mon);
GetMonConditions(mon, sInfo->conditionsAfterBlock);
for (i = 0; i < FLAVOR_COUNT; i++)
for (i = 0; i < CONDITION_COUNT; i++)
sInfo->enhancements[i] = sInfo->conditionsAfterBlock[i] - sInfo->conditionsBeforeBlock[i];
}
static void CalculatePokeblockEffectiveness(struct Pokeblock *pokeblock, struct Pokemon *mon)
{
s8 i, direction, taste;
s8 i, direction, flavor;
sInfo->pokeblockStatBoosts[0] = pokeblock->spicy;
sInfo->pokeblockStatBoosts[1] = pokeblock->sour;
sInfo->pokeblockStatBoosts[2] = pokeblock->bitter;
sInfo->pokeblockStatBoosts[3] = pokeblock->sweet;
sInfo->pokeblockStatBoosts[4] = pokeblock->dry;
sInfo->pokeblockStatBoosts[CONDITION_COOL] = pokeblock->spicy;
sInfo->pokeblockStatBoosts[CONDITION_TOUGH] = pokeblock->sour;
sInfo->pokeblockStatBoosts[CONDITION_SMART] = pokeblock->bitter;
sInfo->pokeblockStatBoosts[CONDITION_CUTE] = pokeblock->sweet;
sInfo->pokeblockStatBoosts[CONDITION_BEAUTY] = pokeblock->dry;
if (gPokeblockGain > 0)
direction = 1;
@ -1056,7 +1053,7 @@ static void CalculatePokeblockEffectiveness(struct Pokeblock *pokeblock, struct
else
return;
for (i = 0; i < FLAVOR_COUNT; i++)
for (i = 0; i < CONDITION_COUNT; i++)
{
s16 amount = sInfo->pokeblockStatBoosts[i];
s8 boost = amount / 10;
@ -1064,9 +1061,9 @@ static void CalculatePokeblockEffectiveness(struct Pokeblock *pokeblock, struct
if (amount % 10 >= 5) // round to the nearest
boost++;
taste = GetMonFlavorRelation(mon, sFlavors[i]);
if (taste == direction)
sInfo->pokeblockStatBoosts[i] += boost * taste;
flavor = GetMonFlavorRelation(mon, sConditionToFlavor[i]);
if (flavor == direction)
sInfo->pokeblockStatBoosts[i] += boost * flavor;
}
}
@ -1075,7 +1072,7 @@ static bool8 IsSheenMaxed(void)
if (GetBoxOrPartyMonData(sMenu->party[sMenu->info.curSelection].boxId,
sMenu->party[sMenu->info.curSelection].monId,
MON_DATA_SHEEN,
NULL) == 255)
NULL) == MAX_SHEEN)
return TRUE;
else
return FALSE;
@ -1125,7 +1122,7 @@ static void LoadAndCreateUpDownSprites(void)
LoadSpritePalette(&sSpritePalette_UpDown);
sInfo->numEnhancements = 0;
for (i = 0; i < FLAVOR_COUNT; i++)
for (i = 0; i < CONDITION_COUNT; i++)
{
if (sInfo->enhancements[i] != 0)
{
@ -1487,7 +1484,7 @@ static bool8 LoadNewSelection_CancelToMon(void)
sMenu->info.helperState++;
break;
case 2:
if (!TryUpdateConditionMonTransitionOn(&sMenu->graph, &sMenu->curMonXOffset))
if (!ConditionGraph_UpdateMonEnter(&sMenu->graph, &sMenu->curMonXOffset))
{
// Load the new adjacent pokemon (not the one being shown)
LoadMonInfo(sMenu->toLoadSelection, sMenu->toLoadId);
@ -1514,7 +1511,7 @@ static bool8 LoadNewSelection_MonToCancel(void)
switch (sMenu->info.helperState)
{
case 0:
if (!TryUpdateConditionMonTransitionOff(&sMenu->graph, &sMenu->curMonXOffset))
if (!ConditionGraph_UpdateMonExit(&sMenu->graph, &sMenu->curMonXOffset))
sMenu->info.helperState++;
break;
case 1:
@ -1550,7 +1547,7 @@ static bool8 LoadNewSelection_MonToMon(void)
sMenu->info.helperState++;
break;
case 2:
if (!TryUpdateConditionMonTransitionOn(&sMenu->graph, &sMenu->curMonXOffset))
if (!ConditionGraph_UpdateMonEnter(&sMenu->graph, &sMenu->curMonXOffset))
{
// Load the new adjacent pokemon (not the one being shown)
LoadMonInfo(sMenu->toLoadSelection, sMenu->toLoadId);
@ -1599,10 +1596,7 @@ static void SpriteCB_SelectionIconCancel(struct Sprite *sprite)
static void CalculateNumAdditionalSparkles(u8 monIndex)
{
u8 sheen = GetMonData(&gPlayerParty[monIndex], MON_DATA_SHEEN);
sMenu->numSparkles[sMenu->curLoadId] = (sheen != 255)
? sheen / (255 / (MAX_CONDITION_SPARKLES - 1) + 1)
: MAX_CONDITION_SPARKLES - 1;
sMenu->numSparkles[sMenu->curLoadId] = GET_NUM_CONDITION_SPARKLES(sheen);
}
static void LoadConditionGfx(void)