Merge branch 'master' into misc-tasks

This commit is contained in:
GriffinR 2023-10-07 17:25:20 -04:00 committed by GitHub
commit f01a6afc98
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
167 changed files with 1341 additions and 1306 deletions

View File

@ -24,8 +24,14 @@ Other disassembly and/or decompilation projects:
* [**Pokémon Pinball: Ruby & Sapphire**](https://github.com/pret/pokepinballrs)
* [**Pokémon FireRed and LeafGreen**](https://github.com/pret/pokefirered)
* [**Pokémon Mystery Dungeon: Red Rescue Team**](https://github.com/pret/pmd-red)
* [**Pokémon Diamond and Pearl**](https://github.com/pret/pokediamond)
* [**Pokémon Platinum**](https://github.com/pret/pokeplatinum)
* [**Pokémon HeartGold and SoulSilver**](https://github.com/pret/pokeheartgold)
* [**Pokémon Mystery Dungeon: Explorers of Sky**](https://github.com/pret/pmd-sky)
## Contacts
You can find us on [Discord](https://discord.gg/d5dubZ3) and [IRC](https://web.libera.chat/?#pret).
You can find us on:
* [Discord (PRET, #pokeemerald)](https://discord.gg/d5dubZ3)
* [IRC](https://web.libera.chat/?#pret)

View File

@ -1,3 +1,6 @@
#ifndef GUARD_CONSTANTS_GBA_CONSTANTS_INC
#define GUARD_CONSTANTS_GBA_CONSTANTS_INC
.set PSR_USR_MODE, 0x00000010
.set PSR_FIQ_MODE, 0x00000011
.set PSR_IRQ_MODE, 0x00000012
@ -511,3 +514,5 @@
.set BLDCNT_TGT2_OBJ, 1 << 12
.set BLDCNT_TGT2_BD, 1 << 13
.set BLDCNT_TGT2_ALL, BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD
#endif @ GUARD_CONSTANTS_GBA_CONSTANTS_INC

View File

@ -1,3 +1,6 @@
#ifndef GUARD_CONSTANTS_GLOBAL_INC
#define GUARD_CONSTANTS_GLOBAL_INC
.set TRUE, 1
.set FALSE, 0
@ -20,3 +23,5 @@
.set OBJ_IMAGE_ANIM_H_FLIP, 1 << 6
.set OBJ_IMAGE_ANIM_V_FLIP, 1 << 7
#endif @ GUARD_CONSTANTS_GLOBAL_INC

View File

@ -1,3 +1,6 @@
#ifndef GUARD_CONSTANTS_M4A_CONSTANTS_INC
#define GUARD_CONSTANTS_M4A_CONSTANTS_INC
.equiv ID_NUMBER, 0x68736d53
.equiv PCM_DMA_BUF_SIZE, 1584
@ -250,3 +253,5 @@
struct_field o_CgbChannel_nextChannelPointer, 4
struct_field o_CgbChannel_dummy4, 8
struct_field CgbChannel_size, 0
#endif @ GUARD_CONSTANTS_M4A_CONSTANTS_INC

View File

@ -1,3 +1,6 @@
#ifndef GUARD_CONSTANTS_TMS_HMS_INC
#define GUARD_CONSTANTS_TMS_HMS_INC
#include "constants/tms_hms.h"
/* Expands to:
@ -15,3 +18,5 @@ FOREACH_TM(EQUIV_TM)
FOREACH_HM(EQUIV_HM)
#undef EQUIV_TM
#undef EQUIV_HM
#endif @ GUARD_CONSTANTS_TMS_HMS_INC

View File

@ -298,7 +298,7 @@ u8 *ConvertIntToHexStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8
if (state == WRITING_DIGITS)
{
char *out = dest++;
u8 *out = dest++;
if (digit <= 0xF)
c = sDigits[digit];
@ -309,7 +309,7 @@ u8 *ConvertIntToHexStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8
}
else if (digit != 0 || powerOfSixteen == 1)
{
char *out;
u8 *out;
state = WRITING_DIGITS;
out = dest++;

View File

@ -554,8 +554,7 @@ void DecompressGlyphTile(const void *src_, void *dest_)
*(dest++) = ((sFontHalfRowLookupTable[sFontHalfRowOffsets[temp & 0xFF]]) << 16) | (sFontHalfRowLookupTable[sFontHalfRowOffsets[temp >> 8]]);
}
// Unused
static u8 GetLastTextColor(u8 colorType)
static u8 UNUSED GetLastTextColor(u8 colorType)
{
switch (colorType)
{
@ -1224,8 +1223,7 @@ static u16 RenderText(struct TextPrinter *textPrinter)
return RENDER_FINISH;
}
// Unused
static u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
static u32 UNUSED GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
{
int i;
u8 width;

View File

@ -411,7 +411,7 @@ void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u
BlitBitmapRect4Bit(&sourceRect, &destRect, srcX, srcY, destX, destY, rectWidth, rectHeight, 0);
}
static void BlitBitmapRectToWindowWithColorKey(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 colorKey)
static void UNUSED BlitBitmapRectToWindowWithColorKey(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 colorKey)
{
struct Bitmap sourceRect;
struct Bitmap destRect;

View File

Before

Width:  |  Height:  |  Size: 430 B

After

Width:  |  Height:  |  Size: 430 B

View File

@ -392,7 +392,7 @@ struct BattleStruct
u8 expGetterBattlerId;
u8 unused_5;
u8 absentBattlerFlags;
u8 palaceFlags; // First 4 bits are "is < 50% HP and not asleep" for each battler, last 4 bits are selected moves to pass to AI
u8 palaceFlags; // First 4 bits are "is <= 50% HP and not asleep" for each battler, last 4 bits are selected moves to pass to AI
u8 field_93; // related to choosing pokemon?
u8 wallyBattleState;
u8 wallyMovesState;
@ -440,6 +440,11 @@ struct BattleStruct
u8 alreadyStatusedMoveAttempt; // As bits for battlers; For example when using Thunder Wave on an already paralyzed pokemon.
};
// The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider,
// and 1 flag per battler to indicate whether the battler is awake and at <= 50% HP (which affects move choice).
// The assert below is to ensure palaceFlags is large enough to store these flags without overlap.
STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLERS_COUNT + MAX_MON_MOVES, PalaceFlagsTooSmall)
#define F_DYNAMIC_TYPE_1 (1 << 6)
#define F_DYNAMIC_TYPE_2 (1 << 7)
#define DYNAMIC_TYPE_MASK (F_DYNAMIC_TYPE_1 - 1)

View File

@ -192,14 +192,26 @@ u8 GetBattlerSpriteDefault_Y(u8 battlerId);
u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
// battle_anim_status_effects.c
#define STAT_ANIM_PLUS1 15
#define STAT_ANIM_PLUS2 39
#define STAT_ANIM_MINUS1 22
#define STAT_ANIM_MINUS2 46
#define STAT_ANIM_PLUS1 14
#define STAT_ANIM_PLUS2 38
#define STAT_ANIM_MINUS1 21
#define STAT_ANIM_MINUS2 45
#define STAT_ANIM_MULTIPLE_PLUS1 55
#define STAT_ANIM_MULTIPLE_PLUS2 56
#define STAT_ANIM_MULTIPLE_MINUS1 57
#define STAT_ANIM_MULTIPLE_MINUS2 58
enum {
STAT_ANIM_PAL_ATK,
STAT_ANIM_PAL_DEF,
STAT_ANIM_PAL_ACC,
STAT_ANIM_PAL_SPEED,
STAT_ANIM_PAL_EVASION,
STAT_ANIM_PAL_SPATK,
STAT_ANIM_PAL_SPDEF,
STAT_ANIM_PAL_MULTIPLE = 0xFF
};
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
// battle_anim_ground.c

View File

@ -80,6 +80,7 @@
#define TRAINER_ID_LENGTH 4
#define MAX_MON_MOVES 4
#define ALL_MOVES_MASK ((1 << MAX_MON_MOVES) - 1)
#define CONTESTANT_COUNT 4
#define CONTEST_CATEGORY_COOL 0

View File

@ -707,7 +707,7 @@
#define R_BUTTON 0x0100
#define L_BUTTON 0x0200
#define KEYS_MASK 0x03FF
#define KEY_INTR_ENABLE 0x0400
#define KEY_INTR_ENABLE 0x4000
#define KEY_OR_INTR 0x0000
#define KEY_AND_INTR 0x8000
#define DPAD_ANY ((DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN))

View File

@ -85,6 +85,12 @@
#define SAFE_DIV(a, b) ((a) / (b))
#endif
// The below macro does a%n, but (to match) will switch to a&(n-1) if n is a power of 2.
// There are cases where GF does a&(n-1) where we would really like to have a%n, because
// if n is changed to a value that isn't a power of 2 then a&(n-1) is unlikely to work as
// intended, and a%n for powers of 2 isn't always optimized to use &.
#define MOD(a, n)(((n) & ((n)-1)) ? ((a) % (n)) : ((a) & ((n)-1)))
// Extracts the upper 16 bits of a 32-bit number
#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)

View File

@ -881,13 +881,13 @@ extern const u32 gMonShinyPalette_Starmie[];
extern const u32 gMonStillFrontPic_Starmie[];
extern const u8 gMonIcon_Starmie[];
extern const u8 gMonFootprint_Starmie[];
extern const u32 gMonFrontPic_Mrmime[];
extern const u32 gMonPalette_Mrmime[];
extern const u32 gMonBackPic_Mrmime[];
extern const u32 gMonShinyPalette_Mrmime[];
extern const u32 gMonStillFrontPic_Mrmime[];
extern const u8 gMonIcon_Mrmime[];
extern const u8 gMonFootprint_Mrmime[];
extern const u32 gMonFrontPic_MrMime[];
extern const u32 gMonPalette_MrMime[];
extern const u32 gMonBackPic_MrMime[];
extern const u32 gMonShinyPalette_MrMime[];
extern const u32 gMonStillFrontPic_MrMime[];
extern const u8 gMonIcon_MrMime[];
extern const u8 gMonFootprint_MrMime[];
extern const u32 gMonFrontPic_Scyther[];
extern const u32 gMonPalette_Scyther[];
extern const u32 gMonBackPic_Scyther[];
@ -4769,17 +4769,18 @@ extern const u32 gMetalShineTilemap[];
extern const u32 gBattleAnimMaskImage_Curse[];
extern const u32 gBattleAnimMaskTilemap_Curse[];
extern const u32 gBattleStatMask_Gfx[];
extern const u32 gBattleStatMask1_Tilemap[];
extern const u32 gBattleStatMask2_Tilemap[];
extern const u32 gBattleStatMask1_Pal[];
extern const u32 gBattleStatMask2_Pal[];
extern const u32 gBattleStatMask3_Pal[];
extern const u32 gBattleStatMask4_Pal[];
extern const u32 gBattleStatMask5_Pal[];
extern const u32 gBattleStatMask6_Pal[];
extern const u32 gBattleStatMask7_Pal[];
extern const u32 gBattleStatMask8_Pal[];
extern const u32 gStatAnim_Gfx[];
extern const u32 gStatAnim_Increase_Tilemap[];
extern const u32 gStatAnim_Decrease_Tilemap[];
extern const u32 gStatAnim_Defense_Pal[];
extern const u32 gStatAnim_Attack_Pal[];
extern const u32 gStatAnim_Accuracy_Pal[];
extern const u32 gStatAnim_Speed_Pal[];
extern const u32 gStatAnim_Multiple_Pal[];
extern const u32 gStatAnim_Evasion_Pal[];
extern const u32 gStatAnim_SpAttack_Pal[];
extern const u32 gStatAnim_SpDefense_Pal[];
extern const u32 gContestInterfaceGfx[];
extern const u32 gContestAudienceGfx[];

View File

@ -202,7 +202,8 @@ struct BoxPokemon
u8 isBadEgg:1;
u8 hasSpecies:1;
u8 isEgg:1;
u8 unused:5;
u8 blockBoxRS:1; // Unused, but Pokémon Box Ruby & Sapphire will refuse to deposit a Pokémon with this flag set
u8 unused:4;
u8 otName[PLAYER_NAME_LENGTH];
u8 markings;
u16 checksum;

View File

@ -9,6 +9,10 @@
#define SIIRTCINFO_24HOUR 0x40 // 0: 12-hour mode, 1: 24-hour mode
#define SIIRTCINFO_POWER 0x80 // power on or power failure occurred
#define HOURS_PER_DAY 24
#define MINUTES_PER_HOUR 60
#define SECONDS_PER_MINUTE 60
enum
{
MONTH_JAN = 1,
@ -22,7 +26,8 @@ enum
MONTH_SEP,
MONTH_OCT,
MONTH_NOV,
MONTH_DEC
MONTH_DEC,
MONTH_COUNT = MONTH_DEC
};
struct SiiRtcInfo

View File

@ -229,7 +229,7 @@ u8 rfu_LMAN_CHILD_connectParent(u16 parentId, u16 connect_period)
return 0;
}
static void rfu_LMAN_PARENT_stopWaitLinkRecoveryAndDisconnect(u8 bm_targetSlot)
static void UNUSED rfu_LMAN_PARENT_stopWaitLinkRecoveryAndDisconnect(u8 bm_targetSlot)
{
u8 i;
@ -1295,7 +1295,7 @@ void rfu_LMAN_setMSCCallback(void (*MSC_callback_p)(u16))
rfu_setMSCCallback(rfu_LMAN_MSC_callback);
}
static void rfu_LMAN_setLMANCallback(void (*func)(u8, u8))
static void UNUSED rfu_LMAN_setLMANCallback(void (*func)(u8, u8))
{
lman.LMAN_callback = func;
}
@ -1315,7 +1315,7 @@ u8 rfu_LMAN_setLinkRecovery(u8 enable_flag, u16 recovery_period)
return 0;
}
static u8 rfu_LMAN_setNIFailCounterLimit(u16 NI_failCounter_limit)
static u8 UNUSED rfu_LMAN_setNIFailCounterLimit(u16 NI_failCounter_limit)
{
if (gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag)
{
@ -1327,7 +1327,7 @@ static u8 rfu_LMAN_setNIFailCounterLimit(u16 NI_failCounter_limit)
return 0;
}
static u8 rfu_LMAN_setFastSearchParent(u8 enable_flag)
static u8 UNUSED rfu_LMAN_setFastSearchParent(u8 enable_flag)
{
if (lman.state == LMAN_STATE_START_SEARCH_PARENT || lman.state == LMAN_STATE_POLL_SEARCH_PARENT || lman.state == LMAN_STATE_END_SEARCH_PARENT)
{

View File

@ -123,7 +123,7 @@ const u32 gMonFrontPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/anim_fro
const u32 gMonFrontPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/anim_front.4bpp.lz");
const u32 gMonFrontPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/anim_front.4bpp.lz");
const u32 gMonFrontPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/anim_front.4bpp.lz");
const u32 gMonFrontPic_Mrmime[] = INCBIN_U32("graphics/pokemon/mr_mime/anim_front.4bpp.lz");
const u32 gMonFrontPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/anim_front.4bpp.lz");
const u32 gMonFrontPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/anim_front.4bpp.lz");
const u32 gMonFrontPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/anim_front.4bpp.lz");
const u32 gMonFrontPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/anim_front.4bpp.lz");

View File

@ -623,6 +623,9 @@ static void CreateApprenticeMenu(u8 menu)
default:
left = 0;
top = 0;
#ifdef UBFIX
return;
#endif
break;
}
@ -1278,8 +1281,7 @@ const u8 *GetApprenticeNameInLanguage(u32 apprenticeId, s32 language)
}
}
// Functionally unused
static void Task_SwitchToFollowupFuncAfterButtonPress(u8 taskId)
static void UNUSED Task_SwitchToFollowupFuncAfterButtonPress(u8 taskId)
{
if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
SwitchTaskToFollowupFunc(taskId);
@ -1302,8 +1304,7 @@ static void ExecuteFuncAfterButtonPress(void (*func)(void))
gTasks[taskId].data[1] = (u32)(func) >> 16;
}
// Unused
static void ExecuteFollowupFuncAfterButtonPress(TaskFunc task)
static void UNUSED ExecuteFollowupFuncAfterButtonPress(TaskFunc task)
{
u8 taskId = CreateTask(Task_SwitchToFollowupFuncAfterButtonPress, 1);
SetTaskFuncWithFollowupFunc(taskId, Task_SwitchToFollowupFuncAfterButtonPress, task);

View File

@ -478,9 +478,9 @@ static u8 ChooseMoveOrAction_Doubles(void)
else
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
BattleAI_SetupAIData(gBattleStruct->palaceFlags >> 4);
BattleAI_SetupAIData(gBattleStruct->palaceFlags >> MAX_BATTLERS_COUNT);
else
BattleAI_SetupAIData((1 << MAX_MON_MOVES) - 1);
BattleAI_SetupAIData(ALL_MOVES_MASK);
gBattlerTarget = i;
@ -2252,7 +2252,7 @@ static void AIStackPushVar(const u8 *var)
gBattleResources->AI_ScriptsStack->ptr[gBattleResources->AI_ScriptsStack->size++] = var;
}
static void AIStackPushVar_cursor(void)
static void UNUSED AIStackPushVar_cursor(void)
{
gBattleResources->AI_ScriptsStack->ptr[gBattleResources->AI_ScriptsStack->size++] = gAIScriptPtr;
}

View File

@ -443,7 +443,7 @@ static void AnimMissileArc_Step(struct Sprite *sprite)
else
{
s16 tempData[8];
u16 *data = sprite->data;
s16 *data = sprite->data;
u16 x1 = sprite->x;
s16 x2 = sprite->x2;
u16 y1 = sprite->y;

View File

@ -2765,7 +2765,7 @@ static void AnimConstrictBinding(struct Sprite *sprite)
static void AnimConstrictBinding_Step1(struct Sprite *sprite)
{
u8 spriteId;
u8 UNUSED spriteId;
if ((u16)gBattleAnimArgs[7] == 0xFFFF)
{
@ -2778,7 +2778,7 @@ static void AnimConstrictBinding_Step1(struct Sprite *sprite)
static void AnimConstrictBinding_Step2(struct Sprite *sprite)
{
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
u8 UNUSED spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
if (!sprite->data[2])
sprite->data[0] += 11;
else
@ -3884,7 +3884,7 @@ static void AnimSlice_Step(struct Sprite *sprite)
}
}
static void UnusedFlickerAnim(struct Sprite *sprite)
static void UNUSED UnusedFlickerAnim(struct Sprite *sprite)
{
if (sprite->data[2] > 1)
{
@ -4734,7 +4734,7 @@ static void AnimFalseSwipeSlice(struct Sprite *sprite)
static void AnimFalseSwipePositionedSlice(struct Sprite *sprite)
{
sprite->x = sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 0xFFD0 + gBattleAnimArgs[0];
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) - 48 + gBattleAnimArgs[0];
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
StartSpriteAnim(sprite, 1);
sprite->data[0] = 0;
@ -4917,8 +4917,7 @@ void AnimTask_Conversion2AlphaBlend(u8 taskId)
}
}
// Unused
static void AnimTask_HideBattlersHealthbox(u8 taskId)
static void UNUSED AnimTask_HideBattlersHealthbox(u8 taskId)
{
u8 i;
for (i = 0; i < gBattlersCount; i++)
@ -4933,8 +4932,7 @@ static void AnimTask_HideBattlersHealthbox(u8 taskId)
DestroyAnimVisualTask(taskId);
}
// Unused
static void AnimTask_ShowBattlersHealthbox(u8 taskId)
static void UNUSED AnimTask_ShowBattlersHealthbox(u8 taskId)
{
u8 i;
for (i = 0; i < gBattlersCount; i++)

View File

@ -2551,8 +2551,8 @@ static void AnimPencil_Step(struct Sprite *sprite)
static void AnimBlendThinRing(struct Sprite *sprite)
{
u8 battler = 0;
u16 sp0 = 0;
u16 sp1 = 0;
s16 x = 0;
s16 y = 0;
u8 r4;
if (gBattleAnimArgs[2] == 0)
@ -2563,16 +2563,16 @@ static void AnimBlendThinRing(struct Sprite *sprite)
r4 = gBattleAnimArgs[3] ^ 1;
if (IsDoubleBattle() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler)))
{
SetAverageBattlerPositions(battler, r4, &sp0, &sp1);
SetAverageBattlerPositions(battler, r4, &x, &y);
if (r4 == 0)
r4 = GetBattlerSpriteCoord(battler, BATTLER_COORD_X);
else
r4 = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
gBattleAnimArgs[0] -= (sp0 - r4) - gBattleAnimArgs[0]; // This is weird.
gBattleAnimArgs[0] -= (x - r4) - gBattleAnimArgs[0]; // This is weird.
else
gBattleAnimArgs[0] = sp0 - r4;
gBattleAnimArgs[0] = x - r4;
}
sprite->callback = AnimSpriteOnMonPos;

View File

@ -1428,8 +1428,7 @@ static void FadeScreenToWhite_Step(u8 taskId)
static void AnimSpikes(struct Sprite *sprite)
{
u16 x;
u16 y;
s16 x, y;
InitSpritePosToAnimAttacker(sprite, TRUE);
SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &x, &y);
@ -4758,8 +4757,8 @@ static void AnimMeteorMashStar_Step(struct Sprite *sprite)
// arg 4: duration
static void AnimMeteorMashStar(struct Sprite *sprite)
{
s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); // unused local variable
s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); // unused local variable
s16 UNUSED y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
s16 UNUSED x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER || IsContest())
{

View File

@ -1220,8 +1220,7 @@ void AnimSkyAttackBird_Step(struct Sprite *sprite)
DestroySpriteAndMatrix(sprite);
}
// Unused
static void AnimTask_SetAttackerVisibility(u8 taskId)
static void UNUSED AnimTask_SetAttackerVisibility(u8 taskId)
{
if (gBattleAnimArgs[0] == 0)
{

View File

@ -485,9 +485,8 @@ void TranslateSpriteInGrowingCircle(struct Sprite *sprite)
}
}
// Unused
// Exact shape depends on arguments. Can move in a figure-8-like pattern, or circular, etc.
static void TranslateSpriteInLissajousCurve(struct Sprite *sprite)
static void UNUSED TranslateSpriteInLissajousCurve(struct Sprite *sprite)
{
if (sprite->sDuration)
{
@ -639,8 +638,7 @@ static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite)
UpdateMonIconFrame(sprite);
}
// Unused
static void TranslateSpriteToBattleTargetPos(struct Sprite *sprite)
static void UNUSED TranslateSpriteToBattleTargetPos(struct Sprite *sprite)
{
sprite->sStartX = sprite->x + sprite->x2;
sprite->sStartY = sprite->y + sprite->y2;
@ -707,8 +705,7 @@ void DestroySpriteAndMatrix(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
// Unused
static void TranslateSpriteToBattleAttackerPos(struct Sprite *sprite)
static void UNUSED TranslateSpriteToBattleAttackerPos(struct Sprite *sprite)
{
sprite->sStartX = sprite->x + sprite->x2;
sprite->sStartY = sprite->y + sprite->y2;
@ -723,8 +720,7 @@ static void TranslateSpriteToBattleAttackerPos(struct Sprite *sprite)
#undef sStartY
#undef sTargetY
// Unused
static void EndUnkPaletteAnim(struct Sprite *sprite)
static void UNUSED EndUnkPaletteAnim(struct Sprite *sprite)
{
PaletteStruct_ResetById(sprite->data[5]);
DestroySpriteAndMatrix(sprite);
@ -1103,8 +1099,7 @@ void StartAnimLinearTranslation(struct Sprite *sprite)
sprite->callback(sprite);
}
// Unused
static void StartAnimLinearTranslation_SetCornerVecX(struct Sprite *sprite)
static void UNUSED StartAnimLinearTranslation_SetCornerVecX(struct Sprite *sprite)
{
sprite->data[1] = sprite->x;
sprite->data[3] = sprite->y;
@ -1512,8 +1507,7 @@ u8 GetSpritePalIdxByBattler(u8 battler)
return battler;
}
// Unused
static u8 GetSpritePalIdxByPosition(u8 position)
static u8 UNUSED GetSpritePalIdxByPosition(u8 position)
{
return GetBattlerAtPosition(position);
}
@ -2012,8 +2006,7 @@ void AnimTask_GetFrustrationPowerLevel(u8 taskId)
DestroyAnimVisualTask(taskId);
}
// Unused
static void SetPriorityForVisibleBattlers(u8 priority)
static void UNUSED SetPriorityForVisibleBattlers(u8 priority)
{
if (IsBattlerSpriteVisible(gBattleAnimTarget))
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority;

View File

@ -270,8 +270,7 @@ static const struct SpriteTemplate sFlashingCircleImpactSpriteTemplate =
.callback = AnimFlashingCircleImpact,
};
// Unused
static u8 Task_FlashingCircleImpacts(u8 battlerId, bool8 red)
static u8 UNUSED Task_FlashingCircleImpacts(u8 battlerId, bool8 red)
{
u8 battlerSpriteId = gBattlerSpriteIds[battlerId];
u8 taskId = CreateTask(Task_UpdateFlashingCircleImpacts, 10);
@ -480,8 +479,6 @@ static void AnimTask_FrozenIceCube_Step4(u8 taskId)
}
}
#define CASE(by, stat) case (STAT_ANIM_##by + stat - 1)
void AnimTask_StatsChange(u8 taskId)
{
bool16 goesDown = FALSE;
@ -490,42 +487,42 @@ void AnimTask_StatsChange(u8 taskId)
switch (gBattleSpritesDataPtr->animationData->animArg)
{
CASE(PLUS1, STAT_ATK): goesDown = FALSE; animStatId = 0; break;
CASE(PLUS1, STAT_DEF): goesDown = FALSE; animStatId = 1; break;
CASE(PLUS1, STAT_SPEED): goesDown = FALSE; animStatId = 3; break;
CASE(PLUS1, STAT_SPATK): goesDown = FALSE; animStatId = 5; break;
CASE(PLUS1, STAT_SPDEF): goesDown = FALSE; animStatId = 6; break;
CASE(PLUS1, STAT_ACC): goesDown = FALSE; animStatId = 2; break;
CASE(PLUS1, STAT_EVASION): goesDown = FALSE; animStatId = 4; break;
case STAT_ANIM_PLUS1 + STAT_ATK: goesDown = FALSE; animStatId = STAT_ANIM_PAL_ATK; break;
case STAT_ANIM_PLUS1 + STAT_DEF: goesDown = FALSE; animStatId = STAT_ANIM_PAL_DEF; break;
case STAT_ANIM_PLUS1 + STAT_SPEED: goesDown = FALSE; animStatId = STAT_ANIM_PAL_SPEED; break;
case STAT_ANIM_PLUS1 + STAT_SPATK: goesDown = FALSE; animStatId = STAT_ANIM_PAL_SPATK; break;
case STAT_ANIM_PLUS1 + STAT_SPDEF: goesDown = FALSE; animStatId = STAT_ANIM_PAL_SPDEF; break;
case STAT_ANIM_PLUS1 + STAT_ACC: goesDown = FALSE; animStatId = STAT_ANIM_PAL_ACC; break;
case STAT_ANIM_PLUS1 + STAT_EVASION: goesDown = FALSE; animStatId = STAT_ANIM_PAL_EVASION; break;
CASE(MINUS1, STAT_ATK): goesDown = TRUE; animStatId = 0; break;
CASE(MINUS1, STAT_DEF): goesDown = TRUE; animStatId = 1; break;
CASE(MINUS1, STAT_SPEED): goesDown = TRUE; animStatId = 3; break;
CASE(MINUS1, STAT_SPATK): goesDown = TRUE; animStatId = 5; break;
CASE(MINUS1, STAT_SPDEF): goesDown = TRUE; animStatId = 6; break;
CASE(MINUS1, STAT_ACC): goesDown = TRUE; animStatId = 2; break;
CASE(MINUS1, STAT_EVASION): goesDown = TRUE; animStatId = 4; break;
case STAT_ANIM_MINUS1 + STAT_ATK: goesDown = TRUE; animStatId = STAT_ANIM_PAL_ATK; break;
case STAT_ANIM_MINUS1 + STAT_DEF: goesDown = TRUE; animStatId = STAT_ANIM_PAL_DEF; break;
case STAT_ANIM_MINUS1 + STAT_SPEED: goesDown = TRUE; animStatId = STAT_ANIM_PAL_SPEED; break;
case STAT_ANIM_MINUS1 + STAT_SPATK: goesDown = TRUE; animStatId = STAT_ANIM_PAL_SPATK; break;
case STAT_ANIM_MINUS1 + STAT_SPDEF: goesDown = TRUE; animStatId = STAT_ANIM_PAL_SPDEF; break;
case STAT_ANIM_MINUS1 + STAT_ACC: goesDown = TRUE; animStatId = STAT_ANIM_PAL_ACC; break;
case STAT_ANIM_MINUS1 + STAT_EVASION: goesDown = TRUE; animStatId = STAT_ANIM_PAL_EVASION; break;
CASE(PLUS2, STAT_ATK): goesDown = FALSE; animStatId = 0; sharply = TRUE; break;
CASE(PLUS2, STAT_DEF): goesDown = FALSE; animStatId = 1; sharply = TRUE; break;
CASE(PLUS2, STAT_SPEED): goesDown = FALSE; animStatId = 3; sharply = TRUE; break;
CASE(PLUS2, STAT_SPATK): goesDown = FALSE; animStatId = 5; sharply = TRUE; break;
CASE(PLUS2, STAT_SPDEF): goesDown = FALSE; animStatId = 6; sharply = TRUE; break;
CASE(PLUS2, STAT_ACC): goesDown = FALSE; animStatId = 2; sharply = TRUE; break;
CASE(PLUS2, STAT_EVASION): goesDown = FALSE; animStatId = 4; sharply = TRUE; break;
case STAT_ANIM_PLUS2 + STAT_ATK: goesDown = FALSE; animStatId = STAT_ANIM_PAL_ATK; sharply = TRUE; break;
case STAT_ANIM_PLUS2 + STAT_DEF: goesDown = FALSE; animStatId = STAT_ANIM_PAL_DEF; sharply = TRUE; break;
case STAT_ANIM_PLUS2 + STAT_SPEED: goesDown = FALSE; animStatId = STAT_ANIM_PAL_SPEED; sharply = TRUE; break;
case STAT_ANIM_PLUS2 + STAT_SPATK: goesDown = FALSE; animStatId = STAT_ANIM_PAL_SPATK; sharply = TRUE; break;
case STAT_ANIM_PLUS2 + STAT_SPDEF: goesDown = FALSE; animStatId = STAT_ANIM_PAL_SPDEF; sharply = TRUE; break;
case STAT_ANIM_PLUS2 + STAT_ACC: goesDown = FALSE; animStatId = STAT_ANIM_PAL_ACC; sharply = TRUE; break;
case STAT_ANIM_PLUS2 + STAT_EVASION: goesDown = FALSE; animStatId = STAT_ANIM_PAL_EVASION; sharply = TRUE; break;
CASE(MINUS2, STAT_ATK): goesDown = TRUE; animStatId = 0; sharply = TRUE; break;
CASE(MINUS2, STAT_DEF): goesDown = TRUE; animStatId = 1; sharply = TRUE; break;
CASE(MINUS2, STAT_SPEED): goesDown = TRUE; animStatId = 3; sharply = TRUE; break;
CASE(MINUS2, STAT_SPATK): goesDown = TRUE; animStatId = 5; sharply = TRUE; break;
CASE(MINUS2, STAT_SPDEF): goesDown = TRUE; animStatId = 6; sharply = TRUE; break;
CASE(MINUS2, STAT_ACC): goesDown = TRUE; animStatId = 2; sharply = TRUE; break;
CASE(MINUS2, STAT_EVASION): goesDown = TRUE; animStatId = 4; sharply = TRUE; break;
case STAT_ANIM_MINUS2 + STAT_ATK: goesDown = TRUE; animStatId = STAT_ANIM_PAL_ATK; sharply = TRUE; break;
case STAT_ANIM_MINUS2 + STAT_DEF: goesDown = TRUE; animStatId = STAT_ANIM_PAL_DEF; sharply = TRUE; break;
case STAT_ANIM_MINUS2 + STAT_SPEED: goesDown = TRUE; animStatId = STAT_ANIM_PAL_SPEED; sharply = TRUE; break;
case STAT_ANIM_MINUS2 + STAT_SPATK: goesDown = TRUE; animStatId = STAT_ANIM_PAL_SPATK; sharply = TRUE; break;
case STAT_ANIM_MINUS2 + STAT_SPDEF: goesDown = TRUE; animStatId = STAT_ANIM_PAL_SPDEF; sharply = TRUE; break;
case STAT_ANIM_MINUS2 + STAT_ACC: goesDown = TRUE; animStatId = STAT_ANIM_PAL_ACC; sharply = TRUE; break;
case STAT_ANIM_MINUS2 + STAT_EVASION: goesDown = TRUE; animStatId = STAT_ANIM_PAL_EVASION; sharply = TRUE; break;
case STAT_ANIM_MULTIPLE_PLUS1: goesDown = FALSE; animStatId = 0xFF; sharply = FALSE; break;
case STAT_ANIM_MULTIPLE_PLUS2: goesDown = FALSE; animStatId = 0xFF; sharply = TRUE; break;
case STAT_ANIM_MULTIPLE_MINUS1: goesDown = TRUE; animStatId = 0xFF; sharply = FALSE; break;
case STAT_ANIM_MULTIPLE_MINUS2: goesDown = TRUE; animStatId = 0xFF; sharply = TRUE; break;
case STAT_ANIM_MULTIPLE_PLUS1: goesDown = FALSE; animStatId = STAT_ANIM_PAL_MULTIPLE; sharply = FALSE; break;
case STAT_ANIM_MULTIPLE_PLUS2: goesDown = FALSE; animStatId = STAT_ANIM_PAL_MULTIPLE; sharply = TRUE; break;
case STAT_ANIM_MULTIPLE_MINUS1: goesDown = TRUE; animStatId = STAT_ANIM_PAL_MULTIPLE; sharply = FALSE; break;
case STAT_ANIM_MULTIPLE_MINUS2: goesDown = TRUE; animStatId = STAT_ANIM_PAL_MULTIPLE; sharply = TRUE; break;
default:
DestroyAnimVisualTask(taskId);
@ -534,11 +531,11 @@ void AnimTask_StatsChange(u8 taskId)
gBattleAnimArgs[0] = goesDown;
gBattleAnimArgs[1] = animStatId;
gBattleAnimArgs[2] = 0;
gBattleAnimArgs[3] = 0;
gBattleAnimArgs[2] = FALSE; // Whether it's the target, rather than attacker
gBattleAnimArgs[3] = FALSE; // Whether it hits multiple battlers
gBattleAnimArgs[4] = sharply;
gTasks[taskId].func = InitStatsChangeAnimation;
InitStatsChangeAnimation(taskId);
gTasks[taskId].func(taskId);
}
#undef CASE

View File

@ -2386,11 +2386,11 @@ static void SpriteCB_ShinyStars_Diagonal(struct Sprite *sprite)
void AnimTask_LoadPokeblockGfx(u8 taskId)
{
u8 paletteIndex;
u8 UNUSED paletteIndex;
LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]);
LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]);
paletteIndex = IndexOfSpritePaletteTag(ANIM_TAG_POKEBLOCK); // unused
paletteIndex = IndexOfSpritePaletteTag(ANIM_TAG_POKEBLOCK);
DestroyAnimVisualTask(taskId);
}

View File

@ -16,7 +16,7 @@ struct AnimStatsChangeData
{
u8 battler1;
u8 battler2;
u8 higherPriority;
bool8 hidBattler2;
s16 data[8];
u16 species;
};
@ -69,6 +69,9 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId)
selectedPalettes = 0;
// fall through
case ANIM_ATTACKER:
#ifdef UBFIX
default:
#endif
animBattlers[0] = gBattleAnimAttacker;
break;
case 3:
@ -388,12 +391,33 @@ static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId)
}
}
// Defines for data array in sAnimStatsChangeData
#define aDecrease data[0]
#define aAnimStatId data[1]
#define aIsTarget data[2]
#define aMultipleBattlers data[3] // Always false. Changes for multiple battlers are instead run sequentially.
#define aSharply data[4]
// Task data defines for InitStatsChangeAnimation
#define tAnimSpriteId1 data[0]
#define tVelocity data[1]
#define tMultipleBattlers data[2]
#define tAnimSpriteId2 data[3]
#define tTargetBlend data[4]
#define tWaitTime data[5]
#define tHidBattler2 data[6]
#define tBattler2SpriteId data[7]
#define tWaitTimer data[10]
#define tFadeTimer data[11]
#define tBlend data[12]
#define tState data[15]
void InitStatsChangeAnimation(u8 taskId)
{
u8 i;
sAnimStatsChangeData = AllocZeroed(sizeof(struct AnimStatsChangeData));
for (i = 0; i < 8; i++)
for (i = 0; i < ARRAY_COUNT(sAnimStatsChangeData->data); i++)
sAnimStatsChangeData->data[i] = gBattleAnimArgs[i];
gTasks[taskId].func = StatsChangeAnimation_Step1;
@ -401,21 +425,19 @@ void InitStatsChangeAnimation(u8 taskId)
static void StatsChangeAnimation_Step1(u8 taskId)
{
if (sAnimStatsChangeData->data[2] == 0)
if (!sAnimStatsChangeData->aIsTarget)
sAnimStatsChangeData->battler1 = gBattleAnimAttacker;
else
sAnimStatsChangeData->battler1 = gBattleAnimTarget;
sAnimStatsChangeData->battler2 = BATTLE_PARTNER(sAnimStatsChangeData->battler1);
if (IsContest() || (sAnimStatsChangeData->data[3] && !IsBattlerSpriteVisible(sAnimStatsChangeData->battler2)))
sAnimStatsChangeData->data[3] = 0;
if (IsContest() || (sAnimStatsChangeData->aMultipleBattlers && !IsBattlerSpriteVisible(sAnimStatsChangeData->battler2)))
sAnimStatsChangeData->aMultipleBattlers = FALSE;
gBattle_WIN0H = 0;
gBattle_WIN0V = 0;
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, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR
| WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL | WININ_WIN1_ALL);
SetGpuReg(REG_OFFSET_WINOUT, (WINOUT_WIN01_ALL & ~WINOUT_WIN01_BG1) | WINOUT_WINOBJ_ALL);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
@ -424,16 +446,17 @@ static void StatsChangeAnimation_Step1(u8 taskId)
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
if (IsDoubleBattle() && sAnimStatsChangeData->data[3] == 0)
if (IsDoubleBattle() && !sAnimStatsChangeData->aMultipleBattlers)
{
if (GetBattlerPosition(sAnimStatsChangeData->battler1) == B_POSITION_OPPONENT_RIGHT
|| GetBattlerPosition(sAnimStatsChangeData->battler1) == B_POSITION_PLAYER_LEFT)
{
if (IsBattlerSpriteVisible(sAnimStatsChangeData->battler2) == TRUE)
{
gSprites[gBattlerSpriteIds[sAnimStatsChangeData->battler2]].oam.priority -= 1;
// Push the battler not being animated back so it doesn't receive the animation.
gSprites[gBattlerSpriteIds[sAnimStatsChangeData->battler2]].oam.priority--;
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
sAnimStatsChangeData->higherPriority = 1;
sAnimStatsChangeData->hidBattler2 = TRUE;
}
}
}
@ -462,79 +485,80 @@ static void StatsChangeAnimation_Step2(u8 taskId)
spriteId2 = 0;
battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler1];
spriteId = CreateInvisibleSpriteCopy(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species);
if (sAnimStatsChangeData->data[3])
if (sAnimStatsChangeData->aMultipleBattlers)
{
battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2];
spriteId2 = CreateInvisibleSpriteCopy(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species);
}
GetBattleAnimBg1Data(&animBgData);
if (sAnimStatsChangeData->data[0] == 0)
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask1_Tilemap, FALSE);
if (!sAnimStatsChangeData->aDecrease)
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gStatAnim_Increase_Tilemap, FALSE);
else
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask2_Tilemap, FALSE);
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gStatAnim_Decrease_Tilemap, FALSE);
AnimLoadCompressedBgGfx(animBgData.bgId, gBattleStatMask_Gfx, animBgData.tilesOffset);
switch (sAnimStatsChangeData->data[1])
AnimLoadCompressedBgGfx(animBgData.bgId, gStatAnim_Gfx, animBgData.tilesOffset);
switch (sAnimStatsChangeData->aAnimStatId)
{
case 0:
LoadCompressedPalette(gBattleStatMask2_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
case STAT_ANIM_PAL_ATK:
LoadCompressedPalette(gStatAnim_Attack_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
break;
case 1:
LoadCompressedPalette(gBattleStatMask1_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
case STAT_ANIM_PAL_DEF:
LoadCompressedPalette(gStatAnim_Defense_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
break;
case 2:
LoadCompressedPalette(gBattleStatMask3_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
case STAT_ANIM_PAL_ACC:
LoadCompressedPalette(gStatAnim_Accuracy_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
break;
case 3:
LoadCompressedPalette(gBattleStatMask4_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
case STAT_ANIM_PAL_SPEED:
LoadCompressedPalette(gStatAnim_Speed_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
break;
case 4:
LoadCompressedPalette(gBattleStatMask6_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
case STAT_ANIM_PAL_EVASION:
LoadCompressedPalette(gStatAnim_Evasion_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
break;
case 5:
LoadCompressedPalette(gBattleStatMask7_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
case STAT_ANIM_PAL_SPATK:
LoadCompressedPalette(gStatAnim_SpAttack_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
break;
case 6:
LoadCompressedPalette(gBattleStatMask8_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
case STAT_ANIM_PAL_SPDEF:
LoadCompressedPalette(gStatAnim_SpDefense_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
break;
default:
LoadCompressedPalette(gBattleStatMask5_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
// case STAT_ANIM_PAL_MULTIPLE:
LoadCompressedPalette(gStatAnim_Multiple_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP);
break;
}
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
if (sAnimStatsChangeData->data[0] == 1)
if (sAnimStatsChangeData->aDecrease == TRUE)
{
gBattle_BG1_X = 64;
gTasks[taskId].data[1] = -3;
gTasks[taskId].tVelocity = -3;
}
else
{
gTasks[taskId].data[1] = 3;
gTasks[taskId].tVelocity = 3;
}
if (sAnimStatsChangeData->data[4] == 0)
if (!sAnimStatsChangeData->aSharply)
{
gTasks[taskId].data[4] = 10;
gTasks[taskId].data[5] = 20;
gTasks[taskId].tTargetBlend = 10;
gTasks[taskId].tWaitTime = 20;
}
else
{
gTasks[taskId].data[4] = 13;
gTasks[taskId].data[5] = 30;
gTasks[taskId].tTargetBlend = 13;
gTasks[taskId].tWaitTime = 30;
}
gTasks[taskId].data[0] = spriteId;
gTasks[taskId].data[2] = sAnimStatsChangeData->data[3];
gTasks[taskId].data[3] = spriteId2;
gTasks[taskId].data[6] = sAnimStatsChangeData->higherPriority;
gTasks[taskId].data[7] = gBattlerSpriteIds[sAnimStatsChangeData->battler2];
gTasks[taskId].tAnimSpriteId1 = spriteId;
gTasks[taskId].tMultipleBattlers = sAnimStatsChangeData->aMultipleBattlers;
gTasks[taskId].tAnimSpriteId2 = spriteId2;
gTasks[taskId].tHidBattler2 = sAnimStatsChangeData->hidBattler2;
gTasks[taskId].tBattler2SpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2];
gTasks[taskId].func = StatsChangeAnimation_Step3;
if (sAnimStatsChangeData->data[0] == 0)
if (!sAnimStatsChangeData->aDecrease)
PlaySE12WithPanning(SE_M_STAT_INCREASE, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER));
else
PlaySE12WithPanning(SE_M_STAT_DECREASE, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER));
@ -542,44 +566,46 @@ static void StatsChangeAnimation_Step2(u8 taskId)
static void StatsChangeAnimation_Step3(u8 taskId)
{
gBattle_BG1_Y += gTasks[taskId].data[1];
gBattle_BG1_Y += gTasks[taskId].tVelocity;
switch (gTasks[taskId].data[15])
switch (gTasks[taskId].tState)
{
case 0:
if (gTasks[taskId].data[11]++ > 0)
// Fade in
if (gTasks[taskId].tFadeTimer++ > 0)
{
gTasks[taskId].data[11] = 0;
gTasks[taskId].data[12]++;
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
if (gTasks[taskId].data[12] == gTasks[taskId].data[4])
gTasks[taskId].data[15]++;
gTasks[taskId].tFadeTimer = 0;
gTasks[taskId].tBlend++;
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].tBlend, 16 - gTasks[taskId].tBlend));
if (gTasks[taskId].tBlend == gTasks[taskId].tTargetBlend)
gTasks[taskId].tState++;
}
break;
case 1:
if (++gTasks[taskId].data[10] == gTasks[taskId].data[5])
gTasks[taskId].data[15]++;
// Wait
if (++gTasks[taskId].tWaitTimer == gTasks[taskId].tWaitTime)
gTasks[taskId].tState++;
break;
case 2:
if (gTasks[taskId].data[11]++ > 0)
// Fade out
if (gTasks[taskId].tFadeTimer++ > 0)
{
gTasks[taskId].data[11] = 0;
gTasks[taskId].data[12]--;
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
if (gTasks[taskId].data[12] == 0)
gTasks[taskId].tFadeTimer = 0;
gTasks[taskId].tBlend--;
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].tBlend, 16 - gTasks[taskId].tBlend));
if (gTasks[taskId].tBlend == 0)
{
ResetBattleAnimBg(FALSE);
gTasks[taskId].data[15]++;
gTasks[taskId].tState++;
}
}
break;
case 3:
// Reset
gBattle_WIN0H = 0;
gBattle_WIN0V = 0;
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, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR
| WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL | WININ_WIN1_ALL);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_ALL | WINOUT_WINOBJ_ALL);
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
@ -587,12 +613,14 @@ static void StatsChangeAnimation_Step3(u8 taskId)
SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON);
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
DestroySprite(&gSprites[gTasks[taskId].data[0]]);
if (gTasks[taskId].data[2])
DestroySprite(&gSprites[gTasks[taskId].data[3]]);
if (gTasks[taskId].data[6] == 1)
gSprites[gTasks[taskId].data[7]].oam.priority++;
DestroySprite(&gSprites[gTasks[taskId].tAnimSpriteId1]);
if (gTasks[taskId].tMultipleBattlers)
DestroySprite(&gSprites[gTasks[taskId].tAnimSpriteId2]);
// Restore battler 2's priority
if (gTasks[taskId].tHidBattler2 == TRUE)
gSprites[gTasks[taskId].tBattler2SpriteId].oam.priority++;
FREE_AND_SET_NULL(sAnimStatsChangeData);
DestroyAnimVisualTask(taskId);
@ -600,6 +628,24 @@ static void StatsChangeAnimation_Step3(u8 taskId)
}
}
#undef aDecrease
#undef aAnimStatId
#undef aIsTarget
#undef aMultipleBattlers
#undef aSharply
#undef tAnimSpriteId1
#undef tVelocity
#undef tMultipleBattlers
#undef tAnimSpriteId2
#undef tTargetBlend
#undef tWaitTime
#undef tHidBattler2
#undef tBattler2SpriteId
#undef tWaitTimer
#undef tFadeTimer
#undef tBlend
#undef tState
void AnimTask_Flash(u8 taskId)
{
u32 selectedPalettes = GetBattleMonSpritePalettesMask(1, 1, 1, 1);
@ -763,7 +809,7 @@ void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId)
DestroyAnimVisualTask(taskId);
}
void StartMonScrollingBgMask(u8 taskId, int unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette)
void StartMonScrollingBgMask(u8 taskId, int UNUSED unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette)
{
u16 species;
u8 spriteId, spriteId2;

View File

@ -651,8 +651,7 @@ void BattleArena_DeductSkillPoints(u8 battler, u16 stringId)
}
}
// Unused
static void UpdateHPAtStart(u8 battler)
static void UNUSED UpdateHPAtStart(u8 battler)
{
u16 *hpAtStart = gBattleStruct->arenaStartHp;

View File

@ -692,9 +692,9 @@ static const struct BattleBackground sBattleTerrainTable[] =
},
};
static void CB2_UnusedBattleInit(void);
static void UNUSED CB2_UnusedBattleInit(void);
static void UnusedBattleInit(void)
static void UNUSED UnusedBattleInit(void)
{
u8 spriteId;
@ -704,7 +704,7 @@ static void UnusedBattleInit(void)
SetMainCallback2(CB2_UnusedBattleInit);
}
static void CB2_UnusedBattleInit(void)
static void UNUSED CB2_UnusedBattleInit(void)
{
AnimateSprites();
BuildOamBuffer();

View File

@ -1555,7 +1555,7 @@ static void OpponentHandleChooseMove(void)
if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER))
{
BattleAI_SetupAIData(0xF);
BattleAI_SetupAIData(ALL_MOVES_MASK);
chosenMoveId = BattleAI_ChooseMoveOrAction();
switch (chosenMoveId)
@ -1588,7 +1588,7 @@ static void OpponentHandleChooseMove(void)
u16 move;
do
{
chosenMoveId = Random() & 3;
chosenMoveId = MOD(Random(), MAX_MON_MOVES);
move = moveInfo->moves[chosenMoveId];
} while (move == MOVE_NONE);

View File

@ -329,7 +329,7 @@ static void HandleInputChooseAction(void)
}
}
static void UnusedEndBounceEffect(void)
static void UNUSED UnusedEndBounceEffect(void)
{
EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX);
EndBounceEffect(gActiveBattler, BOUNCE_MON);
@ -614,7 +614,7 @@ static void HandleInputChooseMove(void)
}
}
static u32 HandleMoveInputUnused(void)
static u32 UNUSED HandleMoveInputUnused(void)
{
u32 var = 0;

View File

@ -1515,7 +1515,7 @@ static void PlayerPartnerHandleChooseMove(void)
u8 chosenMoveId;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]);
BattleAI_SetupAIData(0xF);
BattleAI_SetupAIData(ALL_MOVES_MASK);
chosenMoveId = BattleAI_ChooseMoveOrAction();
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED))

View File

@ -186,7 +186,7 @@ static void CompleteOnBattlerSpriteCallbackDummy(void)
RecordedOpponentBufferExecCompleted();
}
static void CompleteOnBankSpriteCallbackDummy2(void)
static void UNUSED CompleteOnBankSpriteCallbackDummy2(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
RecordedOpponentBufferExecCompleted();

View File

@ -147,7 +147,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_TERMINATOR_NOP] = SafariCmdEnd
};
static void SpriteCB_Null4(void)
static void UNUSED SpriteCB_Null4(void)
{
}
@ -307,7 +307,7 @@ static void SafariBufferExecCompleted(void)
}
}
static void CompleteOnFinishedStatusAnimation(void)
static void UNUSED CompleteOnFinishedStatusAnimation(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
SafariBufferExecCompleted();

View File

@ -161,7 +161,7 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_TERMINATOR_NOP] = WallyCmdEnd
};
static void SpriteCB_Null7(void)
static void UNUSED SpriteCB_Null7(void)
{
}
@ -417,7 +417,7 @@ static void WallyBufferExecCompleted(void)
}
}
static void CompleteOnFinishedStatusAnimation(void)
static void UNUSED CompleteOnFinishedStatusAnimation(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
WallyBufferExecCompleted();

View File

@ -905,8 +905,7 @@ void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
// Unused
static void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes)
static void UNUSED BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes)
{
sBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA;
sBattleBuffersTransferData[1] = monId;
@ -927,8 +926,7 @@ void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 b
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 3 + bytes);
}
// Unused
static void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data)
static void UNUSED BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data)
{
s32 i;
@ -1001,8 +999,7 @@ void BtlController_EmitFaintAnimation(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
// Unused
static void BtlController_EmitPaletteFade(u8 bufferId)
static void UNUSED BtlController_EmitPaletteFade(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_PALETTEFADE;
sBattleBuffersTransferData[1] = CONTROLLER_PALETTEFADE;
@ -1011,8 +1008,7 @@ static void BtlController_EmitPaletteFade(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
// Unused
static void BtlController_EmitSuccessBallThrowAnim(u8 bufferId)
static void UNUSED BtlController_EmitSuccessBallThrowAnim(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM;
sBattleBuffersTransferData[1] = CONTROLLER_SUCCESSBALLTHROWANIM;
@ -1028,8 +1024,7 @@ void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
}
// Unused
static void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data)
static void UNUSED BtlController_EmitPause(u8 bufferId, u8 toWait, void *data)
{
s32 i;
@ -1188,8 +1183,7 @@ void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abili
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // Only 7 bytes were written.
}
// Unused
static void BtlController_EmitCmd23(u8 bufferId)
static void UNUSED BtlController_EmitCmd23(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_23;
sBattleBuffersTransferData[1] = CONTROLLER_23;
@ -1243,8 +1237,7 @@ void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 6);
}
// Unused
static void BtlController_EmitStatusXor(u8 bufferId, u8 b)
static void UNUSED BtlController_EmitStatusXor(u8 bufferId, u8 b)
{
sBattleBuffersTransferData[0] = CONTROLLER_STATUSXOR;
sBattleBuffersTransferData[1] = b;
@ -1264,8 +1257,7 @@ void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 4);
}
// Unused
static void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data)
static void UNUSED BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data)
{
s32 i;
@ -1281,8 +1273,7 @@ static void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, voi
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 7);
}
// Unused
static void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data)
static void UNUSED BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data)
{
s32 i;
@ -1297,8 +1288,7 @@ static void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3);
}
// Unused
static void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data)
static void UNUSED BtlController_EmitCmd32(u8 bufferId, u16 size, void *data)
{
s32 i;
@ -1348,8 +1338,7 @@ void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 ret)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
// Unused
static void BtlController_EmitClearUnkVar(u8 bufferId)
static void UNUSED BtlController_EmitClearUnkVar(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_CLEARUNKVAR;
sBattleBuffersTransferData[1] = CONTROLLER_CLEARUNKVAR;
@ -1358,16 +1347,14 @@ static void BtlController_EmitClearUnkVar(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
// Unused
static void BtlController_EmitSetUnkVar(u8 bufferId, u8 b)
static void UNUSED BtlController_EmitSetUnkVar(u8 bufferId, u8 b)
{
sBattleBuffersTransferData[0] = CONTROLLER_SETUNKVAR;
sBattleBuffersTransferData[1] = b;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
}
// Unused
static void BtlController_EmitClearUnkFlag(u8 bufferId)
static void UNUSED BtlController_EmitClearUnkFlag(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_CLEARUNKFLAG;
sBattleBuffersTransferData[1] = CONTROLLER_CLEARUNKFLAG;
@ -1376,8 +1363,7 @@ static void BtlController_EmitClearUnkFlag(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
// Unused
static void BtlController_EmitToggleUnkFlag(u8 bufferId)
static void UNUSED BtlController_EmitToggleUnkFlag(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_TOGGLEUNKFLAG;
sBattleBuffersTransferData[1] = CONTROLLER_TOGGLEUNKFLAG;

View File

@ -1667,13 +1667,13 @@ static const u8 sTourneyTreePokeballCoords[DOME_TOURNAMENT_TRAINERS_COUNT + DOME
{.tile = LINE_V_L, .y = 9, .x = 17}, \
{.tile = LINE_V_L, .y = 10, .x = 17}, \
{.tile = LINE_V_L_HALF_LOGO, .y = 11, .x = 17},
#define LINESECTION_SEMIFINAL_BOTTOM_RIGHT \
{.tile = LINE_V_L_LOGO4, .y = 14, .x = 17}, \
{.tile = LINE_V_L_LOGO3, .y = 13, .x = 17}, \
{.tile = LINE_V_L_LOGO2, .y = 12, .x = 17}, \
{.tile = LINE_V_L_LOGO1, .y = 11, .x = 17},
#define LINESECTION_FINAL_LEFT \
{.tile = LINE_H_LOGO1, .y = 11, .x = 13}, \
{.tile = LINE_H_LOGO2, .y = 11, .x = 14},

View File

@ -741,8 +741,15 @@ u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle)
u8 ivSet;
bool8 useHigherIV = isLastBattle ? TRUE : FALSE;
if (challengeNum > 8)
ivSet = 7;
// The Factory has an out-of-bounds access when generating the rental draft for round 9 (challengeNum==8),
// or the "elevated" rentals from round 8 (challengeNum+1==8)
// This happens to land on a number higher than 31, which is interpreted as "random IVs"
#ifdef BUGFIX
if (challengeNum >= ARRAY_COUNT(sFixedIVTable))
#else
if (challengeNum > ARRAY_COUNT(sFixedIVTable))
#endif
ivSet = ARRAY_COUNT(sFixedIVTable) - 1;
else
ivSet = challengeNum;

View File

@ -121,9 +121,9 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
#define selectedGroup percent
#define selectedMoves var2
#define moveTarget var1
#define validMoveFlags var1
#define numValidMoveGroups var2
#define validMoveGroup var2
#define numMovesPerGroup var1
#define numMultipleMoveGroups var2
#define randSelectGroup var2
// If battler is < 50% HP and not asleep, use second set of move group likelihoods
// otherwise use first set
@ -157,8 +157,10 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
// Pass selected moves to AI, pick one
if (selectedMoves != 0)
{
gBattleStruct->palaceFlags &= 0xF;
gBattleStruct->palaceFlags |= (selectedMoves << 4);
// Lower 4 bits of palaceFlags are flags for each battler.
// Clear the rest of palaceFlags, then set the selected moves in the upper 4 bits.
gBattleStruct->palaceFlags &= (1 << MAX_BATTLERS_COUNT) - 1;
gBattleStruct->palaceFlags |= (selectedMoves << MAX_BATTLERS_COUNT);
BattleAI_SetupAIData(selectedMoves);
chosenMoveId = BattleAI_ChooseMoveOrAction();
}
@ -168,34 +170,47 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
// If a move is chosen this way, there's a 50% chance that it will be unable to use it anyway
if (chosenMoveId == -1)
{
if (unusableMovesBits != 0xF)
if (unusableMovesBits != ALL_MOVES_MASK)
{
validMoveFlags = 0, numValidMoveGroups = 0;
numMovesPerGroup = 0, numMultipleMoveGroups = 0;
for (i = 0; i < MAX_MON_MOVES; i++)
{
// validMoveFlags is used here as a bitfield for which moves can be used for each move group type
// first 4 bits are for attack (1 for each move), then 4 bits for defense, and 4 for support
// Count the number of usable moves the battler has in each move group.
// The totals will be stored separately in 3 groups of 4 bits each in numMovesPerGroup.
if (GetBattlePalaceMoveGroup(moveInfo->moves[i]) == PALACE_MOVE_GROUP_ATTACK && !(gBitTable[i] & unusableMovesBits))
validMoveFlags += (1 << 0);
numMovesPerGroup += (1 << 0);
if (GetBattlePalaceMoveGroup(moveInfo->moves[i]) == PALACE_MOVE_GROUP_DEFENSE && !(gBitTable[i] & unusableMovesBits))
validMoveFlags += (1 << 4);
numMovesPerGroup += (1 << 4);
if (GetBattlePalaceMoveGroup(moveInfo->moves[i]) == PALACE_MOVE_GROUP_SUPPORT && !(gBitTable[i] & unusableMovesBits))
validMoveFlags += (1 << 8);
numMovesPerGroup += (1 << 8);
}
// Count the move groups the pokemon has
if ((validMoveFlags & 0xF) > 1)
numValidMoveGroups++;
if ((validMoveFlags & 0xF0) > 0x1F)
numValidMoveGroups++;
if ((validMoveFlags & 0xF0) > 0x1FF)
numValidMoveGroups++;
// Count the number of move groups for which the battler has at least 2 usable moves.
// This is a roundabout way to determine if there is a move group that should be
// preferred, because it has multiple move options and the others do not.
// The condition intended to check the total for the Support group is accidentally
// checking the Defense total, and is never true. As a result the preferences for
// random move selection here will skew away from the Support move group.
if ((numMovesPerGroup & 0xF) >= 2)
numMultipleMoveGroups++;
if ((numMovesPerGroup & (0xF << 4)) >= (2 << 4))
numMultipleMoveGroups++;
#ifdef BUGFIX
if ((numMovesPerGroup & (0xF << 8)) >= (2 << 8))
#else
if ((numMovesPerGroup & (0xF << 4)) >= (2 << 8))
#endif
numMultipleMoveGroups++;
// If more than 1 possible move group, or no possible move groups
// then choose move randomly
if (numValidMoveGroups > 1 || numValidMoveGroups == 0)
// By this point we already know the battler only has usable moves from at most 2 of the 3 move groups,
// because they had no usable moves from the move group that was selected based on Nature.
//
// The below condition is effectively 'numMultipleMoveGroups != 1'.
// There is no stand-out group with multiple moves to choose from, so we pick randomly.
// Note that because of the bug above the battler may actually have any number of Support moves.
if (numMultipleMoveGroups > 1 || numMultipleMoveGroups == 0)
{
do
{
@ -204,27 +219,36 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
chosenMoveId = i;
} while (chosenMoveId == -1);
}
// Otherwise randomly choose move of only available move group
else
{
if ((validMoveFlags & 0xF) > 1)
validMoveGroup = PALACE_MOVE_GROUP_ATTACK;
if ((validMoveFlags & 0xF0) > 0x1F)
validMoveGroup = PALACE_MOVE_GROUP_DEFENSE;
if ((validMoveFlags & 0xF0) > 0x1FF)
validMoveGroup = PALACE_MOVE_GROUP_SUPPORT;
// The battler has just 1 move group with multiple move options to choose from.
// Choose a move randomly from this group.
// Same bug as the previous set of conditions (the condition for Support is never true).
// This bug won't cause a softlock below, because if Support is the only group with multiple
// moves then it won't have been counted, and the 'numMultipleMoveGroups == 0' above will be true.
if ((numMovesPerGroup & 0xF) >= 2)
randSelectGroup = PALACE_MOVE_GROUP_ATTACK;
if ((numMovesPerGroup & (0xF << 4)) >= (2 << 4))
randSelectGroup = PALACE_MOVE_GROUP_DEFENSE;
#ifdef BUGFIX
if ((numMovesPerGroup & (0xF << 8)) >= (2 << 8))
#else
if ((numMovesPerGroup & (0xF << 4)) >= (2 << 8))
#endif
randSelectGroup = PALACE_MOVE_GROUP_SUPPORT;
do
{
i = Random() % MAX_MON_MOVES;
if (!(gBitTable[i] & unusableMovesBits) && validMoveGroup == GetBattlePalaceMoveGroup(moveInfo->moves[i]))
if (!(gBitTable[i] & unusableMovesBits) && randSelectGroup == GetBattlePalaceMoveGroup(moveInfo->moves[i]))
chosenMoveId = i;
} while (chosenMoveId == -1);
}
// If a move was selected (and in this case was not from the Nature-chosen group)
// then there's a 50% chance it won't be used anyway
if (Random() % 100 > 49)
// Because the selected move was not from the Nature-chosen move group there's a 50% chance
// that it will be unable to use it. This could have been checked earlier to avoid the above work.
if (Random() % 100 >= 50)
{
gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE;
return 0;
@ -232,6 +256,7 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
}
else
{
// All the battler's moves were flagged as unusable.
gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE;
return 0;
}
@ -264,9 +289,9 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
#undef selectedGroup
#undef selectedMoves
#undef moveTarget
#undef validMoveFlags
#undef numValidMoveGroups
#undef validMoveGroup
#undef numMovesPerGroup
#undef numMultipleMoveGroups
#undef randSelectGroup
static u8 GetBattlePalaceMoveGroup(u16 move)
{
@ -353,7 +378,7 @@ void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite)
}
}
static void UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 pointless)
static void UNUSED UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 pointless)
{
sprite->animPaused = TRUE;
sprite->callback = SpriteCallbackDummy;
@ -665,8 +690,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
}
}
// Unused
static void BattleGfxSfxDummy1(void)
static void UNUSED BattleGfxSfxDummy1(void)
{
}

View File

@ -841,8 +841,7 @@ static void Debug_DrawNumber(s16 number, u16 *dest, bool8 unk)
}
}
// Unused
static void Debug_DrawNumberPair(s16 number1, s16 number2, u16 *dest)
static void UNUSED Debug_DrawNumberPair(s16 number1, s16 number2, u16 *dest)
{
dest[4] = 0x1E;
Debug_DrawNumber(number2, dest, FALSE);
@ -2459,9 +2458,8 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32
return filledPixels;
}
// Unused
// These two functions seem as if they were made for testing the health bar.
static s16 Debug_TestHealthBar(struct TestingBar *barInfo, s32 *currValue, u16 *dest, s32 unused)
static s16 UNUSED Debug_TestHealthBar(struct TestingBar *barInfo, s32 *currValue, u16 *dest, s32 unused)
{
s16 ret, var;

View File

@ -602,7 +602,7 @@ void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8
LoadBgTilemap(bgId, tilemap, BG_SCREEN_SIZE, 0);
}
static void DrawBattlerOnBgDMA(u8 x, u8 y, u8 battlerPosition, u8 arg3, u8 paletteId, u16 arg5, u8 arg6, u8 arg7)
static void UNUSED DrawBattlerOnBgDMA(u8 x, u8 y, u8 battlerPosition, u8 arg3, u8 paletteId, u16 arg5, u8 arg6, u8 arg7)
{
int i, j, offset;

View File

@ -2073,8 +2073,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
return gTrainers[trainerNum].partySize;
}
// Unused
static void HBlankCB_Battle(void)
static void UNUSED HBlankCB_Battle(void)
{
if (REG_VCOUNT < DISPLAY_HEIGHT && REG_VCOUNT >= 111)
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_SCREENBASE(24) | BGCNT_TXT256x512);
@ -2710,8 +2709,7 @@ void SpriteCallbackDummy_2(struct Sprite *sprite)
#define sNumFlickers data[3]
#define sDelay data[4]
// Unused
static void SpriteCB_InitFlicker(struct Sprite *sprite)
static void UNUSED SpriteCB_InitFlicker(struct Sprite *sprite)
{
sprite->sNumFlickers = 6;
sprite->sDelay = 1;
@ -2866,8 +2864,7 @@ static void SpriteCB_BattleSpriteSlideLeft(struct Sprite *sprite)
}
}
// Unused
static void SetIdleSpriteCallback(struct Sprite *sprite)
static void UNUSED SetIdleSpriteCallback(struct Sprite *sprite)
{
sprite->callback = SpriteCB_Idle;
}
@ -3689,8 +3686,7 @@ static void BattleIntroRecordMonsToDex(void)
}
}
// Unused
static void BattleIntroSkipRecordMonsToDex(void)
static void UNUSED BattleIntroSkipRecordMonsToDex(void)
{
if (gBattleControllerExecFlags == 0)
gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
@ -3793,8 +3789,7 @@ static void BattleIntroPlayer1SendsOutMonAnimation(void)
gBattleMainFunc = TryDoEventsBeforeFirstTurn;
}
// Unused
static void BattleIntroSwitchInPlayerMons(void)
static void UNUSED BattleIntroSwitchInPlayerMons(void)
{
if (gBattleControllerExecFlags == 0)
{

View File

@ -1097,8 +1097,7 @@ static u16 GetNPCRoomGraphicsId(void)
return sNPCTable[sNpcId].graphicsId;
}
// Unused
static u8 GetInWildMonRoom(void)
static bool8 UNUSED GetInWildMonRoom(void)
{
return sInWildMonRoom;
}

View File

@ -38,7 +38,7 @@
#include "constants/moves.h"
#include "constants/trainers.h"
#define NUM_LAYOUT_OFFSETS 8 // Assumed to be a power of 2
#define NUM_LAYOUT_OFFSETS 8
extern const struct MapLayout *const gMapLayouts[];
@ -1479,8 +1479,7 @@ u8 GetTrainerEncounterMusicIdInBattlePyramid(u16 trainerId)
return TRAINER_ENCOUNTER_MUSIC_MALE;
}
// Unused
static void BattlePyramidRetireChallenge(void)
static void UNUSED BattlePyramidRetireChallenge(void)
{
ScriptContext_SetupScript(BattlePyramid_Retire);
}
@ -1904,7 +1903,7 @@ static void GetPyramidFloorLayoutOffsets(u8 *layoutOffsets)
for (i = 0; i < NUM_PYRAMID_FLOOR_SQUARES; i++)
{
layoutOffsets[i] = sPyramidFloorTemplates[id].layoutOffsets[rand & (NUM_LAYOUT_OFFSETS - 1)];
layoutOffsets[i] = sPyramidFloorTemplates[id].layoutOffsets[MOD(rand, NUM_LAYOUT_OFFSETS)];
rand >>= 3;
if (i == 7)
{

View File

@ -174,12 +174,12 @@ enum {
static const struct MenuAction sMenuActions[] =
{
[ACTION_USE_FIELD] = { gMenuText_Use, BagAction_UseOnField },
[ACTION_TOSS] = { gMenuText_Toss, BagAction_Toss },
[ACTION_GIVE] = { gMenuText_Give, BagAction_Give },
[ACTION_CANCEL] = { gText_Cancel2, BagAction_Cancel },
[ACTION_USE_BATTLE] = { gMenuText_Use, BagAction_UseInBattle },
[ACTION_DUMMY] = { gText_EmptyString2, NULL },
[ACTION_USE_FIELD] = { gMenuText_Use, {BagAction_UseOnField} },
[ACTION_TOSS] = { gMenuText_Toss, {BagAction_Toss} },
[ACTION_GIVE] = { gMenuText_Give, {BagAction_Give} },
[ACTION_CANCEL] = { gText_Cancel2, {BagAction_Cancel} },
[ACTION_USE_BATTLE] = { gMenuText_Use, {BagAction_UseInBattle} },
[ACTION_DUMMY] = { gText_EmptyString2, {NULL} },
};
static const u8 sMenuActionIds_Field[] = {ACTION_USE_FIELD, ACTION_GIVE, ACTION_TOSS, ACTION_CANCEL};
@ -382,8 +382,8 @@ void CB2_PyramidBagMenuFromStartMenu(void)
GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_FIELD, CB2_ReturnToFieldWithOpenMenu);
}
// Unused, CB2_BagMenuFromBattle is used instead
static void OpenBattlePyramidBagInBattle(void)
// CB2_BagMenuFromBattle is used instead
static void UNUSED OpenBattlePyramidBagInBattle(void)
{
GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_BATTLE, CB2_SetUpReshowBattleScreenAfterMenu2);
}
@ -1468,8 +1468,7 @@ static void DrawTossNumberWindow(u8 windowId)
ScheduleBgCopyTilemapToVram(1);
}
// Unused
static u8 GetMenuActionWindowId(u8 windowArrayId)
static u8 UNUSED GetMenuActionWindowId(u8 windowArrayId)
{
return gPyramidBagMenu->windowIds[windowArrayId];
}

View File

@ -849,7 +849,7 @@ static const u8 sBallCatchBonuses[] =
// In Battle Palace, moves are chosen based on the pokemons nature rather than by the player
// Moves are grouped into "Attack", "Defense", or "Support" (see PALACE_MOVE_GROUP_*)
// Each nature has a certain percent chance of selecting a move from a particular group
// and a separate percent chance for each group when below 50% HP
// and a separate percent chance for each group when at or below 50% HP
// The table below doesn't list percentages for Support because you can subtract the other two
// Support percentages are listed in comments off to the side instead
#define PALACE_STYLE(atk, def, atkLow, defLow) {atk, atk + def, atkLow, atkLow + defLow}
@ -1650,7 +1650,7 @@ static inline void ApplyRandomDmgMultiplier(void)
}
}
static void Unused_ApplyRandomDmgMultiplier(void)
static void UNUSED Unused_ApplyRandomDmgMultiplier(void)
{
ApplyRandomDmgMultiplier();
}
@ -4061,16 +4061,16 @@ static void Cmd_setgraphicalstatchangevalues(void)
switch (GET_STAT_BUFF_VALUE2(gBattleScripting.statChanger))
{
case SET_STAT_BUFF_VALUE(1): // +1
value = STAT_ANIM_PLUS1;
value = STAT_ANIM_PLUS1 + 1;
break;
case SET_STAT_BUFF_VALUE(2): // +2
value = STAT_ANIM_PLUS2;
value = STAT_ANIM_PLUS2 + 1;
break;
case SET_STAT_BUFF_VALUE(1) | STAT_BUFF_NEGATIVE: // -1
value = STAT_ANIM_MINUS1;
value = STAT_ANIM_MINUS1 + 1;
break;
case SET_STAT_BUFF_VALUE(2) | STAT_BUFF_NEGATIVE: // -2
value = STAT_ANIM_MINUS2;
value = STAT_ANIM_MINUS2 + 1;
break;
}
gBattleScripting.animArg1 = GET_STAT_BUFF_ID(gBattleScripting.statChanger) + value - 1;
@ -4092,9 +4092,9 @@ static void Cmd_playstatchangeanimation(void)
{
s16 startingStatAnimId;
if (gBattlescriptCurrInstr[3] & STAT_CHANGE_BY_TWO)
startingStatAnimId = STAT_ANIM_MINUS2 - 1;
startingStatAnimId = STAT_ANIM_MINUS2;
else
startingStatAnimId = STAT_ANIM_MINUS1 - 1;
startingStatAnimId = STAT_ANIM_MINUS1;
while (statsToCheck != 0)
{
@ -4136,9 +4136,9 @@ static void Cmd_playstatchangeanimation(void)
{
s16 startingStatAnimId;
if (gBattlescriptCurrInstr[3] & STAT_CHANGE_BY_TWO)
startingStatAnimId = STAT_ANIM_PLUS2 - 1;
startingStatAnimId = STAT_ANIM_PLUS2;
else
startingStatAnimId = STAT_ANIM_PLUS1 - 1;
startingStatAnimId = STAT_ANIM_PLUS1;
while (statsToCheck != 0)
{
@ -7350,7 +7350,7 @@ static void Cmd_tryconversiontypechange(void)
{
do
{
while ((moveChecked = Random() & (MAX_MON_MOVES - 1)) >= validMoves);
while ((moveChecked = MOD(Random(), MAX_MON_MOVES)) >= validMoves);
moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[moveChecked]].type;
@ -8179,7 +8179,7 @@ static void Cmd_trychoosesleeptalkmove(void)
}
unusableMovesBits = CheckMoveLimitations(gBattlerAttacker, unusableMovesBits, ~MOVE_LIMITATION_PP);
if (unusableMovesBits == (1 << MAX_MON_MOVES) - 1) // all 4 moves cannot be chosen
if (unusableMovesBits == ALL_MOVES_MASK) // all 4 moves cannot be chosen
{
gBattlescriptCurrInstr += 5;
}
@ -8189,7 +8189,7 @@ static void Cmd_trychoosesleeptalkmove(void)
do
{
movePosition = Random() & (MAX_MON_MOVES - 1);
movePosition = MOD(Random(), MAX_MON_MOVES);
} while ((gBitTable[movePosition] & unusableMovesBits));
gCalledMove = gBattleMons[gBattlerAttacker].moves[movePosition];

View File

@ -1248,7 +1248,7 @@ static void SetBattledTrainersFlags(void)
FlagSet(GetTrainerAFlag());
}
static void SetBattledTrainerFlag(void)
static void UNUSED SetBattledTrainerFlag(void)
{
FlagSet(GetTrainerAFlag());
}

View File

@ -313,7 +313,6 @@ static void GenerateInitialRentalMons(void)
monSetId = Random() % NUM_SLATEPORT_TENT_MONS;
for (j = firstMonId; j < firstMonId + i; j++)
{
u16 monId = monIds[j];
if (monIds[j] == monSetId)
break;
if (species[j] == gFacilityTrainerMons[monSetId].species)

View File

@ -1129,8 +1129,7 @@ u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum)
return trainerId;
}
// Unused
static void GetRandomScaledFrontierTrainerIdRange(u8 challengeNum, u8 battleNum, u16 *trainerIdPtr, u8 *rangePtr)
static void UNUSED GetRandomScaledFrontierTrainerIdRange(u8 challengeNum, u8 battleNum, u16 *trainerIdPtr, u8 *rangePtr)
{
u16 trainerId, range;
@ -1756,7 +1755,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount)
}
// Probably an early draft before the 'CreateApprenticeMon' was written.
static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId)
static void UNUSED Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId)
{
s32 i, j;
u8 friendship = MAX_FRIENDSHIP;
@ -1832,12 +1831,14 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId)
if (trainerId < FRONTIER_TRAINERS_COUNT)
{
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
// By mistake Battle Tower's Level 50 challenge number is used to determine the IVs for Battle Factory.
#ifdef BUGFIX
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
u8 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE;
#else
u8 UNUSED lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][FRONTIER_LVL_50] / FRONTIER_STAGES_PER_CHALLENGE;
#endif
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < FRONTIER_STAGES_PER_CHALLENGE - 1)
@ -2278,7 +2279,7 @@ static void LoadMultiPartnerCandidatesData(void)
u32 lvlMode, battleMode;
s32 challengeNum;
u32 species1, species2;
u32 level;
u32 UNUSED level;
struct ObjectEventTemplate *objEventTemplates;
objEventTemplates = gSaveBlock1Ptr->objectEventTemplates;
@ -2461,7 +2462,7 @@ static void ShowPartnerCandidateMessage(void)
{
s32 i, j, partnerId;
s32 monId;
s32 level = SetFacilityPtrsGetLevel();
s32 UNUSED level = SetFacilityPtrsGetLevel();
u16 winStreak = GetCurrentFacilityWinStreak();
s32 challengeNum = winStreak / FRONTIER_STAGES_PER_CHALLENGE;
s32 k = gSpecialVar_LastTalked - 2;
@ -2823,7 +2824,7 @@ static void AwardBattleTowerRibbons(void)
// This is a leftover debugging function that is used to populate the E-Reader
// trainer with the player's current data.
static void FillEReaderTrainerWithPlayerData(void)
static void UNUSED FillEReaderTrainerWithPlayerData(void)
{
struct BattleTowerEReaderTrainer *ereaderTrainer = &gSaveBlock2Ptr->frontier.ereaderTrainer;
s32 i, j;

View File

@ -779,7 +779,7 @@ static const TransitionStateFunc sTransitionIntroFuncs[] =
static const struct SpriteFrameImage sSpriteImage_Pokeball[] =
{
sPokeball_Gfx, sizeof(sPokeball_Gfx)
{sPokeball_Gfx, sizeof(sPokeball_Gfx)}
};
static const union AnimCmd sSpriteAnim_Pokeball[] =
@ -841,12 +841,12 @@ static const struct OamData sOam_UnusedBrendanLass =
static const struct SpriteFrameImage sImageTable_UnusedBrendan[] =
{
sUnusedBrendan_Gfx, sizeof(sUnusedBrendan_Gfx)
{sUnusedBrendan_Gfx, sizeof(sUnusedBrendan_Gfx)}
};
static const struct SpriteFrameImage sImageTable_UnusedLass[] =
{
sUnusedLass_Gfx, sizeof(sUnusedLass_Gfx)
{sUnusedLass_Gfx, sizeof(sUnusedLass_Gfx)}
};
static const union AnimCmd sSpriteAnim_UnusedBrendanLass[] =
@ -1017,8 +1017,7 @@ static void CB2_TestBattleTransition(void)
UpdatePaletteFade();
}
// Unused
static void TestBattleTransition(u8 transitionId)
static void UNUSED TestBattleTransition(u8 transitionId)
{
sTestingTransitionId = transitionId;
SetMainCallback2(CB2_TestBattleTransition);

View File

@ -378,7 +378,7 @@ void HandleAction_UseItem(void)
gBattleTextBuff1[2]++;
}
gBattleScripting.animArg1 = gBattleTextBuff1[2] + 14;
gBattleScripting.animArg1 = gBattleTextBuff1[2] + STAT_ANIM_PLUS1;
gBattleScripting.animArg2 = 0;
}
break;
@ -827,8 +827,7 @@ void PressurePPLoseOnUsingPerishSong(u8 attacker)
}
}
// Unused
static void MarkAllBattlersForControllerExec(void)
static void UNUSED MarkAllBattlersForControllerExec(void)
{
int i;
@ -1110,7 +1109,6 @@ u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check)
return unusableMoves;
}
#define ALL_MOVES_MASK ((1 << MAX_MON_MOVES) - 1)
bool8 AreAllMovesUnusable(void)
{
u8 unusable = CheckMoveLimitations(gActiveBattler, 0, MOVE_LIMITATIONS_ALL);
@ -1127,7 +1125,6 @@ bool8 AreAllMovesUnusable(void)
return (unusable == ALL_MOVES_MASK);
}
#undef ALL_MOVES_MASK
u8 GetImprisonedMovesCount(u8 battlerId, u16 move)
{
@ -2629,7 +2626,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (gBattleMons[battler].statStages[STAT_SPEED] < MAX_STAT_STAGE && gDisableStructs[battler].isFirstTurn != 2)
{
gBattleMons[battler].statStages[STAT_SPEED]++;
gBattleScripting.animArg1 = 14 + STAT_SPEED;
gBattleScripting.animArg1 = STAT_ANIM_PLUS1 + STAT_SPEED;
gBattleScripting.animArg2 = 0;
BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates);
gBattleScripting.battler = battler;
@ -2775,11 +2772,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
{
do
{
// Pick either MOVE_EFFECT_SLEEP, MOVE_EFFECT_POISON or MOVE_EFFECT_BURN
gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
} while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
// Replace MOVE_EFFECT_BURN with MOVE_EFFECT_PARALYSIS
if (gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_BURN)
gBattleCommunication[MOVE_EFFECT_BYTE] += 2; // 5 MOVE_EFFECT_PARALYSIS
gBattleCommunication[MOVE_EFFECT_BYTE] += (MOVE_EFFECT_PARALYSIS - MOVE_EFFECT_BURN);
gBattleCommunication[MOVE_EFFECT_BYTE] += MOVE_EFFECT_AFFECTS_USER;
BattleScriptPushCursor();
@ -3233,7 +3231,7 @@ enum
PREPARE_STAT_BUFFER(gBattleTextBuff1, stat); \
gEffectBattler = battlerId; \
SET_STATCHANGER(stat, 1, FALSE); \
gBattleScripting.animArg1 = 14 + (stat); \
gBattleScripting.animArg1 = STAT_ANIM_PLUS1 + (stat); \
gBattleScripting.animArg2 = 0; \
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); \
effect = ITEM_STATS_CHANGE; \
@ -3244,8 +3242,8 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
int i = 0;
u8 effect = ITEM_NO_EFFECT;
u8 changedPP = 0;
u8 battlerHoldEffect, atkHoldEffect, defHoldEffect;
u8 battlerHoldEffectParam, atkHoldEffectParam, defHoldEffectParam;
u8 battlerHoldEffect, atkHoldEffect, UNUSED defHoldEffect;
u8 battlerHoldEffectParam, atkHoldEffectParam, UNUSED defHoldEffectParam;
u16 atkItem, defItem;
gLastUsedItem = gBattleMons[battlerId].item;
@ -3419,7 +3417,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE); // Only the Attack stat-up berry has this
gEffectBattler = battlerId;
SET_STATCHANGER(STAT_ATK, 1, FALSE);
gBattleScripting.animArg1 = 14 + STAT_ATK;
gBattleScripting.animArg1 = STAT_ANIM_PLUS1 + STAT_ATK;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
@ -3474,7 +3472,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gEffectBattler = battlerId;
SET_STATCHANGER(i + 1, 2, FALSE);
gBattleScripting.animArg1 = 0x21 + i + 6;
gBattleScripting.animArg1 = STAT_ANIM_PLUS2 + (i + 1);
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
@ -3954,11 +3952,11 @@ u8 IsMonDisobedient(void)
if (calc < obedienceLevel)
{
calc = CheckMoveLimitations(gBattlerAttacker, gBitTable[gCurrMovePos], MOVE_LIMITATIONS_ALL);
if (calc == 0xF) // all moves cannot be used
if (calc == ALL_MOVES_MASK) // all moves cannot be used
{
// Randomly select, then print a disobedient string
// B_MSG_LOAFING, B_MSG_WONT_OBEY, B_MSG_TURNED_AWAY, or B_MSG_PRETEND_NOT_NOTICE
gBattleCommunication[MULTISTRING_CHOOSER] = Random() & (NUM_LOAF_STRINGS - 1);
gBattleCommunication[MULTISTRING_CHOOSER] = MOD(Random(), NUM_LOAF_STRINGS);
gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
return 1;
}
@ -3966,7 +3964,7 @@ u8 IsMonDisobedient(void)
{
do
{
gCurrMovePos = gChosenMovePos = Random() & (MAX_MON_MOVES - 1);
gCurrMovePos = gChosenMovePos = MOD(Random(), MAX_MON_MOVES);
} while (gBitTable[gCurrMovePos] & calc);
gCalledMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
@ -4009,7 +4007,7 @@ u8 IsMonDisobedient(void)
{
// Randomly select, then print a disobedient string
// B_MSG_LOAFING, B_MSG_WONT_OBEY, B_MSG_TURNED_AWAY, or B_MSG_PRETEND_NOT_NOTICE
gBattleCommunication[MULTISTRING_CHOOSER] = Random() & (NUM_LOAF_STRINGS - 1);
gBattleCommunication[MULTISTRING_CHOOSER] = MOD(Random(), NUM_LOAF_STRINGS);
gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
return 1;
}

View File

@ -2377,8 +2377,7 @@ static void Debug_SetMaxRPMStage(s16 value)
sDebug_MaxRPMStage = value;
}
// Unused
static s16 Debug_GetMaxRPMStage(void)
static s16 UNUSED Debug_GetMaxRPMStage(void)
{
return sDebug_MaxRPMStage;
}
@ -2388,8 +2387,7 @@ static void Debug_SetGameTimeStage(s16 value)
sDebug_GameTimeStage = value;
}
// Unued
static s16 Debug_GetGameTimeStage(void)
static s16 UNUSED Debug_GetGameTimeStage(void)
{
return sDebug_GameTimeStage;
}
@ -2501,8 +2499,7 @@ static void CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *p
flavors[i] = sPokeblockFlavors[i];
}
// Unused
static void Debug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 numPlayers, u8 *flavors, u16 maxRPM)
static void UNUSED Debug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 numPlayers, u8 *flavors, u16 maxRPM)
{
CalculatePokeblock(berries, pokeblock, numPlayers, flavors, maxRPM);
}
@ -3471,7 +3468,7 @@ static bool8 PrintBlendingResults(void)
struct Pokeblock pokeblock;
u8 flavors[FLAVOR_COUNT + 1];
u8 text[40];
u16 berryIds[4]; // unused
u16 UNUSED berryIds[4];
switch (sBerryBlender->mainState)
{
@ -3866,6 +3863,9 @@ static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s3
{
case 0:
case 3:
#ifdef UBFIX
default:
#endif
txtColor[0] = TEXT_COLOR_WHITE;
txtColor[1] = TEXT_COLOR_DARK_GRAY;
txtColor[2] = TEXT_COLOR_LIGHT_GRAY;

View File

@ -1062,7 +1062,7 @@ static void BerryCrush_SetVBlankCB(void)
SetVBlankCallback(VBlankCB);
}
static void BerryCrush_InitVBlankCB(void)
static void UNUSED BerryCrush_InitVBlankCB(void)
{
SetVBlankCallback(NULL);
}

View File

@ -34,8 +34,8 @@ static const struct {
}
};
// Unused. See berry_fix_program.c
static void LoadBerryFixGraphics(u32 idx)
// See berry_fix_program.c
static void UNUSED LoadBerryFixGraphics(u32 idx)
{
REG_DISPCNT = 0;
REG_BG0HOFS = 0;

View File

@ -15,8 +15,7 @@
static EWRAM_DATA u8 sBerryPowderVendorWindowId = 0;
// Unused
static const struct BgTemplate sBerryPowderBgTemplates[] =
static const struct BgTemplate UNUSED sBerryPowderBgTemplates[] =
{
{
.bg = 0,
@ -57,10 +56,9 @@ static const struct BgTemplate sBerryPowderBgTemplates[] =
};
// ? Part of the BG templates?
static const u32 sUnknown[] = {0xFF, 0x00};
static const u32 UNUSED sUnknown[] = {0xFF, 0x00};
// Unused
static const struct WindowTemplate sBerryPowderWindowTemplates[] =
static const struct WindowTemplate UNUSED sBerryPowderWindowTemplates[] =
{
{
.bg = 0,
@ -177,7 +175,7 @@ bool8 GiveBerryPowder(u32 amountToAdd)
}
}
static bool8 TakeBerryPowder_(u32 cost)
static bool8 UNUSED TakeBerryPowder_(u32 cost)
{
u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
if (!HasEnoughBerryPowder_(cost))

View File

@ -256,7 +256,7 @@ static void DoBrailleRegisteelEffect(void)
}
// theory: another commented out DoBrailleWait and Task_BrailleWait.
static void DoBrailleWait(void)
static void UNUSED DoBrailleWait(void)
{
}

View File

@ -195,8 +195,7 @@ static bool32 CheckSioErrored(u8 taskId)
return FALSE;
}
// Unused
static void Task_DelayedBlockRequest(u8 taskId)
static void UNUSED Task_DelayedBlockRequest(u8 taskId)
{
gTasks[taskId].data[0]++;
if (gTasks[taskId].data[0] == 10)
@ -1166,14 +1165,13 @@ void PlayerEnteredTradeSeat(void)
CreateTask_EnterCableClubSeat(Task_StartWiredTrade);
}
// Unused
static void CreateTask_StartWiredTrade(void)
static void UNUSED CreateTask_StartWiredTrade(void)
{
CreateTask(Task_StartWiredTrade, 80);
}
// Unused, implemented in Ruby/Sapphire
void Script_StartWiredTrade(void)
// Implemented in Ruby/Sapphire
void UNUSED Script_StartWiredTrade(void)
{
// CreateTask_StartWiredTrade();
// ScriptContext_Stop();
@ -1189,10 +1187,9 @@ void ColosseumPlayerSpotTriggered(void)
CreateTask_EnterCableClubSeat(Task_StartWiredCableClubBattle);
}
// Unused
static void CreateTask_EnterCableClubSeatNoFollowup(void)
static UNUSED void CreateTask_EnterCableClubSeatNoFollowup(void)
{
u8 taskId = CreateTask(Task_EnterCableClubSeat, 80);
u8 UNUSED taskId = CreateTask(Task_EnterCableClubSeat, 80);
ScriptContext_Stop();
}
@ -1262,8 +1259,7 @@ static void Task_WaitExitToScript(u8 taskId)
}
}
// Unused
static void ExitLinkToScript(u8 taskId)
static void UNUSED ExitLinkToScript(u8 taskId)
{
SetCloseLinkCallback();
gTasks[taskId].func = Task_WaitExitToScript;

View File

@ -3251,8 +3251,7 @@ static void DrawMoveEffectSymbol(u16 move, u8 contestant)
}
}
// Unused
static void DrawMoveEffectSymbols(void)
static void UNUSED DrawMoveEffectSymbols(void)
{
s32 i;
@ -4221,8 +4220,7 @@ static void SpriteCB_EndBlinkContestantBox(struct Sprite *sprite)
ResetBlendForContestantBoxBlink();
}
// Unused.
static void ContestDebugTogglePointTotal(void)
static void UNUSED ContestDebugTogglePointTotal(void)
{
if(eContestDebugMode == CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL)
eContestDebugMode = CONTEST_DEBUG_MODE_OFF;
@ -4876,15 +4874,13 @@ static void Task_ShowAndUpdateApplauseMeter(u8 taskId)
}
}
// Unused.
static void HideApplauseMeterNoAnim(void)
static void UNUSED HideApplauseMeterNoAnim(void)
{
gSprites[eContest.applauseMeterSpriteId].x2 = 0;
gSprites[eContest.applauseMeterSpriteId].invisible = FALSE;
}
// Unused.
static void ShowApplauseMeterNoAnim(void)
static void UNUSED ShowApplauseMeterNoAnim(void)
{
gSprites[eContest.applauseMeterSpriteId].invisible = TRUE;
}

View File

@ -326,7 +326,7 @@ u8 ContestAI_GetActionToUse(void)
{
// Randomly choose a move index. If it's the move
// with the highest (or tied highest) score, return
u8 moveIdx = Random() & (MAX_MON_MOVES - 1); // % MAX_MON_MOVES doesn't match
u8 moveIdx = MOD(Random(), MAX_MON_MOVES);
u8 score = eContestAI.moveScores[moveIdx];
int i;
for (i = 0; i < MAX_MON_MOVES; i++)

View File

@ -80,7 +80,7 @@ struct CreditsEntry
const u8 *text;
};
static EWRAM_DATA s16 sUnkVar = 0; // Never read, only set to 0
static EWRAM_DATA s16 UNUSED sUnkVar = 0; // Never read, only set to 0
static EWRAM_DATA u16 sSavedTaskId = 0;
EWRAM_DATA bool8 gHasHallOfFameRecords = 0;
static EWRAM_DATA bool8 sUsedSpeedUp = 0; // Never read

View File

@ -16,100 +16,100 @@ static const u32 sMinigameDigitsThin_Gfx[] = INCBIN_U32("graphics/link/minigame_
const struct SpriteFrameImage gBattlerPicTable_PlayerLeft[] =
{
BATTLER_OFFSET(0), MON_PIC_SIZE,
BATTLER_OFFSET(1), MON_PIC_SIZE,
BATTLER_OFFSET(2), MON_PIC_SIZE,
BATTLER_OFFSET(3), MON_PIC_SIZE,
{BATTLER_OFFSET(0), MON_PIC_SIZE},
{BATTLER_OFFSET(1), MON_PIC_SIZE},
{BATTLER_OFFSET(2), MON_PIC_SIZE},
{BATTLER_OFFSET(3), MON_PIC_SIZE},
};
const struct SpriteFrameImage gBattlerPicTable_OpponentLeft[] =
{
BATTLER_OFFSET(4), MON_PIC_SIZE,
BATTLER_OFFSET(5), MON_PIC_SIZE,
BATTLER_OFFSET(6), MON_PIC_SIZE,
BATTLER_OFFSET(7), MON_PIC_SIZE,
{BATTLER_OFFSET(4), MON_PIC_SIZE},
{BATTLER_OFFSET(5), MON_PIC_SIZE},
{BATTLER_OFFSET(6), MON_PIC_SIZE},
{BATTLER_OFFSET(7), MON_PIC_SIZE},
};
const struct SpriteFrameImage gBattlerPicTable_PlayerRight[] =
{
BATTLER_OFFSET(8), MON_PIC_SIZE,
BATTLER_OFFSET(9), MON_PIC_SIZE,
BATTLER_OFFSET(10), MON_PIC_SIZE,
BATTLER_OFFSET(11), MON_PIC_SIZE,
{BATTLER_OFFSET(8), MON_PIC_SIZE},
{BATTLER_OFFSET(9), MON_PIC_SIZE},
{BATTLER_OFFSET(10), MON_PIC_SIZE},
{BATTLER_OFFSET(11), MON_PIC_SIZE},
};
const struct SpriteFrameImage gBattlerPicTable_OpponentRight[] =
{
BATTLER_OFFSET(12), MON_PIC_SIZE,
BATTLER_OFFSET(13), MON_PIC_SIZE,
BATTLER_OFFSET(14), MON_PIC_SIZE,
BATTLER_OFFSET(15), MON_PIC_SIZE,
{BATTLER_OFFSET(12), MON_PIC_SIZE},
{BATTLER_OFFSET(13), MON_PIC_SIZE},
{BATTLER_OFFSET(14), MON_PIC_SIZE},
{BATTLER_OFFSET(15), MON_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Brendan[] =
{
gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE,
gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE,
gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE,
gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE,
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_May[] =
{
gTrainerBackPic_May + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE,
gTrainerBackPic_May + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE,
gTrainerBackPic_May + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE,
gTrainerBackPic_May + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE,
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Red[] =
{
gTrainerBackPic_Red + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE,
gTrainerBackPic_Red + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE,
gTrainerBackPic_Red + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE,
gTrainerBackPic_Red + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE,
gTrainerBackPic_Red + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE,
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Leaf[] =
{
gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE,
gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE,
gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE,
gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE,
gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE,
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[] =
{
gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE,
gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE,
gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE,
gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE,
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[] =
{
gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE,
gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE,
gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE,
gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE,
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Wally[] =
{
gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE,
gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE,
gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE,
gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE,
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
const struct SpriteFrameImage gTrainerBackPicTable_Steven[] =
{
gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE,
gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE,
gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE,
gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE,
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
};
static const union AnimCmd sAnim_GeneralFrame0[] =

View File

@ -221,565 +221,565 @@ static const u8 sCreditsText_MotoyasuTojima[] = _("Motoyasu Toji
static const u8 sCreditsText_NicolaPrattBarlow[] = _("Nicola Pratt-Barlow");
static const u8 sCreditsText_ShellieDow[] = _("Shellie Dow");
static const u8 sCreditsText_ErikJohnson[] = _("Erik Johnson");
static const struct CreditsEntry sCreditsEntry_EmptyString[] = { 0, FALSE, sCreditsText_EmptyString};
static const struct CreditsEntry sCreditsEntry_PkmnEmeraldVersion[] = { 7, TRUE, sCreditsText_PkmnEmeraldVersion};
static const struct CreditsEntry sCreditsEntry_Credits[] = {11, TRUE, sCreditsText_Credits};
static const struct CreditsEntry sCreditsEntry_ExecutiveDirector[] = { 8, TRUE, sCreditsText_ExecutiveDirector};
static const struct CreditsEntry sCreditsEntry_Director[] = {12, TRUE, sCreditsText_Director};
static const struct CreditsEntry sCreditsEntry_ArtDirector[] = {10, TRUE, sCreditsText_ArtDirector};
static const struct CreditsEntry sCreditsEntry_BattleDirector[] = {10, TRUE, sCreditsText_BattleDirector};
static const struct CreditsEntry sCreditsEntry_MainProgrammer[] = {10, TRUE, sCreditsText_MainProgrammer};
static const struct CreditsEntry sCreditsEntry_BattleSystemPgrms[] = { 8, TRUE, sCreditsText_BattleSystemPgrms};
static const struct CreditsEntry sCreditsEntry_FieldSystemPgrms[] = { 7, TRUE, sCreditsText_FieldSystemPgrms};
static const struct CreditsEntry sCreditsEntry_Programmers[] = {12, TRUE, sCreditsText_Programmers};
static const struct CreditsEntry sCreditsEntry_MainGraphicDesigner[] = { 7, TRUE, sCreditsText_MainGraphicDesigner};
static const struct CreditsEntry sCreditsEntry_GraphicDesigners[] = { 9, TRUE, sCreditsText_GraphicDesigners};
static const struct CreditsEntry sCreditsEntry_PkmnDesigners[] = {10, TRUE, sCreditsText_PkmnDesigners};
static const struct CreditsEntry sCreditsEntry_MusicComposition[] = {13, TRUE, sCreditsText_MusicComposition};
static const struct CreditsEntry sCreditsEntry_SoundEffectsAndPkmnVoices[] = { 4, TRUE, sCreditsText_SoundEffectsAndPkmnVoices};
static const struct CreditsEntry sCreditsEntry_GameDesigners[] = {11, TRUE, sCreditsText_GameDesigners};
static const struct CreditsEntry sCreditsEntry_ScenarioPlot[] = {11, TRUE, sCreditsText_ScenarioPlot};
static const struct CreditsEntry sCreditsEntry_Scenario[] = {13, TRUE, sCreditsText_Scenario};
static const struct CreditsEntry sCreditsEntry_ScriptDesigners[] = {10, TRUE, sCreditsText_ScriptDesigners};
static const struct CreditsEntry sCreditsEntry_MapDesigners[] = {11, TRUE, sCreditsText_MapDesigners};
static const struct CreditsEntry sCreditsEntry_MapDataDesigners[] = { 9, TRUE, sCreditsText_MapDataDesigners};
static const struct CreditsEntry sCreditsEntry_ParametricDesigners[] = { 9, TRUE, sCreditsText_ParametricDesigners};
static const struct CreditsEntry sCreditsEntry_PokedexText[] = {11, TRUE, sCreditsText_PokedexText};
static const struct CreditsEntry sCreditsEntry_EnvAndToolPgrms[] = { 6, TRUE, sCreditsText_EnvAndToolPgrms};
static const struct CreditsEntry sCreditsEntry_NCLProductTesting[] = {11, TRUE, sCreditsText_NCLProductTesting};
static const struct CreditsEntry sCreditsEntry_SpecialThanks[] = {10, TRUE, sCreditsText_SpecialThanks};
static const struct CreditsEntry sCreditsEntry_Coordinators[] = {11, TRUE, sCreditsText_Coordinators};
static const struct CreditsEntry sCreditsEntry_Producers[] = {11, TRUE, sCreditsText_Producers};
static const struct CreditsEntry sCreditsEntry_ExecProducers[] = { 7, TRUE, sCreditsText_ExecProducers};
static const struct CreditsEntry sCreditsEntry_InfoSupervisors[] = {10, TRUE, sCreditsText_InfoSupervisors};
static const struct CreditsEntry sCreditsEntry_TaskManagers[] = { 8, TRUE, sCreditsText_TaskManagers};
static const struct CreditsEntry sCreditsEntry_BrailleCodeCheck[] = {10, TRUE, sCreditsText_BrailleCodeCheck};
static const struct CreditsEntry sCreditsEntry_WorldDirector[] = {10, TRUE, sCreditsText_WorldDirector};
static const struct CreditsEntry sCreditsEntry_BattleFrontierData[] = { 8, TRUE, sCreditsText_BattleFrontierData};
static const struct CreditsEntry sCreditsEntry_SupportProgrammers[] = {10, TRUE, sCreditsText_SupportProgrammers};
static const struct CreditsEntry sCreditsEntry_Artwork[] = {12, TRUE, sCreditsText_Artwork};
static const struct CreditsEntry sCreditsEntry_LeadProgrammer[] = {10, TRUE, sCreditsText_LeadProgrammer};
static const struct CreditsEntry sCreditsEntry_LeadGraphicArtist[] = { 9, TRUE, sCreditsText_LeadGraphicArtist};
static const struct CreditsEntry sCreditsEntry_SatoshiTajiri[] = {11, FALSE, sCreditsText_SatoshiTajiri};
static const struct CreditsEntry sCreditsEntry_JunichiMasuda[] = {11, FALSE, sCreditsText_JunichiMasuda};
static const struct CreditsEntry sCreditsEntry_KenSugimori[] = {11, FALSE, sCreditsText_KenSugimori};
static const struct CreditsEntry sCreditsEntry_ShigekiMorimoto[] = {11, FALSE, sCreditsText_ShigekiMorimoto};
static const struct CreditsEntry sCreditsEntry_TetsuyaWatanabe[] = {11, FALSE, sCreditsText_TetsuyaWatanabe};
static const struct CreditsEntry sCreditsEntry_HisashiSogabe[] = {11, FALSE, sCreditsText_HisashiSogabe};
static const struct CreditsEntry sCreditsEntry_SosukeTamada[] = {11, FALSE, sCreditsText_SosukeTamada};
static const struct CreditsEntry sCreditsEntry_AkitoMori[] = {11, FALSE, sCreditsText_AkitoMori};
static const struct CreditsEntry sCreditsEntry_KeitaKagaya[] = {11, FALSE, sCreditsText_KeitaKagaya};
static const struct CreditsEntry sCreditsEntry_YoshinoriMatsuda[] = {11, FALSE, sCreditsText_YoshinoriMatsuda};
static const struct CreditsEntry sCreditsEntry_HiroyukiNakamura[] = {11, FALSE, sCreditsText_HiroyukiNakamura};
static const struct CreditsEntry sCreditsEntry_MasaoTaya[] = {11, FALSE, sCreditsText_MasaoTaya};
static const struct CreditsEntry sCreditsEntry_SatoshiNohara[] = {11, FALSE, sCreditsText_SatoshiNohara};
static const struct CreditsEntry sCreditsEntry_TomomichiOhta[] = {11, FALSE, sCreditsText_TomomichiOhta};
static const struct CreditsEntry sCreditsEntry_MiyukiIwasawa[] = {11, FALSE, sCreditsText_MiyukiIwasawa};
static const struct CreditsEntry sCreditsEntry_TakenoriOhta[] = {11, FALSE, sCreditsText_TakenoriOhta};
static const struct CreditsEntry sCreditsEntry_HironobuYoshida[] = {11, FALSE, sCreditsText_HironobuYoshida};
static const struct CreditsEntry sCreditsEntry_MotofumiFujiwara[] = {11, FALSE, sCreditsText_MotofumiFujiwara};
static const struct CreditsEntry sCreditsEntry_SatoshiOhta[] = {11, FALSE, sCreditsText_SatoshiOhta};
static const struct CreditsEntry sCreditsEntry_AsukaIwashita[] = {11, FALSE, sCreditsText_AsukaIwashita};
static const struct CreditsEntry sCreditsEntry_AimiTomita[] = {11, FALSE, sCreditsText_AimiTomita};
static const struct CreditsEntry sCreditsEntry_TakaoUnno[] = {11, FALSE, sCreditsText_TakaoUnno};
static const struct CreditsEntry sCreditsEntry_KanakoEo[] = {11, FALSE, sCreditsText_KanakoEo};
static const struct CreditsEntry sCreditsEntry_JunOkutani[] = {11, FALSE, sCreditsText_JunOkutani};
static const struct CreditsEntry sCreditsEntry_AtsukoNishida[] = {11, FALSE, sCreditsText_AtsukoNishida};
static const struct CreditsEntry sCreditsEntry_MuneoSaito[] = {11, FALSE, sCreditsText_MuneoSaito};
static const struct CreditsEntry sCreditsEntry_RenaYoshikawa[] = {11, FALSE, sCreditsText_RenaYoshikawa};
static const struct CreditsEntry sCreditsEntry_GoIchinose[] = {11, FALSE, sCreditsText_GoIchinose};
static const struct CreditsEntry sCreditsEntry_MorikazuAoki[] = {11, FALSE, sCreditsText_MorikazuAoki};
static const struct CreditsEntry sCreditsEntry_KojiNishino[] = {11, FALSE, sCreditsText_KojiNishino};
static const struct CreditsEntry sCreditsEntry_KenjiMatsushima[] = {11, FALSE, sCreditsText_KenjiMatsushima};
static const struct CreditsEntry sCreditsEntry_TetsujiOhta[] = {11, FALSE, sCreditsText_TetsujiOhta};
static const struct CreditsEntry sCreditsEntry_HitomiSato[] = {11, FALSE, sCreditsText_HitomiSato};
static const struct CreditsEntry sCreditsEntry_TakeshiKawachimaru[] = {11, FALSE, sCreditsText_TakeshiKawachimaru};
static const struct CreditsEntry sCreditsEntry_TeruyukiShimoyamada[] = {11, FALSE, sCreditsText_TeruyukiShimoyamada};
static const struct CreditsEntry sCreditsEntry_ShigeruOhmori[] = {11, FALSE, sCreditsText_ShigeruOhmori};
static const struct CreditsEntry sCreditsEntry_TadashiTakahashi[] = {11, FALSE, sCreditsText_TadashiTakahashi};
static const struct CreditsEntry sCreditsEntry_ToshinobuMatsumiya[] = {11, FALSE, sCreditsText_ToshinobuMatsumiya};
static const struct CreditsEntry sCreditsEntry_AkihitoTomisawa[] = {11, FALSE, sCreditsText_AkihitoTomisawa};
static const struct CreditsEntry sCreditsEntry_HirokiEnomoto[] = {11, FALSE, sCreditsText_HirokiEnomoto};
static const struct CreditsEntry sCreditsEntry_KazuyukiTerada[] = {11, FALSE, sCreditsText_KazuyukiTerada};
static const struct CreditsEntry sCreditsEntry_YuriSakurai[] = {11, FALSE, sCreditsText_YuriSakurai};
static const struct CreditsEntry sCreditsEntry_HiromiSagawa[] = {11, FALSE, sCreditsText_HiromiSagawa};
static const struct CreditsEntry sCreditsEntry_KenjiTominaga[] = {11, FALSE, sCreditsText_KenjiTominaga};
static const struct CreditsEntry sCreditsEntry_YoshioTajiri[] = {11, FALSE, sCreditsText_YoshioTajiri};
static const struct CreditsEntry sCreditsEntry_TeikoSasaki[] = {11, FALSE, sCreditsText_TeikoSasaki};
static const struct CreditsEntry sCreditsEntry_SachikoHamano[] = {11, FALSE, sCreditsText_SachikoHamano};
static const struct CreditsEntry sCreditsEntry_ChieMatsumiya[] = {11, FALSE, sCreditsText_ChieMatsumiya};
static const struct CreditsEntry sCreditsEntry_AkikoShinozaki[] = {11, FALSE, sCreditsText_AkikoShinozaki};
static const struct CreditsEntry sCreditsEntry_AstukoFujii[] = {11, FALSE, sCreditsText_AstukoFujii};
static const struct CreditsEntry sCreditsEntry_NozomuSaito[] = {11, FALSE, sCreditsText_NozomuSaito};
static const struct CreditsEntry sCreditsEntry_KenkichiToyama[] = {11, FALSE, sCreditsText_KenkichiToyama};
static const struct CreditsEntry sCreditsEntry_SuguruNakatsui[] = {11, FALSE, sCreditsText_SuguruNakatsui};
static const struct CreditsEntry sCreditsEntry_YumiFunasaka[] = {11, FALSE, sCreditsText_YumiFunasaka};
static const struct CreditsEntry sCreditsEntry_NaokoYanase[] = {11, FALSE, sCreditsText_NaokoYanase};
static const struct CreditsEntry sCreditsEntry_NCLSuperMarioClub[] = {11, FALSE, sCreditsText_NCLSuperMarioClub};
static const struct CreditsEntry sCreditsEntry_AtsushiTada[] = {11, FALSE, sCreditsText_AtsushiTada};
static const struct CreditsEntry sCreditsEntry_TakahiroOhnishi[] = {11, FALSE, sCreditsText_TakahiroOhnishi};
static const struct CreditsEntry sCreditsEntry_NorihideOkamura[] = {11, FALSE, sCreditsText_NorihideOkamura};
static const struct CreditsEntry sCreditsEntry_HiroNakamura[] = {11, FALSE, sCreditsText_HiroNakamura};
static const struct CreditsEntry sCreditsEntry_HiroyukiUesugi[] = {11, FALSE, sCreditsText_HiroyukiUesugi};
static const struct CreditsEntry sCreditsEntry_TerukiMurakawa[] = {11, FALSE, sCreditsText_TerukiMurakawa};
static const struct CreditsEntry sCreditsEntry_AkiraKinashi[] = {11, FALSE, sCreditsText_AkiraKinashi};
static const struct CreditsEntry sCreditsEntry_MichikoTakizawa[] = {11, FALSE, sCreditsText_MichikoTakizawa};
static const struct CreditsEntry sCreditsEntry_MakikoTakada[] = {11, FALSE, sCreditsText_MakikoTakada};
static const struct CreditsEntry sCreditsEntry_TakanaoKondo[] = {11, FALSE, sCreditsText_TakanaoKondo};
static const struct CreditsEntry sCreditsEntry_AiMashima[] = {11, FALSE, sCreditsText_AiMashima};
static const struct CreditsEntry sCreditsEntry_GakujiNomoto[] = {11, FALSE, sCreditsText_GakujiNomoto};
static const struct CreditsEntry sCreditsEntry_TakehiroIzushi[] = {11, FALSE, sCreditsText_TakehiroIzushi};
static const struct CreditsEntry sCreditsEntry_HitoshiYamagami[] = {11, FALSE, sCreditsText_HitoshiYamagami};
static const struct CreditsEntry sCreditsEntry_KyokoWatanabe[] = {11, FALSE, sCreditsText_KyokoWatanabe};
static const struct CreditsEntry sCreditsEntry_TakaoNakano[] = {11, FALSE, sCreditsText_TakaoNakano};
static const struct CreditsEntry sCreditsEntry_HiroyukiJinnai[] = {11, FALSE, sCreditsText_HiroyukiJinnai};
static const struct CreditsEntry sCreditsEntry_HiroakiTsuru[] = {11, FALSE, sCreditsText_HiroakiTsuru};
static const struct CreditsEntry sCreditsEntry_TsunekazIshihara[] = {11, FALSE, sCreditsText_TsunekazIshihara};
static const struct CreditsEntry sCreditsEntry_SatoruIwata[] = {11, FALSE, sCreditsText_SatoruIwata};
static const struct CreditsEntry sCreditsEntry_KazuyaSuyama[] = {11, FALSE, sCreditsText_KazuyaSuyama};
static const struct CreditsEntry sCreditsEntry_SatoshiMitsuhara[] = {11, FALSE, sCreditsText_SatoshiMitsuhara};
static const struct CreditsEntry sCreditsEntry_JapanBrailleLibrary[] = { 9, FALSE, sCreditsText_JapanBrailleLibrary};
static const struct CreditsEntry sCreditsEntry_TomotakaKomura[] = {11, FALSE, sCreditsText_TomotakaKomura};
static const struct CreditsEntry sCreditsEntry_MikikoOhhashi[] = {11, FALSE, sCreditsText_MikikoOhhashi};
static const struct CreditsEntry sCreditsEntry_DaisukeHoshino[] = {11, FALSE, sCreditsText_DaisukeHoshino};
static const struct CreditsEntry sCreditsEntry_KenjiroIto[] = {11, FALSE, sCreditsText_KenjiroIto};
static const struct CreditsEntry sCreditsEntry_RuiKawaguchi[] = {11, FALSE, sCreditsText_RuiKawaguchi};
static const struct CreditsEntry sCreditsEntry_ShunsukeKohori[] = {11, FALSE, sCreditsText_ShunsukeKohori};
static const struct CreditsEntry sCreditsEntry_SachikoNakamichi[] = {11, FALSE, sCreditsText_SachikoNakamichi};
static const struct CreditsEntry sCreditsEntry_FujikoNomura[] = {11, FALSE, sCreditsText_FujikoNomura};
static const struct CreditsEntry sCreditsEntry_KazukiYoshihara[] = {11, FALSE, sCreditsText_KazukiYoshihara};
static const struct CreditsEntry sCreditsEntry_RetsujiNomoto[] = {11, FALSE, sCreditsText_RetsujiNomoto};
static const struct CreditsEntry sCreditsEntry_AzusaTajima[] = {11, FALSE, sCreditsText_AzusaTajima};
static const struct CreditsEntry sCreditsEntry_ShusakuEgami[] = {11, FALSE, sCreditsText_ShusakuEgami};
static const struct CreditsEntry sCreditsEntry_PackageAndManual[] = { 0, TRUE, sCreditsText_PackageAndManual};
static const struct CreditsEntry sCreditsEntry_EnglishVersion[] = { 0, TRUE, sCreditsText_EnglishVersion};
static const struct CreditsEntry sCreditsEntry_Translator[] = { 0, TRUE, sCreditsText_Translator};
static const struct CreditsEntry sCreditsEntry_TextEditor[] = { 0, TRUE, sCreditsText_TextEditor};
static const struct CreditsEntry sCreditsEntry_NCLCoordinator[] = { 0, TRUE, sCreditsText_NCLCoordinator};
static const struct CreditsEntry sCreditsEntry_GraphicDesigner[] = { 0, TRUE, sCreditsText_GraphicDesigner};
static const struct CreditsEntry sCreditsEntry_NOAProductTesting[] = { 0, TRUE, sCreditsText_NOAProductTesting};
static const struct CreditsEntry sCreditsEntry_HideyukiNakajima[] = { 0, FALSE, sCreditsText_HideyukiNakajima};
static const struct CreditsEntry sCreditsEntry_HidenoriSaeki[] = { 0, FALSE, sCreditsText_HidenoriSaeki};
static const struct CreditsEntry sCreditsEntry_YokoWatanabe[] = { 0, FALSE, sCreditsText_YokoWatanabe};
static const struct CreditsEntry sCreditsEntry_SakaeKimura[] = { 0, FALSE, sCreditsText_SakaeKimura};
static const struct CreditsEntry sCreditsEntry_ChiakiShinkai[] = { 0, FALSE, sCreditsText_ChiakiShinkai};
static const struct CreditsEntry sCreditsEntry_SethMcMahill[] = { 0, FALSE, sCreditsText_SethMcMahill};
static const struct CreditsEntry sCreditsEntry_NobOgasawara[] = { 0, FALSE, sCreditsText_NobOgasawara};
static const struct CreditsEntry sCreditsEntry_TeresaLillygren[] = { 0, FALSE, sCreditsText_TeresaLillygren};
static const struct CreditsEntry sCreditsEntry_KimikoNakamichi[] = { 0, FALSE, sCreditsText_KimikoNakamichi};
static const struct CreditsEntry sCreditsEntry_SouichiYamamoto[] = { 0, FALSE, sCreditsText_SouichiYamamoto};
static const struct CreditsEntry sCreditsEntry_YuichiroIto[] = { 0, FALSE, sCreditsText_YuichiroIto};
static const struct CreditsEntry sCreditsEntry_ThomasHertzog[] = { 0, FALSE, sCreditsText_ThomasHertzog};
static const struct CreditsEntry sCreditsEntry_MikaKurosawa[] = { 0, FALSE, sCreditsText_MikaKurosawa};
static const struct CreditsEntry sCreditsEntry_NationalFederationBlind[] = { 0, FALSE, sCreditsText_NationalFederationBlind};
static const struct CreditsEntry sCreditsEntry_PatriciaAMaurer[] = { 0, FALSE, sCreditsText_PatriciaAMaurer};
static const struct CreditsEntry sCreditsEntry_EuropeanBlindUnion[] = { 0, FALSE, sCreditsText_EuropeanBlindUnion};
static const struct CreditsEntry sCreditsEntry_AustralianBrailleAuthority[] = { 0, FALSE, sCreditsText_AustralianBrailleAuthority};
static const struct CreditsEntry sCreditsEntry_RoyalNewZealandFederationBlind[] = { 0, FALSE, sCreditsText_RoyalNewZealandFederationBlind};
static const struct CreditsEntry sCreditsEntry_MotoyasuTojima[] = { 0, FALSE, sCreditsText_MotoyasuTojima};
static const struct CreditsEntry sCreditsEntry_NicolaPrattBarlow[] = { 0, FALSE, sCreditsText_NicolaPrattBarlow};
static const struct CreditsEntry sCreditsEntry_ShellieDow[] = { 0, FALSE, sCreditsText_ShellieDow};
static const struct CreditsEntry sCreditsEntry_ErikJohnson[] = { 0, FALSE, sCreditsText_ErikJohnson};
static const struct CreditsEntry sCreditsEntry_EmptyString = { 0, FALSE, sCreditsText_EmptyString};
static const struct CreditsEntry sCreditsEntry_PkmnEmeraldVersion = { 7, TRUE, sCreditsText_PkmnEmeraldVersion};
static const struct CreditsEntry sCreditsEntry_Credits = {11, TRUE, sCreditsText_Credits};
static const struct CreditsEntry sCreditsEntry_ExecutiveDirector = { 8, TRUE, sCreditsText_ExecutiveDirector};
static const struct CreditsEntry sCreditsEntry_Director = {12, TRUE, sCreditsText_Director};
static const struct CreditsEntry sCreditsEntry_ArtDirector = {10, TRUE, sCreditsText_ArtDirector};
static const struct CreditsEntry sCreditsEntry_BattleDirector = {10, TRUE, sCreditsText_BattleDirector};
static const struct CreditsEntry sCreditsEntry_MainProgrammer = {10, TRUE, sCreditsText_MainProgrammer};
static const struct CreditsEntry sCreditsEntry_BattleSystemPgrms = { 8, TRUE, sCreditsText_BattleSystemPgrms};
static const struct CreditsEntry sCreditsEntry_FieldSystemPgrms = { 7, TRUE, sCreditsText_FieldSystemPgrms};
static const struct CreditsEntry sCreditsEntry_Programmers = {12, TRUE, sCreditsText_Programmers};
static const struct CreditsEntry sCreditsEntry_MainGraphicDesigner = { 7, TRUE, sCreditsText_MainGraphicDesigner};
static const struct CreditsEntry sCreditsEntry_GraphicDesigners = { 9, TRUE, sCreditsText_GraphicDesigners};
static const struct CreditsEntry sCreditsEntry_PkmnDesigners = {10, TRUE, sCreditsText_PkmnDesigners};
static const struct CreditsEntry sCreditsEntry_MusicComposition = {13, TRUE, sCreditsText_MusicComposition};
static const struct CreditsEntry sCreditsEntry_SoundEffectsAndPkmnVoices = { 4, TRUE, sCreditsText_SoundEffectsAndPkmnVoices};
static const struct CreditsEntry sCreditsEntry_GameDesigners = {11, TRUE, sCreditsText_GameDesigners};
static const struct CreditsEntry sCreditsEntry_ScenarioPlot = {11, TRUE, sCreditsText_ScenarioPlot};
static const struct CreditsEntry sCreditsEntry_Scenario = {13, TRUE, sCreditsText_Scenario};
static const struct CreditsEntry sCreditsEntry_ScriptDesigners = {10, TRUE, sCreditsText_ScriptDesigners};
static const struct CreditsEntry sCreditsEntry_MapDesigners = {11, TRUE, sCreditsText_MapDesigners};
static const struct CreditsEntry sCreditsEntry_MapDataDesigners = { 9, TRUE, sCreditsText_MapDataDesigners};
static const struct CreditsEntry sCreditsEntry_ParametricDesigners = { 9, TRUE, sCreditsText_ParametricDesigners};
static const struct CreditsEntry sCreditsEntry_PokedexText = {11, TRUE, sCreditsText_PokedexText};
static const struct CreditsEntry sCreditsEntry_EnvAndToolPgrms = { 6, TRUE, sCreditsText_EnvAndToolPgrms};
static const struct CreditsEntry sCreditsEntry_NCLProductTesting = {11, TRUE, sCreditsText_NCLProductTesting};
static const struct CreditsEntry sCreditsEntry_SpecialThanks = {10, TRUE, sCreditsText_SpecialThanks};
static const struct CreditsEntry sCreditsEntry_Coordinators = {11, TRUE, sCreditsText_Coordinators};
static const struct CreditsEntry sCreditsEntry_Producers = {11, TRUE, sCreditsText_Producers};
static const struct CreditsEntry sCreditsEntry_ExecProducers = { 7, TRUE, sCreditsText_ExecProducers};
static const struct CreditsEntry sCreditsEntry_InfoSupervisors = {10, TRUE, sCreditsText_InfoSupervisors};
static const struct CreditsEntry sCreditsEntry_TaskManagers = { 8, TRUE, sCreditsText_TaskManagers};
static const struct CreditsEntry sCreditsEntry_BrailleCodeCheck = {10, TRUE, sCreditsText_BrailleCodeCheck};
static const struct CreditsEntry sCreditsEntry_WorldDirector = {10, TRUE, sCreditsText_WorldDirector};
static const struct CreditsEntry sCreditsEntry_BattleFrontierData = { 8, TRUE, sCreditsText_BattleFrontierData};
static const struct CreditsEntry sCreditsEntry_SupportProgrammers = {10, TRUE, sCreditsText_SupportProgrammers};
static const struct CreditsEntry sCreditsEntry_Artwork = {12, TRUE, sCreditsText_Artwork};
static const struct CreditsEntry sCreditsEntry_LeadProgrammer = {10, TRUE, sCreditsText_LeadProgrammer};
static const struct CreditsEntry sCreditsEntry_LeadGraphicArtist = { 9, TRUE, sCreditsText_LeadGraphicArtist};
static const struct CreditsEntry sCreditsEntry_SatoshiTajiri = {11, FALSE, sCreditsText_SatoshiTajiri};
static const struct CreditsEntry sCreditsEntry_JunichiMasuda = {11, FALSE, sCreditsText_JunichiMasuda};
static const struct CreditsEntry sCreditsEntry_KenSugimori = {11, FALSE, sCreditsText_KenSugimori};
static const struct CreditsEntry sCreditsEntry_ShigekiMorimoto = {11, FALSE, sCreditsText_ShigekiMorimoto};
static const struct CreditsEntry sCreditsEntry_TetsuyaWatanabe = {11, FALSE, sCreditsText_TetsuyaWatanabe};
static const struct CreditsEntry sCreditsEntry_HisashiSogabe = {11, FALSE, sCreditsText_HisashiSogabe};
static const struct CreditsEntry sCreditsEntry_SosukeTamada = {11, FALSE, sCreditsText_SosukeTamada};
static const struct CreditsEntry sCreditsEntry_AkitoMori = {11, FALSE, sCreditsText_AkitoMori};
static const struct CreditsEntry sCreditsEntry_KeitaKagaya = {11, FALSE, sCreditsText_KeitaKagaya};
static const struct CreditsEntry sCreditsEntry_YoshinoriMatsuda = {11, FALSE, sCreditsText_YoshinoriMatsuda};
static const struct CreditsEntry sCreditsEntry_HiroyukiNakamura = {11, FALSE, sCreditsText_HiroyukiNakamura};
static const struct CreditsEntry sCreditsEntry_MasaoTaya = {11, FALSE, sCreditsText_MasaoTaya};
static const struct CreditsEntry sCreditsEntry_SatoshiNohara = {11, FALSE, sCreditsText_SatoshiNohara};
static const struct CreditsEntry sCreditsEntry_TomomichiOhta = {11, FALSE, sCreditsText_TomomichiOhta};
static const struct CreditsEntry sCreditsEntry_MiyukiIwasawa = {11, FALSE, sCreditsText_MiyukiIwasawa};
static const struct CreditsEntry sCreditsEntry_TakenoriOhta = {11, FALSE, sCreditsText_TakenoriOhta};
static const struct CreditsEntry sCreditsEntry_HironobuYoshida = {11, FALSE, sCreditsText_HironobuYoshida};
static const struct CreditsEntry sCreditsEntry_MotofumiFujiwara = {11, FALSE, sCreditsText_MotofumiFujiwara};
static const struct CreditsEntry sCreditsEntry_SatoshiOhta = {11, FALSE, sCreditsText_SatoshiOhta};
static const struct CreditsEntry sCreditsEntry_AsukaIwashita = {11, FALSE, sCreditsText_AsukaIwashita};
static const struct CreditsEntry sCreditsEntry_AimiTomita = {11, FALSE, sCreditsText_AimiTomita};
static const struct CreditsEntry sCreditsEntry_TakaoUnno = {11, FALSE, sCreditsText_TakaoUnno};
static const struct CreditsEntry sCreditsEntry_KanakoEo = {11, FALSE, sCreditsText_KanakoEo};
static const struct CreditsEntry sCreditsEntry_JunOkutani = {11, FALSE, sCreditsText_JunOkutani};
static const struct CreditsEntry sCreditsEntry_AtsukoNishida = {11, FALSE, sCreditsText_AtsukoNishida};
static const struct CreditsEntry sCreditsEntry_MuneoSaito = {11, FALSE, sCreditsText_MuneoSaito};
static const struct CreditsEntry sCreditsEntry_RenaYoshikawa = {11, FALSE, sCreditsText_RenaYoshikawa};
static const struct CreditsEntry sCreditsEntry_GoIchinose = {11, FALSE, sCreditsText_GoIchinose};
static const struct CreditsEntry sCreditsEntry_MorikazuAoki = {11, FALSE, sCreditsText_MorikazuAoki};
static const struct CreditsEntry sCreditsEntry_KojiNishino = {11, FALSE, sCreditsText_KojiNishino};
static const struct CreditsEntry sCreditsEntry_KenjiMatsushima = {11, FALSE, sCreditsText_KenjiMatsushima};
static const struct CreditsEntry sCreditsEntry_TetsujiOhta = {11, FALSE, sCreditsText_TetsujiOhta};
static const struct CreditsEntry sCreditsEntry_HitomiSato = {11, FALSE, sCreditsText_HitomiSato};
static const struct CreditsEntry sCreditsEntry_TakeshiKawachimaru = {11, FALSE, sCreditsText_TakeshiKawachimaru};
static const struct CreditsEntry sCreditsEntry_TeruyukiShimoyamada = {11, FALSE, sCreditsText_TeruyukiShimoyamada};
static const struct CreditsEntry sCreditsEntry_ShigeruOhmori = {11, FALSE, sCreditsText_ShigeruOhmori};
static const struct CreditsEntry sCreditsEntry_TadashiTakahashi = {11, FALSE, sCreditsText_TadashiTakahashi};
static const struct CreditsEntry sCreditsEntry_ToshinobuMatsumiya = {11, FALSE, sCreditsText_ToshinobuMatsumiya};
static const struct CreditsEntry sCreditsEntry_AkihitoTomisawa = {11, FALSE, sCreditsText_AkihitoTomisawa};
static const struct CreditsEntry sCreditsEntry_HirokiEnomoto = {11, FALSE, sCreditsText_HirokiEnomoto};
static const struct CreditsEntry sCreditsEntry_KazuyukiTerada = {11, FALSE, sCreditsText_KazuyukiTerada};
static const struct CreditsEntry sCreditsEntry_YuriSakurai = {11, FALSE, sCreditsText_YuriSakurai};
static const struct CreditsEntry sCreditsEntry_HiromiSagawa = {11, FALSE, sCreditsText_HiromiSagawa};
static const struct CreditsEntry sCreditsEntry_KenjiTominaga = {11, FALSE, sCreditsText_KenjiTominaga};
static const struct CreditsEntry sCreditsEntry_YoshioTajiri = {11, FALSE, sCreditsText_YoshioTajiri};
static const struct CreditsEntry sCreditsEntry_TeikoSasaki = {11, FALSE, sCreditsText_TeikoSasaki};
static const struct CreditsEntry sCreditsEntry_SachikoHamano = {11, FALSE, sCreditsText_SachikoHamano};
static const struct CreditsEntry sCreditsEntry_ChieMatsumiya = {11, FALSE, sCreditsText_ChieMatsumiya};
static const struct CreditsEntry sCreditsEntry_AkikoShinozaki = {11, FALSE, sCreditsText_AkikoShinozaki};
static const struct CreditsEntry sCreditsEntry_AstukoFujii = {11, FALSE, sCreditsText_AstukoFujii};
static const struct CreditsEntry sCreditsEntry_NozomuSaito = {11, FALSE, sCreditsText_NozomuSaito};
static const struct CreditsEntry sCreditsEntry_KenkichiToyama = {11, FALSE, sCreditsText_KenkichiToyama};
static const struct CreditsEntry sCreditsEntry_SuguruNakatsui = {11, FALSE, sCreditsText_SuguruNakatsui};
static const struct CreditsEntry sCreditsEntry_YumiFunasaka = {11, FALSE, sCreditsText_YumiFunasaka};
static const struct CreditsEntry sCreditsEntry_NaokoYanase = {11, FALSE, sCreditsText_NaokoYanase};
static const struct CreditsEntry sCreditsEntry_NCLSuperMarioClub = {11, FALSE, sCreditsText_NCLSuperMarioClub};
static const struct CreditsEntry sCreditsEntry_AtsushiTada = {11, FALSE, sCreditsText_AtsushiTada};
static const struct CreditsEntry sCreditsEntry_TakahiroOhnishi = {11, FALSE, sCreditsText_TakahiroOhnishi};
static const struct CreditsEntry sCreditsEntry_NorihideOkamura = {11, FALSE, sCreditsText_NorihideOkamura};
static const struct CreditsEntry sCreditsEntry_HiroNakamura = {11, FALSE, sCreditsText_HiroNakamura};
static const struct CreditsEntry sCreditsEntry_HiroyukiUesugi = {11, FALSE, sCreditsText_HiroyukiUesugi};
static const struct CreditsEntry sCreditsEntry_TerukiMurakawa = {11, FALSE, sCreditsText_TerukiMurakawa};
static const struct CreditsEntry sCreditsEntry_AkiraKinashi = {11, FALSE, sCreditsText_AkiraKinashi};
static const struct CreditsEntry sCreditsEntry_MichikoTakizawa = {11, FALSE, sCreditsText_MichikoTakizawa};
static const struct CreditsEntry sCreditsEntry_MakikoTakada = {11, FALSE, sCreditsText_MakikoTakada};
static const struct CreditsEntry sCreditsEntry_TakanaoKondo = {11, FALSE, sCreditsText_TakanaoKondo};
static const struct CreditsEntry sCreditsEntry_AiMashima = {11, FALSE, sCreditsText_AiMashima};
static const struct CreditsEntry sCreditsEntry_GakujiNomoto = {11, FALSE, sCreditsText_GakujiNomoto};
static const struct CreditsEntry sCreditsEntry_TakehiroIzushi = {11, FALSE, sCreditsText_TakehiroIzushi};
static const struct CreditsEntry sCreditsEntry_HitoshiYamagami = {11, FALSE, sCreditsText_HitoshiYamagami};
static const struct CreditsEntry sCreditsEntry_KyokoWatanabe = {11, FALSE, sCreditsText_KyokoWatanabe};
static const struct CreditsEntry sCreditsEntry_TakaoNakano = {11, FALSE, sCreditsText_TakaoNakano};
static const struct CreditsEntry sCreditsEntry_HiroyukiJinnai = {11, FALSE, sCreditsText_HiroyukiJinnai};
static const struct CreditsEntry sCreditsEntry_HiroakiTsuru = {11, FALSE, sCreditsText_HiroakiTsuru};
static const struct CreditsEntry sCreditsEntry_TsunekazIshihara = {11, FALSE, sCreditsText_TsunekazIshihara};
static const struct CreditsEntry sCreditsEntry_SatoruIwata = {11, FALSE, sCreditsText_SatoruIwata};
static const struct CreditsEntry sCreditsEntry_KazuyaSuyama = {11, FALSE, sCreditsText_KazuyaSuyama};
static const struct CreditsEntry sCreditsEntry_SatoshiMitsuhara = {11, FALSE, sCreditsText_SatoshiMitsuhara};
static const struct CreditsEntry sCreditsEntry_JapanBrailleLibrary = { 9, FALSE, sCreditsText_JapanBrailleLibrary};
static const struct CreditsEntry sCreditsEntry_TomotakaKomura = {11, FALSE, sCreditsText_TomotakaKomura};
static const struct CreditsEntry sCreditsEntry_MikikoOhhashi = {11, FALSE, sCreditsText_MikikoOhhashi};
static const struct CreditsEntry sCreditsEntry_DaisukeHoshino = {11, FALSE, sCreditsText_DaisukeHoshino};
static const struct CreditsEntry sCreditsEntry_KenjiroIto = {11, FALSE, sCreditsText_KenjiroIto};
static const struct CreditsEntry sCreditsEntry_RuiKawaguchi = {11, FALSE, sCreditsText_RuiKawaguchi};
static const struct CreditsEntry sCreditsEntry_ShunsukeKohori = {11, FALSE, sCreditsText_ShunsukeKohori};
static const struct CreditsEntry sCreditsEntry_SachikoNakamichi = {11, FALSE, sCreditsText_SachikoNakamichi};
static const struct CreditsEntry sCreditsEntry_FujikoNomura = {11, FALSE, sCreditsText_FujikoNomura};
static const struct CreditsEntry sCreditsEntry_KazukiYoshihara = {11, FALSE, sCreditsText_KazukiYoshihara};
static const struct CreditsEntry sCreditsEntry_RetsujiNomoto = {11, FALSE, sCreditsText_RetsujiNomoto};
static const struct CreditsEntry sCreditsEntry_AzusaTajima = {11, FALSE, sCreditsText_AzusaTajima};
static const struct CreditsEntry sCreditsEntry_ShusakuEgami = {11, FALSE, sCreditsText_ShusakuEgami};
static const struct CreditsEntry sCreditsEntry_PackageAndManual = { 0, TRUE, sCreditsText_PackageAndManual};
static const struct CreditsEntry sCreditsEntry_EnglishVersion = { 0, TRUE, sCreditsText_EnglishVersion};
static const struct CreditsEntry sCreditsEntry_Translator = { 0, TRUE, sCreditsText_Translator};
static const struct CreditsEntry sCreditsEntry_TextEditor = { 0, TRUE, sCreditsText_TextEditor};
static const struct CreditsEntry sCreditsEntry_NCLCoordinator = { 0, TRUE, sCreditsText_NCLCoordinator};
static const struct CreditsEntry sCreditsEntry_GraphicDesigner = { 0, TRUE, sCreditsText_GraphicDesigner};
static const struct CreditsEntry sCreditsEntry_NOAProductTesting = { 0, TRUE, sCreditsText_NOAProductTesting};
static const struct CreditsEntry sCreditsEntry_HideyukiNakajima = { 0, FALSE, sCreditsText_HideyukiNakajima};
static const struct CreditsEntry sCreditsEntry_HidenoriSaeki = { 0, FALSE, sCreditsText_HidenoriSaeki};
static const struct CreditsEntry sCreditsEntry_YokoWatanabe = { 0, FALSE, sCreditsText_YokoWatanabe};
static const struct CreditsEntry sCreditsEntry_SakaeKimura = { 0, FALSE, sCreditsText_SakaeKimura};
static const struct CreditsEntry sCreditsEntry_ChiakiShinkai = { 0, FALSE, sCreditsText_ChiakiShinkai};
static const struct CreditsEntry sCreditsEntry_SethMcMahill = { 0, FALSE, sCreditsText_SethMcMahill};
static const struct CreditsEntry sCreditsEntry_NobOgasawara = { 0, FALSE, sCreditsText_NobOgasawara};
static const struct CreditsEntry sCreditsEntry_TeresaLillygren = { 0, FALSE, sCreditsText_TeresaLillygren};
static const struct CreditsEntry sCreditsEntry_KimikoNakamichi = { 0, FALSE, sCreditsText_KimikoNakamichi};
static const struct CreditsEntry sCreditsEntry_SouichiYamamoto = { 0, FALSE, sCreditsText_SouichiYamamoto};
static const struct CreditsEntry sCreditsEntry_YuichiroIto = { 0, FALSE, sCreditsText_YuichiroIto};
static const struct CreditsEntry sCreditsEntry_ThomasHertzog = { 0, FALSE, sCreditsText_ThomasHertzog};
static const struct CreditsEntry sCreditsEntry_MikaKurosawa = { 0, FALSE, sCreditsText_MikaKurosawa};
static const struct CreditsEntry sCreditsEntry_NationalFederationBlind = { 0, FALSE, sCreditsText_NationalFederationBlind};
static const struct CreditsEntry sCreditsEntry_PatriciaAMaurer = { 0, FALSE, sCreditsText_PatriciaAMaurer};
static const struct CreditsEntry sCreditsEntry_EuropeanBlindUnion = { 0, FALSE, sCreditsText_EuropeanBlindUnion};
static const struct CreditsEntry sCreditsEntry_AustralianBrailleAuthority = { 0, FALSE, sCreditsText_AustralianBrailleAuthority};
static const struct CreditsEntry sCreditsEntry_RoyalNewZealandFederationBlind = { 0, FALSE, sCreditsText_RoyalNewZealandFederationBlind};
static const struct CreditsEntry sCreditsEntry_MotoyasuTojima = { 0, FALSE, sCreditsText_MotoyasuTojima};
static const struct CreditsEntry sCreditsEntry_NicolaPrattBarlow = { 0, FALSE, sCreditsText_NicolaPrattBarlow};
static const struct CreditsEntry sCreditsEntry_ShellieDow = { 0, FALSE, sCreditsText_ShellieDow};
static const struct CreditsEntry sCreditsEntry_ErikJohnson = { 0, FALSE, sCreditsText_ErikJohnson};
#define _ sCreditsEntry_EmptyString
#define _ &sCreditsEntry_EmptyString
static const struct CreditsEntry *const sCreditsEntryPointerTable[PAGE_COUNT][ENTRIES_PER_PAGE] =
{
[PAGE_TITLE] = {
_,
sCreditsEntry_PkmnEmeraldVersion,
sCreditsEntry_Credits,
&sCreditsEntry_PkmnEmeraldVersion,
&sCreditsEntry_Credits,
_,
_
},
[PAGE_DIRECTOR] = {
_,
sCreditsEntry_Director,
sCreditsEntry_ShigekiMorimoto,
&sCreditsEntry_Director,
&sCreditsEntry_ShigekiMorimoto,
_,
_,
},
[PAGE_ART_DIRECTOR] = {
_,
sCreditsEntry_ArtDirector,
sCreditsEntry_KenSugimori,
&sCreditsEntry_ArtDirector,
&sCreditsEntry_KenSugimori,
_,
_,
},
[PAGE_WORLD_DIRECTOR] = {
_,
sCreditsEntry_WorldDirector,
sCreditsEntry_JunichiMasuda,
&sCreditsEntry_WorldDirector,
&sCreditsEntry_JunichiMasuda,
_,
_,
},
[PAGE_LEAD_PROGRAMMER] = {
sCreditsEntry_LeadProgrammer,
sCreditsEntry_HisashiSogabe,
sCreditsEntry_LeadGraphicArtist,
sCreditsEntry_MotofumiFujiwara,
&sCreditsEntry_LeadProgrammer,
&sCreditsEntry_HisashiSogabe,
&sCreditsEntry_LeadGraphicArtist,
&sCreditsEntry_MotofumiFujiwara,
_,
},
[PAGE_PROGRAMMERS_1] = {
sCreditsEntry_Programmers,
sCreditsEntry_HisashiSogabe,
sCreditsEntry_TomomichiOhta,
sCreditsEntry_NozomuSaito,
sCreditsEntry_EmptyString,
&sCreditsEntry_Programmers,
&sCreditsEntry_HisashiSogabe,
&sCreditsEntry_TomomichiOhta,
&sCreditsEntry_NozomuSaito,
_,
},
[PAGE_PROGRAMMERS_2] = {
sCreditsEntry_Programmers,
sCreditsEntry_AkitoMori,
sCreditsEntry_HiroyukiNakamura,
sCreditsEntry_MasaoTaya,
&sCreditsEntry_Programmers,
&sCreditsEntry_AkitoMori,
&sCreditsEntry_HiroyukiNakamura,
&sCreditsEntry_MasaoTaya,
_,
},
[PAGE_PROGRAMMERS_3] = {
sCreditsEntry_Programmers,
sCreditsEntry_SatoshiNohara,
sCreditsEntry_MiyukiIwasawa,
sCreditsEntry_YoshinoriMatsuda,
sCreditsEntry_KeitaKagaya,
&sCreditsEntry_Programmers,
&sCreditsEntry_SatoshiNohara,
&sCreditsEntry_MiyukiIwasawa,
&sCreditsEntry_YoshinoriMatsuda,
&sCreditsEntry_KeitaKagaya,
},
[PAGE_PROGRAMMERS_4] = {
sCreditsEntry_Programmers,
sCreditsEntry_TetsuyaWatanabe,
sCreditsEntry_SosukeTamada,
sCreditsEntry_TakenoriOhta,
&sCreditsEntry_Programmers,
&sCreditsEntry_TetsuyaWatanabe,
&sCreditsEntry_SosukeTamada,
&sCreditsEntry_TakenoriOhta,
_,
},
[PAGE_GRAPHIC_DESIGNERS_1] = {
_,
sCreditsEntry_GraphicDesigners,
sCreditsEntry_MotofumiFujiwara,
sCreditsEntry_SatoshiOhta,
&sCreditsEntry_GraphicDesigners,
&sCreditsEntry_MotofumiFujiwara,
&sCreditsEntry_SatoshiOhta,
_,
},
[PAGE_GRAPHIC_DESIGNERS_2] = {
sCreditsEntry_GraphicDesigners,
sCreditsEntry_KenkichiToyama,
sCreditsEntry_AsukaIwashita,
sCreditsEntry_TakaoUnno,
&sCreditsEntry_GraphicDesigners,
&sCreditsEntry_KenkichiToyama,
&sCreditsEntry_AsukaIwashita,
&sCreditsEntry_TakaoUnno,
_,
},
[PAGE_GRAPHIC_DESIGNERS_3] = {
sCreditsEntry_GraphicDesigners,
sCreditsEntry_KenSugimori,
sCreditsEntry_HironobuYoshida,
sCreditsEntry_AimiTomita,
sCreditsEntry_KanakoEo,
&sCreditsEntry_GraphicDesigners,
&sCreditsEntry_KenSugimori,
&sCreditsEntry_HironobuYoshida,
&sCreditsEntry_AimiTomita,
&sCreditsEntry_KanakoEo,
},
[PAGE_MUSIC_COMPOSITION] = {
sCreditsEntry_MusicComposition,
sCreditsEntry_GoIchinose,
sCreditsEntry_JunichiMasuda,
sCreditsEntry_MorikazuAoki,
sCreditsEntry_HitomiSato,
&sCreditsEntry_MusicComposition,
&sCreditsEntry_GoIchinose,
&sCreditsEntry_JunichiMasuda,
&sCreditsEntry_MorikazuAoki,
&sCreditsEntry_HitomiSato,
},
[PAGE_SOUND_EFFECTS] = {
_,
sCreditsEntry_SoundEffectsAndPkmnVoices,
sCreditsEntry_GoIchinose,
sCreditsEntry_MorikazuAoki,
&sCreditsEntry_SoundEffectsAndPkmnVoices,
&sCreditsEntry_GoIchinose,
&sCreditsEntry_MorikazuAoki,
_,
},
[PAGE_GAME_DESIGNERS_1] = {
sCreditsEntry_GameDesigners,
sCreditsEntry_ShigekiMorimoto,
sCreditsEntry_TeruyukiShimoyamada,
sCreditsEntry_TakeshiKawachimaru,
sCreditsEntry_AkihitoTomisawa,
&sCreditsEntry_GameDesigners,
&sCreditsEntry_ShigekiMorimoto,
&sCreditsEntry_TeruyukiShimoyamada,
&sCreditsEntry_TakeshiKawachimaru,
&sCreditsEntry_AkihitoTomisawa,
},
[PAGE_GAME_DESIGNERS_2] = {
sCreditsEntry_GameDesigners,
sCreditsEntry_SuguruNakatsui,
sCreditsEntry_TetsujiOhta,
sCreditsEntry_HitomiSato,
sCreditsEntry_KenjiMatsushima,
&sCreditsEntry_GameDesigners,
&sCreditsEntry_SuguruNakatsui,
&sCreditsEntry_TetsujiOhta,
&sCreditsEntry_HitomiSato,
&sCreditsEntry_KenjiMatsushima,
},
[PAGE_GAME_DESIGNERS_3] = {
sCreditsEntry_GameDesigners,
sCreditsEntry_JunichiMasuda,
sCreditsEntry_KojiNishino,
sCreditsEntry_ShigeruOhmori,
sCreditsEntry_TadashiTakahashi,
&sCreditsEntry_GameDesigners,
&sCreditsEntry_JunichiMasuda,
&sCreditsEntry_KojiNishino,
&sCreditsEntry_ShigeruOhmori,
&sCreditsEntry_TadashiTakahashi,
},
[PAGE_SCENARIO_PLOT] = {
sCreditsEntry_ScenarioPlot,
sCreditsEntry_AkihitoTomisawa,
sCreditsEntry_JunichiMasuda,
sCreditsEntry_KojiNishino,
&sCreditsEntry_ScenarioPlot,
&sCreditsEntry_AkihitoTomisawa,
&sCreditsEntry_JunichiMasuda,
&sCreditsEntry_KojiNishino,
_,
},
[PAGE_SCENARIO] = {
sCreditsEntry_Scenario,
sCreditsEntry_AkihitoTomisawa,
sCreditsEntry_HitomiSato,
sCreditsEntry_ToshinobuMatsumiya,
&sCreditsEntry_Scenario,
&sCreditsEntry_AkihitoTomisawa,
&sCreditsEntry_HitomiSato,
&sCreditsEntry_ToshinobuMatsumiya,
_,
},
[PAGE_SCRIPT_DESIGNERS] = {
sCreditsEntry_ScriptDesigners,
sCreditsEntry_TomomichiOhta,
sCreditsEntry_SatoshiNohara,
&sCreditsEntry_ScriptDesigners,
&sCreditsEntry_TomomichiOhta,
&sCreditsEntry_SatoshiNohara,
_,
_,
},
[PAGE_MAP_DESIGNERS] = {
sCreditsEntry_MapDesigners,
sCreditsEntry_SuguruNakatsui,
sCreditsEntry_TeruyukiShimoyamada,
sCreditsEntry_ShigeruOhmori,
sCreditsEntry_TetsujiOhta,
&sCreditsEntry_MapDesigners,
&sCreditsEntry_SuguruNakatsui,
&sCreditsEntry_TeruyukiShimoyamada,
&sCreditsEntry_ShigeruOhmori,
&sCreditsEntry_TetsujiOhta,
},
[PAGE_BATTLE_FRONTIER_DATA] = {
_,
sCreditsEntry_BattleFrontierData,
sCreditsEntry_TetsujiOhta,
&sCreditsEntry_BattleFrontierData,
&sCreditsEntry_TetsujiOhta,
_,
_,
},
[PAGE_PARAMETRIC_DESIGNERS] = {
sCreditsEntry_ParametricDesigners,
sCreditsEntry_TeruyukiShimoyamada,
sCreditsEntry_ShigekiMorimoto,
sCreditsEntry_TetsujiOhta,
sCreditsEntry_KojiNishino,
&sCreditsEntry_ParametricDesigners,
&sCreditsEntry_TeruyukiShimoyamada,
&sCreditsEntry_ShigekiMorimoto,
&sCreditsEntry_TetsujiOhta,
&sCreditsEntry_KojiNishino,
},
[PAGE_POKEDEX_TEXT] = {
_,
sCreditsEntry_PokedexText,
sCreditsEntry_KenjiMatsushima,
&sCreditsEntry_PokedexText,
&sCreditsEntry_KenjiMatsushima,
_,
_,
},
[PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_1] = {
sCreditsEntry_EnvAndToolPgrms,
sCreditsEntry_HisashiSogabe,
sCreditsEntry_SosukeTamada,
sCreditsEntry_HiroyukiNakamura,
sCreditsEntry_AkitoMori,
&sCreditsEntry_EnvAndToolPgrms,
&sCreditsEntry_HisashiSogabe,
&sCreditsEntry_SosukeTamada,
&sCreditsEntry_HiroyukiNakamura,
&sCreditsEntry_AkitoMori,
},
[PAGE_PKMN_DESIGNERS_1] = {
sCreditsEntry_PkmnDesigners,
sCreditsEntry_KenSugimori,
sCreditsEntry_MotofumiFujiwara,
sCreditsEntry_ShigekiMorimoto,
&sCreditsEntry_PkmnDesigners,
&sCreditsEntry_KenSugimori,
&sCreditsEntry_MotofumiFujiwara,
&sCreditsEntry_ShigekiMorimoto,
_,
},
[PAGE_PKMN_DESIGNERS_2] = {
sCreditsEntry_PkmnDesigners,
sCreditsEntry_HironobuYoshida,
sCreditsEntry_SatoshiOhta,
sCreditsEntry_AsukaIwashita,
&sCreditsEntry_PkmnDesigners,
&sCreditsEntry_HironobuYoshida,
&sCreditsEntry_SatoshiOhta,
&sCreditsEntry_AsukaIwashita,
_,
},
[PAGE_PKMN_DESIGNERS_3] = {
sCreditsEntry_PkmnDesigners,
sCreditsEntry_TakaoUnno,
sCreditsEntry_KanakoEo,
sCreditsEntry_AimiTomita,
&sCreditsEntry_PkmnDesigners,
&sCreditsEntry_TakaoUnno,
&sCreditsEntry_KanakoEo,
&sCreditsEntry_AimiTomita,
_,
},
[PAGE_PKMN_DESIGNERS_4] = {
sCreditsEntry_PkmnDesigners,
sCreditsEntry_AtsukoNishida,
sCreditsEntry_MuneoSaito,
sCreditsEntry_RenaYoshikawa,
sCreditsEntry_JunOkutani,
&sCreditsEntry_PkmnDesigners,
&sCreditsEntry_AtsukoNishida,
&sCreditsEntry_MuneoSaito,
&sCreditsEntry_RenaYoshikawa,
&sCreditsEntry_JunOkutani,
},
[PAGE_SUPPORT_PROGRAMMERS] = {
_,
sCreditsEntry_SupportProgrammers,
sCreditsEntry_SatoshiMitsuhara,
sCreditsEntry_DaisukeHoshino,
&sCreditsEntry_SupportProgrammers,
&sCreditsEntry_SatoshiMitsuhara,
&sCreditsEntry_DaisukeHoshino,
_,
},
[PAGE_NCL_PRODUCT_TESTING] = {
_,
sCreditsEntry_NCLProductTesting,
sCreditsEntry_NCLSuperMarioClub,
&sCreditsEntry_NCLProductTesting,
&sCreditsEntry_NCLSuperMarioClub,
_,
_,
},
[PAGE_PACKAGE_AND_MANUAL] = {
_,
sCreditsEntry_PackageAndManual,
sCreditsEntry_KenSugimori,
&sCreditsEntry_PackageAndManual,
&sCreditsEntry_KenSugimori,
_,
_,
},
[PAGE_SPECIAL_THANKS_1] = {
_,
sCreditsEntry_SpecialThanks,
sCreditsEntry_KenjiTominaga,
sCreditsEntry_HirokiEnomoto,
&sCreditsEntry_SpecialThanks,
&sCreditsEntry_KenjiTominaga,
&sCreditsEntry_HirokiEnomoto,
_,
},
[PAGE_SPECIAL_THANKS_2] = {
sCreditsEntry_SpecialThanks,
sCreditsEntry_KazuyaSuyama,
sCreditsEntry_KenjiroIto,
sCreditsEntry_MichikoTakizawa,
sCreditsEntry_MakikoTakada,
&sCreditsEntry_SpecialThanks,
&sCreditsEntry_KazuyaSuyama,
&sCreditsEntry_KenjiroIto,
&sCreditsEntry_MichikoTakizawa,
&sCreditsEntry_MakikoTakada,
},
[PAGE_SPECIAL_THANKS_3] = {
sCreditsEntry_SpecialThanks,
sCreditsEntry_MikikoOhhashi,
sCreditsEntry_TakanaoKondo,
sCreditsEntry_RuiKawaguchi,
&sCreditsEntry_SpecialThanks,
&sCreditsEntry_MikikoOhhashi,
&sCreditsEntry_TakanaoKondo,
&sCreditsEntry_RuiKawaguchi,
_,
},
[PAGE_SPECIAL_THANKS_4] = {
sCreditsEntry_SpecialThanks,
sCreditsEntry_TakahiroOhnishi,
sCreditsEntry_NorihideOkamura,
sCreditsEntry_ShunsukeKohori,
&sCreditsEntry_SpecialThanks,
&sCreditsEntry_TakahiroOhnishi,
&sCreditsEntry_NorihideOkamura,
&sCreditsEntry_ShunsukeKohori,
_,
},
[PAGE_INFORMATION_SUPERVISORS] = {
sCreditsEntry_InfoSupervisors,
sCreditsEntry_KazuyukiTerada,
sCreditsEntry_YuriSakurai,
sCreditsEntry_YumiFunasaka,
sCreditsEntry_NaokoYanase,
&sCreditsEntry_InfoSupervisors,
&sCreditsEntry_KazuyukiTerada,
&sCreditsEntry_YuriSakurai,
&sCreditsEntry_YumiFunasaka,
&sCreditsEntry_NaokoYanase,
},
[PAGE_ARTWORK_1] = {
_,
sCreditsEntry_Artwork,
sCreditsEntry_SachikoNakamichi,
sCreditsEntry_FujikoNomura,
&sCreditsEntry_Artwork,
&sCreditsEntry_SachikoNakamichi,
&sCreditsEntry_FujikoNomura,
_,
},
[PAGE_ARTWORK_2] = {
_,
sCreditsEntry_Artwork,
sCreditsEntry_HideyukiNakajima,
sCreditsEntry_HidenoriSaeki,
&sCreditsEntry_Artwork,
&sCreditsEntry_HideyukiNakajima,
&sCreditsEntry_HidenoriSaeki,
_,
},
[PAGE_ARTWORK_3] = {
sCreditsEntry_Artwork,
sCreditsEntry_YokoWatanabe,
sCreditsEntry_SakaeKimura,
sCreditsEntry_ChiakiShinkai,
&sCreditsEntry_Artwork,
&sCreditsEntry_YokoWatanabe,
&sCreditsEntry_SakaeKimura,
&sCreditsEntry_ChiakiShinkai,
_,
},
[PAGE_COORDINATORS] = {
sCreditsEntry_Coordinators,
sCreditsEntry_KazukiYoshihara,
sCreditsEntry_AkiraKinashi,
sCreditsEntry_RetsujiNomoto,
&sCreditsEntry_Coordinators,
&sCreditsEntry_KazukiYoshihara,
&sCreditsEntry_AkiraKinashi,
&sCreditsEntry_RetsujiNomoto,
_,
},
[PAGE_ENGLISH_VERSION] = {
_,
sCreditsEntry_EnglishVersion,
sCreditsEntry_HiroNakamura,
sCreditsEntry_SethMcMahill,
&sCreditsEntry_EnglishVersion,
&sCreditsEntry_HiroNakamura,
&sCreditsEntry_SethMcMahill,
_,
},
[PAGE_TRANSLATOR] = {
_,
sCreditsEntry_Translator,
sCreditsEntry_NobOgasawara,
&sCreditsEntry_Translator,
&sCreditsEntry_NobOgasawara,
_,
_,
},
[PAGE_TEXT_EDITOR] = {
_,
sCreditsEntry_TextEditor,
sCreditsEntry_TeresaLillygren,
&sCreditsEntry_TextEditor,
&sCreditsEntry_TeresaLillygren,
_,
_,
},
[PAGE_NCL_COORDINATOR] = {
_,
sCreditsEntry_NCLCoordinator,
sCreditsEntry_KimikoNakamichi,
&sCreditsEntry_NCLCoordinator,
&sCreditsEntry_KimikoNakamichi,
_,
_,
},
[PAGE_PROGRAMMERS_5] = {
sCreditsEntry_Programmers,
sCreditsEntry_TerukiMurakawa,
sCreditsEntry_SouichiYamamoto,
sCreditsEntry_YuichiroIto,
sCreditsEntry_AkiraKinashi,
&sCreditsEntry_Programmers,
&sCreditsEntry_TerukiMurakawa,
&sCreditsEntry_SouichiYamamoto,
&sCreditsEntry_YuichiroIto,
&sCreditsEntry_AkiraKinashi,
},
[PAGE_GRAPHIC_DESIGNER] = {
_,
sCreditsEntry_GraphicDesigner,
sCreditsEntry_AkiraKinashi,
&sCreditsEntry_GraphicDesigner,
&sCreditsEntry_AkiraKinashi,
_,
_,
},
[PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_2] = {
sCreditsEntry_EnvAndToolPgrms,
sCreditsEntry_TerukiMurakawa,
sCreditsEntry_SouichiYamamoto,
sCreditsEntry_KimikoNakamichi,
&sCreditsEntry_EnvAndToolPgrms,
&sCreditsEntry_TerukiMurakawa,
&sCreditsEntry_SouichiYamamoto,
&sCreditsEntry_KimikoNakamichi,
_,
},
[PAGE_NOA_TESTING] = {
sCreditsEntry_NOAProductTesting,
sCreditsEntry_ThomasHertzog,
sCreditsEntry_ErikJohnson,
sCreditsEntry_MikaKurosawa,
&sCreditsEntry_NOAProductTesting,
&sCreditsEntry_ThomasHertzog,
&sCreditsEntry_ErikJohnson,
&sCreditsEntry_MikaKurosawa,
_,
},
[PAGE_BRAILLE_CODE_CHECK_1] = {
sCreditsEntry_BrailleCodeCheck,
sCreditsEntry_NationalFederationBlind,
sCreditsEntry_PatriciaAMaurer,
sCreditsEntry_JapanBrailleLibrary,
sCreditsEntry_EuropeanBlindUnion,
&sCreditsEntry_BrailleCodeCheck,
&sCreditsEntry_NationalFederationBlind,
&sCreditsEntry_PatriciaAMaurer,
&sCreditsEntry_JapanBrailleLibrary,
&sCreditsEntry_EuropeanBlindUnion,
},
[PAGE_BRAILLE_CODE_CHECK_2] = {
_,
sCreditsEntry_BrailleCodeCheck,
sCreditsEntry_AustralianBrailleAuthority,
sCreditsEntry_RoyalNewZealandFederationBlind,
&sCreditsEntry_BrailleCodeCheck,
&sCreditsEntry_AustralianBrailleAuthority,
&sCreditsEntry_RoyalNewZealandFederationBlind,
_,
},
[PAGE_SPECIAL_THANKS_5] = {
sCreditsEntry_SpecialThanks,
sCreditsEntry_HiroyukiUesugi,
sCreditsEntry_MotoyasuTojima,
sCreditsEntry_NicolaPrattBarlow,
sCreditsEntry_ShellieDow,
&sCreditsEntry_SpecialThanks,
&sCreditsEntry_HiroyukiUesugi,
&sCreditsEntry_MotoyasuTojima,
&sCreditsEntry_NicolaPrattBarlow,
&sCreditsEntry_ShellieDow,
},
[PAGE_TASK_MANAGERS] = {
_,
sCreditsEntry_TaskManagers,
sCreditsEntry_AzusaTajima,
sCreditsEntry_ShusakuEgami,
&sCreditsEntry_TaskManagers,
&sCreditsEntry_AzusaTajima,
&sCreditsEntry_ShusakuEgami,
_,
},
[PAGE_PRODUCERS] = {
sCreditsEntry_Producers,
sCreditsEntry_HiroyukiJinnai,
sCreditsEntry_HitoshiYamagami,
sCreditsEntry_GakujiNomoto,
sCreditsEntry_HiroakiTsuru,
&sCreditsEntry_Producers,
&sCreditsEntry_HiroyukiJinnai,
&sCreditsEntry_HitoshiYamagami,
&sCreditsEntry_GakujiNomoto,
&sCreditsEntry_HiroakiTsuru,
},
[PAGE_EXECUTIVE_DIRECTOR] = {
_,
sCreditsEntry_ExecutiveDirector,
sCreditsEntry_SatoshiTajiri,
&sCreditsEntry_ExecutiveDirector,
&sCreditsEntry_SatoshiTajiri,
_,
_,
},
[PAGE_EXECUTIVE_PRODUCERS_1] = {
_,
sCreditsEntry_ExecProducers,
sCreditsEntry_SatoruIwata,
&sCreditsEntry_ExecProducers,
&sCreditsEntry_SatoruIwata,
_,
_,
},
[PAGE_EXECUTIVE_PRODUCERS_2] = {
_,
sCreditsEntry_ExecProducers,
sCreditsEntry_TsunekazIshihara,
&sCreditsEntry_ExecProducers,
&sCreditsEntry_TsunekazIshihara,
_,
_,
},

View File

@ -845,12 +845,12 @@ const u32 gMonShinyPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/shin
const u8 gMonIcon_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/icon.4bpp");
const u8 gMonFootprint_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/footprint.1bpp");
const u32 gMonStillFrontPic_Mrmime[] = INCBIN_U32("graphics/pokemon/mr_mime/front.4bpp.lz");
const u32 gMonPalette_Mrmime[] = INCBIN_U32("graphics/pokemon/mr_mime/normal.gbapal.lz");
const u32 gMonBackPic_Mrmime[] = INCBIN_U32("graphics/pokemon/mr_mime/back.4bpp.lz");
const u32 gMonShinyPalette_Mrmime[] = INCBIN_U32("graphics/pokemon/mr_mime/shiny.gbapal.lz");
const u8 gMonIcon_Mrmime[] = INCBIN_U8("graphics/pokemon/mr_mime/icon.4bpp");
const u8 gMonFootprint_Mrmime[] = INCBIN_U8("graphics/pokemon/mr_mime/footprint.1bpp");
const u32 gMonStillFrontPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/front.4bpp.lz");
const u32 gMonPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/normal.gbapal.lz");
const u32 gMonBackPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/back.4bpp.lz");
const u32 gMonShinyPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/shiny.gbapal.lz");
const u8 gMonIcon_MrMime[] = INCBIN_U8("graphics/pokemon/mr_mime/icon.4bpp");
const u8 gMonFootprint_MrMime[] = INCBIN_U8("graphics/pokemon/mr_mime/footprint.1bpp");
const u32 gMonStillFrontPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/front.4bpp.lz");
const u32 gMonPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/normal.gbapal.lz");

View File

@ -2,7 +2,7 @@
#define GET_POINT_COLOR_TYPE(bits) (((bits) >> 1) & 3)
#define GET_POINT_DELTA(bits) (((bits) >> 3) & 7)
#define PT(x, y, delta, colorType, offsetDownLeft) x, y, (delta << 3) | (colorType << 1) | offsetDownLeft
#define PT(x, y, delta, colorType, offsetDownLeft) {x, y, (delta << 3) | (colorType << 1) | offsetDownLeft}
static const u8 sPointillismPoints[][3] = {
PT( 0, 29, 3, 2, FALSE),

View File

@ -122,7 +122,7 @@ const u16 *const gLevelUpLearnsets[NUM_SPECIES] =
[SPECIES_SEAKING] = sSeakingLevelUpLearnset,
[SPECIES_STARYU] = sStaryuLevelUpLearnset,
[SPECIES_STARMIE] = sStarmieLevelUpLearnset,
[SPECIES_MR_MIME] = sMrmimeLevelUpLearnset,
[SPECIES_MR_MIME] = sMrMimeLevelUpLearnset,
[SPECIES_SCYTHER] = sScytherLevelUpLearnset,
[SPECIES_JYNX] = sJynxLevelUpLearnset,
[SPECIES_ELECTABUZZ] = sElectabuzzLevelUpLearnset,

View File

@ -1681,7 +1681,7 @@ static const u16 sStarmieLevelUpLearnset[] = {
LEVEL_UP_END
};
static const u16 sMrmimeLevelUpLearnset[] = {
static const u16 sMrMimeLevelUpLearnset[] = {
LEVEL_UP_MOVE( 1, MOVE_BARRIER),
LEVEL_UP_MOVE( 5, MOVE_CONFUSION),
LEVEL_UP_MOVE( 9, MOVE_SUBSTITUTE),

View File

@ -1469,7 +1469,7 @@ const struct PokedexEntry gPokedexEntries[] =
.categoryName = _("BARRIER"),
.height = 13,
.weight = 545,
.description = gMrmimePokedexText,
.description = gMrMimePokedexText,
.pokemonScale = 258,
.pokemonOffset = 6,
.trainerScale = 256,

View File

@ -730,7 +730,7 @@ const u8 gStarmiePokedexText[] = _(
"reflections of stars that twinkled on\n"
"gentle waves at night.");
const u8 gMrmimePokedexText[] = _(
const u8 gMrMimePokedexText[] = _(
"A MR. MIME is a master of pantomime. It can\n"
"convince others that something unseeable\n"
"actually exists. Once believed, the\n"

View File

@ -122,7 +122,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[] =
SPECIES_SPRITE(SEAKING, gMonBackPic_Seaking),
SPECIES_SPRITE(STARYU, gMonBackPic_Staryu),
SPECIES_SPRITE(STARMIE, gMonBackPic_Starmie),
SPECIES_SPRITE(MR_MIME, gMonBackPic_Mrmime),
SPECIES_SPRITE(MR_MIME, gMonBackPic_MrMime),
SPECIES_SPRITE(SCYTHER, gMonBackPic_Scyther),
SPECIES_SPRITE(JYNX, gMonBackPic_Jynx),
SPECIES_SPRITE(ELECTABUZZ, gMonBackPic_Electabuzz),

View File

@ -122,7 +122,7 @@ const u8 *const gMonFootprintTable[] =
[SPECIES_SEAKING] = gMonFootprint_Seaking,
[SPECIES_STARYU] = gMonFootprint_Staryu,
[SPECIES_STARMIE] = gMonFootprint_Starmie,
[SPECIES_MR_MIME] = gMonFootprint_Mrmime,
[SPECIES_MR_MIME] = gMonFootprint_MrMime,
[SPECIES_SCYTHER] = gMonFootprint_Scyther,
[SPECIES_JYNX] = gMonFootprint_Jynx,
[SPECIES_ELECTABUZZ] = gMonFootprint_Electabuzz,

View File

@ -122,7 +122,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] =
SPECIES_SPRITE(SEAKING, gMonFrontPic_Seaking),
SPECIES_SPRITE(STARYU, gMonFrontPic_Staryu),
SPECIES_SPRITE(STARMIE, gMonFrontPic_Starmie),
SPECIES_SPRITE(MR_MIME, gMonFrontPic_Mrmime),
SPECIES_SPRITE(MR_MIME, gMonFrontPic_MrMime),
SPECIES_SPRITE(SCYTHER, gMonFrontPic_Scyther),
SPECIES_SPRITE(JYNX, gMonFrontPic_Jynx),
SPECIES_SPRITE(ELECTABUZZ, gMonFrontPic_Electabuzz),

View File

@ -122,7 +122,7 @@ const struct CompressedSpritePalette gMonPaletteTable[] =
SPECIES_PAL(SEAKING, gMonPalette_Seaking),
SPECIES_PAL(STARYU, gMonPalette_Staryu),
SPECIES_PAL(STARMIE, gMonPalette_Starmie),
SPECIES_PAL(MR_MIME, gMonPalette_Mrmime),
SPECIES_PAL(MR_MIME, gMonPalette_MrMime),
SPECIES_PAL(SCYTHER, gMonPalette_Scyther),
SPECIES_PAL(JYNX, gMonPalette_Jynx),
SPECIES_PAL(ELECTABUZZ, gMonPalette_Electabuzz),

View File

@ -122,7 +122,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] =
SPECIES_SHINY_PAL(SEAKING, gMonShinyPalette_Seaking),
SPECIES_SHINY_PAL(STARYU, gMonShinyPalette_Staryu),
SPECIES_SHINY_PAL(STARMIE, gMonShinyPalette_Starmie),
SPECIES_SHINY_PAL(MR_MIME, gMonShinyPalette_Mrmime),
SPECIES_SHINY_PAL(MR_MIME, gMonShinyPalette_MrMime),
SPECIES_SHINY_PAL(SCYTHER, gMonShinyPalette_Scyther),
SPECIES_SHINY_PAL(JYNX, gMonShinyPalette_Jynx),
SPECIES_SHINY_PAL(ELECTABUZZ, gMonShinyPalette_Electabuzz),

View File

@ -122,7 +122,7 @@ const struct CompressedSpriteSheet gMonStillFrontPicTable[] =
SPECIES_SPRITE(SEAKING, gMonStillFrontPic_Seaking),
SPECIES_SPRITE(STARYU, gMonStillFrontPic_Staryu),
SPECIES_SPRITE(STARMIE, gMonStillFrontPic_Starmie),
SPECIES_SPRITE(MR_MIME, gMonStillFrontPic_Mrmime),
SPECIES_SPRITE(MR_MIME, gMonStillFrontPic_MrMime),
SPECIES_SPRITE(SCYTHER, gMonStillFrontPic_Scyther),
SPECIES_SPRITE(JYNX, gMonStillFrontPic_Jynx),
SPECIES_SPRITE(ELECTABUZZ, gMonStillFrontPic_Electabuzz),

View File

@ -372,8 +372,8 @@ static const u8 *const sActionTexts[] =
static const struct MenuAction sSelectTradeMonActions[] =
{
{sText_Summary2, Task_DrawSelectionSummary},
{sText_Trade2, Task_DrawSelectionTrade}
{sText_Summary2, {Task_DrawSelectionSummary}},
{sText_Trade2, {Task_DrawSelectionTrade}}
};
static const u8 *const sMessages[] =

View File

@ -331,7 +331,7 @@ void GetDaycareCost(void)
gSpecialVar_0x8005 = GetDaycareCostForMon(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
}
static void Debug_AddDaycareSteps(u16 numSteps)
static void UNUSED Debug_AddDaycareSteps(u16 numSteps)
{
gSaveBlock1Ptr->daycare.mons[0].steps += numSteps;
gSaveBlock1Ptr->daycare.mons[1].steps += numSteps;
@ -364,7 +364,7 @@ static void ClearDaycareMon(struct DaycareMon *daycareMon)
ClearDaycareMonMail(&daycareMon->mail);
}
static void ClearAllDaycareData(struct DayCare *daycare)
static void UNUSED ClearAllDaycareData(struct DayCare *daycare)
{
u8 i;
@ -498,8 +498,7 @@ void TriggerPendingDaycareEgg(void)
_TriggerPendingDaycareEgg(&gSaveBlock1Ptr->daycare);
}
// Unused
static void TriggerPendingDaycareMaleEgg(void)
static void UNUSED TriggerPendingDaycareMaleEgg(void)
{
_TriggerPendingDaycareMaleEgg(&gSaveBlock1Ptr->daycare);
}
@ -986,7 +985,7 @@ u8 GetDaycareState(void)
return DAYCARE_NO_MONS;
}
static u8 GetDaycarePokemonCount(void)
static u8 UNUSED GetDaycarePokemonCount(void)
{
u8 ret = CountPokemonInDaycare(&gSaveBlock1Ptr->daycare);
if (ret)
@ -1142,7 +1141,7 @@ static u8 *AppendMonGenderSymbol(u8 *name, struct BoxPokemon *boxMon)
return AppendGenderSymbol(name, GetBoxMonGender(boxMon));
}
static void GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest)
static void UNUSED GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest)
{
u8 monNames[DAYCARE_MON_COUNT][POKEMON_NAME_BUFFER_SIZE];
u8 i;
@ -1161,7 +1160,7 @@ static void GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest)
StringAppend(dest, gText_Exit4);
}
static void GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest)
static void UNUSED GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest)
{
u8 i;
u8 level;

View File

@ -113,7 +113,7 @@ void Unused_LZDecompressWramIndirect(const void **src, void *dest)
LZ77UnCompWram(*src, dest);
}
static void StitchObjectsOn8x8Canvas(s32 object_size, s32 object_count, u8 *src_tiles, u8 *dest_tiles)
static void UNUSED StitchObjectsOn8x8Canvas(s32 object_size, s32 object_count, u8 *src_tiles, u8 *dest_tiles)
{
/*
This function appears to emulate behaviour found in the GB(C) versions regarding how the Pokemon images

View File

@ -113,7 +113,7 @@ EWRAM_DATA static u16 sDecorationsCursorPos = 0;
EWRAM_DATA static u16 sDecorationsScrollOffset = 0;
EWRAM_DATA u8 gCurDecorationIndex = 0;
EWRAM_DATA static u8 sCurDecorationCategory = DECORCAT_DESK;
EWRAM_DATA static u32 sFiller[2] = {};
EWRAM_DATA static u32 UNUSED sFiller[2] = {};
EWRAM_DATA static struct DecorationPCContext sDecorationContext = {};
EWRAM_DATA static u8 sDecorMenuWindowIds[WINDOW_COUNT] = {};
EWRAM_DATA static struct DecorationItemsMenu *sDecorationItemsMenu = NULL;

View File

@ -2834,9 +2834,8 @@ static void GetScoreResults(struct DodrioGame_ScoreResults *dst, u8 playerId)
*dst = sGame->scoreResults[playerId];
}
// Unused
// Returns where the specified player's score ranks, 0 being first (highest score)
static u8 GetScoreRanking(u8 playerId)
static u8 UNUSED GetScoreRanking(u8 playerId)
{
u8 i, ranking = 0;
u8 numPlayers = sGame->numPlayers;
@ -3068,12 +3067,12 @@ static const u8 *const sDebug_PlayerNames[] =
sText_Digits
};
static void Debug_UpdateNumPlayers(void)
static void UNUSED Debug_UpdateNumPlayers(void)
{
sGame->numPlayers = GetLinkPlayerCount();
}
static void Debug_SetPlayerNamesAndResults(void)
static void UNUSED Debug_SetPlayerNamesAndResults(void)
{
u8 i, playerId;
@ -4253,8 +4252,7 @@ static void SetBerryAnim(u16 id, u8 animNum)
StartSpriteAnim(&gSprites[*sBerrySpriteIds[id]], animNum);
}
// Unused
static void UnusedSetSpritePos(u8 spriteId)
static void UNUSED UnusedSetSpritePos(u8 spriteId)
{
gSprites[spriteId].x = 20 * spriteId + 50;
gSprites[spriteId].y = 50;
@ -4486,8 +4484,7 @@ static void InitGameGfx(struct DodrioGame_Gfx *ptr)
SetGfxFunc(LoadGfx);
}
// Unused
static void FreeAllWindowBuffers_(void)
static void UNUSED FreeAllWindowBuffers_(void)
{
FreeAllWindowBuffers();
}

View File

@ -2758,7 +2758,7 @@ static void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2)
*str2 = gText_BeDeletedThatOkay;
}
static void GetKeyboardCursorColAndRow(u8 *column, u8 *row)
static void GetKeyboardCursorColAndRow(s8 *column, s8 *row)
{
*column = sEasyChatScreen->keyboardColumn;
*row = sEasyChatScreen->keyboardRow;
@ -2774,7 +2774,7 @@ static u8 GetKeyboardScrollOffset(void)
return sEasyChatScreen->keyboardScrollOffset;
}
static void GetWordSelectColAndRow(u8 *column, u8 *row)
static void GetWordSelectColAndRow(s8 *column, s8 *row)
{
*column = sEasyChatScreen->wordSelectColumn;
*row = sEasyChatScreen->wordSelectRow;
@ -2790,7 +2790,7 @@ static u8 GetWordSelectLastRow(void)
return sEasyChatScreen->wordSelectLastRow;
}
static u8 UnusedDummy(void)
static u8 UNUSED UnusedDummy(void)
{
return FALSE;
}
@ -5264,7 +5264,7 @@ u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows
return dest;
}
static u8 *UnusedConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows)
static u8 UNUSED *UnusedConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows)
{
u16 i, j, k;
u16 numColumns;
@ -5503,8 +5503,7 @@ u16 UnlockRandomTrendySaying(void)
return EC_EMPTY_WORD;
}
// Unused
static u16 GetRandomUnlockedTrendySaying(void)
static u16 UNUSED GetRandomUnlockedTrendySaying(void)
{
u16 i;
u16 n = GetNumTrendySayingsUnlocked();
@ -5650,8 +5649,7 @@ static u8 GetUnlockedEasyChatGroupId(u8 index)
return sWordData->unlockedGroupIds[index];
}
// Unused
static u8 *BufferEasyChatWordGroupName(u8 *dest, u8 groupId, u16 totalChars)
static u8 UNUSED *BufferEasyChatWordGroupName(u8 *dest, u8 groupId, u16 totalChars)
{
u16 i;
u8 *str = StringCopy(dest, sEasyChatGroupNamePointers[groupId]);

View File

@ -781,7 +781,7 @@ static void SpriteCB_Egg_Shake3(struct Sprite *sprite)
{
if (++sprite->sTimer > 38)
{
u16 species;
u16 UNUSED species;
sprite->callback = SpriteCB_Egg_WaitHatch;
sprite->sTimer = 0;
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyId], MON_DATA_SPECIES);

View File

@ -1324,7 +1324,7 @@ u8 Unref_TryInitLocalObjectEvent(u8 localId)
if (InBattlePyramid())
objectEventCount = GetNumBattlePyramidObjectEvents();
else if (InTrainerHill())
objectEventCount = 2;
objectEventCount = HILL_TRAINERS_PER_FLOOR;
else
objectEventCount = gMapHeader.events->objectEventCount;
@ -1640,7 +1640,7 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY)
if (InBattlePyramid())
objectCount = GetNumBattlePyramidObjectEvents();
else if (InTrainerHill())
objectCount = 2;
objectCount = HILL_TRAINERS_PER_FLOOR;
else
objectCount = gMapHeader.events->objectEventCount;
@ -2007,8 +2007,7 @@ static void LoadObjectEventPalette(u16 paletteTag)
LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]);
}
// Unused
static void LoadObjectEventPaletteSet(u16 *paletteTags)
static void UNUSED LoadObjectEventPaletteSet(u16 *paletteTags)
{
u8 i;
@ -2090,8 +2089,7 @@ static void _PatchObjectPalette(u16 tag, u8 slot)
PatchObjectPalette(tag, slot);
}
// Unused
static void IncrementObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y)
static void UNUSED IncrementObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y)
{
objectEvent->previousCoords.x = objectEvent->currentCoords.x;
objectEvent->previousCoords.y = objectEvent->currentCoords.y;
@ -2290,8 +2288,7 @@ void CameraObjectSetFollowedSpriteId(u8 spriteId)
}
}
// Unused
static u8 CameraObjectGetFollowedSpriteId(void)
static u8 UNUSED CameraObjectGetFollowedSpriteId(void)
{
struct Sprite *camera;
@ -2388,8 +2385,7 @@ static u16 GetObjectEventFlagIdByObjectEventId(u8 objectEventId)
return GetObjectEventFlagIdByLocalIdAndMap(gObjectEvents[objectEventId].localId, gObjectEvents[objectEventId].mapNum, gObjectEvents[objectEventId].mapGroup);
}
// Unused
static u8 GetObjectTrainerTypeByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
static u8 UNUSED GetObjectTrainerTypeByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
u8 objectEventId;
@ -2399,8 +2395,7 @@ static u8 GetObjectTrainerTypeByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup
return gObjectEvents[objectEventId].trainerType;
}
// Unused
static u8 GetObjectTrainerTypeByObjectEventId(u8 objectEventId)
static u8 UNUSED GetObjectTrainerTypeByObjectEventId(u8 objectEventId)
{
return gObjectEvents[objectEventId].trainerType;
}
@ -4763,8 +4758,7 @@ void MoveCoords(u8 direction, s16 *x, s16 *y)
*y += sDirectionToVectors[direction].y;
}
// Unused
static void MoveCoordsInMapCoordIncrement(u8 direction, s16 *x, s16 *y)
static void UNUSED MoveCoordsInMapCoordIncrement(u8 direction, s16 *x, s16 *y)
{
*x += sDirectionToVectors[direction].x << 4;
*y += sDirectionToVectors[direction].y << 4;
@ -7908,10 +7902,10 @@ static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, st
// each byte in that row is for the next direction of the bike in the order
// of down, up, left, right.
static const u8 bikeTireTracks_Transitions[4][4] = {
1, 2, 7, 8,
1, 2, 6, 5,
5, 8, 3, 4,
6, 7, 3, 4,
{1, 2, 7, 8},
{1, 2, 6, 5},
{5, 8, 3, 4},
{6, 7, 3, 4},
};
if (objEvent->currentCoords.x != objEvent->previousCoords.x || objEvent->currentCoords.y != objEvent->previousCoords.y)
@ -8580,8 +8574,7 @@ static void SpriteCB_VirtualObject(struct Sprite *sprite)
UpdateObjectEventSpriteInvisibility(sprite, sprite->sInvisible);
}
// Unused
static void DestroyVirtualObjects(void)
static void UNUSED DestroyVirtualObjects(void)
{
int i;

View File

@ -1634,8 +1634,7 @@ static void StartBgAnimation(bool8 isLink)
CreateBgAnimTask(isLink);
}
// Unused
static void PauseBgPaletteAnim(void)
static void UNUSED PauseBgPaletteAnim(void)
{
u8 taskId = FindTaskIdByFunc(Task_UpdateBgPalette);

View File

@ -606,8 +606,7 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
return FALSE;
}
// Unused
static void ClearFriendshipStepCounter(void)
static void UNUSED ClearFriendshipStepCounter(void)
{
VarSet(VAR_FRIENDSHIP_STEP_COUNTER, 0);
}

View File

@ -408,7 +408,7 @@ static bool32 AnimateDoorFrame(struct DoorGraphics *gfx, struct DoorAnimFrame *f
static void Task_AnimateDoor(u8 taskId)
{
u16 *data = gTasks[taskId].data;
u16 *data = (u16*) gTasks[taskId].data;
struct DoorAnimFrame *frames = (struct DoorAnimFrame *)(tFramesHi << 16 | tFramesLo);
struct DoorGraphics *gfx = (struct DoorGraphics *)(tGfxHi << 16 | tGfxLo);
@ -502,8 +502,8 @@ static s8 GetDoorSoundType(const struct DoorGraphics *gfx, u32 x, u32 y)
return gfx->sound;
}
// Unused. Debug? Same as FieldAnimateDoorOpen but doesnt return or check if metatile is actually a door
static void Debug_FieldAnimateDoorOpen(u32 x, u32 y)
// Debug? Same as FieldAnimateDoorOpen but doesnt return or check if metatile is actually a door
static void UNUSED Debug_FieldAnimateDoorOpen(u32 x, u32 y)
{
StartDoorOpenAnimation(sDoorAnimGraphicsTable, x, y);
}

View File

@ -900,8 +900,7 @@ u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buf
return CreateSprite(&spriteTemplate, x, y, subpriority);
}
// Unused
static void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest)
static void UNUSED LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest)
{
LZDecompressVram(gTrainerFrontPicTable[gender].data, dest);
LoadCompressedPalette(gTrainerFrontPicPaletteTable[gender].data, palOffset, PLTT_SIZE_4BPP);
@ -2610,7 +2609,7 @@ static void FieldMoveShowMonOutdoorsEffect_Init(struct Task *task)
{
task->data[11] = REG_WININ;
task->data[12] = REG_WINOUT;
StoreWordInTwoHalfwords(&task->data[13], (u32)gMain.vblankCallback);
StoreWordInTwoHalfwords((u16*) &task->data[13], (u32)gMain.vblankCallback);
task->tWinHoriz = WIN_RANGE(DISPLAY_WIDTH, DISPLAY_WIDTH + 1);
task->tWinVert = WIN_RANGE(DISPLAY_HEIGHT / 2, DISPLAY_HEIGHT / 2 + 1);
task->tWinIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;

View File

@ -1670,7 +1670,7 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 elevatio
struct ObjectEvent *objectEvent = &gObjectEvents[i];
if (objectEvent->active)
{
const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); // Unused
const struct ObjectEventGraphicsInfo UNUSED *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
struct Sprite *linkedSprite = &gSprites[objectEvent->spriteId];
xhi = sprite->x + sprite->centerToCornerVecX;

Some files were not shown because too many files have changed in this diff Show More