Merge branch 'master' into misc-tasks
This commit is contained in:
commit
f01a6afc98
10
README.md
10
README.md
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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++;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
Before Width: | Height: | Size: 430 B After Width: | Height: | Size: 430 B |
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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[];
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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++)
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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())
|
||||
{
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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},
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -1097,8 +1097,7 @@ static u16 GetNPCRoomGraphicsId(void)
|
||||
return sNPCTable[sNpcId].graphicsId;
|
||||
}
|
||||
|
||||
// Unused
|
||||
static u8 GetInWildMonRoom(void)
|
||||
static bool8 UNUSED GetInWildMonRoom(void)
|
||||
{
|
||||
return sInWildMonRoom;
|
||||
}
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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];
|
||||
}
|
||||
|
||||
@ -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];
|
||||
|
||||
@ -1248,7 +1248,7 @@ static void SetBattledTrainersFlags(void)
|
||||
FlagSet(GetTrainerAFlag());
|
||||
}
|
||||
|
||||
static void SetBattledTrainerFlag(void)
|
||||
static void UNUSED SetBattledTrainerFlag(void)
|
||||
{
|
||||
FlagSet(GetTrainerAFlag());
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -1062,7 +1062,7 @@ static void BerryCrush_SetVBlankCB(void)
|
||||
SetVBlankCallback(VBlankCB);
|
||||
}
|
||||
|
||||
static void BerryCrush_InitVBlankCB(void)
|
||||
static void UNUSED BerryCrush_InitVBlankCB(void)
|
||||
{
|
||||
SetVBlankCallback(NULL);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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++)
|
||||
|
||||
@ -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
|
||||
|
||||
100
src/data.c
100
src/data.c
@ -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[] =
|
||||
|
||||
@ -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,
|
||||
_,
|
||||
_,
|
||||
},
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -1469,7 +1469,7 @@ const struct PokedexEntry gPokedexEntries[] =
|
||||
.categoryName = _("BARRIER"),
|
||||
.height = 13,
|
||||
.weight = 545,
|
||||
.description = gMrmimePokedexText,
|
||||
.description = gMrMimePokedexText,
|
||||
.pokemonScale = 258,
|
||||
.pokemonOffset = 6,
|
||||
.trainerScale = 256,
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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[] =
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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]);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
Loading…
x
Reference in New Issue
Block a user