summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_ai_script_commands.c2
-rw-r--r--src/battle_controller_opponent.c24
-rw-r--r--src/battle_controller_safari.c2
-rw-r--r--src/battle_controller_wally.c2
-rw-r--r--src/battle_controllers.c40
-rw-r--r--src/battle_gfx_sfx_util.c24
-rw-r--r--src/battle_main.c38
-rw-r--r--src/battle_message.c124
-rw-r--r--src/battle_script_commands.c26
-rw-r--r--src/battle_setup.c10
-rw-r--r--src/battle_util.c4
-rw-r--r--src/battle_util2.c4
-rw-r--r--src/data/pokemon/trainer_class_lookups.h4
-rw-r--r--src/data/text/abilities.h473
-rw-r--r--src/data/text/move_descriptions.h2481
-rw-r--r--src/decoration.c22
-rw-r--r--src/event_object_movement.c2
-rw-r--r--src/field_camera.c6
-rwxr-xr-xsrc/field_message_box.c2
-rw-r--r--src/field_player_avatar.c1
-rw-r--r--src/fieldmap.c22
-rw-r--r--src/graphics.c10
-rw-r--r--src/hall_of_fame.c51
-rw-r--r--src/m4a_tables.c2
-rw-r--r--src/main_menu.c1064
-rw-r--r--src/mauville_old_man.c2
-rw-r--r--src/menu.c2
-rw-r--r--src/metatile_behavior.c1139
-rw-r--r--src/pokemon.c4
-rw-r--r--src/recorded_battle.c6
-rw-r--r--src/rom_8034C54.c4
-rw-r--r--src/rom_81520A8.c218
-rw-r--r--src/secret_base.c4
-rw-r--r--src/slot_machine.c3916
-rw-r--r--src/start_menu.c2
-rw-r--r--src/tileset_anims.c150
36 files changed, 7246 insertions, 2641 deletions
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 74247f8a2..1201a855a 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -369,7 +369,7 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves)
AI_THINKING_STRUCT->aiFlags = AI_SCRIPT_FIRST_BATTLE;
else if (gBattleTypeFlags & BATTLE_TYPE_FACTORY)
AI_THINKING_STRUCT->aiFlags = GetAiScriptsInBattleFactory();
- else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x4000000 | BATTLE_TYPE_SECRET_BASE))
+ else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE))
AI_THINKING_STRUCT->aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_TRY_TO_FAINT;
else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent_A].aiFlags | gTrainers[gTrainerBattleOpponent_B].aiFlags;
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 3c126aeec..c490ad314 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -40,7 +40,7 @@ extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
extern void sub_81A57E4(u8 battlerId, u16 stringId);
extern u8 GetFrontierBrainTrainerPicIndex(void);
-extern u8 sub_81D5588(u16 trainerId);
+extern u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId);
extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
extern u8 GetEreaderTrainerFrontSpriteId(void);
@@ -1236,18 +1236,18 @@ static void OpponentHandleDrawTrainerPic(void)
{
trainerPicId = GetFrontierBrainTrainerPicIndex();
}
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
{
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
if (gActiveBattler == 1)
- trainerPicId = sub_81D5588(gTrainerBattleOpponent_A);
+ trainerPicId = GetTrainerHillTrainerFrontSpriteId(gTrainerBattleOpponent_A);
else
- trainerPicId = sub_81D5588(gTrainerBattleOpponent_B);
+ trainerPicId = GetTrainerHillTrainerFrontSpriteId(gTrainerBattleOpponent_B);
}
else
{
- trainerPicId = sub_81D5588(gTrainerBattleOpponent_A);
+ trainerPicId = GetTrainerHillTrainerFrontSpriteId(gTrainerBattleOpponent_A);
}
}
else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
@@ -1320,18 +1320,18 @@ static void OpponentHandleTrainerSlide(void)
{
trainerPicId = GetFrontierBrainTrainerPicIndex();
}
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
{
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
if (gActiveBattler == 1)
- trainerPicId = sub_81D5588(gTrainerBattleOpponent_A);
+ trainerPicId = GetTrainerHillTrainerFrontSpriteId(gTrainerBattleOpponent_A);
else
- trainerPicId = sub_81D5588(gTrainerBattleOpponent_B);
+ trainerPicId = GetTrainerHillTrainerFrontSpriteId(gTrainerBattleOpponent_B);
}
else
{
- trainerPicId = sub_81D5588(gTrainerBattleOpponent_A);
+ trainerPicId = GetTrainerHillTrainerFrontSpriteId(gTrainerBattleOpponent_A);
}
}
else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
@@ -1552,10 +1552,10 @@ static void OpponentHandleChooseMove(void)
switch (chosenMoveId)
{
- case 5:
+ case AI_CHOICE_WATCH:
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_WATCH_CAREFULLY, 0);
break;
- case 4:
+ case AI_CHOICE_FLEE:
BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0);
break;
case 6:
@@ -1998,7 +1998,7 @@ static void OpponentHandleResetActionMoveSelection(void)
static void OpponentHandleCmd55(void)
{
- if (gBattleTypeFlags & BATTLE_TYPE_LINK && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK && !(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
{
gMain.inBattle = 0;
gMain.callback1 = gPreBattleCallback1;
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index aab804b41..898e18294 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -687,7 +687,7 @@ static void SafariHandleCmd55(void)
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
SafariBufferExecCompleted();
- if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
gBattlerControllerFuncs[gActiveBattler] = sub_81595E4;
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 747aa2987..80dd6d3bb 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -1560,7 +1560,7 @@ static void WallyHandleCmd55(void)
BeginFastPaletteFade(3);
WallyBufferExecCompleted();
- if (!(gBattleTypeFlags & BATTLE_TYPE_WILD) && gBattleTypeFlags & BATTLE_TYPE_LINK)
+ if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER) && gBattleTypeFlags & BATTLE_TYPE_LINK)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 4d714ca81..63154ae8b 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -330,7 +330,7 @@ static void InitSinglePlayerBtlControllers(void)
}
}
}
- else if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ else if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
{
gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
@@ -391,7 +391,7 @@ static void InitLinkBtlControllers(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
{
gBattleMainFunc = BeginBattleIntro;
@@ -416,7 +416,7 @@ static void InitLinkBtlControllers(void)
}
else if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
{
gBattleMainFunc = BeginBattleIntro;
@@ -453,7 +453,7 @@ static void InitLinkBtlControllers(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
{
- if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
{
gBattleMainFunc = BeginBattleIntro;
@@ -501,7 +501,7 @@ static void InitLinkBtlControllers(void)
{
multiplayerId = GetMultiplayerId();
- if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
gBattleMainFunc = BeginBattleIntro;
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
@@ -700,14 +700,14 @@ static void CreateTasksForSendRecvLinkBuffers(void)
enum
{
LINK_BUFF_BUFFER_ID,
- LINK_BUFF_ACTIVE_BANK,
+ LINK_BUFF_ACTIVE_BATTLER,
LINK_BUFF_ATTACKER,
LINK_BUFF_TARGET,
LINK_BUFF_SIZE_LO,
LINK_BUFF_SIZE_HI,
- LINK_BUFF_ABSENT_BANK_FLAGS,
- LINK_BUFF_EFFECT_BANK,
- LINK_BUFF_DATA
+ LINK_BUFF_ABSENT_BATTLER_FLAGS,
+ LINK_BUFF_EFFECT_BATTLER,
+ LINK_BUFF_DATA,
};
void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
@@ -722,13 +722,13 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
gTasks[gUnknown_02022D08].data[14] = 0;
}
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_BUFFER_ID] = bufferId;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ACTIVE_BANK] = gActiveBattler;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ACTIVE_BATTLER] = gActiveBattler;
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ATTACKER] = gBattlerAttacker;
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_TARGET] = gBattlerTarget;
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_LO] = alignedSize;
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ABSENT_BANK_FLAGS] = gAbsentBattlerFlags;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_EFFECT_BANK] = gEffectBattler;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ABSENT_BATTLER_FLAGS] = gAbsentBattlerFlags;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_EFFECT_BATTLER] = gEffectBattler;
for (i = 0; i < size; i++)
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_DATA + i] = data[i];
@@ -877,7 +877,7 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
gTasks[taskId].data[12] = 0;
gTasks[taskId].data[15] = 0;
}
- battlerId = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ACTIVE_BANK];
+ battlerId = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ACTIVE_BATTLER];
blockSize = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8);
switch (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 0])
@@ -886,19 +886,19 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
if (gBattleControllerExecFlags & gBitTable[battlerId])
return;
- memcpy(gBattleBufferA[battlerId], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 8], blockSize);
+ memcpy(gBattleBufferA[battlerId], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA], blockSize);
sub_803F850(battlerId);
- if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
{
- gBattlerAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 2];
- gBattlerTarget = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 3];
- gAbsentBattlerFlags = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 6];
- gEffectBattler = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 7];
+ gBattlerAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ATTACKER];
+ gBattlerTarget = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_TARGET];
+ gAbsentBattlerFlags = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ABSENT_BATTLER_FLAGS];
+ gEffectBattler = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_EFFECT_BATTLER];
}
break;
case 1:
- memcpy(gBattleBufferB[battlerId], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 8], blockSize);
+ memcpy(gBattleBufferB[battlerId], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA], blockSize);
break;
case 2:
var = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA];
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 6cb5ef070..e5c8582a9 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -47,11 +47,11 @@ extern const u32 gUnknown_08C093F0[];
extern const u32 gSubstituteDollTilemap[];
extern const u32 gSubstituteDollGfx[];
extern const u16 gSubstituteDollPal[];
-extern const u8 gUnknown_08C1F1C8[];
-extern const u8 gUnknown_08C1F46C[];
-extern const u8 gUnknown_08C1F5E8[];
-extern const u8 gUnknown_08C1F76C[];
-extern const u8 gUnknown_08C1F8E8[];
+extern const u8 gHealthboxSinglesPlayerGfx[];
+extern const u8 gHealthboxSinglesOpponentGfx[];
+extern const u8 gHealthboxDoublesPlayerGfx[];
+extern const u8 gHealthboxDoublesOpponentGfx[];
+extern const u8 gHealthboxSafariGfx[];
extern const u8 gBlankGfxCompressed[];
extern const u16 gBattleInterface_BallStatusBarPal[];
extern const u16 gBattleInterface_BallDisplayPal[];
@@ -72,29 +72,29 @@ static void ClearSpritesBattlerHealthboxAnimData(void);
// const rom data
static const struct CompressedSpriteSheet sSpriteSheet_SinglesPlayerHealthbox =
{
- gUnknown_08C1F1C8, 0x1000, TAG_HEALTHBOX_PLAYER1_TILE
+ gHealthboxSinglesPlayerGfx, 0x1000, TAG_HEALTHBOX_PLAYER1_TILE
};
static const struct CompressedSpriteSheet sSpriteSheet_SinglesOpponentHealthbox =
{
- gUnknown_08C1F46C, 0x1000, TAG_HEALTHBOX_OPPONENT1_TILE
+ gHealthboxSinglesOpponentGfx, 0x1000, TAG_HEALTHBOX_OPPONENT1_TILE
};
static const struct CompressedSpriteSheet sSpriteSheets_DoublesPlayerHealthbox[2] =
{
- {gUnknown_08C1F5E8, 0x800, TAG_HEALTHBOX_PLAYER1_TILE},
- {gUnknown_08C1F5E8, 0x800, TAG_HEALTHBOX_PLAYER2_TILE}
+ {gHealthboxDoublesPlayerGfx, 0x800, TAG_HEALTHBOX_PLAYER1_TILE},
+ {gHealthboxDoublesPlayerGfx, 0x800, TAG_HEALTHBOX_PLAYER2_TILE}
};
static const struct CompressedSpriteSheet sSpriteSheets_DoublesOpponentHealthbox[2] =
{
- {gUnknown_08C1F76C, 0x800, TAG_HEALTHBOX_OPPONENT1_TILE},
- {gUnknown_08C1F76C, 0x800, TAG_HEALTHBOX_OPPONENT2_TILE}
+ {gHealthboxDoublesOpponentGfx, 0x800, TAG_HEALTHBOX_OPPONENT1_TILE},
+ {gHealthboxDoublesOpponentGfx, 0x800, TAG_HEALTHBOX_OPPONENT2_TILE}
};
static const struct CompressedSpriteSheet sSpriteSheet_SafariHealthbox =
{
- gUnknown_08C1F8E8, 0x1000, TAG_HEALTHBOX_SAFARI_TILE
+ gHealthboxSafariGfx, 0x1000, TAG_HEALTHBOX_SAFARI_TILE
};
static const struct CompressedSpriteSheet sSpriteSheets_HealthBar[MAX_BATTLERS_COUNT] =
diff --git a/src/battle_main.c b/src/battle_main.c
index 781fbeff4..8f5d39055 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -219,7 +219,7 @@ EWRAM_DATA u8 gCurrMovePos = 0;
EWRAM_DATA u8 gChosenMovePos = 0;
EWRAM_DATA u16 gCurrentMove = 0;
EWRAM_DATA u16 gChosenMove = 0;
-EWRAM_DATA u16 gRandomMove = 0;
+EWRAM_DATA u16 gCalledMove = 0;
EWRAM_DATA s32 gBattleMoveDamage = 0;
EWRAM_DATA s32 gHpDealt = 0;
EWRAM_DATA s32 gTakenDmg[MAX_BATTLERS_COUNT] = {0};
@@ -877,7 +877,7 @@ static void sub_8036EB8(u8 arg0, u8 arg1)
if (gBlockRecvBuffer[0][0] == 256)
{
if (arg1 == 0)
- gBattleTypeFlags |= BATTLE_TYPE_WILD | BATTLE_TYPE_TRAINER;
+ gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER;
else
gBattleTypeFlags |= BATTLE_TYPE_TRAINER;
var++;
@@ -896,7 +896,7 @@ static void sub_8036EB8(u8 arg0, u8 arg1)
if (i == arg0)
{
if (arg1 == 0)
- gBattleTypeFlags |= BATTLE_TYPE_WILD | BATTLE_TYPE_TRAINER;
+ gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER;
else
gBattleTypeFlags |= BATTLE_TYPE_TRAINER;
var++;
@@ -916,7 +916,7 @@ static void sub_8036EB8(u8 arg0, u8 arg1)
}
if (i == arg0)
- gBattleTypeFlags |= BATTLE_TYPE_WILD | BATTLE_TYPE_TRAINER;
+ gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER;
else
gBattleTypeFlags |= BATTLE_TYPE_TRAINER;
}
@@ -979,7 +979,7 @@ static void CB2_HandleStartBattle(void)
else
{
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
- gBattleTypeFlags |= BATTLE_TYPE_WILD;
+ gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER;
gBattleCommunication[MULTIUSE_STATE] = 15;
SetAllPlayersBerryData();
}
@@ -1087,7 +1087,7 @@ static void CB2_HandleStartBattle(void)
if ((GetBlockReceivedStatus() & 3) == 3)
{
ResetBlockReceivedFlags();
- if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
memcpy(&gRecordedBattleRngSeed, gBlockRecvBuffer[enemyMultiplayerId], sizeof(gRecordedBattleRngSeed));
gBattleCommunication[MULTIUSE_STATE]++;
}
@@ -1181,7 +1181,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
else
{
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
- gBattleTypeFlags |= BATTLE_TYPE_WILD;
+ gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER;
gBattleCommunication[MULTIUSE_STATE] = 13;
SetAllPlayersBerryData();
}
@@ -1340,7 +1340,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
if ((GetBlockReceivedStatus() & 3) == 3)
{
ResetBlockReceivedFlags();
- if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
memcpy(&gRecordedBattleRngSeed, gBlockRecvBuffer[enemyMultiplayerId], sizeof(gRecordedBattleRngSeed));
gBattleCommunication[MULTIUSE_STATE]++;
}
@@ -1568,7 +1568,7 @@ static void CB2_HandleStartMultiBattle(void)
else
{
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
- gBattleTypeFlags |= BATTLE_TYPE_WILD;
+ gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER;
gBattleCommunication[MULTIUSE_STATE] = 7;
SetAllPlayersBerryData();
}
@@ -1920,7 +1920,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_EREADER_TRAINER
- | BATTLE_TYPE_x4000000)))
+ | BATTLE_TYPE_TRAINER_HILL)))
{
if (firstTrainer == TRUE)
ZeroEnemyPartyMons();
@@ -3302,7 +3302,7 @@ static void BattleIntroGetMonsData(void)
{
case 0:
gActiveBattler = gBattleCommunication[1];
- BtlController_EmitGetMonData(0, 0, 0);
+ BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0);
MarkBattlerForControllerExec(gActiveBattler);
gBattleCommunication[MULTIUSE_STATE]++;
break;
@@ -3385,7 +3385,7 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_LINK
| BATTLE_TYPE_x2000000
- | BATTLE_TYPE_x4000000)))
+ | BATTLE_TYPE_TRAINER_HILL)))
{
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
}
@@ -3398,7 +3398,7 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_LINK
| BATTLE_TYPE_x2000000
- | BATTLE_TYPE_x4000000)))
+ | BATTLE_TYPE_TRAINER_HILL)))
{
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
}
@@ -3709,7 +3709,7 @@ static void BattleIntroRecordMonsToDex(void)
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_LINK
| BATTLE_TYPE_x2000000
- | BATTLE_TYPE_x4000000)))
+ | BATTLE_TYPE_TRAINER_HILL)))
{
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
}
@@ -4326,7 +4326,7 @@ static void HandleTurnActionSelectionState(void)
}
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER
- && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000)
+ && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_TRAINER_HILL)
&& gBattleBufferB[gActiveBattler][1] == B_ACTION_RUN)
{
gSelectionBattleScripts[gActiveBattler] = BattleScript_AskIfWantsToForfeitMatch;
@@ -4597,7 +4597,7 @@ static void sub_803CDF8(void)
void SwapTurnOrder(u8 id1, u8 id2)
{
u32 temp;
-
+
SWAP(gActionsByTurnOrder[id1], gActionsByTurnOrder[id2], temp);
SWAP(gBattlerByTurnOrder[id1], gBattlerByTurnOrder[id2], temp);
}
@@ -4978,7 +4978,7 @@ static void HandleEndTurn_BattleWon(void)
gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN);
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER
- && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000 | BATTLE_TYPE_EREADER_TRAINER))
+ && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_EREADER_TRAINER))
{
BattleStopLowHpSound();
gBattlescriptCurrInstr = BattleScript_FrontierTrainerBattleWon;
@@ -5069,7 +5069,7 @@ static void HandleEndTurn_RanFromBattle(void)
gBattleOutcome = B_OUTCOME_FORFEITED;
gSaveBlock2Ptr->frontier.field_CA9_b = 1;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
{
gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeited;
gBattleOutcome = B_OUTCOME_FORFEITED;
@@ -5624,7 +5624,7 @@ bool8 TryRunFromBattle(u8 battler)
effect++;
}
}
- else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000) && gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_TRAINER_HILL) && gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
effect++;
}
diff --git a/src/battle_message.c b/src/battle_message.c
index 78b9ac53b..a5f549733 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -17,6 +17,7 @@
#include "menu.h"
#include "recorded_battle.h"
#include "international_string_util.h"
+#include "battle_frontier_2.h"
struct BattleWindowText
{
@@ -46,13 +47,12 @@ extern const u8 gText_PkmnTransferredLanettesPC[];
extern u8 GetFrontierBrainTrainerClass(void); // battle_frontier_2
extern u8 GetFrontierOpponentClass(u16 trainerId); // battle_tower
-extern u8 sub_81D5530(u16 trainerId); // pokenav
+extern u8 GetTrainerHillOpponentClass(u16 trainerId); // pokenav
extern u8 GetEreaderTrainerClassId(void); // battle_tower
extern void CopyFrontierBrainTrainerName(u8 *txtPtr); // battle_frontier_2
-extern void sub_81D5554(u8 *txtPtr, u16 trainerId); // pokenav
+extern void GetTrainerHillTrainerName(u8 *txtPtr, u16 trainerId); // pokenav
extern void GetEreaderTrainerName(u8 *txtPtr);
-extern void sub_81A36D0(u8 arg0, u16 trainerId); // battle_frontier_2
-extern void sub_81D572C(u8 arg0, u16 trainerId); // pokenav
+extern void CopyTrainerHillTrainerText(u8 arg0, u16 trainerId); // pokenav
extern void GetFrontierTrainerName(u8 *dst, u16 trainerId);
// this file's functions
@@ -334,14 +334,14 @@ static const u8 sText_GotAwaySafely[] = _("{PLAY_SE 0x0011}Got away safely!\p");
static const u8 sText_PkmnFledUsingIts[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p");
static const u8 sText_PkmnFledUsing[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing {B_ATK_ABILITY}!\p");
static const u8 sText_WildPkmnFled[] = _("{PLAY_SE 0x0011}Wild {B_BUFF1} fled!");
-static const u8 sText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_20}!");
-static const u8 sText_TwoLinkTrainersDefeated[] = _("Player beat {B_20}\nand {B_21}!");
-static const u8 sText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_20}!");
-static const u8 sText_PlayerLostToTwo[] = _("Player lost to {B_20}\nand {B_21}!");
-static const u8 sText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_20}!");
-static const u8 sText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_20} and {B_21}!");
-static const u8 sText_WildFled[] = _("{PLAY_SE 0x0011}{B_20} fled!");
-static const u8 sText_TwoWildFled[] = _("{PLAY_SE 0x0011}{B_20} and\n{B_21} fled!");
+static const u8 sText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_LINK_OPPONENT1_NAME}!");
+static const u8 sText_TwoLinkTrainersDefeated[] = _("Player beat {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!");
+static const u8 sText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_LINK_OPPONENT1_NAME}!");
+static const u8 sText_PlayerLostToTwo[] = _("Player lost to {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!");
+static const u8 sText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME}!");
+static const u8 sText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}!");
+static const u8 sText_WildFled[] = _("{PLAY_SE 0x0011}{B_LINK_OPPONENT1_NAME} fled!");
+static const u8 sText_TwoWildFled[] = _("{PLAY_SE 0x0011}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!");
static const u8 sText_NoRunningFromTrainers[] = _("No! There’s no running\nfrom a TRAINER battle!\p");
static const u8 sText_CantEscape[] = _("Can’t escape!\p");
static const u8 sText_DontLeaveBirch[] = _("PROF. BIRCH: Don’t leave me like this!\p");
@@ -398,33 +398,33 @@ static const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appea
static const u8 sText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}");
static const u8 sText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p");
static const u8 sText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p");
-static const u8 sText_LinkTrainerWantsToBattle[] = _("{B_20}\nwants to battle!");
-static const u8 sText_TwoLinkTrainersWantToBattle[] = _("{B_20} and {B_21}\nwant to battle!");
+static const u8 sText_LinkTrainerWantsToBattle[] = _("{B_LINK_OPPONENT1_NAME}\nwants to battle!");
+static const u8 sText_TwoLinkTrainersWantToBattle[] = _("{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}\nwant to battle!");
static const u8 sText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!");
static const u8 sText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!");
static const u8 sText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_BUFF1}!");
-static const u8 sText_LinkTrainerSentOutPkmn[] = _("{B_20} sent out\n{B_OPPONENT_MON1_NAME}!");
-static const u8 sText_LinkTrainerSentOutTwoPkmn[] = _("{B_20} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!");
-static const u8 sText_TwoLinkTrainersSentOutPkmn[] = _("{B_20} sent out {B_LINK_OPPONENT_MON1_NAME}!\n{B_21} sent out {B_LINK_OPPONENT_MON2_NAME}!");
-static const u8 sText_LinkTrainerSentOutPkmn2[] = _("{B_20} sent out\n{B_BUFF1}!");
-static const u8 sText_LinkTrainerMultiSentOutPkmn[] = _("{B_22} sent out\n{B_BUFF1}!");
+static const u8 sText_LinkTrainerSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME}!");
+static const u8 sText_LinkTrainerSentOutTwoPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!");
+static const u8 sText_TwoLinkTrainersSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out {B_LINK_OPPONENT_MON1_NAME}!\n{B_LINK_OPPONENT2_NAME} sent out {B_LINK_OPPONENT_MON2_NAME}!");
+static const u8 sText_LinkTrainerSentOutPkmn2[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_BUFF1}!");
+static const u8 sText_LinkTrainerMultiSentOutPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} sent out\n{B_BUFF1}!");
static const u8 sText_GoPkmn[] = _("Go! {B_PLAYER_MON1_NAME}!");
static const u8 sText_GoTwoPkmn[] = _("Go! {B_PLAYER_MON1_NAME} and\n{B_PLAYER_MON2_NAME}!");
static const u8 sText_GoPkmn2[] = _("Go! {B_BUFF1}!");
static const u8 sText_DoItPkmn[] = _("Do it! {B_BUFF1}!");
static const u8 sText_GoForItPkmn[] = _("Go for it, {B_BUFF1}!");
static const u8 sText_YourFoesWeakGetEmPkmn[] = _("Your foe’s weak!\nGet ’em, {B_BUFF1}!");
-static const u8 sText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_1F} sent out {B_LINK_PLAYER_MON2_NAME}!\nGo! {B_LINK_PLAYER_MON1_NAME}!");
+static const u8 sText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_LINK_PARTNER_NAME} sent out {B_LINK_PLAYER_MON2_NAME}!\nGo! {B_LINK_PLAYER_MON1_NAME}!");
static const u8 sText_PkmnThatsEnough[] = _("{B_BUFF1}, that’s enough!\nCome back!");
static const u8 sText_PkmnComeBack[] = _("{B_BUFF1}, come back!");
static const u8 sText_PkmnOkComeBack[] = _("{B_BUFF1}, OK!\nCome back!");
static const u8 sText_PkmnGoodComeBack[] = _("{B_BUFF1}, good!\nCome back!");
static const u8 sText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwithdrew {B_BUFF1}!");
-static const u8 sText_LinkTrainer1WithdrewPkmn[] = _("{B_20} withdrew\n{B_BUFF1}!");
-static const u8 sText_LinkTrainer2WithdrewPkmn[] = _("{B_22} withdrew\n{B_BUFF1}!");
+static const u8 sText_LinkTrainer1WithdrewPkmn[] = _("{B_LINK_OPPONENT1_NAME} withdrew\n{B_BUFF1}!");
+static const u8 sText_LinkTrainer2WithdrewPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} withdrew\n{B_BUFF1}!");
static const u8 sText_WildPkmnPrefix[] = _("Wild ");
static const u8 sText_FoePkmnPrefix[] = _("Foe ");
-static const u8 sText_EmptyString8[] = _( "");
+static const u8 sText_EmptyString8[] = _("");
static const u8 sText_FoePkmnPrefix2[] = _("Foe");
static const u8 sText_AllyPkmnPrefix[] = _("Ally");
static const u8 sText_FoePkmnPrefix3[] = _("Foe");
@@ -1321,8 +1321,8 @@ static const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_T
static const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!");
const u8 gText_RecordBattleToPass[] = _("Would you like to record your battle\non your FRONTIER PASS?");
const u8 gText_BattleRecordedOnPass[] = _("{B_PLAYER_NAME}’s battle result was recorded\non the FRONTIER PASS.");
-static const u8 sText_LinkTrainerWantsToBattlePause[] = _("{B_20}\nwants to battle!{PAUSE 49}");
-static const u8 sText_TwoLinkTrainersWantToBattlePause[] = _("{B_20} and {B_21}\nwant to battle!{PAUSE 49}");
+static const u8 sText_LinkTrainerWantsToBattlePause[] = _("{B_LINK_OPPONENT1_NAME}\nwants to battle!{PAUSE 49}");
+static const u8 sText_TwoLinkTrainersWantToBattlePause[] = _("{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}\nwant to battle!{PAUSE 49}");
// This is four lists of moves which use a different attack string in Japanese
// to the default. See the documentation for ChooseTypeOfMoveUsedString for more detail.
@@ -2303,13 +2303,13 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
u32 dstID = 0; // if they used dstID, why not use srcID as well?
const u8 *toCpy = NULL;
u8 text[30];
- u8 multiplayerID;
+ u8 multiplayerId;
s32 i;
if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
- multiplayerID = gUnknown_0203C7B4;
+ multiplayerId = gUnknown_0203C7B4;
else
- multiplayerID = GetMultiplayerId();
+ multiplayerId = GetMultiplayerId();
while (*src != EOS)
{
@@ -2383,25 +2383,25 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
toCpy = text;
break;
case B_TXT_LINK_PLAYER_MON1_NAME: // link first player poke name
- GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id]],
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_LINK_OPPONENT_MON1_NAME: // link first opponent poke name
- GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 1]],
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 1]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_LINK_PLAYER_MON2_NAME: // link second player poke name
- GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 2]],
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 2]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_LINK_OPPONENT_MON2_NAME: // link second opponent poke name
- GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 3]],
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 3]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
@@ -2513,8 +2513,8 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
toCpy = gTrainerClassNames[GetFrontierBrainTrainerClass()];
else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
toCpy = gTrainerClassNames[GetFrontierOpponentClass(gTrainerBattleOpponent_A)];
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
- toCpy = gTrainerClassNames[sub_81D5530(gTrainerBattleOpponent_A)];
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
+ toCpy = gTrainerClassNames[GetTrainerHillOpponentClass(gTrainerBattleOpponent_A)];
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
toCpy = gTrainerClassNames[GetEreaderTrainerClassId()];
else
@@ -2531,7 +2531,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
}
else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
{
- toCpy = gLinkPlayers[multiplayerID ^ BIT_SIDE].name;
+ toCpy = gLinkPlayers[multiplayerId ^ BIT_SIDE].name;
}
else if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN)
{
@@ -2543,9 +2543,9 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
GetFrontierTrainerName(text, gTrainerBattleOpponent_A);
toCpy = text;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
{
- sub_81D5554(text, gTrainerBattleOpponent_A);
+ GetTrainerHillTrainerName(text, gTrainerBattleOpponent_A);
toCpy = text;
}
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
@@ -2558,19 +2558,19 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
toCpy = gTrainers[gTrainerBattleOpponent_A].trainerName;
}
break;
- case B_TXT_1E: // link player name?
- toCpy = gLinkPlayers[multiplayerID].name;
+ case B_TXT_LINK_PLAYER_NAME: // link player name
+ toCpy = gLinkPlayers[multiplayerId].name;
break;
- case B_TXT_1F: // link partner name?
- toCpy = gLinkPlayers[GetBattlerMultiplayerId(2 ^ gLinkPlayers[multiplayerID].id)].name;
+ case B_TXT_LINK_PARTNER_NAME: // link partner name
+ toCpy = gLinkPlayers[GetBattlerMultiplayerId(BATTLE_PARTNER(gLinkPlayers[multiplayerId].id))].name;
break;
- case B_TXT_20: // link opponent 1 name?
- toCpy = gLinkPlayers[GetBattlerMultiplayerId(1 ^ gLinkPlayers[multiplayerID].id)].name;
+ case B_TXT_LINK_OPPONENT1_NAME: // link opponent 1 name
+ toCpy = gLinkPlayers[GetBattlerMultiplayerId(BATTLE_OPPOSITE(gLinkPlayers[multiplayerId].id))].name;
break;
- case B_TXT_21: // link opponent 2 name?
- toCpy = gLinkPlayers[GetBattlerMultiplayerId(3 ^ gLinkPlayers[multiplayerID].id)].name;
+ case B_TXT_LINK_OPPONENT2_NAME: // link opponent 2 name
+ toCpy = gLinkPlayers[GetBattlerMultiplayerId(BATTLE_PARTNER(BATTLE_OPPOSITE(gLinkPlayers[multiplayerId].id)))].name;
break;
- case B_TXT_22: // link scripting active name
+ case B_TXT_LINK_SCR_TRAINER_NAME: // link scripting active name
toCpy = gLinkPlayers[GetBattlerMultiplayerId(gBattleScripting.battler)].name;
break;
case B_TXT_PLAYER_NAME: // player name
@@ -2582,12 +2582,12 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
case B_TXT_TRAINER1_LOSE_TEXT: // trainerA lose text
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- sub_81A36D0(2, gTrainerBattleOpponent_A);
+ CopyFrontierTrainerText(FRONTIER_LOSE_TEXT, gTrainerBattleOpponent_A);
toCpy = gStringVar4;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
{
- sub_81D572C(4, gTrainerBattleOpponent_A);
+ CopyTrainerHillTrainerText(4, gTrainerBattleOpponent_A);
toCpy = gStringVar4;
}
else
@@ -2598,12 +2598,12 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- sub_81A36D0(1, gTrainerBattleOpponent_A);
+ CopyFrontierTrainerText(FRONTIER_WIN_TEXT, gTrainerBattleOpponent_A);
toCpy = gStringVar4;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
{
- sub_81D572C(3, gTrainerBattleOpponent_A);
+ CopyTrainerHillTrainerText(3, gTrainerBattleOpponent_A);
toCpy = gStringVar4;
}
break;
@@ -2655,8 +2655,8 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
case B_TXT_TRAINER2_CLASS:
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
toCpy = gTrainerClassNames[GetFrontierOpponentClass(gTrainerBattleOpponent_B)];
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
- toCpy = gTrainerClassNames[sub_81D5530(gTrainerBattleOpponent_B)];
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
+ toCpy = gTrainerClassNames[GetTrainerHillOpponentClass(gTrainerBattleOpponent_B)];
else
toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent_B].trainerClass];
break;
@@ -2666,9 +2666,9 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
GetFrontierTrainerName(text, gTrainerBattleOpponent_B);
toCpy = text;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
{
- sub_81D5554(text, gTrainerBattleOpponent_B);
+ GetTrainerHillTrainerName(text, gTrainerBattleOpponent_B);
toCpy = text;
}
else
@@ -2679,12 +2679,12 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
case B_TXT_TRAINER2_LOSE_TEXT:
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- sub_81A36D0(2, gTrainerBattleOpponent_B);
+ CopyFrontierTrainerText(FRONTIER_LOSE_TEXT, gTrainerBattleOpponent_B);
toCpy = gStringVar4;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
{
- sub_81D572C(4, gTrainerBattleOpponent_B);
+ CopyTrainerHillTrainerText(4, gTrainerBattleOpponent_B);
toCpy = gStringVar4;
}
else
@@ -2695,12 +2695,12 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
case B_TXT_TRAINER2_WIN_TEXT:
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- sub_81A36D0(1, gTrainerBattleOpponent_B);
+ CopyFrontierTrainerText(FRONTIER_WIN_TEXT, gTrainerBattleOpponent_B);
toCpy = gStringVar4;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
{
- sub_81D572C(3, gTrainerBattleOpponent_B);
+ CopyTrainerHillTrainerText(3, gTrainerBattleOpponent_B);
toCpy = gStringVar4;
}
break;
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 44194deda..10b432d8e 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -190,7 +190,7 @@ static void atk5F_swapattackerwithtarget(void);
static void atk60_incrementgamestat(void);
static void atk61_drawpartystatussummary(void);
static void atk62_hidepartystatussummary(void);
-static void atk63_jumptorandomattack(void);
+static void atk63_jumptocalledmove(void);
static void atk64_statusanimation(void);
static void atk65_status2animation(void);
static void atk66_chosenstatusanimation(void);
@@ -442,7 +442,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atk60_incrementgamestat,
atk61_drawpartystatussummary,
atk62_hidepartystatussummary,
- atk63_jumptorandomattack,
+ atk63_jumptocalledmove,
atk64_statusanimation,
atk65_status2animation,
atk66_chosenstatusanimation,
@@ -2739,7 +2739,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
break;
case MOVE_EFFECT_STEAL_ITEM:
{
- if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
{
gBattlescriptCurrInstr++;
break;
@@ -3268,7 +3268,7 @@ static void atk23_getexp(void)
if (GetBattlerSide(gBattlerFainted) != B_SIDE_OPPONENT || (gBattleTypeFlags &
(BATTLE_TYPE_LINK
| BATTLE_TYPE_x2000000
- | BATTLE_TYPE_x4000000
+ | BATTLE_TYPE_TRAINER_HILL
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_SAFARI
| BATTLE_TYPE_BATTLE_TOWER
@@ -4987,7 +4987,7 @@ static void atk4E_switchinanim(void)
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK
| BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_x2000000
- | BATTLE_TYPE_x4000000
+ | BATTLE_TYPE_TRAINER_HILL
| BATTLE_TYPE_FRONTIER)))
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
@@ -6049,12 +6049,12 @@ static void atk62_hidepartystatussummary(void)
gBattlescriptCurrInstr += 2;
}
-static void atk63_jumptorandomattack(void)
+static void atk63_jumptocalledmove(void)
{
if (gBattlescriptCurrInstr[1])
- gCurrentMove = gRandomMove;
+ gCurrentMove = gCalledMove;
else
- gChosenMove = gCurrentMove = gRandomMove;
+ gChosenMove = gCurrentMove = gCalledMove;
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
}
@@ -8509,10 +8509,10 @@ static void atkA9_trychoosesleeptalkmove(void)
movePosition = Random() & 3;
} while ((gBitTable[movePosition] & unusableMovesBits));
- gRandomMove = gBattleMons[gBattlerAttacker].moves[movePosition];
+ gCalledMove = gBattleMons[gBattlerAttacker].moves[movePosition];
gCurrMovePos = movePosition;
gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
- gBattlerTarget = GetMoveTarget(gRandomMove, 0);
+ gBattlerTarget = GetMoveTarget(gCalledMove, 0);
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
}
@@ -9405,7 +9405,7 @@ static void atkD1_trysethelpinghand(void)
static void atkD2_tryswapitems(void) // trick
{
// opponent can't swap items with player in regular battles
- if (gBattleTypeFlags & BATTLE_TYPE_x4000000
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL
|| (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK
| BATTLE_TYPE_EREADER_TRAINER
@@ -9737,8 +9737,8 @@ static void atkDE_asistattackselect(void)
if (chooseableMovesNo)
{
gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
- gRandomMove = movesArray[((Random() & 0xFF) * chooseableMovesNo) >> 8];
- gBattlerTarget = GetMoveTarget(gRandomMove, 0);
+ gCalledMove = movesArray[((Random() & 0xFF) * chooseableMovesNo) >> 8];
+ gBattlerTarget = GetMoveTarget(gCalledMove, 0);
gBattlescriptCurrInstr += 5;
}
else
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 17ab20ccd..f9fab3d17 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -75,7 +75,7 @@ extern void sub_81D6384(void);
extern void sub_81D61E8(void);
extern void sub_80982B8(void);
extern void sub_81A9EDC(u16 a0);
-extern void sub_81D572C(u8 a0, u16 arg1);
+extern void CopyTrainerHillTrainerText(u8 a0, u16 arg1);
// this file's functions
static void DoBattlePikeWildBattle(void);
@@ -642,7 +642,7 @@ u8 BattleSetup_GetTerrainId(void)
case MAP_TYPE_ROUTE:
break;
case MAP_TYPE_UNDERGROUND:
- if (MetatileBehavior_IsMB_0B(tileBehavior))
+ if (MetatileBehavior_IsIndoorEncounter(tileBehavior))
return BATTLE_TERRAIN_BUILDING;
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
return BATTLE_TERRAIN_POND;
@@ -1281,7 +1281,7 @@ void BattleSetup_StartTrainerBattle(void)
}
else if (sub_81D5C18())
{
- gBattleTypeFlags |= BATTLE_TYPE_x4000000;
+ gBattleTypeFlags |= BATTLE_TYPE_TRAINER_HILL;
if (gNoOfApproachingTrainers == 2)
sub_81D639C();
@@ -1370,9 +1370,9 @@ void ShowTrainerIntroSpeech(void)
else if (sub_81D5C18())
{
if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
- sub_81D572C(2, sub_81D6180(gSpecialVar_LastTalked));
+ CopyTrainerHillTrainerText(2, sub_81D6180(gSpecialVar_LastTalked));
else
- sub_81D572C(2, sub_81D6180(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
+ CopyTrainerHillTrainerText(2, sub_81D6180(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
sub_80982B8();
}
diff --git a/src/battle_util.c b/src/battle_util.c
index 5096a2f3a..79ce180ee 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -3408,9 +3408,9 @@ u8 IsMonDisobedient(void)
gCurrMovePos = gChosenMovePos = Random() & 3;
} while (gBitTable[gCurrMovePos] & calc);
- gRandomMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
+ gCalledMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove;
- gBattlerTarget = GetMoveTarget(gRandomMove, 0);
+ gBattlerTarget = GetMoveTarget(gCalledMove, 0);
gHitMarker |= HITMARKER_x200000;
return 2;
}
diff --git a/src/battle_util2.c b/src/battle_util2.c
index 1d2f1e95b..5881abf25 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -19,7 +19,7 @@ void AllocateBattleResources(void)
{
gBattleResources = gBattleResources; // something dumb needed to match
- if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
sub_81D55D0();
gBattleStruct = AllocZeroed(sizeof(*gBattleStruct));
@@ -49,7 +49,7 @@ void AllocateBattleResources(void)
void FreeBattleResources(void)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
sub_81D5694();
if (gBattleResources != NULL)
diff --git a/src/data/pokemon/trainer_class_lookups.h b/src/data/pokemon/trainer_class_lookups.h
index ec4dbf0fb..02b2016c1 100644
--- a/src/data/pokemon/trainer_class_lookups.h
+++ b/src/data/pokemon/trainer_class_lookups.h
@@ -63,10 +63,10 @@ const u8 gFacilityClassToPicIndex[] =
TRAINER_PIC_TWINS, // FACILITY_CLASS_TWINS
TRAINER_PIC_SAILOR, // FACILITY_CLASS_SAILOR
TRAINER_PIC_WALLY, // FACILITY_CLASS_PKMN_TRAINER_1
- TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_MAY
+ TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_BRENDAN
TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_3
TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_4
- TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_BRENDAN
+ TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_MAY
TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_6
TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_7
TRAINER_PIC_POKEMON_BREEDER_M, // FACILITY_CLASS_PKMN_BREEDER_2
diff --git a/src/data/text/abilities.h b/src/data/text/abilities.h
index 3a1e989d2..97c29f9ee 100644
--- a/src/data/text/abilities.h
+++ b/src/data/text/abilities.h
@@ -1,247 +1,242 @@
-#ifndef POKEEMERALD_DATA_TEXT_ABILITIES_H
-#define POKEEMERALD_DATA_TEXT_ABILITIES_H
-
-static const u8 gNoneAbilityDescription[] = _("No special ability.");
-static const u8 gStenchAbilityDescription[] = _("Helps repel wild POKéMON.");
-static const u8 gDrizzleAbilityDescription[] = _("Summons rain in battle.");
-static const u8 gSpeedBoostAbilityDescription[] = _("Gradually boosts SPEED.");
-static const u8 gBattleArmorAbilityDescription[] = _("Blocks critical hits.");
-static const u8 gSturdyAbilityDescription[] = _("Negates 1-hit KO attacks.");
-static const u8 gDampAbilityDescription[] = _("Prevents self-destruction.");
-static const u8 gLimberAbilityDescription[] = _("Prevents paralysis.");
-static const u8 gSandVeilAbilityDescription[] = _("Ups evasion in a sandstorm.");
-static const u8 gStaticAbilityDescription[] = _("Paralyzes on contact.");
-static const u8 gVoltAbsorbAbilityDescription[] = _("Turns electricity into HP.");
-static const u8 gWaterAbsorbAbilityDescription[] = _("Changes water into HP.");
-static const u8 gObliviousAbilityDescription[] = _("Prevents attraction.");
-static const u8 gCloudNineAbilityDescription[] = _("Negates weather effects.");
-static const u8 gCompoundEyesAbilityDescription[] = _("Raises accuracy.");
-static const u8 gInsomniaAbilityDescription[] = _("Prevents sleep.");
-static const u8 gColorChangeAbilityDescription[] = _("Changes type to foe’s move.");
-static const u8 gImmunityAbilityDescription[] = _("Prevents poisoning.");
-static const u8 gFlashFireAbilityDescription[] = _("Powers up if hit by fire.");
-static const u8 gShieldDustAbilityDescription[] = _("Prevents added effects.");
-static const u8 gOwnTempoAbilityDescription[] = _("Prevents confusion.");
-static const u8 gSuctionCupsAbilityDescription[] = _("Firmly anchors the body.");
-static const u8 gIntimidateAbilityDescription[] = _("Lowers the foe’s ATTACK.");
-static const u8 gShadowTagAbilityDescription[] = _("Prevents the foe’s escape.");
-static const u8 gRoughSkinAbilityDescription[] = _("Hurts to touch.");
-static const u8 gWonderGuardAbilityDescription[] = _("“Super effective” hits.");
-static const u8 gLevitateAbilityDescription[] = _("Not hit by GROUND attacks.");
-static const u8 gEffectSporeAbilityDescription[] = _("Leaves spores on contact.");
-static const u8 gSynchronizeAbilityDescription[] = _("Passes on status problems.");
-static const u8 gClearBodyAbilityDescription[] = _("Prevents ability reduction.");
-static const u8 gNaturalCureAbilityDescription[] = _("Heals upon switching out.");
-static const u8 gLightningRodAbilityDescription[] = _("Draws electrical moves.");
-static const u8 gSereneGraceAbilityDescription[] = _("Promotes added effects.");
-static const u8 gSwiftSwimAbilityDescription[] = _("Raises SPEED in rain.");
-static const u8 gChlorophyllAbilityDescription[] = _("Raises SPEED in sunshine.");
-static const u8 gIlluminateAbilityDescription[] = _("Encounter rate increases.");
-static const u8 gTraceAbilityDescription[] = _("Copies special ability.");
-static const u8 gHugePowerAbilityDescription[] = _("Raises ATTACK.");
-static const u8 gPoisonPointAbilityDescription[] = _("Poisons foe on contact.");
-static const u8 gInnerFocusAbilityDescription[] = _("Prevents flinching.");
-static const u8 gMagmaArmorAbilityDescription[] = _("Prevents freezing.");
-static const u8 gWaterVeilAbilityDescription[] = _("Prevents burns.");
-static const u8 gMagnetPullAbilityDescription[] = _("Traps STEEL-type POKéMON.");
-static const u8 gSoundproofAbilityDescription[] = _("Avoids sound-based moves.");
-static const u8 gRainDishAbilityDescription[] = _("Slight HP recovery in rain.");
-static const u8 gSandStreamAbilityDescription[] = _("Summons a sandstorm.");
-static const u8 gPressureAbilityDescription[] = _("Raises foe’s PP usage.");
-static const u8 gThickFatAbilityDescription[] = _("Heat-and-cold protection.");
-static const u8 gEarlyBirdAbilityDescription[] = _("Awakens quickly from sleep.");
-static const u8 gFlameBodyAbilityDescription[] = _("Burns the foe on contact.");
-static const u8 gRunAwayAbilityDescription[] = _("Makes escaping easier.");
-static const u8 gKeenEyeAbilityDescription[] = _("Prevents loss of accuracy.");
-static const u8 gHyperCutterAbilityDescription[] = _("Prevents ATTACK reduction.");
-static const u8 gPickupAbilityDescription[] = _("May pick up items.");
-static const u8 gTruantAbilityDescription[] = _("Moves only every two turns.");
-static const u8 gHustleAbilityDescription[] = _("Trades accuracy for power.");
-static const u8 gCuteCharmAbilityDescription[] = _("Infatuates on contact.");
-static const u8 gPlusAbilityDescription[] = _("Powers up with MINUS.");
-static const u8 gMinusAbilityDescription[] = _("Powers up with PLUS.");
-static const u8 gForecastAbilityDescription[] = _("Changes with the weather.");
-static const u8 gStickyHoldAbilityDescription[] = _("Prevents item theft.");
-static const u8 gShedSkinAbilityDescription[] = _("Heals the body by shedding.");
-static const u8 gGutsAbilityDescription[] = _("Ups ATTACK if suffering.");
-static const u8 gMarvelScaleAbilityDescription[] = _("Ups DEFENSE if suffering.");
-static const u8 gLiquidOozeAbilityDescription[] = _("Draining causes injury.");
-static const u8 gOvergrowAbilityDescription[] = _("Ups GRASS moves in a pinch.");
-static const u8 gBlazeAbilityDescription[] = _("Ups FIRE moves in a pinch.");
-static const u8 gTorrentAbilityDescription[] = _("Ups WATER moves in a pinch.");
-static const u8 gSwarmAbilityDescription[] = _("Ups BUG moves in a pinch.");
-static const u8 gRockHeadAbilityDescription[] = _("Prevents recoil damage.");
-static const u8 gDroughtAbilityDescription[] = _("Summons sunlight in battle.");
-static const u8 gArenaTrapAbilityDescription[] = _("Prevents fleeing.");
-static const u8 gVitalSpiritAbilityDescription[] = _("Prevents sleep.");
-static const u8 gWhiteSmokeAbilityDescription[] = _("Prevents ability reduction.");
-static const u8 gPurePowerAbilityDescription[] = _("Raises ATTACK.");
-static const u8 gShellArmorAbilityDescription[] = _("Blocks critical hits.");
-static const u8 gCacophonyAbilityDescription[] = _("Avoids sound-based moves.");
-static const u8 gAirLockAbilityDescription[] = _("Negates weather effects.");
+static const u8 sNoneDescription[] = _("No special ability.");
+static const u8 sStenchDescription[] = _("Helps repel wild POKéMON.");
+static const u8 sDrizzleDescription[] = _("Summons rain in battle.");
+static const u8 sSpeedBoostDescription[] = _("Gradually boosts SPEED.");
+static const u8 sBattleArmorDescription[] = _("Blocks critical hits.");
+static const u8 sSturdyDescription[] = _("Negates 1-hit KO attacks.");
+static const u8 sDampDescription[] = _("Prevents self-destruction.");
+static const u8 sLimberDescription[] = _("Prevents paralysis.");
+static const u8 sSandVeilDescription[] = _("Ups evasion in a sandstorm.");
+static const u8 sStaticDescription[] = _("Paralyzes on contact.");
+static const u8 sVoltAbsorbDescription[] = _("Turns electricity into HP.");
+static const u8 sWaterAbsorbDescription[] = _("Changes water into HP.");
+static const u8 sObliviousDescription[] = _("Prevents attraction.");
+static const u8 sCloudNineDescription[] = _("Negates weather effects.");
+static const u8 sCompoundEyesDescription[] = _("Raises accuracy.");
+static const u8 sInsomniaDescription[] = _("Prevents sleep.");
+static const u8 sColorChangeDescription[] = _("Changes type to foe’s move.");
+static const u8 sImmunityDescription[] = _("Prevents poisoning.");
+static const u8 sFlashFireDescription[] = _("Powers up if hit by fire.");
+static const u8 sShieldDustDescription[] = _("Prevents added effects.");
+static const u8 sOwnTempoDescription[] = _("Prevents confusion.");
+static const u8 sSuctionCupsDescription[] = _("Firmly anchors the body.");
+static const u8 sIntimidateDescription[] = _("Lowers the foe’s ATTACK.");
+static const u8 sShadowTagDescription[] = _("Prevents the foe’s escape.");
+static const u8 sRoughSkinDescription[] = _("Hurts to touch.");
+static const u8 sWonderGuardDescription[] = _("“Super effective” hits.");
+static const u8 sLevitateDescription[] = _("Not hit by GROUND attacks.");
+static const u8 sEffectSporeDescription[] = _("Leaves spores on contact.");
+static const u8 sSynchronizeDescription[] = _("Passes on status problems.");
+static const u8 sClearBodyDescription[] = _("Prevents ability reduction.");
+static const u8 sNaturalCureDescription[] = _("Heals upon switching out.");
+static const u8 sLightningRodDescription[] = _("Draws electrical moves.");
+static const u8 sSereneGraceDescription[] = _("Promotes added effects.");
+static const u8 sSwiftSwimDescription[] = _("Raises SPEED in rain.");
+static const u8 sChlorophyllDescription[] = _("Raises SPEED in sunshine.");
+static const u8 sIlluminateDescription[] = _("Encounter rate increases.");
+static const u8 sTraceDescription[] = _("Copies special ability.");
+static const u8 sHugePowerDescription[] = _("Raises ATTACK.");
+static const u8 sPoisonPointDescription[] = _("Poisons foe on contact.");
+static const u8 sInnerFocusDescription[] = _("Prevents flinching.");
+static const u8 sMagmaArmorDescription[] = _("Prevents freezing.");
+static const u8 sWaterVeilDescription[] = _("Prevents burns.");
+static const u8 sMagnetPullDescription[] = _("Traps STEEL-type POKéMON.");
+static const u8 sSoundproofDescription[] = _("Avoids sound-based moves.");
+static const u8 sRainDishDescription[] = _("Slight HP recovery in rain.");
+static const u8 sSandStreamDescription[] = _("Summons a sandstorm.");
+static const u8 sPressureDescription[] = _("Raises foe’s PP usage.");
+static const u8 sThickFatDescription[] = _("Heat-and-cold protection.");
+static const u8 sEarlyBirdDescription[] = _("Awakens quickly from sleep.");
+static const u8 sFlameBodyDescription[] = _("Burns the foe on contact.");
+static const u8 sRunAwayDescription[] = _("Makes escaping easier.");
+static const u8 sKeenEyeDescription[] = _("Prevents loss of accuracy.");
+static const u8 sHyperCutterDescription[] = _("Prevents ATTACK reduction.");
+static const u8 sPickupDescription[] = _("May pick up items.");
+static const u8 sTruantDescription[] = _("Moves only every two turns.");
+static const u8 sHustleDescription[] = _("Trades accuracy for power.");
+static const u8 sCuteCharmDescription[] = _("Infatuates on contact.");
+static const u8 sPlusDescription[] = _("Powers up with MINUS.");
+static const u8 sMinusDescription[] = _("Powers up with PLUS.");
+static const u8 sForecastDescription[] = _("Changes with the weather.");
+static const u8 sStickyHoldDescription[] = _("Prevents item theft.");
+static const u8 sShedSkinDescription[] = _("Heals the body by shedding.");
+static const u8 sGutsDescription[] = _("Ups ATTACK if suffering.");
+static const u8 sMarvelScaleDescription[] = _("Ups DEFENSE if suffering.");
+static const u8 sLiquidOozeDescription[] = _("Draining causes injury.");
+static const u8 sOvergrowDescription[] = _("Ups GRASS moves in a pinch.");
+static const u8 sBlazeDescription[] = _("Ups FIRE moves in a pinch.");
+static const u8 sTorrentDescription[] = _("Ups WATER moves in a pinch.");
+static const u8 sSwarmDescription[] = _("Ups BUG moves in a pinch.");
+static const u8 sRockHeadDescription[] = _("Prevents recoil damage.");
+static const u8 sDroughtDescription[] = _("Summons sunlight in battle.");
+static const u8 sArenaTrapDescription[] = _("Prevents fleeing.");
+static const u8 sVitalSpiritDescription[] = _("Prevents sleep.");
+static const u8 sWhiteSmokeDescription[] = _("Prevents ability reduction.");
+static const u8 sPurePowerDescription[] = _("Raises ATTACK.");
+static const u8 sShellArmorDescription[] = _("Blocks critical hits.");
+static const u8 sCacophonyDescription[] = _("Avoids sound-based moves.");
+static const u8 sAirLockDescription[] = _("Negates weather effects.");
const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] =
{
- _("-------"),
- _("STENCH"),
- _("DRIZZLE"),
- _("SPEED BOOST"),
- _("BATTLE ARMOR"),
- _("STURDY"),
- _("DAMP"),
- _("LIMBER"),
- _("SAND VEIL"),
- _("STATIC"),
- _("VOLT ABSORB"),
- _("WATER ABSORB"),
- _("OBLIVIOUS"),
- _("CLOUD NINE"),
- _("COMPOUNDEYES"),
- _("INSOMNIA"),
- _("COLOR CHANGE"),
- _("IMMUNITY"),
- _("FLASH FIRE"),
- _("SHIELD DUST"),
- _("OWN TEMPO"),
- _("SUCTION CUPS"),
- _("INTIMIDATE"),
- _("SHADOW TAG"),
- _("ROUGH SKIN"),
- _("WONDER GUARD"),
- _("LEVITATE"),
- _("EFFECT SPORE"),
- _("SYNCHRONIZE"),
- _("CLEAR BODY"),
- _("NATURAL CURE"),
- _("LIGHTNINGROD"),
- _("SERENE GRACE"),
- _("SWIFT SWIM"),
- _("CHLOROPHYLL"),
- _("ILLUMINATE"),
- _("TRACE"),
- _("HUGE POWER"),
- _("POISON POINT"),
- _("INNER FOCUS"),
- _("MAGMA ARMOR"),
- _("WATER VEIL"),
- _("MAGNET PULL"),
- _("SOUNDPROOF"),
- _("RAIN DISH"),
- _("SAND STREAM"),
- _("PRESSURE"),
- _("THICK FAT"),
- _("EARLY BIRD"),
- _("FLAME BODY"),
- _("RUN AWAY"),
- _("KEEN EYE"),
- _("HYPER CUTTER"),
- _("PICKUP"),
- _("TRUANT"),
- _("HUSTLE"),
- _("CUTE CHARM"),
- _("PLUS"),
- _("MINUS"),
- _("FORECAST"),
- _("STICKY HOLD"),
- _("SHED SKIN"),
- _("GUTS"),
- _("MARVEL SCALE"),
- _("LIQUID OOZE"),
- _("OVERGROW"),
- _("BLAZE"),
- _("TORRENT"),
- _("SWARM"),
- _("ROCK HEAD"),
- _("DROUGHT"),
- _("ARENA TRAP"),
- _("VITAL SPIRIT"),
- _("WHITE SMOKE"),
- _("PURE POWER"),
- _("SHELL ARMOR"),
- _("CACOPHONY"),
- _("AIR LOCK"),
+ [ABILITY_NONE] = _("-------"),
+ [ABILITY_STENCH] = _("STENCH"),
+ [ABILITY_DRIZZLE] = _("DRIZZLE"),
+ [ABILITY_SPEED_BOOST] = _("SPEED BOOST"),
+ [ABILITY_BATTLE_ARMOR] = _("BATTLE ARMOR"),
+ [ABILITY_STURDY] = _("STURDY"),
+ [ABILITY_DAMP] = _("DAMP"),
+ [ABILITY_LIMBER] = _("LIMBER"),
+ [ABILITY_SAND_VEIL] = _("SAND VEIL"),
+ [ABILITY_STATIC] = _("STATIC"),
+ [ABILITY_VOLT_ABSORB] = _("VOLT ABSORB"),
+ [ABILITY_WATER_ABSORB] = _("WATER ABSORB"),
+ [ABILITY_OBLIVIOUS] = _("OBLIVIOUS"),
+ [ABILITY_CLOUD_NINE] = _("CLOUD NINE"),
+ [ABILITY_COMPOUND_EYES] = _("COMPOUNDEYES"),
+ [ABILITY_INSOMNIA] = _("INSOMNIA"),
+ [ABILITY_COLOR_CHANGE] = _("COLOR CHANGE"),
+ [ABILITY_IMMUNITY] = _("IMMUNITY"),
+ [ABILITY_FLASH_FIRE] = _("FLASH FIRE"),
+ [ABILITY_SHIELD_DUST] = _("SHIELD DUST"),
+ [ABILITY_OWN_TEMPO] = _("OWN TEMPO"),
+ [ABILITY_SUCTION_CUPS] = _("SUCTION CUPS"),
+ [ABILITY_INTIMIDATE] = _("INTIMIDATE"),
+ [ABILITY_SHADOW_TAG] = _("SHADOW TAG"),
+ [ABILITY_ROUGH_SKIN] = _("ROUGH SKIN"),
+ [ABILITY_WONDER_GUARD] = _("WONDER GUARD"),
+ [ABILITY_LEVITATE] = _("LEVITATE"),
+ [ABILITY_EFFECT_SPORE] = _("EFFECT SPORE"),
+ [ABILITY_SYNCHRONIZE] = _("SYNCHRONIZE"),
+ [ABILITY_CLEAR_BODY] = _("CLEAR BODY"),
+ [ABILITY_NATURAL_CURE] = _("NATURAL CURE"),
+ [ABILITY_LIGHTNING_ROD] = _("LIGHTNINGROD"),
+ [ABILITY_SERENE_GRACE] = _("SERENE GRACE"),
+ [ABILITY_SWIFT_SWIM] = _("SWIFT SWIM"),
+ [ABILITY_CHLOROPHYLL] = _("CHLOROPHYLL"),
+ [ABILITY_ILLUMINATE] = _("ILLUMINATE"),
+ [ABILITY_TRACE] = _("TRACE"),
+ [ABILITY_HUGE_POWER] = _("HUGE POWER"),
+ [ABILITY_POISON_POINT] = _("POISON POINT"),
+ [ABILITY_INNER_FOCUS] = _("INNER FOCUS"),
+ [ABILITY_MAGMA_ARMOR] = _("MAGMA ARMOR"),
+ [ABILITY_WATER_VEIL] = _("WATER VEIL"),
+ [ABILITY_MAGNET_PULL] = _("MAGNET PULL"),
+ [ABILITY_SOUNDPROOF] = _("SOUNDPROOF"),
+ [ABILITY_RAIN_DISH] = _("RAIN DISH"),
+ [ABILITY_SAND_STREAM] = _("SAND STREAM"),
+ [ABILITY_PRESSURE] = _("PRESSURE"),
+ [ABILITY_THICK_FAT] = _("THICK FAT"),
+ [ABILITY_EARLY_BIRD] = _("EARLY BIRD"),
+ [ABILITY_FLAME_BODY] = _("FLAME BODY"),
+ [ABILITY_RUN_AWAY] = _("RUN AWAY"),
+ [ABILITY_KEEN_EYE] = _("KEEN EYE"),
+ [ABILITY_HYPER_CUTTER] = _("HYPER CUTTER"),
+ [ABILITY_PICKUP] = _("PICKUP"),
+ [ABILITY_TRUANT] = _("TRUANT"),
+ [ABILITY_HUSTLE] = _("HUSTLE"),
+ [ABILITY_CUTE_CHARM] = _("CUTE CHARM"),
+ [ABILITY_PLUS] = _("PLUS"),
+ [ABILITY_MINUS] = _("MINUS"),
+ [ABILITY_FORECAST] = _("FORECAST"),
+ [ABILITY_STICKY_HOLD] = _("STICKY HOLD"),
+ [ABILITY_SHED_SKIN] = _("SHED SKIN"),
+ [ABILITY_GUTS] = _("GUTS"),
+ [ABILITY_MARVEL_SCALE] = _("MARVEL SCALE"),
+ [ABILITY_LIQUID_OOZE] = _("LIQUID OOZE"),
+ [ABILITY_OVERGROW] = _("OVERGROW"),
+ [ABILITY_BLAZE] = _("BLAZE"),
+ [ABILITY_TORRENT] = _("TORRENT"),
+ [ABILITY_SWARM] = _("SWARM"),
+ [ABILITY_ROCK_HEAD] = _("ROCK HEAD"),
+ [ABILITY_DROUGHT] = _("DROUGHT"),
+ [ABILITY_ARENA_TRAP] = _("ARENA TRAP"),
+ [ABILITY_VITAL_SPIRIT] = _("VITAL SPIRIT"),
+ [ABILITY_WHITE_SMOKE] = _("WHITE SMOKE"),
+ [ABILITY_PURE_POWER] = _("PURE POWER"),
+ [ABILITY_SHELL_ARMOR] = _("SHELL ARMOR"),
+ [ABILITY_CACOPHONY] = _("CACOPHONY"),
+ [ABILITY_AIR_LOCK] = _("AIR LOCK"),
};
const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT] =
{
- gNoneAbilityDescription,
- gStenchAbilityDescription,
- gDrizzleAbilityDescription,
- gSpeedBoostAbilityDescription,
- gBattleArmorAbilityDescription,
- gSturdyAbilityDescription,
- gDampAbilityDescription,
- gLimberAbilityDescription,
- gSandVeilAbilityDescription,
- gStaticAbilityDescription,
- gVoltAbsorbAbilityDescription,
- gWaterAbsorbAbilityDescription,
- gObliviousAbilityDescription,
- gCloudNineAbilityDescription,
- gCompoundEyesAbilityDescription,
- gInsomniaAbilityDescription,
- gColorChangeAbilityDescription,
- gImmunityAbilityDescription,
- gFlashFireAbilityDescription,
- gShieldDustAbilityDescription,
- gOwnTempoAbilityDescription,
- gSuctionCupsAbilityDescription,
- gIntimidateAbilityDescription,
- gShadowTagAbilityDescription,
- gRoughSkinAbilityDescription,
- gWonderGuardAbilityDescription,
- gLevitateAbilityDescription,
- gEffectSporeAbilityDescription,
- gSynchronizeAbilityDescription,
- gClearBodyAbilityDescription,
- gNaturalCureAbilityDescription,
- gLightningRodAbilityDescription,
- gSereneGraceAbilityDescription,
- gSwiftSwimAbilityDescription,
- gChlorophyllAbilityDescription,
- gIlluminateAbilityDescription,
- gTraceAbilityDescription,
- gHugePowerAbilityDescription,
- gPoisonPointAbilityDescription,
- gInnerFocusAbilityDescription,
- gMagmaArmorAbilityDescription,
- gWaterVeilAbilityDescription,
- gMagnetPullAbilityDescription,
- gSoundproofAbilityDescription,
- gRainDishAbilityDescription,
- gSandStreamAbilityDescription,
- gPressureAbilityDescription,
- gThickFatAbilityDescription,
- gEarlyBirdAbilityDescription,
- gFlameBodyAbilityDescription,
- gRunAwayAbilityDescription,
- gKeenEyeAbilityDescription,
- gHyperCutterAbilityDescription,
- gPickupAbilityDescription,
- gTruantAbilityDescription,
- gHustleAbilityDescription,
- gCuteCharmAbilityDescription,
- gPlusAbilityDescription,
- gMinusAbilityDescription,
- gForecastAbilityDescription,
- gStickyHoldAbilityDescription,
- gShedSkinAbilityDescription,
- gGutsAbilityDescription,
- gMarvelScaleAbilityDescription,
- gLiquidOozeAbilityDescription,
- gOvergrowAbilityDescription,
- gBlazeAbilityDescription,
- gTorrentAbilityDescription,
- gSwarmAbilityDescription,
- gRockHeadAbilityDescription,
- gDroughtAbilityDescription,
- gArenaTrapAbilityDescription,
- gVitalSpiritAbilityDescription,
- gWhiteSmokeAbilityDescription,
- gPurePowerAbilityDescription,
- gShellArmorAbilityDescription,
- gCacophonyAbilityDescription,
- gAirLockAbilityDescription,
+ [ABILITY_NONE] = sNoneDescription,
+ [ABILITY_STENCH] = sStenchDescription,
+ [ABILITY_DRIZZLE] = sDrizzleDescription,
+ [ABILITY_SPEED_BOOST] = sSpeedBoostDescription,
+ [ABILITY_BATTLE_ARMOR] = sBattleArmorDescription,
+ [ABILITY_STURDY] = sSturdyDescription,
+ [ABILITY_DAMP] = sDampDescription,
+ [ABILITY_LIMBER] = sLimberDescription,
+ [ABILITY_SAND_VEIL] = sSandVeilDescription,
+ [ABILITY_STATIC] = sStaticDescription,
+ [ABILITY_VOLT_ABSORB] = sVoltAbsorbDescription,
+ [ABILITY_WATER_ABSORB] = sWaterAbsorbDescription,
+ [ABILITY_OBLIVIOUS] = sObliviousDescription,
+ [ABILITY_CLOUD_NINE] = sCloudNineDescription,
+ [ABILITY_COMPOUND_EYES] = sCompoundEyesDescription,
+ [ABILITY_INSOMNIA] = sInsomniaDescription,
+ [ABILITY_COLOR_CHANGE] = sColorChangeDescription,
+ [ABILITY_IMMUNITY] = sImmunityDescription,
+ [ABILITY_FLASH_FIRE] = sFlashFireDescription,
+ [ABILITY_SHIELD_DUST] = sShieldDustDescription,
+ [ABILITY_OWN_TEMPO] = sOwnTempoDescription,
+ [ABILITY_SUCTION_CUPS] = sSuctionCupsDescription,
+ [ABILITY_INTIMIDATE] = sIntimidateDescription,
+ [ABILITY_SHADOW_TAG] = sShadowTagDescription,
+ [ABILITY_ROUGH_SKIN] = sRoughSkinDescription,
+ [ABILITY_WONDER_GUARD] = sWonderGuardDescription,
+ [ABILITY_LEVITATE] = sLevitateDescription,
+ [ABILITY_EFFECT_SPORE] = sEffectSporeDescription,
+ [ABILITY_SYNCHRONIZE] = sSynchronizeDescription,
+ [ABILITY_CLEAR_BODY] = sClearBodyDescription,
+ [ABILITY_NATURAL_CURE] = sNaturalCureDescription,
+ [ABILITY_LIGHTNING_ROD] = sLightningRodDescription,
+ [ABILITY_SERENE_GRACE] = sSereneGraceDescription,
+ [ABILITY_SWIFT_SWIM] = sSwiftSwimDescription,
+ [ABILITY_CHLOROPHYLL] = sChlorophyllDescription,
+ [ABILITY_ILLUMINATE] = sIlluminateDescription,
+ [ABILITY_TRACE] = sTraceDescription,
+ [ABILITY_HUGE_POWER] = sHugePowerDescription,
+ [ABILITY_POISON_POINT] = sPoisonPointDescription,
+ [ABILITY_INNER_FOCUS] = sInnerFocusDescription,
+ [ABILITY_MAGMA_ARMOR] = sMagmaArmorDescription,
+ [ABILITY_WATER_VEIL] = sWaterVeilDescription,
+ [ABILITY_MAGNET_PULL] = sMagnetPullDescription,
+ [ABILITY_SOUNDPROOF] = sSoundproofDescription,
+ [ABILITY_RAIN_DISH] = sRainDishDescription,
+ [ABILITY_SAND_STREAM] = sSandStreamDescription,
+ [ABILITY_PRESSURE] = sPressureDescription,
+ [ABILITY_THICK_FAT] = sThickFatDescription,
+ [ABILITY_EARLY_BIRD] = sEarlyBirdDescription,
+ [ABILITY_FLAME_BODY] = sFlameBodyDescription,
+ [ABILITY_RUN_AWAY] = sRunAwayDescription,
+ [ABILITY_KEEN_EYE] = sKeenEyeDescription,
+ [ABILITY_HYPER_CUTTER] = sHyperCutterDescription,
+ [ABILITY_PICKUP] = sPickupDescription,
+ [ABILITY_TRUANT] = sTruantDescription,
+ [ABILITY_HUSTLE] = sHustleDescription,
+ [ABILITY_CUTE_CHARM] = sCuteCharmDescription,
+ [ABILITY_PLUS] = sPlusDescription,
+ [ABILITY_MINUS] = sMinusDescription,
+ [ABILITY_FORECAST] = sForecastDescription,
+ [ABILITY_STICKY_HOLD] = sStickyHoldDescription,
+ [ABILITY_SHED_SKIN] = sShedSkinDescription,
+ [ABILITY_GUTS] = sGutsDescription,
+ [ABILITY_MARVEL_SCALE] = sMarvelScaleDescription,
+ [ABILITY_LIQUID_OOZE] = sLiquidOozeDescription,
+ [ABILITY_OVERGROW] = sOvergrowDescription,
+ [ABILITY_BLAZE] = sBlazeDescription,
+ [ABILITY_TORRENT] = sTorrentDescription,
+ [ABILITY_SWARM] = sSwarmDescription,
+ [ABILITY_ROCK_HEAD] = sRockHeadDescription,
+ [ABILITY_DROUGHT] = sDroughtDescription,
+ [ABILITY_ARENA_TRAP] = sArenaTrapDescription,
+ [ABILITY_VITAL_SPIRIT] = sVitalSpiritDescription,
+ [ABILITY_WHITE_SMOKE] = sWhiteSmokeDescription,
+ [ABILITY_PURE_POWER] = sPurePowerDescription,
+ [ABILITY_SHELL_ARMOR] = sShellArmorDescription,
+ [ABILITY_CACOPHONY] = sCacophonyDescription,
+ [ABILITY_AIR_LOCK] = sAirLockDescription,
};
-
-#endif // POKEEMERALD_DATA_TEXT_ABILITIES_H
diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h
index f8830c593..3642f66b1 100644
--- a/src/data/text/move_descriptions.h
+++ b/src/data/text/move_descriptions.h
@@ -1,714 +1,1777 @@
-static const u8 sNullMoveDescription[] = _("");
-static const u8 sPoundMoveDescription[] = _("Pounds the foe with\nforelegs or tail.");
-static const u8 sKarateChopMoveDescription[] = _("A chopping attack with a\nhigh critical-hit ratio.");
-static const u8 sDoubleSlapMoveDescription[] = _("Repeatedly slaps the foe\n2 to 5 times.");
-static const u8 sCometPunchMoveDescription[] = _("Repeatedly punches the foe\n2 to 5 times.");
-static const u8 sMegaPunchMoveDescription[] = _("A strong punch thrown with\nincredible power.");
-static const u8 sPayDayMoveDescription[] = _("Throws coins at the foe.\nMoney is recovered after.");
-static const u8 sFirePunchMoveDescription[] = _("A fiery punch that may burn\nthe foe.");
-static const u8 sIcePunchMoveDescription[] = _("An icy punch that may\nfreeze the foe.");
-static const u8 sThunderPunchMoveDescription[] = _("An electrified punch that\nmay paralyze the foe.");
-static const u8 sScratchMoveDescription[] = _("Scratches the foe with\nsharp claws.");
-static const u8 sViceGripMoveDescription[] = _("Grips the foe with large and\npowerful pincers.");
-static const u8 sGuillotineMoveDescription[] = _("A powerful pincer attack\nthat may cause fainting.");
-static const u8 sRazorWindMoveDescription[] = _("A 2-turn move that strikes\nthe foe on the 2nd turn.");
-static const u8 sSwordsDanceMoveDescription[] = _("A fighting dance that\nsharply raises ATTACK.");
-static const u8 sCutMoveDescription[] = _("Cuts the foe with sharp\nscythes, claws, etc.");
-static const u8 sGustMoveDescription[] = _("Strikes the foe with a gust\nof wind whipped up by wings.");
-static const u8 sWingAttackMoveDescription[] = _("Strikes the foe with wings\nspread wide.");
-static const u8 sWhirlwindMoveDescription[] = _("Blows away the foe with\nwind and ends the battle.");
-static const u8 sFlyMoveDescription[] = _("Flies up on the first turn,\nthen strikes the next turn.");
-static const u8 sBindMoveDescription[] = _("Binds and squeezes the foe\nfor 2 to 5 turns.");
-static const u8 sSlamMoveDescription[] = _("Slams the foe with a long\ntail, vine, etc.");
-static const u8 sVineWhipMoveDescription[] = _("Strikes the foe with\nslender, whiplike vines.");
-static const u8 sStompMoveDescription[] = _("Stomps the enemy with a big\nfoot. May cause flinching.");
-static const u8 sDoubleKickMoveDescription[] = _("A double-kicking attack\nthat strikes the foe twice.");
-static const u8 sMegaKickMoveDescription[] = _("An extremely powerful kick\nwith intense force.");
-static const u8 sJumpKickMoveDescription[] = _("A strong jumping kick. May\nmiss and hurt the kicker.");
-static const u8 sRollingKickMoveDescription[] = _("A fast kick delivered from\na rapid spin.");
-static const u8 sSandAttackMoveDescription[] = _("Reduces the foe’s accuracy\nby hurling sand in its face.");
-static const u8 sHeadbuttMoveDescription[] = _("A ramming attack that may\ncause flinching.");
-static const u8 sHornAttackMoveDescription[] = _("Jabs the foe with sharp\nhorns.");
-static const u8 sFuryAttackMoveDescription[] = _("Jabs the foe 2 to 5 times\nwith sharp horns, etc.");
-static const u8 sHornDrillMoveDescription[] = _("A one-hit KO attack that\nuses a horn like a drill.");
-static const u8 sTackleMoveDescription[] = _("Charges the foe with a full-\nbody tackle.");
-static const u8 sBodySlamMoveDescription[] = _("A full-body slam that may\ncause paralysis.");
-static const u8 sWrapMoveDescription[] = _("Wraps and squeezes the foe\n2 to 5 times with vines, etc.");
-static const u8 sTakeDownMoveDescription[] = _("A reckless charge attack\nthat also hurts the user.");
-static const u8 sThrashMoveDescription[] = _("A rampage of 2 to 3 turns\nthat confuses the user.");
-static const u8 sDoubleEdgeMoveDescription[] = _("A life-risking tackle that\nalso hurts the user.");
-static const u8 sTailWhipMoveDescription[] = _("Wags the tail to lower the\nfoe’s DEFENSE.");
-static const u8 sPoisonStingMoveDescription[] = _("A toxic attack with barbs,\netc., that may poison.");
-static const u8 sTwineedleMoveDescription[] = _("Stingers on the forelegs\njab the foe twice.");
-static const u8 sPinMissileMoveDescription[] = _("Sharp pins are fired to\nstrike 2 to 5 times.");
-static const u8 sLeerMoveDescription[] = _("Frightens the foe with a\nleer to lower DEFENSE.");
-static const u8 sBiteMoveDescription[] = _("Bites with vicious fangs.\nMay cause flinching.");
-static const u8 sGrowlMoveDescription[] = _("Growls cutely to reduce the\nfoe’s ATTACK.");
-static const u8 sRoarMoveDescription[] = _("Makes the foe flee to end\nthe battle.");
-static const u8 sSingMoveDescription[] = _("A soothing song lulls the\nfoe into a deep slumber.");
-static const u8 sSupersonicMoveDescription[] = _("Emits bizarre sound waves\nthat may confuse the foe.");
-static const u8 sSonicBoomMoveDescription[] = _("Launches shock waves that\nalways inflict 20 HP damage.");
-static const u8 sDisableMoveDescription[] = _("Psychically disables one of\nthe foe’s moves.");
-static const u8 sAcidMoveDescription[] = _("Sprays a hide-melting acid.\nMay lower DEFENSE.");
-static const u8 sEmberMoveDescription[] = _("A weak fire attack that may\ninflict a burn.");
-static const u8 sFlamethrowerMoveDescription[] = _("A powerful fire attack that\nmay inflict a burn.");
-static const u8 sMistMoveDescription[] = _("Creates a mist that stops\nreduction of abilities.");
-static const u8 sWaterGunMoveDescription[] = _("Squirts water to attack\nthe foe.");
-static const u8 sHydroPumpMoveDescription[] = _("Blasts water at high power\nto strike the foe.");
-static const u8 sSurfMoveDescription[] = _("Creates a huge wave, then\ncrashes it down on the foe.");
-static const u8 sIceBeamMoveDescription[] = _("Blasts the foe with an icy\nbeam that may freeze it.");
-static const u8 sBlizzardMoveDescription[] = _("Hits the foe with an icy\nstorm that may freeze it.");
-static const u8 sPsybeamMoveDescription[] = _("Fires a peculiar ray that\nmay confuse the foe.");
-static const u8 sBubbleBeamMoveDescription[] = _("Forcefully sprays bubbles\nthat may lower SPEED.");
-static const u8 sAuroraBeamMoveDescription[] = _("Fires a rainbow-colored\nbeam that may lower ATTACK.");
-static const u8 sHyperBeamMoveDescription[] = _("Powerful, but leaves the\nuser immobile the next turn.");
-static const u8 sPeckMoveDescription[] = _("Attacks the foe with a\njabbing beak, etc.");
-static const u8 sDrillPeckMoveDescription[] = _("A corkscrewing attack with\nthe beak acting as a drill.");
-static const u8 sSubmissionMoveDescription[] = _("A reckless body slam that\nalso hurts the user.");
-static const u8 sLowKickMoveDescription[] = _("A kick that inflicts more\ndamage on heavier foes.");
-static const u8 sCounterMoveDescription[] = _("Retaliates any physical hit\nwith double the power.");
-static const u8 sSeismicTossMoveDescription[] = _("Inflicts damage identical\nto the user’s level.");
-static const u8 sStrengthMoveDescription[] = _("Builds enormous power,\nthen slams the foe.");
-static const u8 sAbsorbMoveDescription[] = _("An attack that absorbs\nhalf the damage inflicted.");
-static const u8 sMegaDrainMoveDescription[] = _("An attack that absorbs\nhalf the damage inflicted.");
-static const u8 sLeechSeedMoveDescription[] = _("Plants a seed on the foe to\nsteal HP on every turn.");
-static const u8 sGrowthMoveDescription[] = _("Forces the body to grow\nand heightens SP. ATK.");
-static const u8 sRazorLeafMoveDescription[] = _("Cuts the enemy with leaves.\nHigh critical-hit ratio.");
-static const u8 sSolarBeamMoveDescription[] = _("Absorbs light in one turn,\nthen attacks next turn.");
-static const u8 sPoisonPowderMoveDescription[] = _("Scatters a toxic powder\nthat may poison the foe.");
-static const u8 sStunSporeMoveDescription[] = _("Scatters a powder that may\nparalyze the foe.");
-static const u8 sSleepPowderMoveDescription[] = _("Scatters a powder that may\ncause the foe to sleep.");
-static const u8 sPetalDanceMoveDescription[] = _("A rampage of 2 to 3 turns\nthat confuses the user.");
-static const u8 sStringShotMoveDescription[] = _("Binds the foe with string\nto reduce its SPEED.");
-static const u8 sDragonRageMoveDescription[] = _("Launches shock waves that\nalways inflict 40 HP damage.");
-static const u8 sFireSpinMoveDescription[] = _("Traps the foe in a ring of\nfire for 2 to 5 turns.");
-static const u8 sThunderShockMoveDescription[] = _("An electrical attack that\nmay paralyze the foe.");
-static const u8 sThunderboltMoveDescription[] = _("A strong electrical attack\nthat may paralyze the foe.");
-static const u8 sThunderWaveMoveDescription[] = _("A weak jolt of electricity\nthat paralyzes the foe.");
-static const u8 sThunderMoveDescription[] = _("A lightning attack that may\ncause paralysis.");
-static const u8 sRockThrowMoveDescription[] = _("Throws small rocks to\nstrike the foe.");
-static const u8 sEarthquakeMoveDescription[] = _("A powerful quake, but has\nno effect on flying foes.");
-static const u8 sFissureMoveDescription[] = _("A one-hit KO move that\ndrops the foe in a fissure.");
-static const u8 sDigMoveDescription[] = _("Digs underground the first\nturn and strikes next turn.");
-static const u8 sToxicMoveDescription[] = _("Poisons the foe with an\nintensifying toxin.");
-static const u8 sConfusionMoveDescription[] = _("A psychic attack that may\ncause confusion.");
-static const u8 sPsychicMoveDescription[] = _("A powerful psychic attack\nthat may lower SP. DEF.");
-static const u8 sHypnosisMoveDescription[] = _("A hypnotizing move that\nmay induce sleep.");
-static const u8 sMeditateMoveDescription[] = _("Meditates in a peaceful\nfashion to raise ATTACK.");
-static const u8 sAgilityMoveDescription[] = _("Relaxes the body to sharply\nboost SPEED.");
-static const u8 sQuickAttackMoveDescription[] = _("An extremely fast attack\nthat always strikes first.");
-static const u8 sRageMoveDescription[] = _("Raises the user’s ATTACK\nevery time it is hit.");
-static const u8 sTeleportMoveDescription[] = _("A psychic move for fleeing\nfrom battle instantly.");
-static const u8 sNightShadeMoveDescription[] = _("Inflicts damage identical\nto the user’s level.");
-static const u8 sMimicMoveDescription[] = _("Copies a move used by the\nfoe during one battle.");
-static const u8 sScreechMoveDescription[] = _("Emits a screech to sharply\nreduce the foe’s DEFENSE.");
-static const u8 sDoubleTeamMoveDescription[] = _("Creates illusory copies to\nraise evasiveness.");
-static const u8 sRecoverMoveDescription[] = _("Recovers up to half the\nuser’s maximum HP.");
-static const u8 sHardenMoveDescription[] = _("Stiffens the body’s \nmuscles to raise DEFENSE.");
-static const u8 sMinimizeMoveDescription[] = _("Minimizes the user’s size\nto raise evasiveness.");
-static const u8 sSmokescreenMoveDescription[] = _("Lowers the foe’s accuracy\nusing smoke, ink, etc.");
-static const u8 sConfuseRayMoveDescription[] = _("A sinister ray that\nconfuses the foe.");
-static const u8 sWithdrawMoveDescription[] = _("Withdraws the body into its\nhard shell to raise DEFENSE.");
-static const u8 sDefenseCurlMoveDescription[] = _("Curls up to conceal weak\nspots and raise DEFENSE.");
-static const u8 sBarrierMoveDescription[] = _("Creates a barrier that\nsharply raises DEFENSE.");
-static const u8 sLightScreenMoveDescription[] = _("Creates a wall of light that\nlowers SP. ATK damage.");
-static const u8 sHazeMoveDescription[] = _("Creates a black haze that\neliminates all stat changes.");
-static const u8 sReflectMoveDescription[] = _("Creates a wall of light that\nweakens physical attacks.");
-static const u8 sFocusEnergyMoveDescription[] = _("Focuses power to raise the\ncritical-hit ratio.");
-static const u8 sBideMoveDescription[] = _("Endures attack for 2\nturns to retaliate double.");
-static const u8 sMetronomeMoveDescription[] = _("Waggles a finger to use any\nPOKéMON move at random.");
-static const u8 sMirrorMoveMoveDescription[] = _("Counters the foe’s attack\nwith the same move.");
-static const u8 sSelfDestructMoveDescription[] = _("Inflicts severe damage but\nmakes the user faint.");
-static const u8 sEggBombMoveDescription[] = _("An egg is forcibly hurled at\nthe foe.");
-static const u8 sLickMoveDescription[] = _("Licks with a long tongue to\ninjure. May also paralyze.");
-static const u8 sSmogMoveDescription[] = _("An exhaust-gas attack\nthat may also poison.");
-static const u8 sSludgeMoveDescription[] = _("Sludge is hurled to inflict\ndamage. May also poison.");
-static const u8 sBoneClubMoveDescription[] = _("Clubs the foe with a bone.\nMay cause flinching.");
-static const u8 sFireBlastMoveDescription[] = _("Incinerates everything it\nstrikes. May cause a burn.");
-static const u8 sWaterfallMoveDescription[] = _("Charges the foe with speed\nto climb waterfalls.");
-static const u8 sClampMoveDescription[] = _("Traps and squeezes the\nfoe for 2 to 5 turns.");
-static const u8 sSwiftMoveDescription[] = _("Sprays star-shaped rays\nthat never miss.");
-static const u8 sSkullBashMoveDescription[] = _("Tucks in the head, then\nattacks on the next turn.");
-static const u8 sSpikeCannonMoveDescription[] = _("Launches sharp spikes that\nstrike 2 to 5 times.");
-static const u8 sConstrictMoveDescription[] = _("Constricts to inflict pain.\nMay lower SPEED.");
-static const u8 sAmnesiaMoveDescription[] = _("Forgets about something\nand sharply raises SP. DEF.");
-static const u8 sKinesisMoveDescription[] = _("Distracts the foe.\nMay lower accuracy.");
-static const u8 sSoftBoiledMoveDescription[] = _("Recovers up to half the\nuser’s maximum HP.");
-static const u8 sHiJumpKickMoveDescription[] = _("A jumping knee kick. If it\nmisses, the user is hurt.");
-static const u8 sGlareMoveDescription[] = _("Intimidates and frightens\nthe foe into paralysis.");
-static const u8 sDreamEaterMoveDescription[] = _("Takes one half the damage\ninflicted on a sleeping foe.");
-static const u8 sPoisonGasMoveDescription[] = _("Envelops the foe in a toxic\ngas that may poison.");
-static const u8 sBarrageMoveDescription[] = _("Hurls round objects at the\nfoe 2 to 5 times.");
-static const u8 sLeechLifeMoveDescription[] = _("An attack that steals half\nthe damage inflicted.");
-static const u8 sLovelyKissMoveDescription[] = _("Demands a kiss with a scary\nface that induces sleep.");
-static const u8 sSkyAttackMoveDescription[] = _("Searches out weak spots,\nthen strikes the next turn.");
-static const u8 sTransformMoveDescription[] = _("Alters the user’s cells to\nbecome a copy of the foe.");
-static const u8 sBubbleMoveDescription[] = _("An attack using bubbles.\nMay lower the foe’s SPEED.");
-static const u8 sDizzyPunchMoveDescription[] = _("A rhythmic punch that may\nconfuse the foe.");
-static const u8 sSporeMoveDescription[] = _("Scatters a cloud of spores\nthat always induce sleep.");
-static const u8 sFlashMoveDescription[] = _("Looses a powerful blast of\nlight that cuts accuracy.");
-static const u8 sPsywaveMoveDescription[] = _("Attacks with a psychic\nwave of varying intensity.");
-static const u8 sSplashMoveDescription[] = _("It’s just a splash...\nHas no effect whatsoever.");
-static const u8 sAcidArmorMoveDescription[] = _("Liquifies the user’s body\nto sharply raise DEFENSE.");
-static const u8 sCrabhammerMoveDescription[] = _("Hammers with a pincer. Has a\nhigh critical-hit ratio.");
-static const u8 sExplosionMoveDescription[] = _("Inflicts severe damage but\nmakes the user faint.");
-static const u8 sFurySwipesMoveDescription[] = _("Rakes the foe with sharp\nclaws, etc., 2 to 5 times.");
-static const u8 sBonemerangMoveDescription[] = _("Throws a bone boomerang\nthat strikes twice.");
-static const u8 sRestMoveDescription[] = _("The user sleeps for 2 turns,\nrestoring HP and status.");
-static const u8 sRockSlideMoveDescription[] = _("Large boulders are hurled.\nMay cause flinching.");
-static const u8 sHyperFangMoveDescription[] = _("Attacks with sharp fangs.\nMay cause flinching.");
-static const u8 sSharpenMoveDescription[] = _("Reduces the polygon count\nand raises ATTACK.");
-static const u8 sConversionMoveDescription[] = _("Changes the user’s type\ninto a known move’s type.");
-static const u8 sTriAttackMoveDescription[] = _("Fires three types of beams\nat the same time.");
-static const u8 sSuperFangMoveDescription[] = _("Attacks with sharp fangs\nand cuts half the foe’s HP.");
-static const u8 sSlashMoveDescription[] = _("Slashes with claws, etc. Has\na high critical-hit ratio.");
-static const u8 sSubstituteMoveDescription[] = _("Creates a decoy using 1/4\nof the user’s maximum HP.");
-static const u8 sStruggleMoveDescription[] = _("Used only if all PP are gone.\nAlso hurts the user a little.");
-static const u8 sSketchMoveDescription[] = _("Copies the foe’s last move\npermanently.");
-static const u8 sTripleKickMoveDescription[] = _("Kicks the foe 3 times in a\nrow with rising intensity.");
-static const u8 sThiefMoveDescription[] = _("While attacking, it may\nsteal the foe’s held item.");
-static const u8 sSpiderWebMoveDescription[] = _("Ensnares the foe to stop it\nfrom fleeing or switching.");
-static const u8 sMindReaderMoveDescription[] = _("Senses the foe’s action to\nensure the next move’s hit.");
-static const u8 sNightmareMoveDescription[] = _("Inflicts 1/4 damage on a\nsleeping foe every turn.");
-static const u8 sFlameWheelMoveDescription[] = _("A fiery charge attack that\nmay inflict a burn.");
-static const u8 sSnoreMoveDescription[] = _("A loud attack that can be\nused only while asleep.");
-static const u8 sCurseMoveDescription[] = _("A move that functions\ndifferently for GHOSTS.");
-static const u8 sFlailMoveDescription[] = _("Inflicts more damage when\nthe user’s HP is down.");
-static const u8 sConversion2MoveDescription[] = _("Makes the user resistant\nto the last attack’s type.");
-static const u8 sAeroblastMoveDescription[] = _("Launches a vacuumed blast.\nHigh critical-hit ratio.");
-static const u8 sCottonSporeMoveDescription[] = _("Spores cling to the foe,\nsharply reducing SPEED.");
-static const u8 sReversalMoveDescription[] = _("Inflicts more damage when\nthe user’s HP is down.");
-static const u8 sSpiteMoveDescription[] = _("Spitefully cuts the PP\nof the foe’s last move.");
-static const u8 sPowderSnowMoveDescription[] = _("Blasts the foe with a snowy\ngust. May cause freezing.");
-static const u8 sProtectMoveDescription[] = _("Evades attack, but may fail\nif used in succession.");
-static const u8 sMachPunchMoveDescription[] = _("A punch is thrown at wicked\nspeed to strike first.");
-static const u8 sScaryFaceMoveDescription[] = _("Frightens with a scary face\nto sharply reduce SPEED.");
-static const u8 sFaintAttackMoveDescription[] = _("Draws the foe close, then\nstrikes without fail.");
-static const u8 sSweetKissMoveDescription[] = _("Demands a kiss with a cute\nlook. May cause confusion.");
-static const u8 sBellyDrumMoveDescription[] = _("Maximizes ATTACK while\nsacrificing HP.");
-static const u8 sSludgeBombMoveDescription[] = _("Sludge is hurled to inflict\ndamage. May also poison.");
-static const u8 sMudSlapMoveDescription[] = _("Hurls mud in the foe’s face\nto reduce its accuracy.");
-static const u8 sOctazookaMoveDescription[] = _("Fires a lump of ink to\ndamage and cut accuracy.");
-static const u8 sSpikesMoveDescription[] = _("Sets spikes that hurt a \nfoe switching in.");
-static const u8 sZapCannonMoveDescription[] = _("Powerful and sure to cause\nparalysis, but inaccurate.");
-static const u8 sForesightMoveDescription[] = _("Negates the foe’s efforts\nto heighten evasiveness.");
-static const u8 sDestinyBondMoveDescription[] = _("If the user faints, the foe\nis also made to faint.");
-static const u8 sPerishSongMoveDescription[] = _("Any POKéMON hearing this\nsong faints in 3 turns.");
-static const u8 sIcyWindMoveDescription[] = _("A chilling attack that\nlowers the foe’s SPEED.");
-static const u8 sDetectMoveDescription[] = _("Evades attack, but may fail\nif used in succession.");
-static const u8 sBoneRushMoveDescription[] = _("Strikes the foe with a bone\nin hand 2 to 5 times.");
-static const u8 sLockOnMoveDescription[] = _("Locks on to the foe to\nensure the next move hits.");
-static const u8 sOutrageMoveDescription[] = _("A rampage of 2 to 3 turns\nthat confuses the user.");
-static const u8 sSandstormMoveDescription[] = _("Causes a sandstorm that\nrages for several turns.");
-static const u8 sGigaDrainMoveDescription[] = _("An attack that steals half\nthe damage inflicted.");
-static const u8 sEndureMoveDescription[] = _("Endures any attack for\n1 turn, leaving at least 1HP.");
-static const u8 sCharmMoveDescription[] = _("Charms the foe and sharply\nreduces its ATTACK.");
-static const u8 sRolloutMoveDescription[] = _("An attack lasting 5 turns\nwith rising intensity.");
-static const u8 sFalseSwipeMoveDescription[] = _("An attack that leaves the\nfoe with at least 1 HP.");
-static const u8 sSwaggerMoveDescription[] = _("Confuses the foe, but also\nsharply raises ATTACK.");
-static const u8 sMilkDrinkMoveDescription[] = _("Recovers up to half the\nuser’s maximum HP.");
-static const u8 sSparkMoveDescription[] = _("An electrified tackle that\nmay paralyze the foe.");
-static const u8 sFuryCutterMoveDescription[] = _("An attack that intensifies\non each successive hit.");
-static const u8 sSteelWingMoveDescription[] = _("Strikes the foe with hard\nwings spread wide.");
-static const u8 sMeanLookMoveDescription[] = _("Fixes the foe with a mean\nlook that prevents escape.");
-static const u8 sAttractMoveDescription[] = _("Makes the opposite gender\nless likely to attack.");
-static const u8 sSleepTalkMoveDescription[] = _("Uses an available move\nrandomly while asleep.");
-static const u8 sHealBellMoveDescription[] = _("Chimes soothingly to heal\nall status abnormalities.");
-static const u8 sReturnMoveDescription[] = _("An attack that increases\nin power with friendship.");
-static const u8 sPresentMoveDescription[] = _("A gift in the form of a\nbomb. May restore HP.");
-static const u8 sFrustrationMoveDescription[] = _("An attack that is stronger\nif the TRAINER is disliked.");
-static const u8 sSafeguardMoveDescription[] = _("A mystical force prevents\nall status problems.");
-static const u8 sPainSplitMoveDescription[] = _("Adds the user and foe’s HP,\nthen shares them equally.");
-static const u8 sSacredFireMoveDescription[] = _("A mystical fire attack that\nmay inflict a burn.");
-static const u8 sMagnitudeMoveDescription[] = _("A ground-shaking attack\nof random intensity.");
-static const u8 sDynamicPunchMoveDescription[] = _("Powerful and sure to cause\nconfusion, but inaccurate.");
-static const u8 sMegahornMoveDescription[] = _("A brutal ramming attack\nusing out-thrust horns.");
-static const u8 sDragonBreathMoveDescription[] = _("Strikes the foe with an\nincredible blast of breath.");
-static const u8 sBatonPassMoveDescription[] = _("Switches out the user while\nkeeping effects in play.");
-static const u8 sEncoreMoveDescription[] = _("Makes the foe repeat its\nlast move over 2 to 6 turns.");
-static const u8 sPursuitMoveDescription[] = _("Inflicts bad damage if used\non a foe switching out.");
-static const u8 sRapidSpinMoveDescription[] = _("Spins the body at high\nspeed to strike the foe.");
-static const u8 sSweetScentMoveDescription[] = _("Allures the foe to reduce\nevasiveness.");
-static const u8 sIronTailMoveDescription[] = _("Attacks with a rock-hard\ntail. May lower DEFENSE.");
-static const u8 sMetalClawMoveDescription[] = _("A claw attack that may\nraise the user’s ATTACK.");
-static const u8 sVitalThrowMoveDescription[] = _("Makes the user’s move last,\nbut it never misses.");
-static const u8 sMorningSunMoveDescription[] = _("Restores HP. The amount\nvaries with the weather.");
-static const u8 sSynthesisMoveDescription[] = _("Restores HP. The amount\nvaries with the weather.");
-static const u8 sMoonlightMoveDescription[] = _("Restores HP. The amount\nvaries with the weather.");
-static const u8 sHiddenPowerMoveDescription[] = _("The effectiveness varies\nwith the user.");
-static const u8 sCrossChopMoveDescription[] = _("A double-chopping attack.\nHigh critical-hit ratio.");
-static const u8 sTwisterMoveDescription[] = _("Whips up a vicious twister\nto tear at the foe.");
-static const u8 sRainDanceMoveDescription[] = _("Boosts the power of WATER-\ntype moves for 5 turns.");
-static const u8 sSunnyDayMoveDescription[] = _("Boosts the power of FIRE-\ntype moves for 5 turns.");
-static const u8 sCrunchMoveDescription[] = _("Crunches with sharp fangs.\nMay lower SP. DEF.");
-static const u8 sMirrorCoatMoveDescription[] = _("Counters the foe’s special\nattack at double the power.");
-static const u8 sPsychUpMoveDescription[] = _("Copies the foe’s effect(s)\nand gives to the user.");
-static const u8 sExtremeSpeedMoveDescription[] = _("An extremely fast and\npowerful attack.");
-static const u8 sAncientPowerMoveDescription[] = _("An attack that may raise\nall stats.");
-static const u8 sShadowBallMoveDescription[] = _("Hurls a black blob that may\nlower the foe’s SP. DEF.");
-static const u8 sFutureSightMoveDescription[] = _("Heightens inner power to\nstrike 2 turns later.");
-static const u8 sRockSmashMoveDescription[] = _("A rock-crushing attack\nthat may lower DEFENSE.");
-static const u8 sWhirlpoolMoveDescription[] = _("Traps and hurts the foe in\na whirlpool for 2 to 5 turns.");
-static const u8 sBeatUpMoveDescription[] = _("Summons party POKéMON to\njoin in the attack.");
-static const u8 sFakeOutMoveDescription[] = _("A 1st-turn, 1st-strike move\nthat causes flinching.");
-static const u8 sUproarMoveDescription[] = _("Causes an uproar for 2 to 5\nturns and prevents sleep.");
-static const u8 sStockpileMoveDescription[] = _("Charges up power for up to\n3 turns.");
-static const u8 sSpitUpMoveDescription[] = _("Releases stockpiled power\n(the more the better).");
-static const u8 sSwallowMoveDescription[] = _("Absorbs stockpiled power\nand restores HP.");
-static const u8 sHeatWaveMoveDescription[] = _("Exhales a hot breath on the\nfoe. May inflict a burn.");
-static const u8 sHailMoveDescription[] = _("Summons a hailstorm that\nstrikes every turn.");
-static const u8 sTormentMoveDescription[] = _("Torments the foe and stops\nsuccessive use of a move.");
-static const u8 sFlatterMoveDescription[] = _("Confuses the foe, but\nraises its SP. ATK.");
-static const u8 sWillOWispMoveDescription[] = _("Inflicts a burn on the foe\nwith intense fire.");
-static const u8 sMementoMoveDescription[] = _("The user faints and lowers\nthe foe’s abilities.");
-static const u8 sFacadeMoveDescription[] = _("Boosts ATTACK when burned,\nparalyzed, or poisoned.");
-static const u8 sFocusPunchMoveDescription[] = _("A powerful loyalty attack.\nThe user flinches if hit.");
-static const u8 sSmellingSaltMoveDescription[] = _("Powerful against paralyzed\nfoes, but also heals them.");
-static const u8 sFollowMeMoveDescription[] = _("Draws attention to make\nfoes attack only the user.");
-static const u8 sNaturePowerMoveDescription[] = _("The type of attack varies\ndepending on the location.");
-static const u8 sChargeMoveDescription[] = _("Charges power to boost the\nelectric move used next.");
-static const u8 sTauntMoveDescription[] = _("Taunts the foe into only\nusing attack moves.");
-static const u8 sHelpingHandMoveDescription[] = _("Boosts the power of the\nrecipient’s moves.");
-static const u8 sTrickMoveDescription[] = _("Tricks the foe into trading\nheld items.");
-static const u8 sRolePlayMoveDescription[] = _("Mimics the target and\ncopies its special ability.");
-static const u8 sWishMoveDescription[] = _("A wish that restores HP.\nIt takes time to work.");
-static const u8 sAssistMoveDescription[] = _("Attacks randomly with one\nof the partner’s moves.");
-static const u8 sIngrainMoveDescription[] = _("Lays roots that restore HP.\nThe user can’t switch out.");
-static const u8 sSuperpowerMoveDescription[] = _("Boosts strength sharply,\nbut lowers abilities.");
-static const u8 sMagicCoatMoveDescription[] = _("Reflects special effects\nback to the attacker.");
-static const u8 sRecycleMoveDescription[] = _("Recycles a used item for\none more use.");
-static const u8 sRevengeMoveDescription[] = _("An attack that gains power\nif injured by the foe.");
-static const u8 sBrickBreakMoveDescription[] = _("Destroys barriers such as\nREFLECT and causes damage.");
-static const u8 sYawnMoveDescription[] = _("Lulls the foe into yawning,\nthen sleeping next turn.");
-static const u8 sKnockOffMoveDescription[] = _("Knocks down the foe’s held\nitem to prevent its use.");
-static const u8 sEndeavorMoveDescription[] = _("Gains power if the user’s HP\nis lower than the foe’s HP.");
-static const u8 sEruptionMoveDescription[] = _("The higher the user’s HP,\nthe more damage caused.");
-static const u8 sSkillSwapMoveDescription[] = _("The user swaps special\nabilities with the target.");
-static const u8 sImprisonMoveDescription[] = _("Prevents foes from using\nmoves known by the user.");
-static const u8 sRefreshMoveDescription[] = _("Heals poisoning, paralysis,\nor a burn.");
-static const u8 sGrudgeMoveDescription[] = _("If the user faints, deletes\nall PP of foe’s last move.");
-static const u8 sSnatchMoveDescription[] = _("Steals the effects of the\nmove the target uses next.");
-static const u8 sSecretPowerMoveDescription[] = _("An attack with effects\nthat vary by location.");
-static const u8 sDiveMoveDescription[] = _("Dives underwater the first\nturn and strikes next turn.");
-static const u8 sArmThrustMoveDescription[] = _("Straight-arm punches that\nstrike the foe 2 to 5 times.");
-static const u8 sCamouflageMoveDescription[] = _("Alters the POKéMON’s type\ndepending on the location.");
-static const u8 sTailGlowMoveDescription[] = _("Flashes a light that sharply\nraises SP. ATK.");
-static const u8 sLusterPurgeMoveDescription[] = _("Attacks with a burst of\nlight. May lower SP. DEF.");
-static const u8 sMistBallMoveDescription[] = _("Attacks with a flurry of\ndown. May lower SP. ATK.");
-static const u8 sFeatherDanceMoveDescription[] = _("Envelops the foe with down\nto sharply reduce ATTACK.");
-static const u8 sTeeterDanceMoveDescription[] = _("Confuses all POKéMON on\nthe scene.");
-static const u8 sBlazeKickMoveDescription[] = _("A kick with a high critical-\nhit ratio. May cause a burn.");
-static const u8 sMudSportMoveDescription[] = _("Covers the user in mud to\nraise electrical resistance.");
-static const u8 sIceBallMoveDescription[] = _("A 5-turn attack that gains\npower on successive hits.");
-static const u8 sNeedleArmMoveDescription[] = _("Attacks with thorny arms.\nMay cause flinching.");
-static const u8 sSlackOffMoveDescription[] = _("Slacks off and restores\nhalf the maximum HP.");
-static const u8 sHyperVoiceMoveDescription[] = _("A loud attack that uses\nsound waves to injure.");
-static const u8 sPoisonFangMoveDescription[] = _("A sharp-fanged attack.\nMay badly poison the foe.");
-static const u8 sCrushClawMoveDescription[] = _("Tears at the foe with sharp\nclaws. May lower DEFENSE.");
-static const u8 sBlastBurnMoveDescription[] = _("Powerful, but leaves the\nuser immobile the next turn.");
-static const u8 sHydroCannonMoveDescription[] = _("Powerful, but leaves the\nuser immobile the next turn.");
-static const u8 sMeteorMashMoveDescription[] = _("Fires a meteor-like punch.\nMay raise ATTACK.");
-static const u8 sAstonishMoveDescription[] = _("An attack that may shock\nthe foe into flinching.");
-static const u8 sWeatherBallMoveDescription[] = _("The move’s type and power\nchange with the weather.");
-static const u8 sAromatherapyMoveDescription[] = _("Heals all status problems\nwith a soothing scent.");
-static const u8 sFakeTearsMoveDescription[] = _("Feigns crying to sharply\nlower the foe’s SP. DEF.");
-static const u8 sAirCutterMoveDescription[] = _("Hacks with razorlike wind.\nHigh critical-hit ratio.");
-static const u8 sOverheatMoveDescription[] = _("Allows a full-power attack,\nbut sharply lowers SP. ATK.");
-static const u8 sOdorSleuthMoveDescription[] = _("Negates the foe’s efforts\nto heighten evasiveness.");
-static const u8 sRockTombMoveDescription[] = _("Stops the foe from moving\nwith rocks and cuts SPEED.");
-static const u8 sSilverWindMoveDescription[] = _("A powdery attack that may\nraise abilities.");
-static const u8 sMetalSoundMoveDescription[] = _("Emits a horrible screech\nthat sharply lowers SP. DEF.");
-static const u8 sGrassWhistleMoveDescription[] = _("Lulls the foe into sleep\nwith a pleasant melody.");
-static const u8 sTickleMoveDescription[] = _("Makes the foe laugh to\nlower ATTACK and DEFENSE.");
-static const u8 sCosmicPowerMoveDescription[] = _("Raises DEFENSE and SP. DEF\nwith a mystic power.");
-static const u8 sWaterSpoutMoveDescription[] = _("Inflicts more damage if the\nuser’s HP is high.");
-static const u8 sSignalBeamMoveDescription[] = _("A strange beam attack that\nmay confuse the foe.");
-static const u8 sShadowPunchMoveDescription[] = _("An unavoidable punch that\nis thrown from shadows.");
-static const u8 sExtrasensoryMoveDescription[] = _("Attacks with a peculiar\npower. May cause flinching.");
-static const u8 sSkyUppercutMoveDescription[] = _("An uppercut thrown as if\nleaping into the sky.");
-static const u8 sSandTombMoveDescription[] = _("Traps and hurts the foe in\nquicksand for 2 to 5 turns.");
-static const u8 sSheerColdMoveDescription[] = _("A chilling attack that\ncauses fainting if it hits.");
-static const u8 sMuddyWaterMoveDescription[] = _("Attacks with muddy water.\nMay lower accuracy.");
-static const u8 sBulletSeedMoveDescription[] = _("Shoots 2 to 5 seeds in a row\nto strike the foe.");
-static const u8 sAerialAceMoveDescription[] = _("An extremely speedy and\nunavoidable attack.");
-static const u8 sIcicleSpearMoveDescription[] = _("Attacks the foe by firing\n2 to 5 icicles in a row.");
-static const u8 sIronDefenseMoveDescription[] = _("Hardens the body’s surface\nto sharply raise DEFENSE.");
-static const u8 sBlockMoveDescription[] = _("Blocks the foe’s way to\nprevent escape.");
-static const u8 sHowlMoveDescription[] = _("Howls to raise the spirit\nand boosts ATTACK.");
-static const u8 sDragonClawMoveDescription[] = _("Slashes the foe with sharp\nclaws.");
-static const u8 sFrenzyPlantMoveDescription[] = _("Powerful, but leaves the\nuser immobile the next turn.");
-static const u8 sBulkUpMoveDescription[] = _("Bulks up the body to boost\nboth ATTACK and DEFENSE.");
-static const u8 sBounceMoveDescription[] = _("Bounces up, then down the\nnext turn. May paralyze.");
-static const u8 sMudShotMoveDescription[] = _("Hurls mud at the foe and\nreduces SPEED.");
-static const u8 sPoisonTailMoveDescription[] = _("Has a high critical-hit\nratio. May also poison.");
-static const u8 sCovetMoveDescription[] = _("Cutely begs to obtain an\nitem held by the foe.");
-static const u8 sVoltTackleMoveDescription[] = _("A life-risking tackle that\nslightly hurts the user.");
-static const u8 sMagicalLeafMoveDescription[] = _("Attacks with a strange leaf\nthat cannot be evaded.");
-static const u8 sWaterSportMoveDescription[] = _("The user becomes soaked to\nraise resistance to fire.");
-static const u8 sCalmMindMoveDescription[] = _("Raises SP. ATK and SP. DEF\nby focusing the mind.");
-static const u8 sLeafBladeMoveDescription[] = _("Slashes with a sharp leaf.\nHigh critical-hit ratio.");
-static const u8 sDragonDanceMoveDescription[] = _("A mystical dance that ups\nATTACK and SPEED.");
-static const u8 sRockBlastMoveDescription[] = _("Hurls boulders at the foe\n2 to 5 times in a row.");
-static const u8 sShockWaveMoveDescription[] = _("A fast and unavoidable\nelectric attack.");
-static const u8 sWaterPulseMoveDescription[] = _("Attacks with ultrasonic\nwaves. May confuse the foe.");
-static const u8 sDoomDesireMoveDescription[] = _("Summons strong sunlight to\nattack 2 turns later.");
-static const u8 sPsychoBoostMoveDescription[] = _("Allows a full-power attack,\nbut sharply lowers SP. ATK.");
+static const u8 sNullDescription[] = _(
+ "");
+
+static const u8 sPoundDescription[] = _(
+ "Pounds the foe with\n"
+ "forelegs or tail.");
+
+static const u8 sKarateChopDescription[] = _(
+ "A chopping attack with a\n"
+ "high critical-hit ratio.");
+
+static const u8 sDoubleSlapDescription[] = _(
+ "Repeatedly slaps the foe\n"
+ "2 to 5 times.");
+
+static const u8 sCometPunchDescription[] = _(
+ "Repeatedly punches the foe\n"
+ "2 to 5 times.");
+
+static const u8 sMegaPunchDescription[] = _(
+ "A strong punch thrown with\n"
+ "incredible power.");
+
+static const u8 sPayDayDescription[] = _(
+ "Throws coins at the foe.\n"
+ "Money is recovered after.");
+
+static const u8 sFirePunchDescription[] = _(
+ "A fiery punch that may burn\n"
+ "the foe.");
+
+static const u8 sIcePunchDescription[] = _(
+ "An icy punch that may\n"
+ "freeze the foe.");
+
+static const u8 sThunderPunchDescription[] = _(
+ "An electrified punch that\n"
+ "may paralyze the foe.");
+
+static const u8 sScratchDescription[] = _(
+ "Scratches the foe with\n"
+ "sharp claws.");
+
+static const u8 sViceGripDescription[] = _(
+ "Grips the foe with large and\n"
+ "powerful pincers.");
+
+static const u8 sGuillotineDescription[] = _(
+ "A powerful pincer attack\n"
+ "that may cause fainting.");
+
+static const u8 sRazorWindDescription[] = _(
+ "A 2-turn move that strikes\n"
+ "the foe on the 2nd turn.");
+
+static const u8 sSwordsDanceDescription[] = _(
+ "A fighting dance that\n"
+ "sharply raises ATTACK.");
+
+static const u8 sCutDescription[] = _(
+ "Cuts the foe with sharp\n"
+ "scythes, claws, etc.");
+
+static const u8 sGustDescription[] = _(
+ "Strikes the foe with a gust\n"
+ "of wind whipped up by wings.");
+
+static const u8 sWingAttackDescription[] = _(
+ "Strikes the foe with wings\n"
+ "spread wide.");
+
+static const u8 sWhirlwindDescription[] = _(
+ "Blows away the foe with\n"
+ "wind and ends the battle.");
+
+static const u8 sFlyDescription[] = _(
+ "Flies up on the first turn,\n"
+ "then strikes the next turn.");
+
+static const u8 sBindDescription[] = _(
+ "Binds and squeezes the foe\n"
+ "for 2 to 5 turns.");
+
+static const u8 sSlamDescription[] = _(
+ "Slams the foe with a long\n"
+ "tail, vine, etc.");
+
+static const u8 sVineWhipDescription[] = _(
+ "Strikes the foe with\n"
+ "slender, whiplike vines.");
+
+static const u8 sStompDescription[] = _(
+ "Stomps the enemy with a big\n"
+ "foot. May cause flinching.");
+
+static const u8 sDoubleKickDescription[] = _(
+ "A double-kicking attack\n"
+ "that strikes the foe twice.");
+
+static const u8 sMegaKickDescription[] = _(
+ "An extremely powerful kick\n"
+ "with intense force.");
+
+static const u8 sJumpKickDescription[] = _(
+ "A strong jumping kick. May\n"
+ "miss and hurt the kicker.");
+
+static const u8 sRollingKickDescription[] = _(
+ "A fast kick delivered from\n"
+ "a rapid spin.");
+
+static const u8 sSandAttackDescription[] = _(
+ "Reduces the foe’s accuracy\n"
+ "by hurling sand in its face.");
+
+static const u8 sHeadbuttDescription[] = _(
+ "A ramming attack that may\n"
+ "cause flinching.");
+
+static const u8 sHornAttackDescription[] = _(
+ "Jabs the foe with sharp\n"
+ "horns.");
+
+static const u8 sFuryAttackDescription[] = _(
+ "Jabs the foe 2 to 5 times\n"
+ "with sharp horns, etc.");
+
+static const u8 sHornDrillDescription[] = _(
+ "A one-hit KO attack that\n"
+ "uses a horn like a drill.");
+
+static const u8 sTackleDescription[] = _(
+ "Charges the foe with a full-\n"
+ "body tackle.");
+
+static const u8 sBodySlamDescription[] = _(
+ "A full-body slam that may\n"
+ "cause paralysis.");
+
+static const u8 sWrapDescription[] = _(
+ "Wraps and squeezes the foe\n"
+ "2 to 5 times with vines, etc.");
+
+static const u8 sTakeDownDescription[] = _(
+ "A reckless charge attack\n"
+ "that also hurts the user.");
+
+static const u8 sThrashDescription[] = _(
+ "A rampage of 2 to 3 turns\n"
+ "that confuses the user.");
+
+static const u8 sDoubleEdgeDescription[] = _(
+ "A life-risking tackle that\n"
+ "also hurts the user.");
+
+static const u8 sTailWhipDescription[] = _(
+ "Wags the tail to lower the\n"
+ "foe’s DEFENSE.");
+
+static const u8 sPoisonStingDescription[] = _(
+ "A toxic attack with barbs,\n"
+ "etc., that may poison.");
+
+static const u8 sTwineedleDescription[] = _(
+ "Stingers on the forelegs\n"
+ "jab the foe twice.");
+
+static const u8 sPinMissileDescription[] = _(
+ "Sharp pins are fired to\n"
+ "strike 2 to 5 times.");
+
+static const u8 sLeerDescription[] = _(
+ "Frightens the foe with a\n"
+ "leer to lower DEFENSE.");
+
+static const u8 sBiteDescription[] = _(
+ "Bites with vicious fangs.\n"
+ "May cause flinching.");
+
+static const u8 sGrowlDescription[] = _(
+ "Growls cutely to reduce the\n"
+ "foe’s ATTACK.");
+
+static const u8 sRoarDescription[] = _(
+ "Makes the foe flee to end\n"
+ "the battle.");
+
+static const u8 sSingDescription[] = _(
+ "A soothing song lulls the\n"
+ "foe into a deep slumber.");
+
+static const u8 sSupersonicDescription[] = _(
+ "Emits bizarre sound waves\n"
+ "that may confuse the foe.");
+
+static const u8 sSonicBoomDescription[] = _(
+ "Launches shock waves that\n"
+ "always inflict 20 HP damage.");
+
+static const u8 sDisableDescription[] = _(
+ "Psychically disables one of\n"
+ "the foe’s moves.");
+
+static const u8 sAcidDescription[] = _(
+ "Sprays a hide-melting acid.\n"
+ "May lower DEFENSE.");
+
+static const u8 sEmberDescription[] = _(
+ "A weak fire attack that may\n"
+ "inflict a burn.");
+
+static const u8 sFlamethrowerDescription[] = _(
+ "A powerful fire attack that\n"
+ "may inflict a burn.");
+
+static const u8 sMistDescription[] = _(
+ "Creates a mist that stops\n"
+ "reduction of abilities.");
+
+static const u8 sWaterGunDescription[] = _(
+ "Squirts water to attack\n"
+ "the foe.");
+
+static const u8 sHydroPumpDescription[] = _(
+ "Blasts water at high power\n"
+ "to strike the foe.");
+
+static const u8 sSurfDescription[] = _(
+ "Creates a huge wave, then\n"
+ "crashes it down on the foe.");
+
+static const u8 sIceBeamDescription[] = _(
+ "Blasts the foe with an icy\n"
+ "beam that may freeze it.");
+
+static const u8 sBlizzardDescription[] = _(
+ "Hits the foe with an icy\n"
+ "storm that may freeze it.");
+
+static const u8 sPsybeamDescription[] = _(
+ "Fires a peculiar ray that\n"
+ "may confuse the foe.");
+
+static const u8 sBubbleBeamDescription[] = _(
+ "Forcefully sprays bubbles\n"
+ "that may lower SPEED.");
+
+static const u8 sAuroraBeamDescription[] = _(
+ "Fires a rainbow-colored\n"
+ "beam that may lower ATTACK.");
+
+static const u8 sHyperBeamDescription[] = _(
+ "Powerful, but leaves the\n"
+ "user immobile the next turn.");
+
+static const u8 sPeckDescription[] = _(
+ "Attacks the foe with a\n"
+ "jabbing beak, etc.");
+
+static const u8 sDrillPeckDescription[] = _(
+ "A corkscrewing attack with\n"
+ "the beak acting as a drill.");
+
+static const u8 sSubmissionDescription[] = _(
+ "A reckless body slam that\n"
+ "also hurts the user.");
+
+static const u8 sLowKickDescription[] = _(
+ "A kick that inflicts more\n"
+ "damage on heavier foes.");
+
+static const u8 sCounterDescription[] = _(
+ "Retaliates any physical hit\n"
+ "with double the power.");
+
+static const u8 sSeismicTossDescription[] = _(
+ "Inflicts damage identical\n"
+ "to the user’s level.");
+
+static const u8 sStrengthDescription[] = _(
+ "Builds enormous power,\n"
+ "then slams the foe.");
+
+static const u8 sAbsorbDescription[] = _(
+ "An attack that absorbs\n"
+ "half the damage inflicted.");
+
+static const u8 sMegaDrainDescription[] = _(
+ "An attack that absorbs\n"
+ "half the damage inflicted.");
+
+static const u8 sLeechSeedDescription[] = _(
+ "Plants a seed on the foe to\n"
+ "steal HP on every turn.");
+
+static const u8 sGrowthDescription[] = _(
+ "Forces the body to grow\n"
+ "and heightens SP. ATK.");
+
+static const u8 sRazorLeafDescription[] = _(
+ "Cuts the enemy with leaves.\n"
+ "High critical-hit ratio.");
+
+static const u8 sSolarBeamDescription[] = _(
+ "Absorbs light in one turn,\n"
+ "then attacks next turn.");
+
+static const u8 sPoisonPowderDescription[] = _(
+ "Scatters a toxic powder\n"
+ "that may poison the foe.");
+
+static const u8 sStunSporeDescription[] = _(
+ "Scatters a powder that may\n"
+ "paralyze the foe.");
+
+static const u8 sSleepPowderDescription[] = _(
+ "Scatters a powder that may\n"
+ "cause the foe to sleep.");
+
+static const u8 sPetalDanceDescription[] = _(
+ "A rampage of 2 to 3 turns\n"
+ "that confuses the user.");
+
+static const u8 sStringShotDescription[] = _(
+ "Binds the foe with string\n"
+ "to reduce its SPEED.");
+
+static const u8 sDragonRageDescription[] = _(
+ "Launches shock waves that\n"
+ "always inflict 40 HP damage.");
+
+static const u8 sFireSpinDescription[] = _(
+ "Traps the foe in a ring of\n"
+ "fire for 2 to 5 turns.");
+
+static const u8 sThunderShockDescription[] = _(
+ "An electrical attack that\n"
+ "may paralyze the foe.");
+
+static const u8 sThunderboltDescription[] = _(
+ "A strong electrical attack\n"
+ "that may paralyze the foe.");
+
+static const u8 sThunderWaveDescription[] = _(
+ "A weak jolt of electricity\n"
+ "that paralyzes the foe.");
+
+static const u8 sThunderDescription[] = _(
+ "A lightning attack that may\n"
+ "cause paralysis.");
+
+static const u8 sRockThrowDescription[] = _(
+ "Throws small rocks to\n"
+ "strike the foe.");
+
+static const u8 sEarthquakeDescription[] = _(
+ "A powerful quake, but has\n"
+ "no effect on flying foes.");
+
+static const u8 sFissureDescription[] = _(
+ "A one-hit KO move that\n"
+ "drops the foe in a fissure.");
+
+static const u8 sDigDescription[] = _(
+ "Digs underground the first\n"
+ "turn and strikes next turn.");
+
+static const u8 sToxicDescription[] = _(
+ "Poisons the foe with an\n"
+ "intensifying toxin.");
+
+static const u8 sConfusionDescription[] = _(
+ "A psychic attack that may\n"
+ "cause confusion.");
+
+static const u8 sPsychicDescription[] = _(
+ "A powerful psychic attack\n"
+ "that may lower SP. DEF.");
+
+static const u8 sHypnosisDescription[] = _(
+ "A hypnotizing move that\n"
+ "may induce sleep.");
+
+static const u8 sMeditateDescription[] = _(
+ "Meditates in a peaceful\n"
+ "fashion to raise ATTACK.");
+
+static const u8 sAgilityDescription[] = _(
+ "Relaxes the body to sharply\n"
+ "boost SPEED.");
+
+static const u8 sQuickAttackDescription[] = _(
+ "An extremely fast attack\n"
+ "that always strikes first.");
+
+static const u8 sRageDescription[] = _(
+ "Raises the user’s ATTACK\n"
+ "every time it is hit.");
+
+static const u8 sTeleportDescription[] = _(
+ "A psychic move for fleeing\n"
+ "from battle instantly.");
+
+static const u8 sNightShadeDescription[] = _(
+ "Inflicts damage identical\n"
+ "to the user’s level.");
+
+static const u8 sMimicDescription[] = _(
+ "Copies a move used by the\n"
+ "foe during one battle.");
+
+static const u8 sScreechDescription[] = _(
+ "Emits a screech to sharply\n"
+ "reduce the foe’s DEFENSE.");
+
+static const u8 sDoubleTeamDescription[] = _(
+ "Creates illusory copies to\n"
+ "raise evasiveness.");
+
+static const u8 sRecoverDescription[] = _(
+ "Recovers up to half the\n"
+ "user’s maximum HP.");
+
+static const u8 sHardenDescription[] = _(
+ "Stiffens the body’s \n"
+ "muscles to raise DEFENSE.");
+
+static const u8 sMinimizeDescription[] = _(
+ "Minimizes the user’s size\n"
+ "to raise evasiveness.");
+
+static const u8 sSmokescreenDescription[] = _(
+ "Lowers the foe’s accuracy\n"
+ "using smoke, ink, etc.");
+
+static const u8 sConfuseRayDescription[] = _(
+ "A sinister ray that\n"
+ "confuses the foe.");
+
+static const u8 sWithdrawDescription[] = _(
+ "Withdraws the body into its\n"
+ "hard shell to raise DEFENSE.");
+
+static const u8 sDefenseCurlDescription[] = _(
+ "Curls up to conceal weak\n"
+ "spots and raise DEFENSE.");
+
+static const u8 sBarrierDescription[] = _(
+ "Creates a barrier that\n"
+ "sharply raises DEFENSE.");
+
+static const u8 sLightScreenDescription[] = _(
+ "Creates a wall of light that\n"
+ "lowers SP. ATK damage.");
+
+static const u8 sHazeDescription[] = _(
+ "Creates a black haze that\n"
+ "eliminates all stat changes.");
+
+static const u8 sReflectDescription[] = _(
+ "Creates a wall of light that\n"
+ "weakens physical attacks.");
+
+static const u8 sFocusEnergyDescription[] = _(
+ "Focuses power to raise the\n"
+ "critical-hit ratio.");
+
+static const u8 sBideDescription[] = _(
+ "Endures attack for 2\n"
+ "turns to retaliate double.");
+
+static const u8 sMetronomeDescription[] = _(
+ "Waggles a finger to use any\n"
+ "POKéMON move at random.");
+
+static const u8 sMirrorMoveDescription[] = _(
+ "Counters the foe’s attack\n"
+ "with the same move.");
+
+static const u8 sSelfDestructDescription[] = _(
+ "Inflicts severe damage but\n"
+ "makes the user faint.");
+
+static const u8 sEggBombDescription[] = _(
+ "An egg is forcibly hurled at\n"
+ "the foe.");
+
+static const u8 sLickDescription[] = _(
+ "Licks with a long tongue to\n"
+ "injure. May also paralyze.");
+
+static const u8 sSmogDescription[] = _(
+ "An exhaust-gas attack\n"
+ "that may also poison.");
+
+static const u8 sSludgeDescription[] = _(
+ "Sludge is hurled to inflict\n"
+ "damage. May also poison.");
+
+static const u8 sBoneClubDescription[] = _(
+ "Clubs the foe with a bone.\n"
+ "May cause flinching.");
+
+static const u8 sFireBlastDescription[] = _(
+ "Incinerates everything it\n"
+ "strikes. May cause a burn.");
+
+static const u8 sWaterfallDescription[] = _(
+ "Charges the foe with speed\n"
+ "to climb waterfalls.");
+
+static const u8 sClampDescription[] = _(
+ "Traps and squeezes the\n"
+ "foe for 2 to 5 turns.");
+
+static const u8 sSwiftDescription[] = _(
+ "Sprays star-shaped rays\n"
+ "that never miss.");
+
+static const u8 sSkullBashDescription[] = _(
+ "Tucks in the head, then\n"
+ "attacks on the next turn.");
+
+static const u8 sSpikeCannonDescription[] = _(
+ "Launches sharp spikes that\n"
+ "strike 2 to 5 times.");
+
+static const u8 sConstrictDescription[] = _(
+ "Constricts to inflict pain.\n"
+ "May lower SPEED.");
+
+static const u8 sAmnesiaDescription[] = _(
+ "Forgets about something\n"
+ "and sharply raises SP. DEF.");
+
+static const u8 sKinesisDescription[] = _(
+ "Distracts the foe.\n"
+ "May lower accuracy.");
+
+static const u8 sSoftBoiledDescription[] = _(
+ "Recovers up to half the\n"
+ "user’s maximum HP.");
+
+static const u8 sHiJumpKickDescription[] = _(
+ "A jumping knee kick. If it\n"
+ "misses, the user is hurt.");
+
+static const u8 sGlareDescription[] = _(
+ "Intimidates and frightens\n"
+ "the foe into paralysis.");
+
+static const u8 sDreamEaterDescription[] = _(
+ "Takes one half the damage\n"
+ "inflicted on a sleeping foe.");
+
+static const u8 sPoisonGasDescription[] = _(
+ "Envelops the foe in a toxic\n"
+ "gas that may poison.");
+
+static const u8 sBarrageDescription[] = _(
+ "Hurls round objects at the\n"
+ "foe 2 to 5 times.");
+
+static const u8 sLeechLifeDescription[] = _(
+ "An attack that steals half\n"
+ "the damage inflicted.");
+
+static const u8 sLovelyKissDescription[] = _(
+ "Demands a kiss with a scary\n"
+ "face that induces sleep.");
+
+static const u8 sSkyAttackDescription[] = _(
+ "Searches out weak spots,\n"
+ "then strikes the next turn.");
+
+static const u8 sTransformDescription[] = _(
+ "Alters the user’s cells to\n"
+ "become a copy of the foe.");
+
+static const u8 sBubbleDescription[] = _(
+ "An attack using bubbles.\n"
+ "May lower the foe’s SPEED.");
+
+static const u8 sDizzyPunchDescription[] = _(
+ "A rhythmic punch that may\n"
+ "confuse the foe.");
+
+static const u8 sSporeDescription[] = _(
+ "Scatters a cloud of spores\n"
+ "that always induce sleep.");
+
+static const u8 sFlashDescription[] = _(
+ "Looses a powerful blast of\n"
+ "light that cuts accuracy.");
+
+static const u8 sPsywaveDescription[] = _(
+ "Attacks with a psychic\n"
+ "wave of varying intensity.");
+
+static const u8 sSplashDescription[] = _(
+ "It’s just a splash...\n"
+ "Has no effect whatsoever.");
+
+static const u8 sAcidArmorDescription[] = _(
+ "Liquifies the user’s body\n"
+ "to sharply raise DEFENSE.");
+
+static const u8 sCrabhammerDescription[] = _(
+ "Hammers with a pincer. Has a\n"
+ "high critical-hit ratio.");
+
+static const u8 sExplosionDescription[] = _(
+ "Inflicts severe damage but\n"
+ "makes the user faint.");
+
+static const u8 sFurySwipesDescription[] = _(
+ "Rakes the foe with sharp\n"
+ "claws, etc., 2 to 5 times.");
+
+static const u8 sBonemerangDescription[] = _(
+ "Throws a bone boomerang\n"
+ "that strikes twice.");
+
+static const u8 sRestDescription[] = _(
+ "The user sleeps for 2 turns,\n"
+ "restoring HP and status.");
+
+static const u8 sRockSlideDescription[] = _(
+ "Large boulders are hurled.\n"
+ "May cause flinching.");
+
+static const u8 sHyperFangDescription[] = _(
+ "Attacks with sharp fangs.\n"
+ "May cause flinching.");
+
+static const u8 sSharpenDescription[] = _(
+ "Reduces the polygon count\n"
+ "and raises ATTACK.");
+
+static const u8 sConversionDescription[] = _(
+ "Changes the user’s type\n"
+ "into a known move’s type.");
+
+static const u8 sTriAttackDescription[] = _(
+ "Fires three types of beams\n"
+ "at the same time.");
+
+static const u8 sSuperFangDescription[] = _(
+ "Attacks with sharp fangs\n"
+ "and cuts half the foe’s HP.");
+
+static const u8 sSlashDescription[] = _(
+ "Slashes with claws, etc. Has\n"
+ "a high critical-hit ratio.");
+
+static const u8 sSubstituteDescription[] = _(
+ "Creates a decoy using 1/4\n"
+ "of the user’s maximum HP.");
+
+static const u8 sStruggleDescription[] = _(
+ "Used only if all PP are gone.\n"
+ "Also hurts the user a little.");
+
+static const u8 sSketchDescription[] = _(
+ "Copies the foe’s last move\n"
+ "permanently.");
+
+static const u8 sTripleKickDescription[] = _(
+ "Kicks the foe 3 times in a\n"
+ "row with rising intensity.");
+
+static const u8 sThiefDescription[] = _(
+ "While attacking, it may\n"
+ "steal the foe’s held item.");
+
+static const u8 sSpiderWebDescription[] = _(
+ "Ensnares the foe to stop it\n"
+ "from fleeing or switching.");
+
+static const u8 sMindReaderDescription[] = _(
+ "Senses the foe’s action to\n"
+ "ensure the next move’s hit.");
+
+static const u8 sNightmareDescription[] = _(
+ "Inflicts 1/4 damage on a\n"
+ "sleeping foe every turn.");
+
+static const u8 sFlameWheelDescription[] = _(
+ "A fiery charge attack that\n"
+ "may inflict a burn.");
+
+static const u8 sSnoreDescription[] = _(
+ "A loud attack that can be\n"
+ "used only while asleep.");
+
+static const u8 sCurseDescription[] = _(
+ "A move that functions\n"
+ "differently for GHOSTS.");
+
+static const u8 sFlailDescription[] = _(
+ "Inflicts more damage when\n"
+ "the user’s HP is down.");
+
+static const u8 sConversion2Description[] = _(
+ "Makes the user resistant\n"
+ "to the last attack’s type.");
+
+static const u8 sAeroblastDescription[] = _(
+ "Launches a vacuumed blast.\n"
+ "High critical-hit ratio.");
+
+static const u8 sCottonSporeDescription[] = _(
+ "Spores cling to the foe,\n"
+ "sharply reducing SPEED.");
+
+static const u8 sReversalDescription[] = _(
+ "Inflicts more damage when\n"
+ "the user’s HP is down.");
+
+static const u8 sSpiteDescription[] = _(
+ "Spitefully cuts the PP\n"
+ "of the foe’s last move.");
+
+static const u8 sPowderSnowDescription[] = _(
+ "Blasts the foe with a snowy\n"
+ "gust. May cause freezing.");
+
+static const u8 sProtectDescription[] = _(
+ "Evades attack, but may fail\n"
+ "if used in succession.");
+
+static const u8 sMachPunchDescription[] = _(
+ "A punch is thrown at wicked\n"
+ "speed to strike first.");
+
+static const u8 sScaryFaceDescription[] = _(
+ "Frightens with a scary face\n"
+ "to sharply reduce SPEED.");
+
+static const u8 sFaintAttackDescription[] = _(
+ "Draws the foe close, then\n"
+ "strikes without fail.");
+
+static const u8 sSweetKissDescription[] = _(
+ "Demands a kiss with a cute\n"
+ "look. May cause confusion.");
+
+static const u8 sBellyDrumDescription[] = _(
+ "Maximizes ATTACK while\n"
+ "sacrificing HP.");
+
+static const u8 sSludgeBombDescription[] = _(
+ "Sludge is hurled to inflict\n"
+ "damage. May also poison.");
+
+static const u8 sMudSlapDescription[] = _(
+ "Hurls mud in the foe’s face\n"
+ "to reduce its accuracy.");
+
+static const u8 sOctazookaDescription[] = _(
+ "Fires a lump of ink to\n"
+ "damage and cut accuracy.");
+
+static const u8 sSpikesDescription[] = _(
+ "Sets spikes that hurt a \n"
+ "foe switching in.");
+
+static const u8 sZapCannonDescription[] = _(
+ "Powerful and sure to cause\n"
+ "paralysis, but inaccurate.");
+
+static const u8 sForesightDescription[] = _(
+ "Negates the foe’s efforts\n"
+ "to heighten evasiveness.");
+
+static const u8 sDestinyBondDescription[] = _(
+ "If the user faints, the foe\n"
+ "is also made to faint.");
+
+static const u8 sPerishSongDescription[] = _(
+ "Any POKéMON hearing this\n"
+ "song faints in 3 turns.");
+
+static const u8 sIcyWindDescription[] = _(
+ "A chilling attack that\n"
+ "lowers the foe’s SPEED.");
+
+static const u8 sDetectDescription[] = _(
+ "Evades attack, but may fail\n"
+ "if used in succession.");
+
+static const u8 sBoneRushDescription[] = _(
+ "Strikes the foe with a bone\n"
+ "in hand 2 to 5 times.");
+
+static const u8 sLockOnDescription[] = _(
+ "Locks on to the foe to\n"
+ "ensure the next move hits.");
+
+static const u8 sOutrageDescription[] = _(
+ "A rampage of 2 to 3 turns\n"
+ "that confuses the user.");
+
+static const u8 sSandstormDescription[] = _(
+ "Causes a sandstorm that\n"
+ "rages for several turns.");
+
+static const u8 sGigaDrainDescription[] = _(
+ "An attack that steals half\n"
+ "the damage inflicted.");
+
+static const u8 sEndureDescription[] = _(
+ "Endures any attack for\n"
+ "1 turn, leaving at least 1HP.");
+
+static const u8 sCharmDescription[] = _(
+ "Charms the foe and sharply\n"
+ "reduces its ATTACK.");
+
+static const u8 sRolloutDescription[] = _(
+ "An attack lasting 5 turns\n"
+ "with rising intensity.");
+
+static const u8 sFalseSwipeDescription[] = _(
+ "An attack that leaves the\n"
+ "foe with at least 1 HP.");
+
+static const u8 sSwaggerDescription[] = _(
+ "Confuses the foe, but also\n"
+ "sharply raises ATTACK.");
+
+static const u8 sMilkDrinkDescription[] = _(
+ "Recovers up to half the\n"
+ "user’s maximum HP.");
+
+static const u8 sSparkDescription[] = _(
+ "An electrified tackle that\n"
+ "may paralyze the foe.");
+
+static const u8 sFuryCutterDescription[] = _(
+ "An attack that intensifies\n"
+ "on each successive hit.");
+
+static const u8 sSteelWingDescription[] = _(
+ "Strikes the foe with hard\n"
+ "wings spread wide.");
+
+static const u8 sMeanLookDescription[] = _(
+ "Fixes the foe with a mean\n"
+ "look that prevents escape.");
+
+static const u8 sAttractDescription[] = _(
+ "Makes the opposite gender\n"
+ "less likely to attack.");
+
+static const u8 sSleepTalkDescription[] = _(
+ "Uses an available move\n"
+ "randomly while asleep.");
+
+static const u8 sHealBellDescription[] = _(
+ "Chimes soothingly to heal\n"
+ "all status abnormalities.");
+
+static const u8 sReturnDescription[] = _(
+ "An attack that increases\n"
+ "in power with friendship.");
+
+static const u8 sPresentDescription[] = _(
+ "A gift in the form of a\n"
+ "bomb. May restore HP.");
+
+static const u8 sFrustrationDescription[] = _(
+ "An attack that is stronger\n"
+ "if the TRAINER is disliked.");
+
+static const u8 sSafeguardDescription[] = _(
+ "A mystical force prevents\n"
+ "all status problems.");
+
+static const u8 sPainSplitDescription[] = _(
+ "Adds the user and foe’s HP,\n"
+ "then shares them equally.");
+
+static const u8 sSacredFireDescription[] = _(
+ "A mystical fire attack that\n"
+ "may inflict a burn.");
+
+static const u8 sMagnitudeDescription[] = _(
+ "A ground-shaking attack\n"
+ "of random intensity.");
+
+static const u8 sDynamicPunchDescription[] = _(
+ "Powerful and sure to cause\n"
+ "confusion, but inaccurate.");
+
+static const u8 sMegahornDescription[] = _(
+ "A brutal ramming attack\n"
+ "using out-thrust horns.");
+
+static const u8 sDragonBreathDescription[] = _(
+ "Strikes the foe with an\n"
+ "incredible blast of breath.");
+
+static const u8 sBatonPassDescription[] = _(
+ "Switches out the user while\n"
+ "keeping effects in play.");
+
+static const u8 sEncoreDescription[] = _(
+ "Makes the foe repeat its\n"
+ "last move over 2 to 6 turns.");
+
+static const u8 sPursuitDescription[] = _(
+ "Inflicts bad damage if used\n"
+ "on a foe switching out.");
+
+static const u8 sRapidSpinDescription[] = _(
+ "Spins the body at high\n"
+ "speed to strike the foe.");
+
+static const u8 sSweetScentDescription[] = _(
+ "Allures the foe to reduce\n"
+ "evasiveness.");
+
+static const u8 sIronTailDescription[] = _(
+ "Attacks with a rock-hard\n"
+ "tail. May lower DEFENSE.");
+
+static const u8 sMetalClawDescription[] = _(
+ "A claw attack that may\n"
+ "raise the user’s ATTACK.");
+
+static const u8 sVitalThrowDescription[] = _(
+ "Makes the user’s move last,\n"
+ "but it never misses.");
+
+static const u8 sMorningSunDescription[] = _(
+ "Restores HP. The amount\n"
+ "varies with the weather.");
+
+static const u8 sSynthesisDescription[] = _(
+ "Restores HP. The amount\n"
+ "varies with the weather.");
+
+static const u8 sMoonlightDescription[] = _(
+ "Restores HP. The amount\n"
+ "varies with the weather.");
+
+static const u8 sHiddenPowerDescription[] = _(
+ "The effectiveness varies\n"
+ "with the user.");
+
+static const u8 sCrossChopDescription[] = _(
+ "A double-chopping attack.\n"
+ "High critical-hit ratio.");
+
+static const u8 sTwisterDescription[] = _(
+ "Whips up a vicious twister\n"
+ "to tear at the foe.");
+
+static const u8 sRainDanceDescription[] = _(
+ "Boosts the power of WATER-\n"
+ "type moves for 5 turns.");
+
+static const u8 sSunnyDayDescription[] = _(
+ "Boosts the power of FIRE-\n"
+ "type moves for 5 turns.");
+
+static const u8 sCrunchDescription[] = _(
+ "Crunches with sharp fangs.\n"
+ "May lower SP. DEF.");
+
+static const u8 sMirrorCoatDescription[] = _(
+ "Counters the foe’s special\n"
+ "attack at double the power.");
+
+static const u8 sPsychUpDescription[] = _(
+ "Copies the foe’s effect(s)\n"
+ "and gives to the user.");
+
+static const u8 sExtremeSpeedDescription[] = _(
+ "An extremely fast and\n"
+ "powerful attack.");
+
+static const u8 sAncientPowerDescription[] = _(
+ "An attack that may raise\n"
+ "all stats.");
+
+static const u8 sShadowBallDescription[] = _(
+ "Hurls a black blob that may\n"
+ "lower the foe’s SP. DEF.");
+
+static const u8 sFutureSightDescription[] = _(
+ "Heightens inner power to\n"
+ "strike 2 turns later.");
+
+static const u8 sRockSmashDescription[] = _(
+ "A rock-crushing attack\n"
+ "that may lower DEFENSE.");
+
+static const u8 sWhirlpoolDescription[] = _(
+ "Traps and hurts the foe in\n"
+ "a whirlpool for 2 to 5 turns.");
+
+static const u8 sBeatUpDescription[] = _(
+ "Summons party POKéMON to\n"
+ "join in the attack.");
+
+static const u8 sFakeOutDescription[] = _(
+ "A 1st-turn, 1st-strike move\n"
+ "that causes flinching.");
+
+static const u8 sUproarDescription[] = _(
+ "Causes an uproar for 2 to 5\n"
+ "turns and prevents sleep.");
+
+static const u8 sStockpileDescription[] = _(
+ "Charges up power for up to\n"
+ "3 turns.");
+
+static const u8 sSpitUpDescription[] = _(
+ "Releases stockpiled power\n"
+ "(the more the better).");
+
+static const u8 sSwallowDescription[] = _(
+ "Absorbs stockpiled power\n"
+ "and restores HP.");
+
+static const u8 sHeatWaveDescription[] = _(
+ "Exhales a hot breath on the\n"
+ "foe. May inflict a burn.");
+
+static const u8 sHailDescription[] = _(
+ "Summons a hailstorm that\n"
+ "strikes every turn.");
+
+static const u8 sTormentDescription[] = _(
+ "Torments the foe and stops\n"
+ "successive use of a move.");
+
+static const u8 sFlatterDescription[] = _(
+ "Confuses the foe, but\n"
+ "raises its SP. ATK.");
+
+static const u8 sWillOWispDescription[] = _(
+ "Inflicts a burn on the foe\n"
+ "with intense fire.");
+
+static const u8 sMementoDescription[] = _(
+ "The user faints and lowers\n"
+ "the foe’s abilities.");
+
+static const u8 sFacadeDescription[] = _(
+ "Boosts ATTACK when burned,\n"
+ "paralyzed, or poisoned.");
+
+static const u8 sFocusPunchDescription[] = _(
+ "A powerful loyalty attack.\n"
+ "The user flinches if hit.");
+
+static const u8 sSmellingSaltDescription[] = _(
+ "Powerful against paralyzed\n"
+ "foes, but also heals them.");
+
+static const u8 sFollowMeDescription[] = _(
+ "Draws attention to make\n"
+ "foes attack only the user.");
+
+static const u8 sNaturePowerDescription[] = _(
+ "The type of attack varies\n"
+ "depending on the location.");
+
+static const u8 sChargeDescription[] = _(
+ "Charges power to boost the\n"
+ "electric move used next.");
+
+static const u8 sTauntDescription[] = _(
+ "Taunts the foe into only\n"
+ "using attack moves.");
+
+static const u8 sHelpingHandDescription[] = _(
+ "Boosts the power of the\n"
+ "recipient’s moves.");
+
+static const u8 sTrickDescription[] = _(
+ "Tricks the foe into trading\n"
+ "held items.");
+
+static const u8 sRolePlayDescription[] = _(
+ "Mimics the target and\n"
+ "copies its special ability.");
+
+static const u8 sWishDescription[] = _(
+ "A wish that restores HP.\n"
+ "It takes time to work.");
+
+static const u8 sAssistDescription[] = _(
+ "Attacks randomly with one\n"
+ "of the partner’s moves.");
+
+static const u8 sIngrainDescription[] = _(
+ "Lays roots that restore HP.\n"
+ "The user can’t switch out.");
+
+static const u8 sSuperpowerDescription[] = _(
+ "Boosts strength sharply,\n"
+ "but lowers abilities.");
+
+static const u8 sMagicCoatDescription[] = _(
+ "Reflects special effects\n"
+ "back to the attacker.");
+
+static const u8 sRecycleDescription[] = _(
+ "Recycles a used item for\n"
+ "one more use.");
+
+static const u8 sRevengeDescription[] = _(
+ "An attack that gains power\n"
+ "if injured by the foe.");
+
+static const u8 sBrickBreakDescription[] = _(
+ "Destroys barriers such as\n"
+ "REFLECT and causes damage.");
+
+static const u8 sYawnDescription[] = _(
+ "Lulls the foe into yawning,\n"
+ "then sleeping next turn.");
+
+static const u8 sKnockOffDescription[] = _(
+ "Knocks down the foe’s held\n"
+ "item to prevent its use.");
+
+static const u8 sEndeavorDescription[] = _(
+ "Gains power if the user’s HP\n"
+ "is lower than the foe’s HP.");
+
+static const u8 sEruptionDescription[] = _(
+ "The higher the user’s HP,\n"
+ "the more damage caused.");
+
+static const u8 sSkillSwapDescription[] = _(
+ "The user swaps special\n"
+ "abilities with the target.");
+
+static const u8 sImprisonDescription[] = _(
+ "Prevents foes from using\n"
+ "moves known by the user.");
+
+static const u8 sRefreshDescription[] = _(
+ "Heals poisoning, paralysis,\n"
+ "or a burn.");
+
+static const u8 sGrudgeDescription[] = _(
+ "If the user faints, deletes\n"
+ "all PP of foe’s last move.");
+
+static const u8 sSnatchDescription[] = _(
+ "Steals the effects of the\n"
+ "move the target uses next.");
+
+static const u8 sSecretPowerDescription[] = _(
+ "An attack with effects\n"
+ "that vary by location.");
+
+static const u8 sDiveDescription[] = _(
+ "Dives underwater the first\n"
+ "turn and strikes next turn.");
+
+static const u8 sArmThrustDescription[] = _(
+ "Straight-arm punches that\n"
+ "strike the foe 2 to 5 times.");
+
+static const u8 sCamouflageDescription[] = _(
+ "Alters the POKéMON’s type\n"
+ "depending on the location.");
+
+static const u8 sTailGlowDescription[] = _(
+ "Flashes a light that sharply\n"
+ "raises SP. ATK.");
+
+static const u8 sLusterPurgeDescription[] = _(
+ "Attacks with a burst of\n"
+ "light. May lower SP. DEF.");
+
+static const u8 sMistBallDescription[] = _(
+ "Attacks with a flurry of\n"
+ "down. May lower SP. ATK.");
+
+static const u8 sFeatherDanceDescription[] = _(
+ "Envelops the foe with down\n"
+ "to sharply reduce ATTACK.");
+
+static const u8 sTeeterDanceDescription[] = _(
+ "Confuses all POKéMON on\n"
+ "the scene.");
+
+static const u8 sBlazeKickDescription[] = _(
+ "A kick with a high critical-\n"
+ "hit ratio. May cause a burn.");
+
+static const u8 sMudSportDescription[] = _(
+ "Covers the user in mud to\n"
+ "raise electrical resistance.");
+
+static const u8 sIceBallDescription[] = _(
+ "A 5-turn attack that gains\n"
+ "power on successive hits.");
+
+static const u8 sNeedleArmDescription[] = _(
+ "Attacks with thorny arms.\n"
+ "May cause flinching.");
+
+static const u8 sSlackOffDescription[] = _(
+ "Slacks off and restores\n"
+ "half the maximum HP.");
+
+static const u8 sHyperVoiceDescription[] = _(
+ "A loud attack that uses\n"
+ "sound waves to injure.");
+
+static const u8 sPoisonFangDescription[] = _(
+ "A sharp-fanged attack.\n"
+ "May badly poison the foe.");
+
+static const u8 sCrushClawDescription[] = _(
+ "Tears at the foe with sharp\n"
+ "claws. May lower DEFENSE.");
+
+static const u8 sBlastBurnDescription[] = _(
+ "Powerful, but leaves the\n"
+ "user immobile the next turn.");
+
+static const u8 sHydroCannonDescription[] = _(
+ "Powerful, but leaves the\n"
+ "user immobile the next turn.");
+
+static const u8 sMeteorMashDescription[] = _(
+ "Fires a meteor-like punch.\n"
+ "May raise ATTACK.");
+
+static const u8 sAstonishDescription[] = _(
+ "An attack that may shock\n"
+ "the foe into flinching.");
+
+static const u8 sWeatherBallDescription[] = _(
+ "The move’s type and power\n"
+ "change with the weather.");
+
+static const u8 sAromatherapyDescription[] = _(
+ "Heals all status problems\n"
+ "with a soothing scent.");
+
+static const u8 sFakeTearsDescription[] = _(
+ "Feigns crying to sharply\n"
+ "lower the foe’s SP. DEF.");
+
+static const u8 sAirCutterDescription[] = _(
+ "Hacks with razorlike wind.\n"
+ "High critical-hit ratio.");
+
+static const u8 sOverheatDescription[] = _(
+ "Allows a full-power attack,\n"
+ "but sharply lowers SP. ATK.");
+
+static const u8 sOdorSleuthDescription[] = _(
+ "Negates the foe’s efforts\n"
+ "to heighten evasiveness.");
+
+static const u8 sRockTombDescription[] = _(
+ "Stops the foe from moving\n"
+ "with rocks and cuts SPEED.");
+
+static const u8 sSilverWindDescription[] = _(
+ "A powdery attack that may\n"
+ "raise abilities.");
+
+static const u8 sMetalSoundDescription[] = _(
+ "Emits a horrible screech\n"
+ "that sharply lowers SP. DEF.");
+
+static const u8 sGrassWhistleDescription[] = _(
+ "Lulls the foe into sleep\n"
+ "with a pleasant melody.");
+
+static const u8 sTickleDescription[] = _(
+ "Makes the foe laugh to\n"
+ "lower ATTACK and DEFENSE.");
+
+static const u8 sCosmicPowerDescription[] = _(
+ "Raises DEFENSE and SP. DEF\n"
+ "with a mystic power.");
+
+static const u8 sWaterSpoutDescription[] = _(
+ "Inflicts more damage if the\n"
+ "user’s HP is high.");
+
+static const u8 sSignalBeamDescription[] = _(
+ "A strange beam attack that\n"
+ "may confuse the foe.");
+
+static const u8 sShadowPunchDescription[] = _(
+ "An unavoidable punch that\n"
+ "is thrown from shadows.");
+
+static const u8 sExtrasensoryDescription[] = _(
+ "Attacks with a peculiar\n"
+ "power. May cause flinching.");
+
+static const u8 sSkyUppercutDescription[] = _(
+ "An uppercut thrown as if\n"
+ "leaping into the sky.");
+
+static const u8 sSandTombDescription[] = _(
+ "Traps and hurts the foe in\n"
+ "quicksand for 2 to 5 turns.");
+
+static const u8 sSheerColdDescription[] = _(
+ "A chilling attack that\n"
+ "causes fainting if it hits.");
+
+static const u8 sMuddyWaterDescription[] = _(
+ "Attacks with muddy water.\n"
+ "May lower accuracy.");
+
+static const u8 sBulletSeedDescription[] = _(
+ "Shoots 2 to 5 seeds in a row\n"
+ "to strike the foe.");
+
+static const u8 sAerialAceDescription[] = _(
+ "An extremely speedy and\n"
+ "unavoidable attack.");
+
+static const u8 sIcicleSpearDescription[] = _(
+ "Attacks the foe by firing\n"
+ "2 to 5 icicles in a row.");
+
+static const u8 sIronDefenseDescription[] = _(
+ "Hardens the body’s surface\n"
+ "to sharply raise DEFENSE.");
+
+static const u8 sBlockDescription[] = _(
+ "Blocks the foe’s way to\n"
+ "prevent escape.");
+
+static const u8 sHowlDescription[] = _(
+ "Howls to raise the spirit\n"
+ "and boosts ATTACK.");
+
+static const u8 sDragonClawDescription[] = _(
+ "Slashes the foe with sharp\n"
+ "claws.");
+
+static const u8 sFrenzyPlantDescription[] = _(
+ "Powerful, but leaves the\n"
+ "user immobile the next turn.");
+
+static const u8 sBulkUpDescription[] = _(
+ "Bulks up the body to boost\n"
+ "both ATTACK and DEFENSE.");
+
+static const u8 sBounceDescription[] = _(
+ "Bounces up, then down the\n"
+ "next turn. May paralyze.");
+
+static const u8 sMudShotDescription[] = _(
+ "Hurls mud at the foe and\n"
+ "reduces SPEED.");
+
+static const u8 sPoisonTailDescription[] = _(
+ "Has a high critical-hit\n"
+ "ratio. May also poison.");
+
+static const u8 sCovetDescription[] = _(
+ "Cutely begs to obtain an\n"
+ "item held by the foe.");
+
+static const u8 sVoltTackleDescription[] = _(
+ "A life-risking tackle that\n"
+ "slightly hurts the user.");
+
+static const u8 sMagicalLeafDescription[] = _(
+ "Attacks with a strange leaf\n"
+ "that cannot be evaded.");
+
+static const u8 sWaterSportDescription[] = _(
+ "The user becomes soaked to\n"
+ "raise resistance to fire.");
+
+static const u8 sCalmMindDescription[] = _(
+ "Raises SP. ATK and SP. DEF\n"
+ "by focusing the mind.");
+
+static const u8 sLeafBladeDescription[] = _(
+ "Slashes with a sharp leaf.\n"
+ "High critical-hit ratio.");
+
+static const u8 sDragonDanceDescription[] = _(
+ "A mystical dance that ups\n"
+ "ATTACK and SPEED.");
+
+static const u8 sRockBlastDescription[] = _(
+ "Hurls boulders at the foe\n"
+ "2 to 5 times in a row.");
+
+static const u8 sShockWaveDescription[] = _(
+ "A fast and unavoidable\n"
+ "electric attack.");
+
+static const u8 sWaterPulseDescription[] = _(
+ "Attacks with ultrasonic\n"
+ "waves. May confuse the foe.");
+
+static const u8 sDoomDesireDescription[] = _(
+ "Summons strong sunlight to\n"
+ "attack 2 turns later.");
+
+static const u8 sPsychoBoostDescription[] = _(
+ "Allows a full-power attack,\n"
+ "but sharply lowers SP. ATK.");
// MOVE_NONE is ignored in this table. Make sure to always subtract 1 before getting the right pointer.
const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] =
{
- [MOVE_POUND - 1] = sPoundMoveDescription,
- [MOVE_KARATE_CHOP - 1] = sKarateChopMoveDescription,
- [MOVE_DOUBLE_SLAP - 1] = sDoubleSlapMoveDescription,
- [MOVE_COMET_PUNCH - 1] = sCometPunchMoveDescription,
- [MOVE_MEGA_PUNCH - 1] = sMegaPunchMoveDescription,
- [MOVE_PAY_DAY - 1] = sPayDayMoveDescription,
- [MOVE_FIRE_PUNCH - 1] = sFirePunchMoveDescription,
- [MOVE_ICE_PUNCH - 1] = sIcePunchMoveDescription,
- [MOVE_THUNDER_PUNCH - 1] = sThunderPunchMoveDescription,
- [MOVE_SCRATCH - 1] = sScratchMoveDescription,
- [MOVE_VICE_GRIP - 1] = sViceGripMoveDescription,
- [MOVE_GUILLOTINE - 1] = sGuillotineMoveDescription,
- [MOVE_RAZOR_WIND - 1] = sRazorWindMoveDescription,
- [MOVE_SWORDS_DANCE - 1] = sSwordsDanceMoveDescription,
- [MOVE_CUT - 1] = sCutMoveDescription,
- [MOVE_GUST - 1] = sGustMoveDescription,
- [MOVE_WING_ATTACK - 1] = sWingAttackMoveDescription,
- [MOVE_WHIRLWIND - 1] = sWhirlwindMoveDescription,
- [MOVE_FLY - 1] = sFlyMoveDescription,
- [MOVE_BIND - 1] = sBindMoveDescription,
- [MOVE_SLAM - 1] = sSlamMoveDescription,
- [MOVE_VINE_WHIP - 1] = sVineWhipMoveDescription,
- [MOVE_STOMP - 1] = sStompMoveDescription,
- [MOVE_DOUBLE_KICK - 1] = sDoubleKickMoveDescription,
- [MOVE_MEGA_KICK - 1] = sMegaKickMoveDescription,
- [MOVE_JUMP_KICK - 1] = sJumpKickMoveDescription,
- [MOVE_ROLLING_KICK - 1] = sRollingKickMoveDescription,
- [MOVE_SAND_ATTACK - 1] = sSandAttackMoveDescription,
- [MOVE_HEADBUTT - 1] = sHeadbuttMoveDescription,
- [MOVE_HORN_ATTACK - 1] = sHornAttackMoveDescription,
- [MOVE_FURY_ATTACK - 1] = sFuryAttackMoveDescription,
- [MOVE_HORN_DRILL - 1] = sHornDrillMoveDescription,
- [MOVE_TACKLE - 1] = sTackleMoveDescription,
- [MOVE_BODY_SLAM - 1] = sBodySlamMoveDescription,
- [MOVE_WRAP - 1] = sWrapMoveDescription,
- [MOVE_TAKE_DOWN - 1] = sTakeDownMoveDescription,
- [MOVE_THRASH - 1] = sThrashMoveDescription,
- [MOVE_DOUBLE_EDGE - 1] = sDoubleEdgeMoveDescription,
- [MOVE_TAIL_WHIP - 1] = sTailWhipMoveDescription,
- [MOVE_POISON_STING - 1] = sPoisonStingMoveDescription,
- [MOVE_TWINEEDLE - 1] = sTwineedleMoveDescription,
- [MOVE_PIN_MISSILE - 1] = sPinMissileMoveDescription,
- [MOVE_LEER - 1] = sLeerMoveDescription,
- [MOVE_BITE - 1] = sBiteMoveDescription,
- [MOVE_GROWL - 1] = sGrowlMoveDescription,
- [MOVE_ROAR - 1] = sRoarMoveDescription,
- [MOVE_SING - 1] = sSingMoveDescription,
- [MOVE_SUPERSONIC - 1] = sSupersonicMoveDescription,
- [MOVE_SONIC_BOOM - 1] = sSonicBoomMoveDescription,
- [MOVE_DISABLE - 1] = sDisableMoveDescription,
- [MOVE_ACID - 1] = sAcidMoveDescription,
- [MOVE_EMBER - 1] = sEmberMoveDescription,
- [MOVE_FLAMETHROWER - 1] = sFlamethrowerMoveDescription,
- [MOVE_MIST - 1] = sMistMoveDescription,
- [MOVE_WATER_GUN - 1] = sWaterGunMoveDescription,
- [MOVE_HYDRO_PUMP - 1] = sHydroPumpMoveDescription,
- [MOVE_SURF - 1] = sSurfMoveDescription,
- [MOVE_ICE_BEAM - 1] = sIceBeamMoveDescription,
- [MOVE_BLIZZARD - 1] = sBlizzardMoveDescription,
- [MOVE_PSYBEAM - 1] = sPsybeamMoveDescription,
- [MOVE_BUBBLE_BEAM - 1] = sBubbleBeamMoveDescription,
- [MOVE_AURORA_BEAM - 1] = sAuroraBeamMoveDescription,
- [MOVE_HYPER_BEAM - 1] = sHyperBeamMoveDescription,
- [MOVE_PECK - 1] = sPeckMoveDescription,
- [MOVE_DRILL_PECK - 1] = sDrillPeckMoveDescription,
- [MOVE_SUBMISSION - 1] = sSubmissionMoveDescription,
- [MOVE_LOW_KICK - 1] = sLowKickMoveDescription,
- [MOVE_COUNTER - 1] = sCounterMoveDescription,
- [MOVE_SEISMIC_TOSS - 1] = sSeismicTossMoveDescription,
- [MOVE_STRENGTH - 1] = sStrengthMoveDescription,
- [MOVE_ABSORB - 1] = sAbsorbMoveDescription,
- [MOVE_MEGA_DRAIN - 1] = sMegaDrainMoveDescription,
- [MOVE_LEECH_SEED - 1] = sLeechSeedMoveDescription,
- [MOVE_GROWTH - 1] = sGrowthMoveDescription,
- [MOVE_RAZOR_LEAF - 1] = sRazorLeafMoveDescription,
- [MOVE_SOLAR_BEAM - 1] = sSolarBeamMoveDescription,
- [MOVE_POISON_POWDER - 1] = sPoisonPowderMoveDescription,
- [MOVE_STUN_SPORE - 1] = sStunSporeMoveDescription,
- [MOVE_SLEEP_POWDER - 1] = sSleepPowderMoveDescription,
- [MOVE_PETAL_DANCE - 1] = sPetalDanceMoveDescription,
- [MOVE_STRING_SHOT - 1] = sStringShotMoveDescription,
- [MOVE_DRAGON_RAGE - 1] = sDragonRageMoveDescription,
- [MOVE_FIRE_SPIN - 1] = sFireSpinMoveDescription,
- [MOVE_THUNDER_SHOCK - 1] = sThunderShockMoveDescription,
- [MOVE_THUNDERBOLT - 1] = sThunderboltMoveDescription,
- [MOVE_THUNDER_WAVE - 1] = sThunderWaveMoveDescription,
- [MOVE_THUNDER - 1] = sThunderMoveDescription,
- [MOVE_ROCK_THROW - 1] = sRockThrowMoveDescription,
- [MOVE_EARTHQUAKE - 1] = sEarthquakeMoveDescription,
- [MOVE_FISSURE - 1] = sFissureMoveDescription,
- [MOVE_DIG - 1] = sDigMoveDescription,
- [MOVE_TOXIC - 1] = sToxicMoveDescription,
- [MOVE_CONFUSION - 1] = sConfusionMoveDescription,
- [MOVE_PSYCHIC - 1] = sPsychicMoveDescription,
- [MOVE_HYPNOSIS - 1] = sHypnosisMoveDescription,
- [MOVE_MEDITATE - 1] = sMeditateMoveDescription,
- [MOVE_AGILITY - 1] = sAgilityMoveDescription,
- [MOVE_QUICK_ATTACK - 1] = sQuickAttackMoveDescription,
- [MOVE_RAGE - 1] = sRageMoveDescription,
- [MOVE_TELEPORT - 1] = sTeleportMoveDescription,
- [MOVE_NIGHT_SHADE - 1] = sNightShadeMoveDescription,
- [MOVE_MIMIC - 1] = sMimicMoveDescription,
- [MOVE_SCREECH - 1] = sScreechMoveDescription,
- [MOVE_DOUBLE_TEAM - 1] = sDoubleTeamMoveDescription,
- [MOVE_RECOVER - 1] = sRecoverMoveDescription,
- [MOVE_HARDEN - 1] = sHardenMoveDescription,
- [MOVE_MINIMIZE - 1] = sMinimizeMoveDescription,
- [MOVE_SMOKESCREEN - 1] = sSmokescreenMoveDescription,
- [MOVE_CONFUSE_RAY - 1] = sConfuseRayMoveDescription,
- [MOVE_WITHDRAW - 1] = sWithdrawMoveDescription,
- [MOVE_DEFENSE_CURL - 1] = sDefenseCurlMoveDescription,
- [MOVE_BARRIER - 1] = sBarrierMoveDescription,
- [MOVE_LIGHT_SCREEN - 1] = sLightScreenMoveDescription,
- [MOVE_HAZE - 1] = sHazeMoveDescription,
- [MOVE_REFLECT - 1] = sReflectMoveDescription,
- [MOVE_FOCUS_ENERGY - 1] = sFocusEnergyMoveDescription,
- [MOVE_BIDE - 1] = sBideMoveDescription,
- [MOVE_METRONOME - 1] = sMetronomeMoveDescription,
- [MOVE_MIRROR_MOVE - 1] = sMirrorMoveMoveDescription,
- [MOVE_SELF_DESTRUCT - 1] = sSelfDestructMoveDescription,
- [MOVE_EGG_BOMB - 1] = sEggBombMoveDescription,
- [MOVE_LICK - 1] = sLickMoveDescription,
- [MOVE_SMOG - 1] = sSmogMoveDescription,
- [MOVE_SLUDGE - 1] = sSludgeMoveDescription,
- [MOVE_BONE_CLUB - 1] = sBoneClubMoveDescription,
- [MOVE_FIRE_BLAST - 1] = sFireBlastMoveDescription,
- [MOVE_WATERFALL - 1] = sWaterfallMoveDescription,
- [MOVE_CLAMP - 1] = sClampMoveDescription,
- [MOVE_SWIFT - 1] = sSwiftMoveDescription,
- [MOVE_SKULL_BASH - 1] = sSkullBashMoveDescription,
- [MOVE_SPIKE_CANNON - 1] = sSpikeCannonMoveDescription,
- [MOVE_CONSTRICT - 1] = sConstrictMoveDescription,
- [MOVE_AMNESIA - 1] = sAmnesiaMoveDescription,
- [MOVE_KINESIS - 1] = sKinesisMoveDescription,
- [MOVE_SOFT_BOILED - 1] = sSoftBoiledMoveDescription,
- [MOVE_HI_JUMP_KICK - 1] = sHiJumpKickMoveDescription,
- [MOVE_GLARE - 1] = sGlareMoveDescription,
- [MOVE_DREAM_EATER - 1] = sDreamEaterMoveDescription,
- [MOVE_POISON_GAS - 1] = sPoisonGasMoveDescription,
- [MOVE_BARRAGE - 1] = sBarrageMoveDescription,
- [MOVE_LEECH_LIFE - 1] = sLeechLifeMoveDescription,
- [MOVE_LOVELY_KISS - 1] = sLovelyKissMoveDescription,
- [MOVE_SKY_ATTACK - 1] = sSkyAttackMoveDescription,
- [MOVE_TRANSFORM - 1] = sTransformMoveDescription,
- [MOVE_BUBBLE - 1] = sBubbleMoveDescription,
- [MOVE_DIZZY_PUNCH - 1] = sDizzyPunchMoveDescription,
- [MOVE_SPORE - 1] = sSporeMoveDescription,
- [MOVE_FLASH - 1] = sFlashMoveDescription,
- [MOVE_PSYWAVE - 1] = sPsywaveMoveDescription,
- [MOVE_SPLASH - 1] = sSplashMoveDescription,
- [MOVE_ACID_ARMOR - 1] = sAcidArmorMoveDescription,
- [MOVE_CRABHAMMER - 1] = sCrabhammerMoveDescription,
- [MOVE_EXPLOSION - 1] = sExplosionMoveDescription,
- [MOVE_FURY_SWIPES - 1] = sFurySwipesMoveDescription,
- [MOVE_BONEMERANG - 1] = sBonemerangMoveDescription,
- [MOVE_REST - 1] = sRestMoveDescription,
- [MOVE_ROCK_SLIDE - 1] = sRockSlideMoveDescription,
- [MOVE_HYPER_FANG - 1] = sHyperFangMoveDescription,
- [MOVE_SHARPEN - 1] = sSharpenMoveDescription,
- [MOVE_CONVERSION - 1] = sConversionMoveDescription,
- [MOVE_TRI_ATTACK - 1] = sTriAttackMoveDescription,
- [MOVE_SUPER_FANG - 1] = sSuperFangMoveDescription,
- [MOVE_SLASH - 1] = sSlashMoveDescription,
- [MOVE_SUBSTITUTE - 1] = sSubstituteMoveDescription,
- [MOVE_STRUGGLE - 1] = sStruggleMoveDescription,
- [MOVE_SKETCH - 1] = sSketchMoveDescription,
- [MOVE_TRIPLE_KICK - 1] = sTripleKickMoveDescription,
- [MOVE_THIEF - 1] = sThiefMoveDescription,
- [MOVE_SPIDER_WEB - 1] = sSpiderWebMoveDescription,
- [MOVE_MIND_READER - 1] = sMindReaderMoveDescription,
- [MOVE_NIGHTMARE - 1] = sNightmareMoveDescription,
- [MOVE_FLAME_WHEEL - 1] = sFlameWheelMoveDescription,
- [MOVE_SNORE - 1] = sSnoreMoveDescription,
- [MOVE_CURSE - 1] = sCurseMoveDescription,
- [MOVE_FLAIL - 1] = sFlailMoveDescription,
- [MOVE_CONVERSION_2 - 1] = sConversion2MoveDescription,
- [MOVE_AEROBLAST - 1] = sAeroblastMoveDescription,
- [MOVE_COTTON_SPORE - 1] = sCottonSporeMoveDescription,
- [MOVE_REVERSAL - 1] = sReversalMoveDescription,
- [MOVE_SPITE - 1] = sSpiteMoveDescription,
- [MOVE_POWDER_SNOW - 1] = sPowderSnowMoveDescription,
- [MOVE_PROTECT - 1] = sProtectMoveDescription,
- [MOVE_MACH_PUNCH - 1] = sMachPunchMoveDescription,
- [MOVE_SCARY_FACE - 1] = sScaryFaceMoveDescription,
- [MOVE_FAINT_ATTACK - 1] = sFaintAttackMoveDescription,
- [MOVE_SWEET_KISS - 1] = sSweetKissMoveDescription,
- [MOVE_BELLY_DRUM - 1] = sBellyDrumMoveDescription,
- [MOVE_SLUDGE_BOMB - 1] = sSludgeBombMoveDescription,
- [MOVE_MUD_SLAP - 1] = sMudSlapMoveDescription,
- [MOVE_OCTAZOOKA - 1] = sOctazookaMoveDescription,
- [MOVE_SPIKES - 1] = sSpikesMoveDescription,
- [MOVE_ZAP_CANNON - 1] = sZapCannonMoveDescription,
- [MOVE_FORESIGHT - 1] = sForesightMoveDescription,
- [MOVE_DESTINY_BOND - 1] = sDestinyBondMoveDescription,
- [MOVE_PERISH_SONG - 1] = sPerishSongMoveDescription,
- [MOVE_ICY_WIND - 1] = sIcyWindMoveDescription,
- [MOVE_DETECT - 1] = sDetectMoveDescription,
- [MOVE_BONE_RUSH - 1] = sBoneRushMoveDescription,
- [MOVE_LOCK_ON - 1] = sLockOnMoveDescription,
- [MOVE_OUTRAGE - 1] = sOutrageMoveDescription,
- [MOVE_SANDSTORM - 1] = sSandstormMoveDescription,
- [MOVE_GIGA_DRAIN - 1] = sGigaDrainMoveDescription,
- [MOVE_ENDURE - 1] = sEndureMoveDescription,
- [MOVE_CHARM - 1] = sCharmMoveDescription,
- [MOVE_ROLLOUT - 1] = sRolloutMoveDescription,
- [MOVE_FALSE_SWIPE - 1] = sFalseSwipeMoveDescription,
- [MOVE_SWAGGER - 1] = sSwaggerMoveDescription,
- [MOVE_MILK_DRINK - 1] = sMilkDrinkMoveDescription,
- [MOVE_SPARK - 1] = sSparkMoveDescription,
- [MOVE_FURY_CUTTER - 1] = sFuryCutterMoveDescription,
- [MOVE_STEEL_WING - 1] = sSteelWingMoveDescription,
- [MOVE_MEAN_LOOK - 1] = sMeanLookMoveDescription,
- [MOVE_ATTRACT - 1] = sAttractMoveDescription,
- [MOVE_SLEEP_TALK - 1] = sSleepTalkMoveDescription,
- [MOVE_HEAL_BELL - 1] = sHealBellMoveDescription,
- [MOVE_RETURN - 1] = sReturnMoveDescription,
- [MOVE_PRESENT - 1] = sPresentMoveDescription,
- [MOVE_FRUSTRATION - 1] = sFrustrationMoveDescription,
- [MOVE_SAFEGUARD - 1] = sSafeguardMoveDescription,
- [MOVE_PAIN_SPLIT - 1] = sPainSplitMoveDescription,
- [MOVE_SACRED_FIRE - 1] = sSacredFireMoveDescription,
- [MOVE_MAGNITUDE - 1] = sMagnitudeMoveDescription,
- [MOVE_DYNAMIC_PUNCH - 1] = sDynamicPunchMoveDescription,
- [MOVE_MEGAHORN - 1] = sMegahornMoveDescription,
- [MOVE_DRAGON_BREATH - 1] = sDragonBreathMoveDescription,
- [MOVE_BATON_PASS - 1] = sBatonPassMoveDescription,
- [MOVE_ENCORE - 1] = sEncoreMoveDescription,
- [MOVE_PURSUIT - 1] = sPursuitMoveDescription,
- [MOVE_RAPID_SPIN - 1] = sRapidSpinMoveDescription,
- [MOVE_SWEET_SCENT - 1] = sSweetScentMoveDescription,
- [MOVE_IRON_TAIL - 1] = sIronTailMoveDescription,
- [MOVE_METAL_CLAW - 1] = sMetalClawMoveDescription,
- [MOVE_VITAL_THROW - 1] = sVitalThrowMoveDescription,
- [MOVE_MORNING_SUN - 1] = sMorningSunMoveDescription,
- [MOVE_SYNTHESIS - 1] = sSynthesisMoveDescription,
- [MOVE_MOONLIGHT - 1] = sMoonlightMoveDescription,
- [MOVE_HIDDEN_POWER - 1] = sHiddenPowerMoveDescription,
- [MOVE_CROSS_CHOP - 1] = sCrossChopMoveDescription,
- [MOVE_TWISTER - 1] = sTwisterMoveDescription,
- [MOVE_RAIN_DANCE - 1] = sRainDanceMoveDescription,
- [MOVE_SUNNY_DAY - 1] = sSunnyDayMoveDescription,
- [MOVE_CRUNCH - 1] = sCrunchMoveDescription,
- [MOVE_MIRROR_COAT - 1] = sMirrorCoatMoveDescription,
- [MOVE_PSYCH_UP - 1] = sPsychUpMoveDescription,
- [MOVE_EXTREME_SPEED - 1] = sExtremeSpeedMoveDescription,
- [MOVE_ANCIENT_POWER - 1] = sAncientPowerMoveDescription,
- [MOVE_SHADOW_BALL - 1] = sShadowBallMoveDescription,
- [MOVE_FUTURE_SIGHT - 1] = sFutureSightMoveDescription,
- [MOVE_ROCK_SMASH - 1] = sRockSmashMoveDescription,
- [MOVE_WHIRLPOOL - 1] = sWhirlpoolMoveDescription,
- [MOVE_BEAT_UP - 1] = sBeatUpMoveDescription,
- [MOVE_FAKE_OUT - 1] = sFakeOutMoveDescription,
- [MOVE_UPROAR - 1] = sUproarMoveDescription,
- [MOVE_STOCKPILE - 1] = sStockpileMoveDescription,
- [MOVE_SPIT_UP - 1] = sSpitUpMoveDescription,
- [MOVE_SWALLOW - 1] = sSwallowMoveDescription,
- [MOVE_HEAT_WAVE - 1] = sHeatWaveMoveDescription,
- [MOVE_HAIL - 1] = sHailMoveDescription,
- [MOVE_TORMENT - 1] = sTormentMoveDescription,
- [MOVE_FLATTER - 1] = sFlatterMoveDescription,
- [MOVE_WILL_O_WISP - 1] = sWillOWispMoveDescription,
- [MOVE_MEMENTO - 1] = sMementoMoveDescription,
- [MOVE_FACADE - 1] = sFacadeMoveDescription,
- [MOVE_FOCUS_PUNCH - 1] = sFocusPunchMoveDescription,
- [MOVE_SMELLING_SALT - 1] = sSmellingSaltMoveDescription,
- [MOVE_FOLLOW_ME - 1] = sFollowMeMoveDescription,
- [MOVE_NATURE_POWER - 1] = sNaturePowerMoveDescription,
- [MOVE_CHARGE - 1] = sChargeMoveDescription,
- [MOVE_TAUNT - 1] = sTauntMoveDescription,
- [MOVE_HELPING_HAND - 1] = sHelpingHandMoveDescription,
- [MOVE_TRICK - 1] = sTrickMoveDescription,
- [MOVE_ROLE_PLAY - 1] = sRolePlayMoveDescription,
- [MOVE_WISH - 1] = sWishMoveDescription,
- [MOVE_ASSIST - 1] = sAssistMoveDescription,
- [MOVE_INGRAIN - 1] = sIngrainMoveDescription,
- [MOVE_SUPERPOWER - 1] = sSuperpowerMoveDescription,
- [MOVE_MAGIC_COAT - 1] = sMagicCoatMoveDescription,
- [MOVE_RECYCLE - 1] = sRecycleMoveDescription,
- [MOVE_REVENGE - 1] = sRevengeMoveDescription,
- [MOVE_BRICK_BREAK - 1] = sBrickBreakMoveDescription,
- [MOVE_YAWN - 1] = sYawnMoveDescription,
- [MOVE_KNOCK_OFF - 1] = sKnockOffMoveDescription,
- [MOVE_ENDEAVOR - 1] = sEndeavorMoveDescription,
- [MOVE_ERUPTION - 1] = sEruptionMoveDescription,
- [MOVE_SKILL_SWAP - 1] = sSkillSwapMoveDescription,
- [MOVE_IMPRISON - 1] = sImprisonMoveDescription,
- [MOVE_REFRESH - 1] = sRefreshMoveDescription,
- [MOVE_GRUDGE - 1] = sGrudgeMoveDescription,
- [MOVE_SNATCH - 1] = sSnatchMoveDescription,
- [MOVE_SECRET_POWER - 1] = sSecretPowerMoveDescription,
- [MOVE_DIVE - 1] = sDiveMoveDescription,
- [MOVE_ARM_THRUST - 1] = sArmThrustMoveDescription,
- [MOVE_CAMOUFLAGE - 1] = sCamouflageMoveDescription,
- [MOVE_TAIL_GLOW - 1] = sTailGlowMoveDescription,
- [MOVE_LUSTER_PURGE - 1] = sLusterPurgeMoveDescription,
- [MOVE_MIST_BALL - 1] = sMistBallMoveDescription,
- [MOVE_FEATHER_DANCE - 1] = sFeatherDanceMoveDescription,
- [MOVE_TEETER_DANCE - 1] = sTeeterDanceMoveDescription,
- [MOVE_BLAZE_KICK - 1] = sBlazeKickMoveDescription,
- [MOVE_MUD_SPORT - 1] = sMudSportMoveDescription,
- [MOVE_ICE_BALL - 1] = sIceBallMoveDescription,
- [MOVE_NEEDLE_ARM - 1] = sNeedleArmMoveDescription,
- [MOVE_SLACK_OFF - 1] = sSlackOffMoveDescription,
- [MOVE_HYPER_VOICE - 1] = sHyperVoiceMoveDescription,
- [MOVE_POISON_FANG - 1] = sPoisonFangMoveDescription,
- [MOVE_CRUSH_CLAW - 1] = sCrushClawMoveDescription,
- [MOVE_BLAST_BURN - 1] = sBlastBurnMoveDescription,
- [MOVE_HYDRO_CANNON - 1] = sHydroCannonMoveDescription,
- [MOVE_METEOR_MASH - 1] = sMeteorMashMoveDescription,
- [MOVE_ASTONISH - 1] = sAstonishMoveDescription,
- [MOVE_WEATHER_BALL - 1] = sWeatherBallMoveDescription,
- [MOVE_AROMATHERAPY - 1] = sAromatherapyMoveDescription,
- [MOVE_FAKE_TEARS - 1] = sFakeTearsMoveDescription,
- [MOVE_AIR_CUTTER - 1] = sAirCutterMoveDescription,
- [MOVE_OVERHEAT - 1] = sOverheatMoveDescription,
- [MOVE_ODOR_SLEUTH - 1] = sOdorSleuthMoveDescription,
- [MOVE_ROCK_TOMB - 1] = sRockTombMoveDescription,
- [MOVE_SILVER_WIND - 1] = sSilverWindMoveDescription,
- [MOVE_METAL_SOUND - 1] = sMetalSoundMoveDescription,
- [MOVE_GRASS_WHISTLE - 1] = sGrassWhistleMoveDescription,
- [MOVE_TICKLE - 1] = sTickleMoveDescription,
- [MOVE_COSMIC_POWER - 1] = sCosmicPowerMoveDescription,
- [MOVE_WATER_SPOUT - 1] = sWaterSpoutMoveDescription,
- [MOVE_SIGNAL_BEAM - 1] = sSignalBeamMoveDescription,
- [MOVE_SHADOW_PUNCH - 1] = sShadowPunchMoveDescription,
- [MOVE_EXTRASENSORY - 1] = sExtrasensoryMoveDescription,
- [MOVE_SKY_UPPERCUT - 1] = sSkyUppercutMoveDescription,
- [MOVE_SAND_TOMB - 1] = sSandTombMoveDescription,
- [MOVE_SHEER_COLD - 1] = sSheerColdMoveDescription,
- [MOVE_MUDDY_WATER - 1] = sMuddyWaterMoveDescription,
- [MOVE_BULLET_SEED - 1] = sBulletSeedMoveDescription,
- [MOVE_AERIAL_ACE - 1] = sAerialAceMoveDescription,
- [MOVE_ICICLE_SPEAR - 1] = sIcicleSpearMoveDescription,
- [MOVE_IRON_DEFENSE - 1] = sIronDefenseMoveDescription,
- [MOVE_BLOCK - 1] = sBlockMoveDescription,
- [MOVE_HOWL - 1] = sHowlMoveDescription,
- [MOVE_DRAGON_CLAW - 1] = sDragonClawMoveDescription,
- [MOVE_FRENZY_PLANT - 1] = sFrenzyPlantMoveDescription,
- [MOVE_BULK_UP - 1] = sBulkUpMoveDescription,
- [MOVE_BOUNCE - 1] = sBounceMoveDescription,
- [MOVE_MUD_SHOT - 1] = sMudShotMoveDescription,
- [MOVE_POISON_TAIL - 1] = sPoisonTailMoveDescription,
- [MOVE_COVET - 1] = sCovetMoveDescription,
- [MOVE_VOLT_TACKLE - 1] = sVoltTackleMoveDescription,
- [MOVE_MAGICAL_LEAF - 1] = sMagicalLeafMoveDescription,
- [MOVE_WATER_SPORT - 1] = sWaterSportMoveDescription,
- [MOVE_CALM_MIND - 1] = sCalmMindMoveDescription,
- [MOVE_LEAF_BLADE - 1] = sLeafBladeMoveDescription,
- [MOVE_DRAGON_DANCE - 1] = sDragonDanceMoveDescription,
- [MOVE_ROCK_BLAST - 1] = sRockBlastMoveDescription,
- [MOVE_SHOCK_WAVE - 1] = sShockWaveMoveDescription,
- [MOVE_WATER_PULSE - 1] = sWaterPulseMoveDescription,
- [MOVE_DOOM_DESIRE - 1] = sDoomDesireMoveDescription,
- [MOVE_PSYCHO_BOOST - 1] = sPsychoBoostMoveDescription,
+ [MOVE_POUND - 1] = sPoundDescription,
+ [MOVE_KARATE_CHOP - 1] = sKarateChopDescription,
+ [MOVE_DOUBLE_SLAP - 1] = sDoubleSlapDescription,
+ [MOVE_COMET_PUNCH - 1] = sCometPunchDescription,
+ [MOVE_MEGA_PUNCH - 1] = sMegaPunchDescription,
+ [MOVE_PAY_DAY - 1] = sPayDayDescription,
+ [MOVE_FIRE_PUNCH - 1] = sFirePunchDescription,
+ [MOVE_ICE_PUNCH - 1] = sIcePunchDescription,
+ [MOVE_THUNDER_PUNCH - 1] = sThunderPunchDescription,
+ [MOVE_SCRATCH - 1] = sScratchDescription,
+ [MOVE_VICE_GRIP - 1] = sViceGripDescription,
+ [MOVE_GUILLOTINE - 1] = sGuillotineDescription,
+ [MOVE_RAZOR_WIND - 1] = sRazorWindDescription,
+ [MOVE_SWORDS_DANCE - 1] = sSwordsDanceDescription,
+ [MOVE_CUT - 1] = sCutDescription,
+ [MOVE_GUST - 1] = sGustDescription,
+ [MOVE_WING_ATTACK - 1] = sWingAttackDescription,
+ [MOVE_WHIRLWIND - 1] = sWhirlwindDescription,
+ [MOVE_FLY - 1] = sFlyDescription,
+ [MOVE_BIND - 1] = sBindDescription,
+ [MOVE_SLAM - 1] = sSlamDescription,
+ [MOVE_VINE_WHIP - 1] = sVineWhipDescription,
+ [MOVE_STOMP - 1] = sStompDescription,
+ [MOVE_DOUBLE_KICK - 1] = sDoubleKickDescription,
+ [MOVE_MEGA_KICK - 1] = sMegaKickDescription,
+ [MOVE_JUMP_KICK - 1] = sJumpKickDescription,
+ [MOVE_ROLLING_KICK - 1] = sRollingKickDescription,
+ [MOVE_SAND_ATTACK - 1] = sSandAttackDescription,
+ [MOVE_HEADBUTT - 1] = sHeadbuttDescription,
+ [MOVE_HORN_ATTACK - 1] = sHornAttackDescription,
+ [MOVE_FURY_ATTACK - 1] = sFuryAttackDescription,
+ [MOVE_HORN_DRILL - 1] = sHornDrillDescription,
+ [MOVE_TACKLE - 1] = sTackleDescription,
+ [MOVE_BODY_SLAM - 1] = sBodySlamDescription,
+ [MOVE_WRAP - 1] = sWrapDescription,
+ [MOVE_TAKE_DOWN - 1] = sTakeDownDescription,
+ [MOVE_THRASH - 1] = sThrashDescription,
+ [MOVE_DOUBLE_EDGE - 1] = sDoubleEdgeDescription,
+ [MOVE_TAIL_WHIP - 1] = sTailWhipDescription,
+ [MOVE_POISON_STING - 1] = sPoisonStingDescription,
+ [MOVE_TWINEEDLE - 1] = sTwineedleDescription,
+ [MOVE_PIN_MISSILE - 1] = sPinMissileDescription,
+ [MOVE_LEER - 1] = sLeerDescription,
+ [MOVE_BITE - 1] = sBiteDescription,
+ [MOVE_GROWL - 1] = sGrowlDescription,
+ [MOVE_ROAR - 1] = sRoarDescription,
+ [MOVE_SING - 1] = sSingDescription,
+ [MOVE_SUPERSONIC - 1] = sSupersonicDescription,
+ [MOVE_SONIC_BOOM - 1] = sSonicBoomDescription,
+ [MOVE_DISABLE - 1] = sDisableDescription,
+ [MOVE_ACID - 1] = sAcidDescription,
+ [MOVE_EMBER - 1] = sEmberDescription,
+ [MOVE_FLAMETHROWER - 1] = sFlamethrowerDescription,
+ [MOVE_MIST - 1] = sMistDescription,
+ [MOVE_WATER_GUN - 1] = sWaterGunDescription,
+ [MOVE_HYDRO_PUMP - 1] = sHydroPumpDescription,
+ [MOVE_SURF - 1] = sSurfDescription,
+ [MOVE_ICE_BEAM - 1] = sIceBeamDescription,
+ [MOVE_BLIZZARD - 1] = sBlizzardDescription,
+ [MOVE_PSYBEAM - 1] = sPsybeamDescription,
+ [MOVE_BUBBLE_BEAM - 1] = sBubbleBeamDescription,
+ [MOVE_AURORA_BEAM - 1] = sAuroraBeamDescription,
+ [MOVE_HYPER_BEAM - 1] = sHyperBeamDescription,
+ [MOVE_PECK - 1] = sPeckDescription,
+ [MOVE_DRILL_PECK - 1] = sDrillPeckDescription,
+ [MOVE_SUBMISSION - 1] = sSubmissionDescription,
+ [MOVE_LOW_KICK - 1] = sLowKickDescription,
+ [MOVE_COUNTER - 1] = sCounterDescription,
+ [MOVE_SEISMIC_TOSS - 1] = sSeismicTossDescription,
+ [MOVE_STRENGTH - 1] = sStrengthDescription,
+ [MOVE_ABSORB - 1] = sAbsorbDescription,
+ [MOVE_MEGA_DRAIN - 1] = sMegaDrainDescription,
+ [MOVE_LEECH_SEED - 1] = sLeechSeedDescription,
+ [MOVE_GROWTH - 1] = sGrowthDescription,
+ [MOVE_RAZOR_LEAF - 1] = sRazorLeafDescription,
+ [MOVE_SOLAR_BEAM - 1] = sSolarBeamDescription,
+ [MOVE_POISON_POWDER - 1] = sPoisonPowderDescription,
+ [MOVE_STUN_SPORE - 1] = sStunSporeDescription,
+ [MOVE_SLEEP_POWDER - 1] = sSleepPowderDescription,
+ [MOVE_PETAL_DANCE - 1] = sPetalDanceDescription,
+ [MOVE_STRING_SHOT - 1] = sStringShotDescription,
+ [MOVE_DRAGON_RAGE - 1] = sDragonRageDescription,
+ [MOVE_FIRE_SPIN - 1] = sFireSpinDescription,
+ [MOVE_THUNDER_SHOCK - 1] = sThunderShockDescription,
+ [MOVE_THUNDERBOLT - 1] = sThunderboltDescription,
+ [MOVE_THUNDER_WAVE - 1] = sThunderWaveDescription,
+ [MOVE_THUNDER - 1] = sThunderDescription,
+ [MOVE_ROCK_THROW - 1] = sRockThrowDescription,
+ [MOVE_EARTHQUAKE - 1] = sEarthquakeDescription,
+ [MOVE_FISSURE - 1] = sFissureDescription,
+ [MOVE_DIG - 1] = sDigDescription,
+ [MOVE_TOXIC - 1] = sToxicDescription,
+ [MOVE_CONFUSION - 1] = sConfusionDescription,
+ [MOVE_PSYCHIC - 1] = sPsychicDescription,
+ [MOVE_HYPNOSIS - 1] = sHypnosisDescription,
+ [MOVE_MEDITATE - 1] = sMeditateDescription,
+ [MOVE_AGILITY - 1] = sAgilityDescription,
+ [MOVE_QUICK_ATTACK - 1] = sQuickAttackDescription,
+ [MOVE_RAGE - 1] = sRageDescription,
+ [MOVE_TELEPORT - 1] = sTeleportDescription,
+ [MOVE_NIGHT_SHADE - 1] = sNightShadeDescription,
+ [MOVE_MIMIC - 1] = sMimicDescription,
+ [MOVE_SCREECH - 1] = sScreechDescription,
+ [MOVE_DOUBLE_TEAM - 1] = sDoubleTeamDescription,
+ [MOVE_RECOVER - 1] = sRecoverDescription,
+ [MOVE_HARDEN - 1] = sHardenDescription,
+ [MOVE_MINIMIZE - 1] = sMinimizeDescription,
+ [MOVE_SMOKESCREEN - 1] = sSmokescreenDescription,
+ [MOVE_CONFUSE_RAY - 1] = sConfuseRayDescription,
+ [MOVE_WITHDRAW - 1] = sWithdrawDescription,
+ [MOVE_DEFENSE_CURL - 1] = sDefenseCurlDescription,
+ [MOVE_BARRIER - 1] = sBarrierDescription,
+ [MOVE_LIGHT_SCREEN - 1] = sLightScreenDescription,
+ [MOVE_HAZE - 1] = sHazeDescription,
+ [MOVE_REFLECT - 1] = sReflectDescription,
+ [MOVE_FOCUS_ENERGY - 1] = sFocusEnergyDescription,
+ [MOVE_BIDE - 1] = sBideDescription,
+ [MOVE_METRONOME - 1] = sMetronomeDescription,
+ [MOVE_MIRROR_MOVE - 1] = sMirrorMoveDescription,
+ [MOVE_SELF_DESTRUCT - 1] = sSelfDestructDescription,
+ [MOVE_EGG_BOMB - 1] = sEggBombDescription,
+ [MOVE_LICK - 1] = sLickDescription,
+ [MOVE_SMOG - 1] = sSmogDescription,
+ [MOVE_SLUDGE - 1] = sSludgeDescription,
+ [MOVE_BONE_CLUB - 1] = sBoneClubDescription,
+ [MOVE_FIRE_BLAST - 1] = sFireBlastDescription,
+ [MOVE_WATERFALL - 1] = sWaterfallDescription,
+ [MOVE_CLAMP - 1] = sClampDescription,
+ [MOVE_SWIFT - 1] = sSwiftDescription,
+ [MOVE_SKULL_BASH - 1] = sSkullBashDescription,
+ [MOVE_SPIKE_CANNON - 1] = sSpikeCannonDescription,
+ [MOVE_CONSTRICT - 1] = sConstrictDescription,
+ [MOVE_AMNESIA - 1] = sAmnesiaDescription,
+ [MOVE_KINESIS - 1] = sKinesisDescription,
+ [MOVE_SOFT_BOILED - 1] = sSoftBoiledDescription,
+ [MOVE_HI_JUMP_KICK - 1] = sHiJumpKickDescription,
+ [MOVE_GLARE - 1] = sGlareDescription,
+ [MOVE_DREAM_EATER - 1] = sDreamEaterDescription,
+ [MOVE_POISON_GAS - 1] = sPoisonGasDescription,
+ [MOVE_BARRAGE - 1] = sBarrageDescription,
+ [MOVE_LEECH_LIFE - 1] = sLeechLifeDescription,
+ [MOVE_LOVELY_KISS - 1] = sLovelyKissDescription,
+ [MOVE_SKY_ATTACK - 1] = sSkyAttackDescription,
+ [MOVE_TRANSFORM - 1] = sTransformDescription,
+ [MOVE_BUBBLE - 1] = sBubbleDescription,
+ [MOVE_DIZZY_PUNCH - 1] = sDizzyPunchDescription,
+ [MOVE_SPORE - 1] = sSporeDescription,
+ [MOVE_FLASH - 1] = sFlashDescription,
+ [MOVE_PSYWAVE - 1] = sPsywaveDescription,
+ [MOVE_SPLASH - 1] = sSplashDescription,
+ [MOVE_ACID_ARMOR - 1] = sAcidArmorDescription,
+ [MOVE_CRABHAMMER - 1] = sCrabhammerDescription,
+ [MOVE_EXPLOSION - 1] = sExplosionDescription,
+ [MOVE_FURY_SWIPES - 1] = sFurySwipesDescription,
+ [MOVE_BONEMERANG - 1] = sBonemerangDescription,
+ [MOVE_REST - 1] = sRestDescription,
+ [MOVE_ROCK_SLIDE - 1] = sRockSlideDescription,
+ [MOVE_HYPER_FANG - 1] = sHyperFangDescription,
+ [MOVE_SHARPEN - 1] = sSharpenDescription,
+ [MOVE_CONVERSION - 1] = sConversionDescription,
+ [MOVE_TRI_ATTACK - 1] = sTriAttackDescription,
+ [MOVE_SUPER_FANG - 1] = sSuperFangDescription,
+ [MOVE_SLASH - 1] = sSlashDescription,
+ [MOVE_SUBSTITUTE - 1] = sSubstituteDescription,
+ [MOVE_STRUGGLE - 1] = sStruggleDescription,
+ [MOVE_SKETCH - 1] = sSketchDescription,
+ [MOVE_TRIPLE_KICK - 1] = sTripleKickDescription,
+ [MOVE_THIEF - 1] = sThiefDescription,
+ [MOVE_SPIDER_WEB - 1] = sSpiderWebDescription,
+ [MOVE_MIND_READER - 1] = sMindReaderDescription,
+ [MOVE_NIGHTMARE - 1] = sNightmareDescription,
+ [MOVE_FLAME_WHEEL - 1] = sFlameWheelDescription,
+ [MOVE_SNORE - 1] = sSnoreDescription,
+ [MOVE_CURSE - 1] = sCurseDescription,
+ [MOVE_FLAIL - 1] = sFlailDescription,
+ [MOVE_CONVERSION_2 - 1] = sConversion2Description,
+ [MOVE_AEROBLAST - 1] = sAeroblastDescription,
+ [MOVE_COTTON_SPORE - 1] = sCottonSporeDescription,
+ [MOVE_REVERSAL - 1] = sReversalDescription,
+ [MOVE_SPITE - 1] = sSpiteDescription,
+ [MOVE_POWDER_SNOW - 1] = sPowderSnowDescription,
+ [MOVE_PROTECT - 1] = sProtectDescription,
+ [MOVE_MACH_PUNCH - 1] = sMachPunchDescription,
+ [MOVE_SCARY_FACE - 1] = sScaryFaceDescription,
+ [MOVE_FAINT_ATTACK - 1] = sFaintAttackDescription,
+ [MOVE_SWEET_KISS - 1] = sSweetKissDescription,
+ [MOVE_BELLY_DRUM - 1] = sBellyDrumDescription,
+ [MOVE_SLUDGE_BOMB - 1] = sSludgeBombDescription,
+ [MOVE_MUD_SLAP - 1] = sMudSlapDescription,
+ [MOVE_OCTAZOOKA - 1] = sOctazookaDescription,
+ [MOVE_SPIKES - 1] = sSpikesDescription,
+ [MOVE_ZAP_CANNON - 1] = sZapCannonDescription,
+ [MOVE_FORESIGHT - 1] = sForesightDescription,
+ [MOVE_DESTINY_BOND - 1] = sDestinyBondDescription,
+ [MOVE_PERISH_SONG - 1] = sPerishSongDescription,
+ [MOVE_ICY_WIND - 1] = sIcyWindDescription,
+ [MOVE_DETECT - 1] = sDetectDescription,
+ [MOVE_BONE_RUSH - 1] = sBoneRushDescription,
+ [MOVE_LOCK_ON - 1] = sLockOnDescription,
+ [MOVE_OUTRAGE - 1] = sOutrageDescription,
+ [MOVE_SANDSTORM - 1] = sSandstormDescription,
+ [MOVE_GIGA_DRAIN - 1] = sGigaDrainDescription,
+ [MOVE_ENDURE - 1] = sEndureDescription,
+ [MOVE_CHARM - 1] = sCharmDescription,
+ [MOVE_ROLLOUT - 1] = sRolloutDescription,
+ [MOVE_FALSE_SWIPE - 1] = sFalseSwipeDescription,
+ [MOVE_SWAGGER - 1] = sSwaggerDescription,
+ [MOVE_MILK_DRINK - 1] = sMilkDrinkDescription,
+ [MOVE_SPARK - 1] = sSparkDescription,
+ [MOVE_FURY_CUTTER - 1] = sFuryCutterDescription,
+ [MOVE_STEEL_WING - 1] = sSteelWingDescription,
+ [MOVE_MEAN_LOOK - 1] = sMeanLookDescription,
+ [MOVE_ATTRACT - 1] = sAttractDescription,
+ [MOVE_SLEEP_TALK - 1] = sSleepTalkDescription,
+ [MOVE_HEAL_BELL - 1] = sHealBellDescription,
+ [MOVE_RETURN - 1] = sReturnDescription,
+ [MOVE_PRESENT - 1] = sPresentDescription,
+ [MOVE_FRUSTRATION - 1] = sFrustrationDescription,
+ [MOVE_SAFEGUARD - 1] = sSafeguardDescription,
+ [MOVE_PAIN_SPLIT - 1] = sPainSplitDescription,
+ [MOVE_SACRED_FIRE - 1] = sSacredFireDescription,
+ [MOVE_MAGNITUDE - 1] = sMagnitudeDescription,
+ [MOVE_DYNAMIC_PUNCH - 1] = sDynamicPunchDescription,
+ [MOVE_MEGAHORN - 1] = sMegahornDescription,
+ [MOVE_DRAGON_BREATH - 1] = sDragonBreathDescription,
+ [MOVE_BATON_PASS - 1] = sBatonPassDescription,
+ [MOVE_ENCORE - 1] = sEncoreDescription,
+ [MOVE_PURSUIT - 1] = sPursuitDescription,
+ [MOVE_RAPID_SPIN - 1] = sRapidSpinDescription,
+ [MOVE_SWEET_SCENT - 1] = sSweetScentDescription,
+ [MOVE_IRON_TAIL - 1] = sIronTailDescription,
+ [MOVE_METAL_CLAW - 1] = sMetalClawDescription,
+ [MOVE_VITAL_THROW - 1] = sVitalThrowDescription,
+ [MOVE_MORNING_SUN - 1] = sMorningSunDescription,
+ [MOVE_SYNTHESIS - 1] = sSynthesisDescription,
+ [MOVE_MOONLIGHT - 1] = sMoonlightDescription,
+ [MOVE_HIDDEN_POWER - 1] = sHiddenPowerDescription,
+ [MOVE_CROSS_CHOP - 1] = sCrossChopDescription,
+ [MOVE_TWISTER - 1] = sTwisterDescription,
+ [MOVE_RAIN_DANCE - 1] = sRainDanceDescription,
+ [MOVE_SUNNY_DAY - 1] = sSunnyDayDescription,
+ [MOVE_CRUNCH - 1] = sCrunchDescription,
+ [MOVE_MIRROR_COAT - 1] = sMirrorCoatDescription,
+ [MOVE_PSYCH_UP - 1] = sPsychUpDescription,
+ [MOVE_EXTREME_SPEED - 1] = sExtremeSpeedDescription,
+ [MOVE_ANCIENT_POWER - 1] = sAncientPowerDescription,
+ [MOVE_SHADOW_BALL - 1] = sShadowBallDescription,
+ [MOVE_FUTURE_SIGHT - 1] = sFutureSightDescription,
+ [MOVE_ROCK_SMASH - 1] = sRockSmashDescription,
+ [MOVE_WHIRLPOOL - 1] = sWhirlpoolDescription,
+ [MOVE_BEAT_UP - 1] = sBeatUpDescription,
+ [MOVE_FAKE_OUT - 1] = sFakeOutDescription,
+ [MOVE_UPROAR - 1] = sUproarDescription,
+ [MOVE_STOCKPILE - 1] = sStockpileDescription,
+ [MOVE_SPIT_UP - 1] = sSpitUpDescription,
+ [MOVE_SWALLOW - 1] = sSwallowDescription,
+ [MOVE_HEAT_WAVE - 1] = sHeatWaveDescription,
+ [MOVE_HAIL - 1] = sHailDescription,
+ [MOVE_TORMENT - 1] = sTormentDescription,
+ [MOVE_FLATTER - 1] = sFlatterDescription,
+ [MOVE_WILL_O_WISP - 1] = sWillOWispDescription,
+ [MOVE_MEMENTO - 1] = sMementoDescription,
+ [MOVE_FACADE - 1] = sFacadeDescription,
+ [MOVE_FOCUS_PUNCH - 1] = sFocusPunchDescription,
+ [MOVE_SMELLING_SALT - 1] = sSmellingSaltDescription,
+ [MOVE_FOLLOW_ME - 1] = sFollowMeDescription,
+ [MOVE_NATURE_POWER - 1] = sNaturePowerDescription,
+ [MOVE_CHARGE - 1] = sChargeDescription,
+ [MOVE_TAUNT - 1] = sTauntDescription,
+ [MOVE_HELPING_HAND - 1] = sHelpingHandDescription,
+ [MOVE_TRICK - 1] = sTrickDescription,
+ [MOVE_ROLE_PLAY - 1] = sRolePlayDescription,
+ [MOVE_WISH - 1] = sWishDescription,
+ [MOVE_ASSIST - 1] = sAssistDescription,
+ [MOVE_INGRAIN - 1] = sIngrainDescription,
+ [MOVE_SUPERPOWER - 1] = sSuperpowerDescription,
+ [MOVE_MAGIC_COAT - 1] = sMagicCoatDescription,
+ [MOVE_RECYCLE - 1] = sRecycleDescription,
+ [MOVE_REVENGE - 1] = sRevengeDescription,
+ [MOVE_BRICK_BREAK - 1] = sBrickBreakDescription,
+ [MOVE_YAWN - 1] = sYawnDescription,
+ [MOVE_KNOCK_OFF - 1] = sKnockOffDescription,
+ [MOVE_ENDEAVOR - 1] = sEndeavorDescription,
+ [MOVE_ERUPTION - 1] = sEruptionDescription,
+ [MOVE_SKILL_SWAP - 1] = sSkillSwapDescription,
+ [MOVE_IMPRISON - 1] = sImprisonDescription,
+ [MOVE_REFRESH - 1] = sRefreshDescription,
+ [MOVE_GRUDGE - 1] = sGrudgeDescription,
+ [MOVE_SNATCH - 1] = sSnatchDescription,
+ [MOVE_SECRET_POWER - 1] = sSecretPowerDescription,
+ [MOVE_DIVE - 1] = sDiveDescription,
+ [MOVE_ARM_THRUST - 1] = sArmThrustDescription,
+ [MOVE_CAMOUFLAGE - 1] = sCamouflageDescription,
+ [MOVE_TAIL_GLOW - 1] = sTailGlowDescription,
+ [MOVE_LUSTER_PURGE - 1] = sLusterPurgeDescription,
+ [MOVE_MIST_BALL - 1] = sMistBallDescription,
+ [MOVE_FEATHER_DANCE - 1] = sFeatherDanceDescription,
+ [MOVE_TEETER_DANCE - 1] = sTeeterDanceDescription,
+ [MOVE_BLAZE_KICK - 1] = sBlazeKickDescription,
+ [MOVE_MUD_SPORT - 1] = sMudSportDescription,
+ [MOVE_ICE_BALL - 1] = sIceBallDescription,
+ [MOVE_NEEDLE_ARM - 1] = sNeedleArmDescription,
+ [MOVE_SLACK_OFF - 1] = sSlackOffDescription,
+ [MOVE_HYPER_VOICE - 1] = sHyperVoiceDescription,
+ [MOVE_POISON_FANG - 1] = sPoisonFangDescription,
+ [MOVE_CRUSH_CLAW - 1] = sCrushClawDescription,
+ [MOVE_BLAST_BURN - 1] = sBlastBurnDescription,
+ [MOVE_HYDRO_CANNON - 1] = sHydroCannonDescription,
+ [MOVE_METEOR_MASH - 1] = sMeteorMashDescription,
+ [MOVE_ASTONISH - 1] = sAstonishDescription,
+ [MOVE_WEATHER_BALL - 1] = sWeatherBallDescription,
+ [MOVE_AROMATHERAPY - 1] = sAromatherapyDescription,
+ [MOVE_FAKE_TEARS - 1] = sFakeTearsDescription,
+ [MOVE_AIR_CUTTER - 1] = sAirCutterDescription,
+ [MOVE_OVERHEAT - 1] = sOverheatDescription,
+ [MOVE_ODOR_SLEUTH - 1] = sOdorSleuthDescription,
+ [MOVE_ROCK_TOMB - 1] = sRockTombDescription,
+ [MOVE_SILVER_WIND - 1] = sSilverWindDescription,
+ [MOVE_METAL_SOUND - 1] = sMetalSoundDescription,
+ [MOVE_GRASS_WHISTLE - 1] = sGrassWhistleDescription,
+ [MOVE_TICKLE - 1] = sTickleDescription,
+ [MOVE_COSMIC_POWER - 1] = sCosmicPowerDescription,
+ [MOVE_WATER_SPOUT - 1] = sWaterSpoutDescription,
+ [MOVE_SIGNAL_BEAM - 1] = sSignalBeamDescription,
+ [MOVE_SHADOW_PUNCH - 1] = sShadowPunchDescription,
+ [MOVE_EXTRASENSORY - 1] = sExtrasensoryDescription,
+ [MOVE_SKY_UPPERCUT - 1] = sSkyUppercutDescription,
+ [MOVE_SAND_TOMB - 1] = sSandTombDescription,
+ [MOVE_SHEER_COLD - 1] = sSheerColdDescription,
+ [MOVE_MUDDY_WATER - 1] = sMuddyWaterDescription,
+ [MOVE_BULLET_SEED - 1] = sBulletSeedDescription,
+ [MOVE_AERIAL_ACE - 1] = sAerialAceDescription,
+ [MOVE_ICICLE_SPEAR - 1] = sIcicleSpearDescription,
+ [MOVE_IRON_DEFENSE - 1] = sIronDefenseDescription,
+ [MOVE_BLOCK - 1] = sBlockDescription,
+ [MOVE_HOWL - 1] = sHowlDescription,
+ [MOVE_DRAGON_CLAW - 1] = sDragonClawDescription,
+ [MOVE_FRENZY_PLANT - 1] = sFrenzyPlantDescription,
+ [MOVE_BULK_UP - 1] = sBulkUpDescription,
+ [MOVE_BOUNCE - 1] = sBounceDescription,
+ [MOVE_MUD_SHOT - 1] = sMudShotDescription,
+ [MOVE_POISON_TAIL - 1] = sPoisonTailDescription,
+ [MOVE_COVET - 1] = sCovetDescription,
+ [MOVE_VOLT_TACKLE - 1] = sVoltTackleDescription,
+ [MOVE_MAGICAL_LEAF - 1] = sMagicalLeafDescription,
+ [MOVE_WATER_SPORT - 1] = sWaterSportDescription,
+ [MOVE_CALM_MIND - 1] = sCalmMindDescription,
+ [MOVE_LEAF_BLADE - 1] = sLeafBladeDescription,
+ [MOVE_DRAGON_DANCE - 1] = sDragonDanceDescription,
+ [MOVE_ROCK_BLAST - 1] = sRockBlastDescription,
+ [MOVE_SHOCK_WAVE - 1] = sShockWaveDescription,
+ [MOVE_WATER_PULSE - 1] = sWaterPulseDescription,
+ [MOVE_DOOM_DESIRE - 1] = sDoomDesireDescription,
+ [MOVE_PSYCHO_BOOST - 1] = sPsychoBoostDescription,
};
diff --git a/src/decoration.c b/src/decoration.c
index 94edbe956..796cc794a 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1171,7 +1171,7 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
{
decLeft = mapX + j;
behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decor].tiles[i * decWidth + j]);
- if (MetatileBehavior_IsMB_B9(behavior) == TRUE || (gDecorations[decor].permission != DECORPERM_PASS_FLOOR && (behavior >> 12)))
+ if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decor].permission != DECORPERM_PASS_FLOOR && (behavior >> 12)))
{
flags = 0xc00;
}
@@ -1179,7 +1179,7 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
{
flags = 0x000;
}
- if (gDecorations[decor].permission != DECORPERM_NA_WALL && MetatileBehavior_IsMB_B7(MapGridGetMetatileBehaviorAt(decLeft, decBottom)) == TRUE)
+ if (gDecorations[decor].permission != DECORPERM_NA_WALL && MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(decLeft, decBottom)) == TRUE)
{
v0 = 1;
}
@@ -1446,7 +1446,7 @@ void sub_8128414(u8 taskId)
bool8 sub_8128484(u8 behaviorAt, u16 behaviorBy)
{
- if (MetatileBehavior_IsMB_B3(behaviorAt) != TRUE || behaviorBy != 0)
+ if (MetatileBehavior_IsBlockDecoration(behaviorAt) != TRUE || behaviorBy != 0)
{
return FALSE;
}
@@ -1464,9 +1464,9 @@ bool8 sub_81284AC(u8 taskId, s16 x, s16 y, u16 decor)
bool8 sub_81284F4(u16 behaviorAt, const struct Decoration *decoration)
{
- if (MetatileBehavior_IsMB_B3(behaviorAt) != TRUE)
+ if (MetatileBehavior_IsBlockDecoration(behaviorAt) != TRUE)
{
- if (decoration->id == DECOR_SOLID_BOARD && MetatileBehavior_IsMB_C2(behaviorAt) == TRUE)
+ if (decoration->id == DECOR_SOLID_BOARD && MetatileBehavior_IsSecretBaseHole(behaviorAt) == TRUE)
{
return TRUE;
}
@@ -1548,7 +1548,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & 0xf000;
- if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsMB_B7(behaviorAt))
+ if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsSecretBaseNorthWall(behaviorAt))
{
return FALSE;
}
@@ -1570,7 +1570,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
for (j=0; j<mapX; j++)
{
curX = gTasks[taskId].data[0] + j;
- if (!MetatileBehavior_IsMB_B7(MapGridGetMetatileBehaviorAt(curX, curY)))
+ if (!MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(curX, curY)))
{
return FALSE;
}
@@ -1589,14 +1589,14 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
if (decoration->shape == DECORSHAPE_1x2)
{
- if (!MetatileBehavior_IsMB_C3(behaviorAt))
+ if (!MetatileBehavior_IsLargeMatCenter(behaviorAt))
{
return FALSE;
}
}
- else if (!MetatileBehavior_IsMB_B5(behaviorAt))
+ else if (!MetatileBehavior_IsSecretBaseLargeMatEdge(behaviorAt))
{
- if (!MetatileBehavior_IsMB_C3(behaviorAt))
+ if (!MetatileBehavior_IsLargeMatCenter(behaviorAt))
{
return FALSE;
}
@@ -2385,7 +2385,7 @@ void sub_8129C74(u8 taskId)
{
data = gTasks[taskId].data;
behavior = MapGridGetMetatileBehaviorAt(data[0], data[1]);
- if (MetatileBehavior_IsSecretBasePC(behavior) == TRUE || MetatileBehavior_IsMB_C5(behavior) == TRUE)
+ if (MetatileBehavior_IsSecretBasePC(behavior) == TRUE || MetatileBehavior_IsPlayerRoomPCOn(behavior) == TRUE)
{
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy;
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 2b85e751f..0714cf3b0 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -7721,7 +7721,7 @@ static void GetGroundEffectFlags_Tracks(struct EventObject *eventObj, u32 *flags
*flags |= GROUND_EFFECT_FLAG_DEEP_SAND;
}
else if (MetatileBehavior_IsSandOrDeepSand(eventObj->previousMetatileBehavior)
- || MetatileBehavior_IsUnusedFootprintMetatile(eventObj->previousMetatileBehavior))
+ || MetatileBehavior_IsFootprints(eventObj->previousMetatileBehavior))
{
*flags |= GROUND_EFFECT_FLAG_SAND;
}
diff --git a/src/field_camera.c b/src/field_camera.c
index 8629bec2b..e8900e06a 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -232,14 +232,14 @@ static void DrawMetatileAt(const struct MapLayout *mapLayout, u16 b, int c, int
u16 metatileId = MapGridGetMetatileIdAt(c, d);
u16 *metatiles;
- if (metatileId > 1024)
+ if (metatileId > NUM_METATILES_TOTAL)
metatileId = 0;
- if (metatileId < 512)
+ if (metatileId < NUM_METATILES_IN_PRIMARY)
metatiles = mapLayout->primaryTileset->metatiles;
else
{
metatiles = mapLayout->secondaryTileset->metatiles;
- metatileId -= 512;
+ metatileId -= NUM_METATILES_IN_PRIMARY;
}
DrawMetatile(MapGridGetMetatileLayerTypeAt(c, d), metatiles + metatileId * 8, b);
}
diff --git a/src/field_message_box.c b/src/field_message_box.c
index 7ed87e837..19859ec0f 100755
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -37,7 +37,7 @@ void sub_8098154(u8 taskId)
task->data[0]++;
break;
case 2:
- if (sub_8197224() != 1)
+ if (RunTextPrintersAndIsPrinter0Active() != 1)
{
gUnknown_020375BC = 0;
DestroyTask(taskId);
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 38845beb8..fd315dd98 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -6,7 +6,6 @@
#include "fieldmap.h"
#include "global.fieldmap.h"
#include "metatile_behavior.h"
-#include "metatile_behaviors.h"
#include "overworld.h"
#include "rotating_gate.h"
#include "sprite.h"
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 019db9d0d..96f5d2b85 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -482,15 +482,15 @@ void MapGridSetMetatileEntryAt(int x, int y, u16 metatile)
u16 GetBehaviorByMetatileId(u16 metatile)
{
u16 *attributes;
- if (metatile <= 0x1ff)
+ if (metatile < NUM_METATILES_IN_PRIMARY)
{
attributes = gMapHeader.mapLayout->primaryTileset->metatileAttributes;
return attributes[metatile];
}
- else if (metatile <= 0x3ff)
+ else if (metatile < NUM_METATILES_TOTAL)
{
attributes = gMapHeader.mapLayout->secondaryTileset->metatileAttributes;
- return attributes[metatile - 0x200];
+ return attributes[metatile - NUM_METATILES_IN_PRIMARY];
}
else
{
@@ -979,7 +979,7 @@ void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u1
}
else if (tileset->isSecondary == TRUE)
{
- LoadPalette(((u16*)tileset->palettes) + 0x60, destOffset, size);
+ LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size);
nullsub_3(destOffset, size >> 1);
}
else
@@ -992,35 +992,35 @@ void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u1
void copy_map_tileset1_to_vram(struct MapLayout const *mapLayout)
{
- copy_tileset_patterns_to_vram(mapLayout->primaryTileset, 0x200, 0);
+ copy_tileset_patterns_to_vram(mapLayout->primaryTileset, NUM_TILES_IN_PRIMARY, 0);
}
void copy_map_tileset2_to_vram(struct MapLayout const *mapLayout)
{
- copy_tileset_patterns_to_vram(mapLayout->secondaryTileset, 0x200, 0x200);
+ copy_tileset_patterns_to_vram(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
}
void copy_map_tileset2_to_vram_2(struct MapLayout const *mapLayout)
{
- copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, 0x200, 0x200);
+ copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
}
void apply_map_tileset1_palette(struct MapLayout const *mapLayout)
{
- apply_map_tileset_palette(mapLayout->primaryTileset, 0, 0xC0);
+ apply_map_tileset_palette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2);
}
void apply_map_tileset2_palette(struct MapLayout const *mapLayout)
{
- apply_map_tileset_palette(mapLayout->secondaryTileset, 0x60, 0xE0);
+ apply_map_tileset_palette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2);
}
void copy_map_tileset1_tileset2_to_vram(struct MapLayout const *mapLayout)
{
if (mapLayout)
{
- copy_tileset_patterns_to_vram2(mapLayout->primaryTileset, 0x200, 0);
- copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, 0x200, 0x200);
+ copy_tileset_patterns_to_vram2(mapLayout->primaryTileset, NUM_TILES_IN_PRIMARY, 0);
+ copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
}
}
diff --git a/src/graphics.c b/src/graphics.c
index 38a79ce3c..5debb721a 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -643,11 +643,11 @@ const u8 gBattleAnimSpritePalette_187[] = INCBIN_U8("graphics/battle_anims/sprit
const u8 gBattleAnimSpriteSheet_186[] = INCBIN_U8("graphics/battle_anims/sprites/186.4bpp.lz");
const u8 gBattleAnimSpritePalette_186[] = INCBIN_U8("graphics/battle_anims/sprites/186.gbapal.lz");
-const u8 gUnknown_08C1F1C8[] = INCBIN_U8("graphics/battle_interface/window.4bpp.lz");
-const u8 gUnknown_08C1F46C[] = INCBIN_U8("graphics/battle_interface/window2.4bpp.lz");
-const u8 gUnknown_08C1F5E8[] = INCBIN_U8( "graphics/battle_interface/window3.4bpp.lz");
-const u8 gUnknown_08C1F76C[] = INCBIN_U8("graphics/battle_interface/window4.4bpp.lz");
-const u8 gUnknown_08C1F8E8[] = INCBIN_U8("graphics/battle_interface/window5.4bpp.lz");
+const u8 gHealthboxSinglesPlayerGfx[] = INCBIN_U8("graphics/battle_interface/healthbox_singles_player.4bpp.lz");
+const u8 gHealthboxSinglesOpponentGfx[] = INCBIN_U8("graphics/battle_interface/healthbox_singles_opponent.4bpp.lz");
+const u8 gHealthboxDoublesPlayerGfx[] = INCBIN_U8( "graphics/battle_interface/healthbox_doubles_player.4bpp.lz");
+const u8 gHealthboxDoublesOpponentGfx[] = INCBIN_U8("graphics/battle_interface/healthbox_doubles_opponent.4bpp.lz");
+const u8 gHealthboxSafariGfx[] = INCBIN_U8("graphics/battle_interface/healthbox_safari.4bpp.lz");
const u8 gUnusedGfx_Shadow[] = INCBIN_U8("graphics/unused/shadow.4bpp.lz");
const u8 gUnusedPal_Shadow[] = INCBIN_U8("graphics/unused/shadow.gbapal.lz");
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 522d11d4f..2b0904672 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -29,6 +29,7 @@
#include "menu.h"
#include "trainer_pokemon_sprites.h"
#include "data2.h"
+#include "rom_81520A8.h"
struct HallofFameMon
{
@@ -91,13 +92,6 @@ extern void sub_80F9BCC(u16, u16, u8);
extern bool8 sub_80F9C1C(void);
extern void sub_81971D0(void);
extern void sub_8197200(void);
-extern void sub_8152254(void);
-extern void sub_81525D0(u8);
-extern void sub_8152438(u8, void*);
-extern void sub_8152474(u8, u8, u8);
-extern void sub_81522D4(void);
-extern bool32 sub_81521C0(u8);
-extern u8 sub_81524C4(const struct OamData *arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, u8 arg5, s16 arg6);
// this file's functions
static void ClearVramOamPltt_LoadHofPal(void);
@@ -1444,53 +1438,28 @@ static void sub_81752C0(void)
FreeSpritePaletteByTag(0x3E9);
}
-struct UnknownStruct912B4
-{
- s16 field_0;
- s16 field_2;
- s16 field_4;
- s16 field_6;
- s16 field_8;
- s16 field_A;
- s16 field_C;
- s16 field_E;
- s16 field_10;
- s16 field_12;
- s16 field_14;
- s16 field_16;
- s16 field_18;
- s16 field_1A;
- s16 field_1C;
- s16 field_1E;
- s16 field_20;
- s16 field_22;
- s16 field_24;
- s16 field_26;
- s16 field_28;
-};
-
-static void sub_81752F4(struct UnknownStruct912B4 *unkStruct)
+static void sub_81752F4(struct UnkStruct_81520A8 *structPtr)
{
- if (unkStruct->field_E > 110)
+ if (structPtr->yDelta > 110)
{
- gTasks[unkStruct->field_28].data[15]--;
- sub_81525D0(unkStruct->field_16);
+ gTasks[structPtr->data[7]].data[15]--;
+ sub_81525D0(structPtr->id);
}
else
{
u8 var;
s32 rand;
- unkStruct->field_E++;
- unkStruct->field_E += unkStruct->field_1C;
+ structPtr->yDelta++;
+ structPtr->yDelta += structPtr->data[1];
- var = unkStruct->field_1A;
+ var = structPtr->data[0];
rand = Random();
rand &= 3;
rand += 8;
- unkStruct->field_C = (rand) * ((gSineTable[var])) / 256;
+ structPtr->xDelta = (rand) * ((gSineTable[var])) / 256;
- unkStruct->field_1A += 4;
+ structPtr->data[0] += 4;
}
}
diff --git a/src/m4a_tables.c b/src/m4a_tables.c
index 91f00a31d..9a4ea32e6 100644
--- a/src/m4a_tables.c
+++ b/src/m4a_tables.c
@@ -261,7 +261,7 @@ const struct PokemonCrySong gPokemonCrySongTemplate =
0, // block count
255, // priority
0, // reverb
- (struct ToneData *)&voicegroup_pokemon_cry,
+ (struct ToneData *)&voicegroup000,
NULL,
NULL,
0,
diff --git a/src/main_menu.c b/src/main_menu.c
index 7e84ae7ec..bcc4f9af5 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -5,6 +5,7 @@
#include "constants/rgb.h"
#include "constants/songs.h"
#include "constants/species.h"
+#include "constants/trainers.h"
#include "decompress.h"
#include "event_data.h"
#include "field_effect.h"
@@ -45,91 +46,91 @@
static EWRAM_DATA u8 gUnknown_02022D04 = 0;
static EWRAM_DATA u16 sCurrItemAndOptionMenuCheck = 0;
-static IWRAM_DATA u8 gUnknown_03000DD0;
+static IWRAM_DATA u8 sBirchSpeechMainTaskId;
// Static ROM declarations
-u32 InitMainMenu(bool8);
-void Task_MainMenuCheckSaveFile(u8);
-void Task_MainMenuCheckBattery(u8);
-void Task_WaitForSaveFileErrorWindow(u8);
-void CreateMainMenuErrorWindow(const u8*);
+static u32 InitMainMenu(bool8);
+static void Task_MainMenuCheckSaveFile(u8);
+static void Task_MainMenuCheckBattery(u8);
+static void Task_WaitForSaveFileErrorWindow(u8);
+static void CreateMainMenuErrorWindow(const u8*);
static void ClearMainMenuWindowTilemap(const struct WindowTemplate*);
-void Task_DisplayMainMenu(u8);
-void Task_WaitForBatteryDryErrorWindow(u8);
-void fmt_savegame(void);
-void HighlightSelectedMainMenuItem(u8, u8, s16);
-void Task_HandleMainMenuInput(u8);
-void Task_HandleMainMenuAPressed(u8);
-void Task_HandleMainMenuBPressed(u8);
-void task_new_game_prof_birch_speech_1(u8);
-void Task_DisplayMainMenuInvalidActionError(u8);
-void AddBirchSpeechObjects(u8);
-void task_new_game_prof_birch_speech_2(u8);
-void sub_8031BAC(u8, u8);
-void sub_8031D34(u8, u8);
-void task_new_game_prof_birch_speech_3(u8);
-void unknown_rbox_to_vram(u8, u8);
-void sub_8032318(u8);
-void task_new_game_prof_birch_speech_4(u8);
-void task_new_game_prof_birch_speech_5(u8);
-void sub_80323A0(struct TextSubPrinter *printer, u16 a);
-void task_new_game_prof_birch_speech_6(u8);
-void sub_8030B14(u8);
-void task_new_game_prof_birch_speech_7(u8);
-void sub_8031ACC(u8, u8);
-void sub_8031C88(u8, u8);
-void task_new_game_prof_birch_speech_8(u8);
-void task_new_game_prof_birch_speech_9(u8);
-void task_new_game_prof_birch_speech_10(u8);
-void task_new_game_prof_birch_speech_11(u8);
-void LoadMainMenuWindowFrameTiles(u8, u16);
-void DrawMainMenuWindowBorder(const struct WindowTemplate*, u16);
-void Task_HighlightSelectedMainMenuItem(u8);
-void task_new_game_prof_birch_speech_12(u8);
-void task_new_game_prof_birch_speech_13(u8);
-void sub_8031D74(void);
-s8 sub_8031DB4(void);
-void sub_80322E0(u8, u8);
-void task_new_game_prof_birch_speech_14(u8);
-void sub_8030ED4(u8);
-void sub_8030F7C(u8);
-void task_new_game_prof_birch_speech_15(u8);
-void task_new_game_prof_birch_speech_16(u8);
-void task_new_game_prof_birch_speech_17(u8);
-void new_game_prof_birch_speech_part2_start(void);
-void set_default_player_name(u8);
-void task_new_game_prof_birch_speech_part2_3(u8);
-void task_new_game_prof_birch_speech_part2_4(u8);
-void sub_80323CC(u8, u8, u16, u16, u8, u8);
-void task_new_game_prof_birch_speech_part2_5(u8);
-void task_new_game_prof_birch_speech_part2_6(u8);
-void task_new_game_prof_birch_speech_part2_7(u8);
-void task_new_game_prof_birch_speech_part2_8(u8);
-void task_new_game_prof_birch_speech_part2_9(u8);
-void sub_80318D8(struct Sprite*);
-void task_new_game_prof_birch_speech_part2_10(u8);
-void task_new_game_prof_birch_speech_part2_11(u8);
-void task_new_game_prof_birch_speech_part2_12(u8);
-void nullsub_11();
-void task_new_game_prof_birch_speech_part2_1(u8);
-void fmt_time(void);
-void fmt_pokedex(void);
-void fmt_player(void);
-void fmt_badges(void);
-void sub_8032474(u8, u8, u8, u8, u8, u8);
+static void Task_DisplayMainMenu(u8);
+static void Task_WaitForBatteryDryErrorWindow(u8);
+static void MainMenu_FormatSavegameText(void);
+static void HighlightSelectedMainMenuItem(u8, u8, s16);
+static void Task_HandleMainMenuInput(u8);
+static void Task_HandleMainMenuAPressed(u8);
+static void Task_HandleMainMenuBPressed(u8);
+static void Task_NewGameBirchSpeech_Init(u8);
+static void Task_DisplayMainMenuInvalidActionError(u8);
+static void AddBirchSpeechObjects(u8);
+static void Task_NewGameBirchSpeech_WaitToShowBirch(u8);
+static void NewGameBirchSpeech_StartFadeInTarget1OutTarget2(u8, u8);
+static void NewGameBirchSpeech_StartFadePlatformOut(u8, u8);
+static void Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome(u8);
+static void NewGameBirchSpeech_ShowDialogueWindow(u8, u8);
+static void NewGameBirchSpeech_ClearWindow(u8);
+static void Task_NewGameBirchSpeech_ThisIsAPokemon(u8);
+static void Task_NewGameBirchSpeech_MainSpeech(u8);
+static void NewGameBirchSpeech_ShowPokeBallPrinterCallback(struct TextSubPrinter *printer, u16 a);
+static void Task_NewGameBirchSpeech_AndYouAre(u8);
+static void Task_NewGameBirchSpeechSub_WaitForLotad(u8);
+static void Task_NewGameBirchSpeech_StartBirchLotadPlatformFade(u8);
+static void NewGameBirchSpeech_StartFadeOutTarget1InTarget2(u8, u8);
+static void NewGameBirchSpeech_StartFadePlatformIn(u8, u8);
+static void Task_NewGameBirchSpeech_SlidePlatformAway(u8);
+static void Task_NewGameBirchSpeech_StartPlayerFadeIn(u8);
+static void Task_NewGameBirchSpeech_WaitForPlayerFadeIn(u8);
+static void Task_NewGameBirchSpeech_BoyOrGirl(u8);
+static void LoadMainMenuWindowFrameTiles(u8, u16);
+static void DrawMainMenuWindowBorder(const struct WindowTemplate*, u16);
+static void Task_HighlightSelectedMainMenuItem(u8);
+static void Task_NewGameBirchSpeech_WaitToShowGenderMenu(u8);
+static void Task_NewGameBirchSpeech_ChooseGender(u8);
+static void NewGameBirchSpeech_ShowGenderMenu(void);
+static s8 NewGameBirchSpeech_ProcessGenderMenuInput(void);
+static void NewGameBirchSpeech_ClearGenderWindow(u8, u8);
+static void Task_NewGameBirchSpeech_WhatsYourName(u8);
+static void Task_NewGameBirchSpeech_SlideOutOldGenderSprite(u8);
+static void Task_NewGameBirchSpeech_SlideInNewGenderSprite(u8);
+static void Task_NewGameBirchSpeech_WaitForWhatsYourNameToPrint(u8);
+static void Task_NewGameBirchSpeech_WaitPressBeforeNameChoice(u8);
+static void Task_NewGameBirchSpeech_StartNamingScreen(u8);
+static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void);
+static void NewGameBirchSpeech_SetDefaultPlayerName(u8);
+static void Task_NewGameBirchSpeech_CreateNameYesNo(u8);
+static void Task_NewGameBirchSpeech_ProcessNameYesNoMenu(u8);
+void CreateYesNoMenuParameterized(u8, u8, u16, u16, u8, u8);
+static void Task_NewGameBirchSpeech_SlidePlatformAway2(u8);
+static void Task_NewGameBirchSpeech_ReshowBirchLotad(u8);
+static void Task_NewGameBirchSpeech_WaitForSpriteFadeInAndTextPrinter(u8);
+static void Task_NewGameBirchSpeech_AreYouReady(u8);
+static void Task_NewGameBirchSpeech_ShrinkPlayer(u8);
+static void SpriteCB_MovePlayerDownWhileShrinking(struct Sprite*);
+static void Task_NewGameBirchSpeech_WaitForPlayerShrink(u8);
+static void Task_NewGameBirchSpeech_FadePlayerToWhite(u8);
+static void Task_NewGameBirchSpeech_Cleanup(u8);
+static void nullsub_11();
+static void Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox(u8);
+static void MainMenu_FormatSavegamePlayer(void);
+static void MainMenu_FormatSavegamePokedex(void);
+static void MainMenu_FormatSavegameTime(void);
+static void MainMenu_FormatSavegameBadges(void);
+static void NewGameBirchSpeech_CreateDialogueWindowBorder(u8, u8, u8, u8, u8, u8);
// .rodata
-const u16 gUnknown_082FECFC[][16] = {
+static const u16 sBirchSpeechBgPals[][16] = {
INCBIN_U16("graphics/birch_speech/bg0.gbapal"),
INCBIN_U16("graphics/birch_speech/bg1.gbapal")
};
-const u8 gBirchIntroShadowGfx[] = INCBIN_U8("graphics/birch_speech/shadow.4bpp.lz");
-const u8 gUnknown_082FEEF0[] = INCBIN_U8("graphics/birch_speech/map.bin.lz");
-const u16 gUnknown_082FF018[] = INCBIN_U16("graphics/birch_speech/bg2.gbapal");
-const u16 gUnknown_082FF028[] = {0, 0, 0, 0, 0, 0, 0, 0};
+static const u8 sBirchSpeechShadowGfx[] = INCBIN_U8("graphics/birch_speech/shadow.4bpp.lz");
+static const u8 sBirchSpeechBgMap[] = INCBIN_U8("graphics/birch_speech/map.bin.lz");
+static const u16 sBirchSpeechBgGradientPal[] = INCBIN_U16("graphics/birch_speech/bg2.gbapal");
+static const u16 sBirchSpeechPlatformBlackPal[] = {RGB_BLACK, RGB_BLACK, RGB_BLACK, RGB_BLACK, RGB_BLACK, RGB_BLACK, RGB_BLACK, RGB_BLACK};
#define MENU_LEFT 2
#define MENU_TOP_WIN0 1
@@ -159,7 +160,7 @@ const u16 gUnknown_082FF028[] = {0, 0, 0, 0, 0, 0, 0, 0};
#define MENU_WIN_VCOORDS(n) WIN_RANGE(((MENU_TOP_WIN##n - 1) * 8) + MENU_SHADOW_PADDING, (MENU_TOP_WIN##n + MENU_HEIGHT_WIN##n + 1) * 8 - MENU_SHADOW_PADDING)
#define MENU_SCROLL_SHIFT WIN_RANGE(32, 32)
-const struct WindowTemplate sWindowTemplates_MainMenu[] =
+static const struct WindowTemplate sWindowTemplates_MainMenu[] =
{
// No saved game
// NEW GAME
@@ -246,7 +247,7 @@ const struct WindowTemplate sWindowTemplates_MainMenu[] =
DUMMY_WIN_TEMPLATE
};
-const struct WindowTemplate gUnknown_082FF080[] =
+static const struct WindowTemplate gUnknown_082FF080[] =
{
{
.priority = 0,
@@ -278,13 +279,13 @@ const struct WindowTemplate gUnknown_082FF080[] =
DUMMY_WIN_TEMPLATE
};
-const u16 gMainMenuBgPal[] = INCBIN_U16("graphics/misc/main_menu_bg.gbapal");
-const u16 gMainMenuTextPal[] = INCBIN_U16("graphics/misc/main_menu_text.gbapal");
+static const u16 sMainMenuBgPal[] = INCBIN_U16("graphics/misc/main_menu_bg.gbapal");
+static const u16 sMainMenuTextPal[] = INCBIN_U16("graphics/misc/main_menu_text.gbapal");
-const u8 gTextColor_Headers[] = {10, 11, 12};
-const u8 gUnknown_082FF0E3[] = {10, 1, 12};
+static const u8 sTextColor_Headers[] = {10, 11, 12};
+static const u8 sTextColor_PlayerGenderColor[] = {10, 1, 12};
-const struct BgTemplate gUnknown_082FF0E8[] = {
+static const struct BgTemplate sMainMenuBgTemplates[] = {
{
.bg = 0,
.charBaseIndex = 2,
@@ -305,7 +306,7 @@ const struct BgTemplate gUnknown_082FF0E8[] = {
}
};
-const struct BgTemplate gUnknown_082FF0F0 = {
+static const struct BgTemplate sBirchBgTemplate = {
.bg = 0,
.charBaseIndex = 3,
.mapBaseIndex = 30,
@@ -315,21 +316,24 @@ const struct BgTemplate gUnknown_082FF0F0 = {
.baseTile = 0
};
-const struct ScrollArrowsTemplate sScrollArrowsTemplate_MainMenu = {2, 0x78, 8, 3, 0x78, 0x98, 3, 4, 1, 1, 0};
+static const struct ScrollArrowsTemplate sScrollArrowsTemplate_MainMenu = {2, 0x78, 8, 3, 0x78, 0x98, 3, 4, 1, 1, 0};
-const union AffineAnimCmd gUnknown_082FF104[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_PlayerShrink[] = {
AFFINEANIMCMD_FRAME(-2, -2, 0, 0x30),
AFFINEANIMCMD_END
};
-const union AffineAnimCmd *const gUnknown_082FF114 = gUnknown_082FF104;
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_PlayerShrink[] =
+{
+ sSpriteAffineAnim_PlayerShrink
+};
-const struct MenuAction gUnknown_082FF118[] = {
+static const struct MenuAction sMenuActions_Gender[] = {
{gText_BirchBoy, NULL},
{gText_BirchGirl, NULL}
};
-const u8 *const gMalePresetNames[] = {
+static const u8 *const gMalePresetNames[] = {
gText_DefaultNameStu,
gText_DefaultNameMilton,
gText_DefaultNameTom,
@@ -352,7 +356,7 @@ const u8 *const gMalePresetNames[] = {
gText_DefaultNameQuincy
};
-const u8 *const gFemalePresetNames[] = {
+static const u8 *const gFemalePresetNames[] = {
gText_DefaultNameKimmy,
gText_DefaultNameTiara,
gText_DefaultNameBella,
@@ -385,7 +389,8 @@ enum
HAS_MYSTERY_EVENTS, //CONTINUE, NEW GAME, MYSTERY GIFT, MYSTERY EVENTS, OPTION
};
-enum {
+enum
+{
ACTION_NEW_GAME,
ACTION_CONTINUE,
ACTION_OPTION,
@@ -397,7 +402,7 @@ enum {
#define MAIN_MENU_BORDER_TILE 0x1D5
-void CB2_MainMenu(void)
+static void CB2_MainMenu(void)
{
RunTasks();
AnimateSprites();
@@ -405,7 +410,7 @@ void CB2_MainMenu(void)
UpdatePaletteFade();
}
-void VBlankCB_MainMenu(void)
+static void VBlankCB_MainMenu(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -422,7 +427,7 @@ void CB2_ReinitMainMenu(void)
InitMainMenu(TRUE);
}
-u32 InitMainMenu(bool8 returningFromOptionsMenu)
+static u32 InitMainMenu(bool8 returningFromOptionsMenu)
{
SetVBlankCallback(NULL);
@@ -442,8 +447,8 @@ u32 InitMainMenu(bool8 returningFromOptionsMenu)
DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
ResetPaletteFade();
- LoadPalette(gMainMenuBgPal, 0, 32);
- LoadPalette(gMainMenuTextPal, 0xF0, 32);
+ LoadPalette(sMainMenuBgPal, 0, 32);
+ LoadPalette(sMainMenuTextPal, 0xF0, 32);
ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
@@ -453,7 +458,7 @@ u32 InitMainMenu(bool8 returningFromOptionsMenu)
else
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF); // fade to white
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_082FF0E8, ARRAY_COUNT(gUnknown_082FF0E8));
+ InitBgsFromTemplates(0, sMainMenuBgTemplates, ARRAY_COUNT(sMainMenuBgTemplates));
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
ChangeBgX(1, 0, 0);
@@ -490,7 +495,7 @@ u32 InitMainMenu(bool8 returningFromOptionsMenu)
#define tArrowTaskIsScrolled data[15] // For scroll indicator arrow task
-void Task_MainMenuCheckSaveFile(u8 taskId)
+static void Task_MainMenuCheckSaveFile(u8 taskId)
{
s16* data = gTasks[taskId].data;
@@ -559,7 +564,7 @@ void Task_MainMenuCheckSaveFile(u8 taskId)
}
}
-void Task_WaitForSaveFileErrorWindow(u8 taskId)
+static void Task_WaitForSaveFileErrorWindow(u8 taskId)
{
RunTextPrinters();
if (!IsTextPrinterActive(7) && (gMain.newKeys & A_BUTTON))
@@ -570,7 +575,7 @@ void Task_WaitForSaveFileErrorWindow(u8 taskId)
}
}
-void Task_MainMenuCheckBattery(u8 taskId)
+static void Task_MainMenuCheckBattery(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -594,7 +599,7 @@ void Task_MainMenuCheckBattery(u8 taskId)
}
}
-void Task_WaitForBatteryDryErrorWindow(u8 taskId)
+static void Task_WaitForBatteryDryErrorWindow(u8 taskId)
{
RunTextPrinters();
if (!IsTextPrinterActive(7) && (gMain.newKeys & A_BUTTON))
@@ -605,7 +610,7 @@ void Task_WaitForBatteryDryErrorWindow(u8 taskId)
}
}
-void Task_DisplayMainMenu(u8 taskId)
+static void Task_DisplayMainMenu(u8 taskId)
{
s16* data = gTasks[taskId].data;
u16 palette;
@@ -649,8 +654,8 @@ void Task_DisplayMainMenu(u8 taskId)
default:
FillWindowPixelBuffer(0, 0xAA);
FillWindowPixelBuffer(1, 0xAA);
- AddTextPrinterParameterized3(0, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuNewGame);
- AddTextPrinterParameterized3(1, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuOption);
+ AddTextPrinterParameterized3(0, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
+ AddTextPrinterParameterized3(1, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuOption);
PutWindowTilemap(0);
PutWindowTilemap(1);
CopyWindowToVram(0, 2);
@@ -662,10 +667,10 @@ void Task_DisplayMainMenu(u8 taskId)
FillWindowPixelBuffer(2, 0xAA);
FillWindowPixelBuffer(3, 0xAA);
FillWindowPixelBuffer(4, 0xAA);
- AddTextPrinterParameterized3(2, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuContinue);
- AddTextPrinterParameterized3(3, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuNewGame);
- AddTextPrinterParameterized3(4, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuOption);
- fmt_savegame();
+ AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue);
+ AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
+ AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuOption);
+ MainMenu_FormatSavegameText();
PutWindowTilemap(2);
PutWindowTilemap(3);
PutWindowTilemap(4);
@@ -681,11 +686,11 @@ void Task_DisplayMainMenu(u8 taskId)
FillWindowPixelBuffer(3, 0xAA);
FillWindowPixelBuffer(4, 0xAA);
FillWindowPixelBuffer(5, 0xAA);
- AddTextPrinterParameterized3(2, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuContinue);
- AddTextPrinterParameterized3(3, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuNewGame);
- AddTextPrinterParameterized3(4, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuMysteryGift);
- AddTextPrinterParameterized3(5, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuOption);
- fmt_savegame();
+ AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue);
+ AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
+ AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuMysteryGift);
+ AddTextPrinterParameterized3(5, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuOption);
+ MainMenu_FormatSavegameText();
PutWindowTilemap(2);
PutWindowTilemap(3);
PutWindowTilemap(4);
@@ -705,12 +710,12 @@ void Task_DisplayMainMenu(u8 taskId)
FillWindowPixelBuffer(4, 0xAA);
FillWindowPixelBuffer(5, 0xAA);
FillWindowPixelBuffer(6, 0xAA);
- AddTextPrinterParameterized3(2, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuContinue);
- AddTextPrinterParameterized3(3, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuNewGame);
- AddTextPrinterParameterized3(4, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuMysteryGift2);
- AddTextPrinterParameterized3(5, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuMysteryEvents);
- AddTextPrinterParameterized3(6, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuOption);
- fmt_savegame();
+ AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue);
+ AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
+ AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuMysteryGift2);
+ AddTextPrinterParameterized3(5, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuMysteryEvents);
+ AddTextPrinterParameterized3(6, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuOption);
+ MainMenu_FormatSavegameText();
PutWindowTilemap(2);
PutWindowTilemap(3);
PutWindowTilemap(4);
@@ -741,13 +746,13 @@ void Task_DisplayMainMenu(u8 taskId)
}
}
-void Task_HighlightSelectedMainMenuItem(u8 taskId)
+static void Task_HighlightSelectedMainMenuItem(u8 taskId)
{
HighlightSelectedMainMenuItem(gTasks[taskId].tMenuType, gTasks[taskId].tCurrItem, gTasks[taskId].tIsScrolled);
gTasks[taskId].func = Task_HandleMainMenuInput;
}
-bool8 HandleMainMenuInput(u8 taskId)
+static bool8 HandleMainMenuInput(u8 taskId)
{
s16* data = gTasks[taskId].data;
@@ -793,13 +798,13 @@ bool8 HandleMainMenuInput(u8 taskId)
return FALSE;
}
-void Task_HandleMainMenuInput(u8 taskId)
+static void Task_HandleMainMenuInput(u8 taskId)
{
if (HandleMainMenuInput(taskId))
gTasks[taskId].func = Task_HighlightSelectedMainMenuItem;
}
-void Task_HandleMainMenuAPressed(u8 taskId)
+static void Task_HandleMainMenuAPressed(u8 taskId)
{
bool8 wirelessAdapterConnected;
u8 action;
@@ -925,7 +930,7 @@ void Task_HandleMainMenuAPressed(u8 taskId)
default:
gPlttBufferUnfaded[0] = RGB_BLACK;
gPlttBufferFaded[0] = RGB_BLACK;
- gTasks[taskId].func = task_new_game_prof_birch_speech_1;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_Init;
break;
case ACTION_CONTINUE:
gPlttBufferUnfaded[0] = RGB_BLACK;
@@ -972,7 +977,7 @@ void Task_HandleMainMenuAPressed(u8 taskId)
}
}
-void Task_HandleMainMenuBPressed(u8 taskId)
+static void Task_HandleMainMenuBPressed(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -985,7 +990,7 @@ void Task_HandleMainMenuBPressed(u8 taskId)
}
}
-void Task_DisplayMainMenuInvalidActionError(u8 taskId)
+static void Task_DisplayMainMenuInvalidActionError(u8 taskId)
{
switch (gTasks[taskId].tCurrItem)
{
@@ -1033,7 +1038,7 @@ void Task_DisplayMainMenuInvalidActionError(u8 taskId)
#undef tArrowTaskIsScrolled
-void HighlightSelectedMainMenuItem(u8 menuType, u8 selectedMenuItem, s16 isScrolled)
+static void HighlightSelectedMainMenuItem(u8 menuType, u8 selectedMenuItem, s16 isScrolled)
{
SetGpuReg(REG_OFFSET_WIN0H, MENU_WIN_HCOORDS);
@@ -1118,11 +1123,21 @@ void HighlightSelectedMainMenuItem(u8 menuType, u8 selectedMenuItem, s16 isScrol
}
}
-void task_new_game_prof_birch_speech_1(u8 taskId)
+#define tPlayerSpriteId data[2]
+#define tBG1HOFS data[4]
+#define tIsDoneFadingSprites data[5]
+#define tPlayerGender data[6]
+#define tTimer data[7]
+#define tBirchSpriteId data[8]
+#define tLotadSpriteId data[9]
+#define tBrendanSpriteId data[10]
+#define tMaySpriteId data[11]
+
+static void Task_NewGameBirchSpeech_Init(u8 taskId)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
- InitBgFromTemplate(&gUnknown_082FF0F0);
+ InitBgFromTemplate(&sBirchBgTemplate);
SetGpuReg(REG_OFFSET_WIN0H, 0);
SetGpuReg(REG_OFFSET_WIN0V, 0);
SetGpuReg(REG_OFFSET_WININ, 0);
@@ -1131,518 +1146,522 @@ void task_new_game_prof_birch_speech_1(u8 taskId)
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
- LZ77UnCompVram(gBirchIntroShadowGfx, (void*)VRAM);
- LZ77UnCompVram(gUnknown_082FEEF0, (void*)(VRAM + 0x3800));
- LoadPalette(gUnknown_082FECFC, 0, 64);
- LoadPalette(gUnknown_082FF028, 1, 16);
+ LZ77UnCompVram(sBirchSpeechShadowGfx, (void*)VRAM);
+ LZ77UnCompVram(sBirchSpeechBgMap, (void*)(VRAM + 0x3800));
+ LoadPalette(sBirchSpeechBgPals, 0, 64);
+ LoadPalette(sBirchSpeechPlatformBlackPal, 1, 16);
ScanlineEffect_Stop();
ResetSpriteData();
FreeAllSpritePalettes();
ResetAllPicSprites();
AddBirchSpeechObjects(taskId);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- gTasks[taskId].data[4] = 0;
- gTasks[taskId].func = task_new_game_prof_birch_speech_2;
- gTasks[taskId].data[2] = 0xFF;
+ gTasks[taskId].tBG1HOFS = 0;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_WaitToShowBirch;
+ gTasks[taskId].tPlayerSpriteId = 0xFF;
gTasks[taskId].data[3] = 0xFF;
- gTasks[taskId].data[7] = 0xD8;
+ gTasks[taskId].tTimer = 0xD8;
PlayBGM(MUS_DOORO_X4);
ShowBg(0);
ShowBg(1);
}
-void task_new_game_prof_birch_speech_2(u8 taskId)
+static void Task_NewGameBirchSpeech_WaitToShowBirch(u8 taskId)
{
u8 spriteId;
- if (gTasks[taskId].data[7])
+ if (gTasks[taskId].tTimer)
{
- gTasks[taskId].data[7]--;
+ gTasks[taskId].tTimer--;
}
else
{
- spriteId = gTasks[taskId].data[8];
- gSprites[spriteId].pos1.x = 0x88;
- gSprites[spriteId].pos1.y = 0x3C;
+ spriteId = gTasks[taskId].tBirchSpriteId;
+ gSprites[spriteId].pos1.x = 136;
+ gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = 1;
- sub_8031BAC(taskId, 10);
- sub_8031D34(taskId, 20);
- gTasks[taskId].data[7] = 0x50;
- gTasks[taskId].func = task_new_game_prof_birch_speech_3;
+ NewGameBirchSpeech_StartFadeInTarget1OutTarget2(taskId, 10);
+ NewGameBirchSpeech_StartFadePlatformOut(taskId, 20);
+ gTasks[taskId].tTimer = 80;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome;
}
}
-void task_new_game_prof_birch_speech_3(u8 taskId)
+static void Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome(u8 taskId)
{
- if (gTasks[taskId].data[5])
+ if (gTasks[taskId].tIsDoneFadingSprites)
{
- gSprites[gTasks[taskId].data[8]].oam.objMode = 0;
- if (gTasks[taskId].data[7])
+ gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = 0;
+ if (gTasks[taskId].tTimer)
{
- gTasks[taskId].data[7]--;
+ gTasks[taskId].tTimer--;
}
else
{
InitWindows(gUnknown_082FF080);
LoadMainMenuWindowFrameTiles(0, 0xF3);
- LoadMessageBoxGfx(0, 0xFC, 0xF0);
- unknown_rbox_to_vram(0, 1);
+ LoadMessageBoxGfx(0, 0xFC, 0xF0);
+ NewGameBirchSpeech_ShowDialogueWindow(0, 1);
PutWindowTilemap(0);
CopyWindowToVram(0, 2);
- sub_8032318(0);
+ NewGameBirchSpeech_ClearWindow(0);
StringExpandPlaceholders(gStringVar4, gText_Birch_Welcome);
AddTextPrinterForMessage(1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_4;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_ThisIsAPokemon;
}
}
}
-void task_new_game_prof_birch_speech_4(u8 taskId)
+static void Task_NewGameBirchSpeech_ThisIsAPokemon(u8 taskId)
{
- if (!gPaletteFade.active && !sub_8197224())
+ if (!gPaletteFade.active && !RunTextPrintersAndIsPrinter0Active())
{
- gTasks[taskId].func = task_new_game_prof_birch_speech_5;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_MainSpeech;
StringExpandPlaceholders(gStringVar4, gText_ThisIsAPokemon);
- AddTextPrinterWithCallbackForMessage(1, sub_80323A0);
- gUnknown_03000DD0 = taskId;
+ AddTextPrinterWithCallbackForMessage(1, NewGameBirchSpeech_ShowPokeBallPrinterCallback);
+ sBirchSpeechMainTaskId = taskId;
}
}
-void task_new_game_prof_birch_speech_5(u8 taskId)
+static void Task_NewGameBirchSpeech_MainSpeech(u8 taskId)
{
- if (!sub_8197224())
+ if (!RunTextPrintersAndIsPrinter0Active())
{
StringExpandPlaceholders(gStringVar4, gText_Birch_MainSpeech);
AddTextPrinterForMessage(1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_6;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_AndYouAre;
}
}
-void sub_8030A70(u8 taskId)
+#define tState data[0]
+
+static void Task_NewGameBirchSpeechSub_InitPokeBall(u8 taskId)
{
- u8 spriteId = gTasks[gUnknown_03000DD0].data[9];
+ u8 spriteId = gTasks[sBirchSpeechMainTaskId].tLotadSpriteId;
- gSprites[spriteId].pos1.x = 0x64;
- gSprites[spriteId].pos1.y = 0x4B;
+ gSprites[spriteId].pos1.x = 100;
+ gSprites[spriteId].pos1.y = 75;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].data[0] = 0;
- CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.paletteNum, 0x70, 0x3A, 0, 0, 0x20, 0xFFFF, SPECIES_LOTAD);
- gTasks[taskId].func = sub_8030B14;
- gTasks[gUnknown_03000DD0].data[7] = 0;
+ CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.paletteNum, 112, 58, 0, 0, 32, 0x0000FFFF, SPECIES_LOTAD);
+ gTasks[taskId].func = Task_NewGameBirchSpeechSub_WaitForLotad;
+ gTasks[sBirchSpeechMainTaskId].tTimer = 0;
}
-void sub_8030B14(u8 taskId)
+static void Task_NewGameBirchSpeechSub_WaitForLotad(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- struct Sprite *sprite = &gSprites[gTasks[gUnknown_03000DD0].data[9]];
+ struct Sprite *sprite = &gSprites[gTasks[sBirchSpeechMainTaskId].tLotadSpriteId];
- switch (data[0])
+ switch (tState)
{
case 0:
if (sprite->callback == SpriteCallbackDummy)
{
sprite->oam.affineMode = 0;
- goto _08030B98_inc_data0;
+ goto incrementStateAndTimer;
}
break;
case 1:
- if (gTasks[gUnknown_03000DD0].data[7] >= 0x60)
+ if (gTasks[sBirchSpeechMainTaskId].tTimer >= 96)
{
DestroyTask(taskId);
- if (gTasks[gUnknown_03000DD0].data[7] < 0x4000)
- gTasks[gUnknown_03000DD0].data[7]++;
+ if (gTasks[sBirchSpeechMainTaskId].tTimer < 0x4000)
+ gTasks[sBirchSpeechMainTaskId].tTimer++;
}
break;
- _08030B98_inc_data0:
+ incrementStateAndTimer:
default:
- data[0]++;
- if (gTasks[gUnknown_03000DD0].data[7] < 0x4000)
- gTasks[gUnknown_03000DD0].data[7]++;
+ tState++;
+ if (gTasks[sBirchSpeechMainTaskId].tTimer < 0x4000)
+ gTasks[sBirchSpeechMainTaskId].tTimer++;
break;
}
}
-void task_new_game_prof_birch_speech_6(u8 taskId)
+#undef tState
+
+static void Task_NewGameBirchSpeech_AndYouAre(u8 taskId)
{
- if (!sub_8197224())
+ if (!RunTextPrintersAndIsPrinter0Active())
{
gUnknown_02022D04 = 0;
StringExpandPlaceholders(gStringVar4, gText_Birch_AndYouAre);
AddTextPrinterForMessage(1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_7;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_StartBirchLotadPlatformFade;
}
}
-void task_new_game_prof_birch_speech_7(u8 taskId)
+static void Task_NewGameBirchSpeech_StartBirchLotadPlatformFade(u8 taskId)
{
- if (!sub_8197224())
+ if (!RunTextPrintersAndIsPrinter0Active())
{
- gSprites[gTasks[taskId].data[8]].oam.objMode = 1;
- gSprites[gTasks[taskId].data[9]].oam.objMode = 1;
- sub_8031ACC(taskId, 2);
- sub_8031C88(taskId, 1);
- gTasks[taskId].data[7] = 0x40;
- gTasks[taskId].func = task_new_game_prof_birch_speech_8;
+ gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = 1;
+ gSprites[gTasks[taskId].tLotadSpriteId].oam.objMode = 1;
+ NewGameBirchSpeech_StartFadeOutTarget1InTarget2(taskId, 2);
+ NewGameBirchSpeech_StartFadePlatformIn(taskId, 1);
+ gTasks[taskId].tTimer = 64;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_SlidePlatformAway;
}
}
-void task_new_game_prof_birch_speech_8(u8 taskId)
+static void Task_NewGameBirchSpeech_SlidePlatformAway(u8 taskId)
{
- if (gTasks[taskId].data[4] != -60)
+ if (gTasks[taskId].tBG1HOFS != -60)
{
- gTasks[taskId].data[4] -= 2;
- SetGpuReg(REG_OFFSET_BG1HOFS, gTasks[taskId].data[4]);
+ gTasks[taskId].tBG1HOFS -= 2;
+ SetGpuReg(REG_OFFSET_BG1HOFS, gTasks[taskId].tBG1HOFS);
}
else
{
- gTasks[taskId].data[4] = -60;
- gTasks[taskId].func = task_new_game_prof_birch_speech_9;
+ gTasks[taskId].tBG1HOFS = -60;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_StartPlayerFadeIn;
}
}
-void task_new_game_prof_birch_speech_9(u8 taskId)
+static void Task_NewGameBirchSpeech_StartPlayerFadeIn(u8 taskId)
{
- if (gTasks[taskId].data[5])
+ if (gTasks[taskId].tIsDoneFadingSprites)
{
- gSprites[gTasks[taskId].data[8]].invisible = TRUE;
- gSprites[gTasks[taskId].data[9]].invisible = TRUE;
- if (gTasks[taskId].data[7])
+ gSprites[gTasks[taskId].tBirchSpriteId].invisible = TRUE;
+ gSprites[gTasks[taskId].tLotadSpriteId].invisible = TRUE;
+ if (gTasks[taskId].tTimer)
{
- gTasks[taskId].data[7]--;
+ gTasks[taskId].tTimer--;
}
else
{
- u8 spriteId = gTasks[taskId].data[10];
+ u8 spriteId = gTasks[taskId].tBrendanSpriteId;
- gSprites[spriteId].pos1.x = 0xB4;
- gSprites[spriteId].pos1.y = 0x3C;
+ gSprites[spriteId].pos1.x = 180;
+ gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = 1;
- gTasks[taskId].data[2] = spriteId;
- gTasks[taskId].data[6] = 0;
- sub_8031BAC(taskId, 2);
- sub_8031D34(taskId, 1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_10;
+ gTasks[taskId].tPlayerSpriteId = spriteId;
+ gTasks[taskId].tPlayerGender = MALE;
+ NewGameBirchSpeech_StartFadeInTarget1OutTarget2(taskId, 2);
+ NewGameBirchSpeech_StartFadePlatformOut(taskId, 1);
+ gTasks[taskId].func = Task_NewGameBirchSpeech_WaitForPlayerFadeIn;
}
}
}
-void task_new_game_prof_birch_speech_10(u8 taskId)
+static void Task_NewGameBirchSpeech_WaitForPlayerFadeIn(u8 taskId)
{
- if (gTasks[taskId].data[5])
+ if (gTasks[taskId].tIsDoneFadingSprites)
{
- gSprites[gTasks[taskId].data[2]].oam.objMode = 0;
- gTasks[taskId].func = task_new_game_prof_birch_speech_11;
+ gSprites[gTasks[taskId].tPlayerSpriteId].oam.objMode = 0;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_BoyOrGirl;
}
}
-void task_new_game_prof_birch_speech_11(u8 taskId)
+static void Task_NewGameBirchSpeech_BoyOrGirl(u8 taskId)
{
- sub_8032318(0);
+ NewGameBirchSpeech_ClearWindow(0);
StringExpandPlaceholders(gStringVar4, gText_Birch_BoyOrGirl);
AddTextPrinterForMessage(1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_12;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_WaitToShowGenderMenu;
}
-void task_new_game_prof_birch_speech_12(u8 taskId)
+static void Task_NewGameBirchSpeech_WaitToShowGenderMenu(u8 taskId)
{
- if (!sub_8197224())
+ if (!RunTextPrintersAndIsPrinter0Active())
{
- sub_8031D74();
- gTasks[taskId].func = task_new_game_prof_birch_speech_13;
+ NewGameBirchSpeech_ShowGenderMenu();
+ gTasks[taskId].func = Task_NewGameBirchSpeech_ChooseGender;
}
}
-void task_new_game_prof_birch_speech_13(u8 taskId)
+static void Task_NewGameBirchSpeech_ChooseGender(u8 taskId)
{
- int gender = sub_8031DB4();
- int r3;
+ int gender = NewGameBirchSpeech_ProcessGenderMenuInput();
+ int gender2;
switch (gender)
{
case MALE:
PlaySE(SE_SELECT);
gSaveBlock2Ptr->playerGender = gender;
- sub_80322E0(1, 1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_14;
+ NewGameBirchSpeech_ClearGenderWindow(1, 1);
+ gTasks[taskId].func = Task_NewGameBirchSpeech_WhatsYourName;
break;
case FEMALE:
PlaySE(SE_SELECT);
gSaveBlock2Ptr->playerGender = gender;
- sub_80322E0(1, 1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_14;
+ NewGameBirchSpeech_ClearGenderWindow(1, 1);
+ gTasks[taskId].func = Task_NewGameBirchSpeech_WhatsYourName;
break;
}
- r3 = GetMenuCursorPos();
- if (r3 != gTasks[taskId].data[6])
+ gender2 = GetMenuCursorPos();
+ if (gender2 != gTasks[taskId].tPlayerGender)
{
- gTasks[taskId].data[6] = r3;
- gSprites[gTasks[taskId].data[2]].oam.objMode = 1;
- sub_8031ACC(taskId, 0);
- gTasks[taskId].func = sub_8030ED4;
+ gTasks[taskId].tPlayerGender = gender2;
+ gSprites[gTasks[taskId].tPlayerSpriteId].oam.objMode = 1;
+ NewGameBirchSpeech_StartFadeOutTarget1InTarget2(taskId, 0);
+ gTasks[taskId].func = Task_NewGameBirchSpeech_SlideOutOldGenderSprite;
}
}
-void sub_8030ED4(u8 taskId)
+static void Task_NewGameBirchSpeech_SlideOutOldGenderSprite(u8 taskId)
{
- u8 spriteId = gTasks[taskId].data[2];
- if (gTasks[taskId].data[5] == 0)
+ u8 spriteId = gTasks[taskId].tPlayerSpriteId;
+ if (gTasks[taskId].tIsDoneFadingSprites == 0)
{
gSprites[spriteId].pos1.x += 4;
}
else
{
gSprites[spriteId].invisible = TRUE;
- if (gTasks[taskId].data[6])
- spriteId = gTasks[taskId].data[11];
+ if (gTasks[taskId].tPlayerGender != MALE)
+ spriteId = gTasks[taskId].tMaySpriteId;
else
- spriteId = gTasks[taskId].data[10];
- gSprites[spriteId].pos1.x = 0xF0;
- gSprites[spriteId].pos1.y = 0x3C;
+ spriteId = gTasks[taskId].tBrendanSpriteId;
+ gSprites[spriteId].pos1.x = 240;
+ gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
- gTasks[taskId].data[2] = spriteId;
+ gTasks[taskId].tPlayerSpriteId = spriteId;
gSprites[spriteId].oam.objMode = 1;
- sub_8031BAC(taskId, 0);
- gTasks[taskId].func = sub_8030F7C;
+ NewGameBirchSpeech_StartFadeInTarget1OutTarget2(taskId, 0);
+ gTasks[taskId].func = Task_NewGameBirchSpeech_SlideInNewGenderSprite;
}
}
-void sub_8030F7C(u8 taskId)
+static void Task_NewGameBirchSpeech_SlideInNewGenderSprite(u8 taskId)
{
- u8 spriteId = gTasks[taskId].data[2];
+ u8 spriteId = gTasks[taskId].tPlayerSpriteId;
- if (gSprites[spriteId].pos1.x > 0xB4)
+ if (gSprites[spriteId].pos1.x > 180)
{
gSprites[spriteId].pos1.x -= 4;
}
else
{
- gSprites[spriteId].pos1.x = 0xB4;
- if (gTasks[taskId].data[5])
+ gSprites[spriteId].pos1.x = 180;
+ if (gTasks[taskId].tIsDoneFadingSprites)
{
gSprites[spriteId].oam.objMode = 0;
- gTasks[taskId].func = task_new_game_prof_birch_speech_13;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_ChooseGender;
}
}
}
-void task_new_game_prof_birch_speech_14(u8 taskId)
+static void Task_NewGameBirchSpeech_WhatsYourName(u8 taskId)
{
- sub_8032318(0);
+ NewGameBirchSpeech_ClearWindow(0);
StringExpandPlaceholders(gStringVar4, gText_Birch_WhatsYourName);
AddTextPrinterForMessage(1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_15;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_WaitForWhatsYourNameToPrint;
}
-void task_new_game_prof_birch_speech_15(u8 taskId)
+static void Task_NewGameBirchSpeech_WaitForWhatsYourNameToPrint(u8 taskId)
{
- if (!sub_8197224())
- gTasks[taskId].func = task_new_game_prof_birch_speech_16;
+ if (!RunTextPrintersAndIsPrinter0Active())
+ gTasks[taskId].func = Task_NewGameBirchSpeech_WaitPressBeforeNameChoice;
}
-void task_new_game_prof_birch_speech_16(u8 taskId)
+static void Task_NewGameBirchSpeech_WaitPressBeforeNameChoice(u8 taskId)
{
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
- gTasks[taskId].func = task_new_game_prof_birch_speech_17;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_StartNamingScreen;
}
}
-void task_new_game_prof_birch_speech_17(u8 taskId)
+static void Task_NewGameBirchSpeech_StartNamingScreen(u8 taskId)
{
if (!gPaletteFade.active)
{
FreeAllWindowBuffers();
- FreeAndDestroyMonPicSprite(gTasks[taskId].data[9]);
- set_default_player_name(Random() % 20);
+ FreeAndDestroyMonPicSprite(gTasks[taskId].tLotadSpriteId);
+ NewGameBirchSpeech_SetDefaultPlayerName(Random() % 20);
DestroyTask(taskId);
- DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, new_game_prof_birch_speech_part2_start);
+ DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_NewGameBirchSpeech_ReturnFromNamingScreen);
}
}
-void task_new_game_prof_birch_speech_part2_2(u8 taskId)
+static void Task_NewGameBirchSpeech_SoItsPlayerName(u8 taskId)
{
- sub_8032318(0);
+ NewGameBirchSpeech_ClearWindow(0);
StringExpandPlaceholders(gStringVar4, gText_Birch_SoItsPlayer);
AddTextPrinterForMessage(1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_part2_3;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_CreateNameYesNo;
}
-void task_new_game_prof_birch_speech_part2_3(u8 taskId)
+static void Task_NewGameBirchSpeech_CreateNameYesNo(u8 taskId)
{
- if (!sub_8197224())
+ if (!RunTextPrintersAndIsPrinter0Active())
{
- sub_80323CC(2, 1, 0xF3, 0xDF, 2, 15);
- gTasks[taskId].func = task_new_game_prof_birch_speech_part2_4;
+ CreateYesNoMenuParameterized(2, 1, 0xF3, 0xDF, 2, 15);
+ gTasks[taskId].func = Task_NewGameBirchSpeech_ProcessNameYesNoMenu;
}
}
-void task_new_game_prof_birch_speech_part2_4(u8 taskId)
+static void Task_NewGameBirchSpeech_ProcessNameYesNoMenu(u8 taskId)
{
switch (Menu_ProcessInputNoWrap_())
{
case 0:
PlaySE(SE_SELECT);
- gSprites[gTasks[taskId].data[2]].oam.objMode = 1;
- sub_8031ACC(taskId, 2);
- sub_8031C88(taskId, 1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_part2_5;
+ gSprites[gTasks[taskId].tPlayerSpriteId].oam.objMode = 1;
+ NewGameBirchSpeech_StartFadeOutTarget1InTarget2(taskId, 2);
+ NewGameBirchSpeech_StartFadePlatformIn(taskId, 1);
+ gTasks[taskId].func = Task_NewGameBirchSpeech_SlidePlatformAway2;
break;
case -1:
case 1:
PlaySE(SE_SELECT);
- gTasks[taskId].func = task_new_game_prof_birch_speech_11;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_BoyOrGirl;
}
}
-void task_new_game_prof_birch_speech_part2_5(u8 taskId)
+static void Task_NewGameBirchSpeech_SlidePlatformAway2(u8 taskId)
{
- if (gTasks[taskId].data[4])
+ if (gTasks[taskId].tBG1HOFS)
{
- gTasks[taskId].data[4] += 2;
- SetGpuReg(REG_OFFSET_BG1HOFS, gTasks[taskId].data[4]);
+ gTasks[taskId].tBG1HOFS += 2;
+ SetGpuReg(REG_OFFSET_BG1HOFS, gTasks[taskId].tBG1HOFS);
}
else
{
- gTasks[taskId].func = task_new_game_prof_birch_speech_part2_6;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_ReshowBirchLotad;
}
}
-void task_new_game_prof_birch_speech_part2_6(u8 taskId)
+static void Task_NewGameBirchSpeech_ReshowBirchLotad(u8 taskId)
{
u8 spriteId;
- if (gTasks[taskId].data[5])
+ if (gTasks[taskId].tIsDoneFadingSprites)
{
- gSprites[gTasks[taskId].data[10]].invisible = TRUE;
- gSprites[gTasks[taskId].data[11]].invisible = TRUE;
- spriteId = gTasks[taskId].data[8];
- gSprites[spriteId].pos1.x = 0x88;
- gSprites[spriteId].pos1.y = 0x3C;
+ gSprites[gTasks[taskId].tBrendanSpriteId].invisible = TRUE;
+ gSprites[gTasks[taskId].tMaySpriteId].invisible = TRUE;
+ spriteId = gTasks[taskId].tBirchSpriteId;
+ gSprites[spriteId].pos1.x = 136;
+ gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = 1;
- spriteId = gTasks[taskId].data[9];
- gSprites[spriteId].pos1.x = 0x64;
- gSprites[spriteId].pos1.y = 0x4B;
+ spriteId = gTasks[taskId].tLotadSpriteId;
+ gSprites[spriteId].pos1.x = 100;
+ gSprites[spriteId].pos1.y = 75;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = 1;
- sub_8031BAC(taskId, 2);
- sub_8031D34(taskId, 1);
- sub_8032318(0);
+ NewGameBirchSpeech_StartFadeInTarget1OutTarget2(taskId, 2);
+ NewGameBirchSpeech_StartFadePlatformOut(taskId, 1);
+ NewGameBirchSpeech_ClearWindow(0);
StringExpandPlaceholders(gStringVar4, gText_Birch_YourePlayer);
AddTextPrinterForMessage(1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_part2_7;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_WaitForSpriteFadeInAndTextPrinter;
}
}
-void task_new_game_prof_birch_speech_part2_7(u8 taskId)
+static void Task_NewGameBirchSpeech_WaitForSpriteFadeInAndTextPrinter(u8 taskId)
{
- if (gTasks[taskId].data[5])
+ if (gTasks[taskId].tIsDoneFadingSprites)
{
- gSprites[gTasks[taskId].data[8]].oam.objMode = 0;
- gSprites[gTasks[taskId].data[9]].oam.objMode = 0;
- if (!sub_8197224())
+ gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = 0;
+ gSprites[gTasks[taskId].tLotadSpriteId].oam.objMode = 0;
+ if (!RunTextPrintersAndIsPrinter0Active())
{
- gSprites[gTasks[taskId].data[8]].oam.objMode = 1;
- gSprites[gTasks[taskId].data[9]].oam.objMode = 1;
- sub_8031ACC(taskId, 2);
- sub_8031C88(taskId, 1);
- gTasks[taskId].data[7] = 64;
- gTasks[taskId].func = task_new_game_prof_birch_speech_part2_8;
+ gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = 1;
+ gSprites[gTasks[taskId].tLotadSpriteId].oam.objMode = 1;
+ NewGameBirchSpeech_StartFadeOutTarget1InTarget2(taskId, 2);
+ NewGameBirchSpeech_StartFadePlatformIn(taskId, 1);
+ gTasks[taskId].tTimer = 64;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_AreYouReady;
}
}
}
-void task_new_game_prof_birch_speech_part2_8(u8 taskId)
+static void Task_NewGameBirchSpeech_AreYouReady(u8 taskId)
{
u8 spriteId;
- if (gTasks[taskId].data[5])
+ if (gTasks[taskId].tIsDoneFadingSprites)
{
- gSprites[gTasks[taskId].data[8]].invisible = TRUE;
- gSprites[gTasks[taskId].data[9]].invisible = TRUE;
- if (gTasks[taskId].data[7])
+ gSprites[gTasks[taskId].tBirchSpriteId].invisible = TRUE;
+ gSprites[gTasks[taskId].tLotadSpriteId].invisible = TRUE;
+ if (gTasks[taskId].tTimer)
{
- gTasks[taskId].data[7]--;
+ gTasks[taskId].tTimer--;
return;
}
if (gSaveBlock2Ptr->playerGender != MALE)
- spriteId = gTasks[taskId].data[11];
+ spriteId = gTasks[taskId].tMaySpriteId;
else
- spriteId = gTasks[taskId].data[10];
- gSprites[spriteId].pos1.x = 0x78;
- gSprites[spriteId].pos1.y = 0x3C;
+ spriteId = gTasks[taskId].tBrendanSpriteId;
+ gSprites[spriteId].pos1.x = 120;
+ gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = 1;
- gTasks[taskId].data[2] = spriteId;
- sub_8031BAC(taskId, 2);
- sub_8031D34(taskId, 1);
+ gTasks[taskId].tPlayerSpriteId = spriteId;
+ NewGameBirchSpeech_StartFadeInTarget1OutTarget2(taskId, 2);
+ NewGameBirchSpeech_StartFadePlatformOut(taskId, 1);
StringExpandPlaceholders(gStringVar4, gText_Birch_AreYouReady);
AddTextPrinterForMessage(1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_part2_9;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_ShrinkPlayer;
}
}
-void task_new_game_prof_birch_speech_part2_9(u8 taskId)
+static void Task_NewGameBirchSpeech_ShrinkPlayer(u8 taskId)
{
u8 spriteId;
- if (gTasks[taskId].data[5])
+ if (gTasks[taskId].tIsDoneFadingSprites)
{
- gSprites[gTasks[taskId].data[2]].oam.objMode = 0;
- if (!sub_8197224())
+ gSprites[gTasks[taskId].tPlayerSpriteId].oam.objMode = 0;
+ if (!RunTextPrintersAndIsPrinter0Active())
{
- spriteId = gTasks[taskId].data[2];
+ spriteId = gTasks[taskId].tPlayerSpriteId;
gSprites[spriteId].oam.affineMode = 1;
- gSprites[spriteId].affineAnims = &gUnknown_082FF114;
+ gSprites[spriteId].affineAnims = sSpriteAffineAnimTable_PlayerShrink;
InitSpriteAffineAnim(&gSprites[spriteId]);
StartSpriteAffineAnim(&gSprites[spriteId], 0);
- gSprites[spriteId].callback = sub_80318D8;
+ gSprites[spriteId].callback = SpriteCB_MovePlayerDownWhileShrinking;
BeginNormalPaletteFade(0x0000FFFF, 0, 0, 16, RGB_BLACK);
FadeOutBGM(4);
- gTasks[taskId].func = task_new_game_prof_birch_speech_part2_10;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_WaitForPlayerShrink;
}
}
}
-void task_new_game_prof_birch_speech_part2_10(u8 taskId)
+static void Task_NewGameBirchSpeech_WaitForPlayerShrink(u8 taskId)
{
- u8 spriteId = gTasks[taskId].data[2];
+ u8 spriteId = gTasks[taskId].tPlayerSpriteId;
if (gSprites[spriteId].affineAnimEnded)
- gTasks[taskId].func = task_new_game_prof_birch_speech_part2_11;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_FadePlayerToWhite;
}
-void task_new_game_prof_birch_speech_part2_11(u8 taskId)
+static void Task_NewGameBirchSpeech_FadePlayerToWhite(u8 taskId)
{
u8 spriteId;
if (!gPaletteFade.active)
{
- spriteId = gTasks[taskId].data[2];
+ spriteId = gTasks[taskId].tPlayerSpriteId;
gSprites[spriteId].callback = nullsub_11;
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
BeginNormalPaletteFade(0xFFFF0000, 0, 0, 16, RGB_WHITEALPHA);
- gTasks[taskId].func = task_new_game_prof_birch_speech_part2_12;
+ gTasks[taskId].func = Task_NewGameBirchSpeech_Cleanup;
}
}
-void task_new_game_prof_birch_speech_part2_12(u8 taskId)
+static void Task_NewGameBirchSpeech_Cleanup(u8 taskId)
{
if (!gPaletteFade.active)
{
FreeAllWindowBuffers();
- FreeAndDestroyMonPicSprite(gTasks[taskId].data[9]);
+ FreeAndDestroyMonPicSprite(gTasks[taskId].tLotadSpriteId);
ResetAllPicSprites();
SetMainCallback2(CB2_NewGame);
DestroyTask(taskId);
}
}
-void new_game_prof_birch_speech_part2_start(void)
+static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void)
{
u8 taskId;
u8 spriteId;
@@ -1651,8 +1670,8 @@ void new_game_prof_birch_speech_part2_start(void)
ResetBgsAndClearDma3BusyFlags(0);
SetGpuReg(REG_OFFSET_DISPCNT, 0);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
- InitBgsFromTemplates(0, gUnknown_082FF0E8, 2);
- InitBgFromTemplate(&gUnknown_082FF0F0);
+ InitBgsFromTemplates(0, sMainMenuBgTemplates, 2);
+ InitBgFromTemplate(&sBirchBgTemplate);
SetVBlankCallback(NULL);
SetGpuReg(REG_OFFSET_BG2CNT, 0);
SetGpuReg(REG_OFFSET_BG1CNT, 0);
@@ -1667,14 +1686,14 @@ void new_game_prof_birch_speech_part2_start(void)
DmaFill32(3, 0, OAM, OAM_SIZE);
DmaFill16(3, 0, PLTT, PLTT_SIZE);
ResetPaletteFade();
- LZ77UnCompVram(gBirchIntroShadowGfx, (u8*)VRAM);
- LZ77UnCompVram(gUnknown_082FEEF0, (u8*)(VRAM + 0x3800));
- LoadPalette(gUnknown_082FECFC, 0, 64);
- LoadPalette(&gUnknown_082FF018[1], 1, 16);
+ LZ77UnCompVram(sBirchSpeechShadowGfx, (u8*)VRAM);
+ LZ77UnCompVram(sBirchSpeechBgMap, (u8*)(VRAM + 0x3800));
+ LoadPalette(sBirchSpeechBgPals, 0, 64);
+ LoadPalette(&sBirchSpeechBgGradientPal[1], 1, 16);
ResetTasks();
- taskId = CreateTask(task_new_game_prof_birch_speech_part2_1, 0);
- gTasks[taskId].data[7] = 5;
- gTasks[taskId].data[4] = -60;
+ taskId = CreateTask(Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox, 0);
+ gTasks[taskId].tTimer = 5;
+ gTasks[taskId].tBG1HOFS = -60;
ScanlineEffect_Stop();
ResetSpriteData();
FreeAllSpritePalettes();
@@ -1682,18 +1701,18 @@ void new_game_prof_birch_speech_part2_start(void)
AddBirchSpeechObjects(taskId);
if (gSaveBlock2Ptr->playerGender != MALE)
{
- gTasks[taskId].data[6] = FEMALE;
- spriteId = gTasks[taskId].data[11];
+ gTasks[taskId].tPlayerGender = FEMALE;
+ spriteId = gTasks[taskId].tMaySpriteId;
}
else
{
- gTasks[taskId].data[6] = MALE;
- spriteId = gTasks[taskId].data[10];
+ gTasks[taskId].tPlayerGender = MALE;
+ spriteId = gTasks[taskId].tBrendanSpriteId;
}
- gSprites[spriteId].pos1.x = 0xB4;
- gSprites[spriteId].pos1.y = 0x3C;
+ gSprites[spriteId].pos1.x = 180;
+ gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
- gTasks[taskId].data[2] = spriteId;
+ gTasks[taskId].tPlayerSpriteId = spriteId;
SetGpuReg(REG_OFFSET_BG1HOFS, -60);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
SetGpuReg(REG_OFFSET_WIN0H, 0);
@@ -1718,11 +1737,11 @@ void new_game_prof_birch_speech_part2_start(void)
CopyWindowToVram(0, 3);
}
-void nullsub_11(struct Sprite *sprite)
+static void nullsub_11(struct Sprite *sprite)
{
}
-void sub_80318D8(struct Sprite *sprite)
+static void SpriteCB_MovePlayerDownWhileShrinking(struct Sprite *sprite)
{
u32 y;
@@ -1731,201 +1750,236 @@ void sub_80318D8(struct Sprite *sprite)
sprite->data[0] = y;
}
-u8 sub_80318F4(u8 a, u8 b)
+static u8 NewGameBirchSpeech_CreateLotadSprite(u8 a, u8 b)
{
return CreatePicSprite2(SPECIES_LOTAD, 8, 0, 1, a, b, 14, -1);
}
-void AddBirchSpeechObjects(u8 taskId)
-{
- u8 spriteId = AddNewGameBirchObject(0x88, 0x3C, 1);
- u8 spriteId2;
- u8 spriteId3;
- u8 spriteId4;
-
- gSprites[spriteId].callback = nullsub_11;
- gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].invisible = TRUE;
- gTasks[taskId].data[8] = spriteId;
- spriteId2 = sub_80318F4(100, 0x4B);
- gSprites[spriteId2].callback = nullsub_11;
- gSprites[spriteId2].oam.priority = 0;
- gSprites[spriteId2].invisible = TRUE;
- gTasks[taskId].data[9] = spriteId2;
- spriteId3 = CreateTrainerSprite(FacilityClassToPicIndex(0x3C), 0x78, 0x3C, 0, gDecompressionBuffer);
- gSprites[spriteId3].callback = nullsub_11;
- gSprites[spriteId3].invisible = TRUE;
- gSprites[spriteId3].oam.priority = 0;
- gTasks[taskId].data[10] = spriteId3;
- spriteId4 = CreateTrainerSprite(FacilityClassToPicIndex(0x3F), 0x78, 0x3C, 0, &gDecompressionBuffer[0x800]);
- gSprites[spriteId4].callback = nullsub_11;
- gSprites[spriteId4].invisible = TRUE;
- gSprites[spriteId4].oam.priority = 0;
- gTasks[taskId].data[11] = spriteId4;
-}
-
-void sub_8031A5C(u8 taskId)
-{
- int alpha;
-
- if (gTasks[taskId].data[1] == 0)
- {
- gTasks[gTasks[taskId].data[0]].data[5] = 1;
+static void AddBirchSpeechObjects(u8 taskId)
+{
+ u8 birchSpriteId;
+ u8 lotadSpriteId;
+ u8 brendanSpriteId;
+ u8 maySpriteId;
+
+ birchSpriteId = AddNewGameBirchObject(0x88, 0x3C, 1);
+ gSprites[birchSpriteId].callback = nullsub_11;
+ gSprites[birchSpriteId].oam.priority = 0;
+ gSprites[birchSpriteId].invisible = TRUE;
+ gTasks[taskId].tBirchSpriteId = birchSpriteId;
+ lotadSpriteId = NewGameBirchSpeech_CreateLotadSprite(100, 0x4B);
+ gSprites[lotadSpriteId].callback = nullsub_11;
+ gSprites[lotadSpriteId].oam.priority = 0;
+ gSprites[lotadSpriteId].invisible = TRUE;
+ gTasks[taskId].tLotadSpriteId = lotadSpriteId;
+ brendanSpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_BRENDAN), 120, 60, 0, &gDecompressionBuffer[0]);
+ gSprites[brendanSpriteId].callback = nullsub_11;
+ gSprites[brendanSpriteId].invisible = TRUE;
+ gSprites[brendanSpriteId].oam.priority = 0;
+ gTasks[taskId].tBrendanSpriteId = brendanSpriteId;
+ maySpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_MAY), 120, 60, 0, &gDecompressionBuffer[0x800]);
+ gSprites[maySpriteId].callback = nullsub_11;
+ gSprites[maySpriteId].invisible = TRUE;
+ gSprites[maySpriteId].oam.priority = 0;
+ gTasks[taskId].tMaySpriteId = maySpriteId;
+}
+
+#undef tPlayerSpriteId
+#undef tBG1HOFS
+#undef tPlayerGender
+#undef tBirchSpriteId
+#undef tLotadSpriteId
+#undef tBrendanSpriteId
+#undef tMaySpriteId
+
+#define tMainTask data[0]
+#define tAlphaCoeff1 data[1]
+#define tAlphaCoeff2 data[2]
+#define tDelay data[3]
+#define tDelayTimer data[4]
+
+static void Task_NewGameBirchSpeech_FadeOutTarget1InTarget2(u8 taskId)
+{
+ int alphaCoeff2;
+
+ if (gTasks[taskId].tAlphaCoeff1 == 0)
+ {
+ gTasks[gTasks[taskId].tMainTask].tIsDoneFadingSprites = TRUE;
DestroyTask(taskId);
}
- else if (gTasks[taskId].data[4])
+ else if (gTasks[taskId].tDelayTimer)
{
- gTasks[taskId].data[4]--;
+ gTasks[taskId].tDelayTimer--;
}
else
{
- gTasks[taskId].data[4] = gTasks[taskId].data[3];
- gTasks[taskId].data[1]--;
- gTasks[taskId].data[2]++;
- alpha = gTasks[taskId].data[2] << 8;
- SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].data[1] + alpha);
+ gTasks[taskId].tDelayTimer = gTasks[taskId].tDelay;
+ gTasks[taskId].tAlphaCoeff1--;
+ gTasks[taskId].tAlphaCoeff2++;
+ alphaCoeff2 = gTasks[taskId].tAlphaCoeff2 << 8;
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].tAlphaCoeff1 + alphaCoeff2);
}
}
-void sub_8031ACC(u8 taskId, u8 a)
+static void NewGameBirchSpeech_StartFadeOutTarget1InTarget2(u8 taskId, u8 delay)
{
u8 taskId2;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_OBJ);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
SetGpuReg(REG_OFFSET_BLDY, 0);
- gTasks[taskId].data[5] = 0;
- taskId2 = CreateTask(sub_8031A5C, 0);
- gTasks[taskId2].data[0] = taskId;
- gTasks[taskId2].data[1] = 16;
- gTasks[taskId2].data[2] = 0;
- gTasks[taskId2].data[3] = a;
- gTasks[taskId2].data[4] = a;
+ gTasks[taskId].tIsDoneFadingSprites = 0;
+ taskId2 = CreateTask(Task_NewGameBirchSpeech_FadeOutTarget1InTarget2, 0);
+ gTasks[taskId2].tMainTask = taskId;
+ gTasks[taskId2].tAlphaCoeff1 = 16;
+ gTasks[taskId2].tAlphaCoeff2 = 0;
+ gTasks[taskId2].tDelay = delay;
+ gTasks[taskId2].tDelayTimer = delay;
}
-void sub_8031B3C(u8 taskId)
+static void Task_NewGameBirchSpeech_FadeInTarget1OutTarget2(u8 taskId)
{
- int alpha;
+ int alphaCoeff2;
- if (gTasks[taskId].data[1] == 16)
+ if (gTasks[taskId].tAlphaCoeff1 == 16)
{
- gTasks[gTasks[taskId].data[0]].data[5] = 1;
+ gTasks[gTasks[taskId].tMainTask].tIsDoneFadingSprites = TRUE;
DestroyTask(taskId);
}
- else if (gTasks[taskId].data[4])
+ else if (gTasks[taskId].tDelayTimer)
{
- gTasks[taskId].data[4]--;
+ gTasks[taskId].tDelayTimer--;
}
else
{
- gTasks[taskId].data[4] = gTasks[taskId].data[3];
- gTasks[taskId].data[1]++;
- gTasks[taskId].data[2]--;
- alpha = gTasks[taskId].data[2] << 8;
- SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].data[1] + alpha);
+ gTasks[taskId].tDelayTimer = gTasks[taskId].tDelay;
+ gTasks[taskId].tAlphaCoeff1++;
+ gTasks[taskId].tAlphaCoeff2--;
+ alphaCoeff2 = gTasks[taskId].tAlphaCoeff2 << 8;
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].tAlphaCoeff1 + alphaCoeff2);
}
}
-void sub_8031BAC(u8 taskId, u8 a)
+static void NewGameBirchSpeech_StartFadeInTarget1OutTarget2(u8 taskId, u8 delay)
{
u8 taskId2;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_OBJ);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
SetGpuReg(REG_OFFSET_BLDY, 0);
- gTasks[taskId].data[5] = 0;
- taskId2 = CreateTask(sub_8031B3C, 0);
- gTasks[taskId2].data[0] = taskId;
- gTasks[taskId2].data[1] = 0;
- gTasks[taskId2].data[2] = 16;
- gTasks[taskId2].data[3] = a;
- gTasks[taskId2].data[4] = a;
+ gTasks[taskId].tIsDoneFadingSprites = 0;
+ taskId2 = CreateTask(Task_NewGameBirchSpeech_FadeInTarget1OutTarget2, 0);
+ gTasks[taskId2].tMainTask = taskId;
+ gTasks[taskId2].tAlphaCoeff1 = 0;
+ gTasks[taskId2].tAlphaCoeff2 = 16;
+ gTasks[taskId2].tDelay = delay;
+ gTasks[taskId2].tDelayTimer = delay;
}
-void sub_8031C1C(u8 taskId)
+#undef tMainTask
+#undef tAlphaCoeff1
+#undef tAlphaCoeff2
+#undef tDelay
+#undef tDelayTimer
+
+#undef tIsDoneFadingSprites
+
+#define tMainTask data[0]
+#define tPalIndex data[1]
+#define tDelayBefore data[2]
+#define tDelay data[3]
+#define tDelayTimer data[4]
+
+static void Task_NewGameBirchSpeech_FadePlatformIn(u8 taskId)
{
- if (gTasks[taskId].data[2])
+ if (gTasks[taskId].tDelayBefore)
{
- gTasks[taskId].data[2]--;
+ gTasks[taskId].tDelayBefore--;
}
- else if (gTasks[taskId].data[1] == 8)
+ else if (gTasks[taskId].tPalIndex == 8)
{
DestroyTask(taskId);
}
- else if (gTasks[taskId].data[4])
+ else if (gTasks[taskId].tDelayTimer)
{
- gTasks[taskId].data[4]--;
+ gTasks[taskId].tDelayTimer--;
}
else
{
- gTasks[taskId].data[4] = gTasks[taskId].data[3];
- gTasks[taskId].data[1]++;
- LoadPalette(&gUnknown_082FF018[gTasks[taskId].data[1]], 1, 16);
+ gTasks[taskId].tDelayTimer = gTasks[taskId].tDelay;
+ gTasks[taskId].tPalIndex++;
+ LoadPalette(&sBirchSpeechBgGradientPal[gTasks[taskId].tPalIndex], 1, 16);
}
}
-void sub_8031C88(u8 taskId, u8 a)
+static void NewGameBirchSpeech_StartFadePlatformIn(u8 taskId, u8 delay)
{
u8 taskId2;
- taskId2 = CreateTask(sub_8031C1C, 0);
- gTasks[taskId2].data[0] = taskId;
- gTasks[taskId2].data[1] = 0;
- gTasks[taskId2].data[2] = 8;
- gTasks[taskId2].data[3] = a;
- gTasks[taskId2].data[4] = a;
+ taskId2 = CreateTask(Task_NewGameBirchSpeech_FadePlatformIn, 0);
+ gTasks[taskId2].tMainTask = taskId;
+ gTasks[taskId2].tPalIndex = 0;
+ gTasks[taskId2].tDelayBefore = 8;
+ gTasks[taskId2].tDelay = delay;
+ gTasks[taskId2].tDelayTimer = delay;
}
-void sub_8031CC8(u8 taskId)
+static void Task_NewGameBirchSpeech_FadePlatformOut(u8 taskId)
{
- if (gTasks[taskId].data[2])
+ if (gTasks[taskId].tDelayBefore)
{
- gTasks[taskId].data[2]--;
+ gTasks[taskId].tDelayBefore--;
}
- else if (gTasks[taskId].data[1] == 0)
+ else if (gTasks[taskId].tPalIndex == 0)
{
DestroyTask(taskId);
}
- else if (gTasks[taskId].data[4])
+ else if (gTasks[taskId].tDelayTimer)
{
- gTasks[taskId].data[4]--;
+ gTasks[taskId].tDelayTimer--;
}
else
{
- gTasks[taskId].data[4] = gTasks[taskId].data[3];
- gTasks[taskId].data[1]--;
- LoadPalette(&gUnknown_082FF018[gTasks[taskId].data[1]], 1, 16);
+ gTasks[taskId].tDelayTimer = gTasks[taskId].tDelay;
+ gTasks[taskId].tPalIndex--;
+ LoadPalette(&sBirchSpeechBgGradientPal[gTasks[taskId].tPalIndex], 1, 16);
}
}
-void sub_8031D34(u8 taskId, u8 a)
+static void NewGameBirchSpeech_StartFadePlatformOut(u8 taskId, u8 delay)
{
u8 taskId2;
- taskId2 = CreateTask(sub_8031CC8, 0);
- gTasks[taskId2].data[0] = taskId;
- gTasks[taskId2].data[1] = 8;
- gTasks[taskId2].data[2] = 8;
- gTasks[taskId2].data[3] = a;
- gTasks[taskId2].data[4] = a;
+ taskId2 = CreateTask(Task_NewGameBirchSpeech_FadePlatformOut, 0);
+ gTasks[taskId2].tMainTask = taskId;
+ gTasks[taskId2].tPalIndex = 8;
+ gTasks[taskId2].tDelayBefore = 8;
+ gTasks[taskId2].tDelay = delay;
+ gTasks[taskId2].tDelayTimer = delay;
}
-void sub_8031D74(void)
+#undef tMainTask
+#undef tPalIndex
+#undef tDelayBefore
+#undef tDelay
+#undef tDelayTimer
+
+static void NewGameBirchSpeech_ShowGenderMenu(void)
{
DrawMainMenuWindowBorder(&gUnknown_082FF080[1], 0xF3);
FillWindowPixelBuffer(1, 17);
- PrintMenuTable(1, 2, gUnknown_082FF118);
+ PrintMenuTable(1, 2, sMenuActions_Gender);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(1, 2, 0);
PutWindowTilemap(1);
CopyWindowToVram(1, 3);
}
-s8 sub_8031DB4(void)
+static s8 NewGameBirchSpeech_ProcessGenderMenuInput(void)
{
return Menu_ProcessInputNoWrapAround();
}
-void set_default_player_name(u8 nameId)
+static void NewGameBirchSpeech_SetDefaultPlayerName(u8 nameId)
{
const u8* name;
u8 i;
@@ -1939,7 +1993,7 @@ void set_default_player_name(u8 nameId)
gSaveBlock2Ptr->playerName[7] = 0xFF;
}
-void CreateMainMenuErrorWindow(const u8* str)
+static void CreateMainMenuErrorWindow(const u8* str)
{
FillWindowPixelBuffer(7, 17);
AddTextPrinterParameterized(7, 1, str, 0, 1, 2, 0);
@@ -1950,35 +2004,35 @@ void CreateMainMenuErrorWindow(const u8* str)
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(113, 159));
}
-void fmt_savegame(void)
+static void MainMenu_FormatSavegameText(void)
{
- fmt_time();
- fmt_pokedex();
- fmt_player();
- fmt_badges();
+ MainMenu_FormatSavegamePlayer();
+ MainMenu_FormatSavegamePokedex();
+ MainMenu_FormatSavegameTime();
+ MainMenu_FormatSavegameBadges();
}
-void fmt_time(void)
+static void MainMenu_FormatSavegamePlayer(void)
{
StringExpandPlaceholders(gStringVar4, gText_ContinueMenuPlayer);
- AddTextPrinterParameterized3(2, 1, 0, 17, gUnknown_082FF0E3, -1, gStringVar4);
- AddTextPrinterParameterized3(2, 1, GetStringRightAlignXOffset(1, gSaveBlock2Ptr->playerName, 100), 17, gUnknown_082FF0E3, -1, gSaveBlock2Ptr->playerName);
+ AddTextPrinterParameterized3(2, 1, 0, 17, sTextColor_PlayerGenderColor, -1, gStringVar4);
+ AddTextPrinterParameterized3(2, 1, GetStringRightAlignXOffset(1, gSaveBlock2Ptr->playerName, 100), 17, sTextColor_PlayerGenderColor, -1, gSaveBlock2Ptr->playerName);
}
-void fmt_player(void)
+static void MainMenu_FormatSavegameTime(void)
{
u8 str[0x20];
u8* ptr;
StringExpandPlaceholders(gStringVar4, gText_ContinueMenuTime);
- AddTextPrinterParameterized3(2, 1, 0x6C, 17, gUnknown_082FF0E3, -1, gStringVar4);
+ AddTextPrinterParameterized3(2, 1, 0x6C, 17, sTextColor_PlayerGenderColor, -1, gStringVar4);
ptr = ConvertIntToDecimalStringN(str, gSaveBlock2Ptr->playTimeHours, 0, 3);
*ptr = 0xF0;
ConvertIntToDecimalStringN(ptr + 1, gSaveBlock2Ptr->playTimeMinutes, 2, 2);
- AddTextPrinterParameterized3(2, 1, GetStringRightAlignXOffset(1, str, 0xD0), 17, gUnknown_082FF0E3, -1, str);
+ AddTextPrinterParameterized3(2, 1, GetStringRightAlignXOffset(1, str, 0xD0), 17, sTextColor_PlayerGenderColor, -1, str);
}
-void fmt_pokedex(void)
+static void MainMenu_FormatSavegamePokedex(void)
{
u8 str[0x20];
u16 dexCount;
@@ -1990,13 +2044,13 @@ void fmt_pokedex(void)
else
dexCount = GetHoennPokedexCount(1);
StringExpandPlaceholders(gStringVar4, gText_ContinueMenuPokedex);
- AddTextPrinterParameterized3(2, 1, 0, 33, gUnknown_082FF0E3, -1, gStringVar4);
+ AddTextPrinterParameterized3(2, 1, 0, 33, sTextColor_PlayerGenderColor, -1, gStringVar4);
ConvertIntToDecimalStringN(str, dexCount, 0, 3);
- AddTextPrinterParameterized3(2, 1, GetStringRightAlignXOffset(1, str, 100), 33, gUnknown_082FF0E3, -1, str);
+ AddTextPrinterParameterized3(2, 1, GetStringRightAlignXOffset(1, str, 100), 33, sTextColor_PlayerGenderColor, -1, str);
}
}
-void fmt_badges(void)
+static void MainMenu_FormatSavegameBadges(void)
{
u8 str[0x20];
u8 badgeCount = 0;
@@ -2008,18 +2062,18 @@ void fmt_badges(void)
badgeCount++;
}
StringExpandPlaceholders(gStringVar4, gText_ContinueMenuBadges);
- AddTextPrinterParameterized3(2, 1, 0x6C, 33, gUnknown_082FF0E3, -1, gStringVar4);
+ AddTextPrinterParameterized3(2, 1, 0x6C, 33, sTextColor_PlayerGenderColor, -1, gStringVar4);
ConvertIntToDecimalStringN(str, badgeCount, 2, 1);
- AddTextPrinterParameterized3(2, 1, GetStringRightAlignXOffset(1, str, 0xD0), 33, gUnknown_082FF0E3, -1, str);
+ AddTextPrinterParameterized3(2, 1, GetStringRightAlignXOffset(1, str, 0xD0), 33, sTextColor_PlayerGenderColor, -1, str);
}
-void LoadMainMenuWindowFrameTiles(u8 bgId, u16 tileOffset)
+static void LoadMainMenuWindowFrameTiles(u8 bgId, u16 tileOffset)
{
LoadBgTiles(bgId, GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->tiles, 0x120, tileOffset);
LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->pal, 32, 32);
}
-void DrawMainMenuWindowBorder(const struct WindowTemplate *template, u16 baseTileNum)
+static void DrawMainMenuWindowBorder(const struct WindowTemplate *template, u16 baseTileNum)
{
u16 r9 = 1 + baseTileNum;
u16 r10 = 2 + baseTileNum;
@@ -2046,42 +2100,42 @@ static void ClearMainMenuWindowTilemap(const struct WindowTemplate *template)
CopyBgTilemapBufferToVram(template->priority);
}
-void sub_8032298(u8 a, u8 b, u8 c, u8 d, u8 e, u8 unused)
+static void NewGameBirchSpeech_ClearGenderWindowTilemap(u8 a, u8 b, u8 c, u8 d, u8 e, u8 unused)
{
FillBgTilemapBufferRect(a, 0, b + 0xFF, c + 0xFF, d + 2, e + 2, 2);
}
-void sub_80322E0(u8 windowId, u8 a)
+static void NewGameBirchSpeech_ClearGenderWindow(u8 windowId, u8 a)
{
- CallWindowFunction(windowId, sub_8032298);
+ CallWindowFunction(windowId, NewGameBirchSpeech_ClearGenderWindowTilemap);
FillWindowPixelBuffer(windowId, 0x11);
ClearWindowTilemap(windowId);
if (a == 1)
CopyWindowToVram(windowId, 3);
}
-void sub_8032318(u8 a)
+static void NewGameBirchSpeech_ClearWindow(u8 windowId)
{
- u8 fontAttribute = GetFontAttribute(1, FONTATTR_COLOR_BACKGROUND);
- u8 fontAttribute2 = GetFontAttribute(1, FONTATTR_MAX_LETTER_WIDTH);
- u8 fontAttribute3 = GetFontAttribute(1, FONTATTR_MAX_LETTER_HEIGHT);
- u8 windowAttribute = GetWindowAttribute(a, WINDOW_WIDTH);
- u8 windowAttribute2 = GetWindowAttribute(a, WINDOW_HEIGHT);
+ u8 bgColor = GetFontAttribute(1, FONTATTR_COLOR_BACKGROUND);
+ u8 maxCharWidth = GetFontAttribute(1, FONTATTR_MAX_LETTER_WIDTH);
+ u8 maxCharHeight = GetFontAttribute(1, FONTATTR_MAX_LETTER_HEIGHT);
+ u8 winWidth = GetWindowAttribute(windowId, WINDOW_WIDTH);
+ u8 winHeight = GetWindowAttribute(windowId, WINDOW_HEIGHT);
- FillWindowPixelRect(a, fontAttribute, 0, 0, fontAttribute2 * windowAttribute, fontAttribute3 * windowAttribute2);
- CopyWindowToVram(a, 2);
+ FillWindowPixelRect(windowId, bgColor, 0, 0, maxCharWidth * winWidth, maxCharHeight * winHeight);
+ CopyWindowToVram(windowId, 2);
}
-void sub_80323A0(struct TextSubPrinter *printer, u16 a)
+static void NewGameBirchSpeech_ShowPokeBallPrinterCallback(struct TextSubPrinter *printer, u16 a)
{
if (*(printer->current_text_offset - 2) == 8 && gUnknown_02022D04 == 0)
{
gUnknown_02022D04 = 1;
- CreateTask(sub_8030A70, 0);
+ CreateTask(Task_NewGameBirchSpeechSub_InitPokeBall, 0);
}
}
-void sub_80323CC(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f)
+void CreateYesNoMenuParameterized(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f)
{
struct WindowTemplate sp;
@@ -2089,16 +2143,16 @@ void sub_80323CC(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f)
CreateYesNoMenu(&sp, c, e, 0);
}
-void unknown_rbox_to_vram(u8 windowId, u8 a)
+static void NewGameBirchSpeech_ShowDialogueWindow(u8 windowId, u8 copyToVram)
{
- CallWindowFunction(windowId, sub_8032474);
+ CallWindowFunction(windowId, NewGameBirchSpeech_CreateDialogueWindowBorder);
FillWindowPixelBuffer(windowId, 17);
PutWindowTilemap(windowId);
- if (a == 1)
+ if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_8032474 (u8 a, u8 b, u8 c, u8 d, u8 e, u8 f)
+static void NewGameBirchSpeech_CreateDialogueWindowBorder(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f)
{
FillBgTilemapBufferRect(a, 0xFD, b-2, c-1, 1, 1, f);
FillBgTilemapBufferRect(a, 0xFF, b-1, c-1, 1, 1, f);
@@ -2115,11 +2169,13 @@ void sub_8032474 (u8 a, u8 b, u8 c, u8 d, u8 e, u8 f)
FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0x102), b+d, c+e, 1, 1, f);
}
-void task_new_game_prof_birch_speech_part2_1(u8 taskId)
+static void Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox(u8 taskId)
{
- if (gTasks[taskId].data[7]-- <= 0)
+ if (gTasks[taskId].tTimer-- <= 0)
{
- unknown_rbox_to_vram(0, 1);
- gTasks[taskId].func = task_new_game_prof_birch_speech_part2_2;
+ NewGameBirchSpeech_ShowDialogueWindow(0, 1);
+ gTasks[taskId].func = Task_NewGameBirchSpeech_SoItsPlayerName;
}
}
+
+#undef tTimer
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index 6ebc7affa..3d3408bbb 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -668,7 +668,7 @@ static void Task_BardSong(u8 taskId)
task->tState = 3;
break;
}
- sub_8197224();
+ RunTextPrintersAndIsPrinter0Active();
}
void ScrSpecial_SetMauvilleOldManEventObjGfx(void)
diff --git a/src/menu.c b/src/menu.c
index c5d70f555..0e5d1b856 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -157,7 +157,7 @@ void sub_8197200(void)
sub_81973A4();
}
-u16 sub_8197224(void)
+u16 RunTextPrintersAndIsPrinter0Active(void)
{
RunTextPrinters();
return IsTextPrinterActive(0);
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index a5e328e4a..5a7d4ae83 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -1,896 +1,922 @@
#include "global.h"
#include "metatile_behavior.h"
-#include "metatile_behaviors.h"
+#include "constants/metatile_behaviors.h"
#define TILE_FLAG_ENCOUNTER_TILE 1
#define TILE_FLAG_SURFABLE 2
-#define TILE_ATTRIBUTES(three, two, one) (((one) ? 1 : 0) | ((two) ? 2 : 0) | ((three) ? 4 : 0))
+#define TILE_ATTRIBUTES(unused, surfable, wildEncounter) (((wildEncounter) ? 1 : 0) | ((surfable) ? 2 : 0) | ((unused) ? 4 : 0))
// wonder what the third flag is supposed to do
static const u8 sTileBitAttributes[] =
{
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NORMAL 0x00
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x01
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_TALL_GRASS 0x02
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_LONG_GRASS 0x03
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_04 0x04
- TILE_ATTRIBUTES(FALSE, FALSE, TRUE), // MB_05 0x05
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_DEEP_SAND 0x06
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHORT_GRASS 0x07
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_CAVE 0x08
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LONG_GRASS_SOUTH_EDGE 0x09
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NO_RUNNING 0x0A
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_0B 0x0B
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MOUNTAIN_TOP 0x0C
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BATTLE_PYRAMID_WARP 0x0D
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MOSSDEEP_GYM_WARP 0x0E
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MT_PYRE_HOLE 0x0F
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_POND_WATER 0x10
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEMI_DEEP_WATER 0x11
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_DEEP_WATER 0x12
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATERFALL 0x13
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_SOOTOPOLIS_DEEP_WATER 0x14
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_OCEAN_WATER 0x15
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PUDDLE 0x16
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHALLOW_WATER 0x17
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_18 0x18
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_NO_SURFACING 0x19
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_1A 0x1A
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHOAL_CAVE_ENTRANCE 0x1C
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x1D
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x1E
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x1F
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ICE 0x20
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SAND 0x21
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEAWEED 0x22
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x23
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_ASHGRASS 0x24
- TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_25 0x25
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_THIN_ICE 0x26
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_ICE 0x27
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_HOT_SPRINGS 0x28
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LAVARIDGE_GYM_B1F_WARP 0x29
- TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEAWEED_NO_SURFACING 0x2A
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_REFLECTION_UNDER_BRIDGE 0x2B
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2C
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2D
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2E
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2F
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_EAST 0x30
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_WEST 0x31
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTH 0x32
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTH 0x33
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTHEAST 0x34
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTHWEST 0x35
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTHEAST 0x36
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTHWEST 0x37
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_EAST 0x38
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_WEST 0x39
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_NORTH 0x3A
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_SOUTH 0x3B
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x3C
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x3D
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_SOUTHEAST 0x3E
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_SOUTHWEST 0x3F
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_EAST 0x40
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_WEST 0x41
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_NORTH 0x42
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_SOUTH 0x43
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_EAST 0x44
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_WEST 0x45
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_NORTH 0x46
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_SOUTH 0x47
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x49
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x4A
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4B
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4C
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4D
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4E
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4F
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_EASTWARD_CURRENT 0x50
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WESTWARD_CURRENT 0x51
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_NORTHWARD_CURRENT 0x52
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_SOUTHWARD_CURRENT 0x53
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x54
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x55
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x56
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x57
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x58
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x59
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5A
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5B
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5C
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5D
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5E
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5F
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NON_ANIMATED_DOOR 0x60
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LADDER 0x61
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_EAST_ARROW_WARP 0x62
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WEST_ARROW_WARP 0x63
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NORTH_ARROW_WARP 0x64
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SOUTH_ARROW_WARP 0x65
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_FLOOR_HOLE 0x66
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_AQUA_HIDEOUT_WARP 0x67
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LAVARIDGE_GYM_1F_WARP 0x68
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ANIMATED_DOOR 0x69
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UP_ESCALATOR 0x6A
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_DOWN_ESCALATOR 0x6B
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATER_DOOR 0x6C
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATER_SOUTH_ARROW_WARP 0x6D
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_DEEP_SOUTH_WARP 0x6E
- TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // ? 0x6F
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_WARP_OR_BRIDGE 0x70
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_71 0x71
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_1 0x72
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_2 0x73
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_VERTICAL_LOG_1 0x74
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_VERTICAL_LOG_2 0x75
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_HORIZONTAL_LOG_1 0x76
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_HORIZONTAL_LOG_2 0x77
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_FORTREE_BRIDGE 0x78
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x79
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_SOUTH_BRIDGE_1 0x7A
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_SOUTH_BRIDGE_2 0x7B
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_3 0x7C
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_4 0x7D
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_7E 0x7E
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE110_BRIDGE 0x7F
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_COUNTER 0x80
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x81
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x82
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PC 0x83
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CABLE_BOX_RESULTS_1 0x84
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_REGION_MAP 0x85
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TELEVISION 0x86
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_POKEBLOCK_FEEDER 0x87
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x88
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SLOT_MACHINE 0x89
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_ROULETTE 0x8A
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CLOSED_SOOTOPOLIS_GYM_DOOR 0x8B
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_8D 0x8D
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_RUNNING_SHOES_INSTRUCTION 0x8E
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_QUESTIONNAIRE 0x8F
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_RED_CAVE 0x90
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_RED_CAVE_OPEN 0x91
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BROWN_CAVE 0x92
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN 0x93
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_YELLOW_CAVE 0x94
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN 0x95
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_LEFT 0x96
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN 0x97
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_SHRUB 0x98
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_SHRUB_OPEN 0x99
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BLUE_CAVE 0x9A
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN 0x9B
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_RIGHT 0x9C
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN 0x9D
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x9E
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x9F
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BERRY_TREE_SOIL 0xA0
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA1
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA2
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA3
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA4
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA5
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA6
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA7
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA8
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA9
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAA
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAB
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAC
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAD
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAE
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAF A
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_PC 0xB0
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_REGISTER_PC 0xB1
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B2 0xB2
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B3 0xB3
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_B4 0xB4
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B5 0xB5
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_B6 0xB6
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_B7 0xB7
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_BALLOON 0xB8
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B9 0xB9
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_GLITTER_MAT 0xBA
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_JUMP_MAT 0xBB
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_SPIN_MAT 0xBC
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_SOUND_MAT 0xBD
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BE 0xBE
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BF 0xBF
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BED 0xC0
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C1 0xC1
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C2 0xC2
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C3 0xC3
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_TV_SHIELD 0xC4
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C5 0xC5
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_C6 0xC6
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_POSTER 0xC7
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_C8 0xC8
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_C9 0xC9
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CA 0xCA
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CB 0xCB
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CC 0xCC
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CD 0xCD
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CE 0xCE
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CF 0xCF
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MUDDY_SLOPE 0xD0
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BUMPY_SLOPE 0xD1
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_FLOOR 0xD2
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ISOLATED_VERTICAL_RAIL 0xD3
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ISOLATED_HORIZONTAL_RAIL 0xD4
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_VERTICAL_RAIL 0xD5
- TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_HORIZONTAL_RAIL 0xD6
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xD7
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xD8
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xD9
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDA
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDB
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDC
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDD
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDE
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDF
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PICTURE_BOOK_SHELF 0xE0
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BOOKSHELF 0xE1
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_POKEMON_CENTER_BOOKSHELF 0xE2
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_VASE 0xE3
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRASH_CAN 0xE4
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SHOP_SHELF 0xE5
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BLUEPRINT 0xE6
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CABLE_BOX_RESULTS_2 0xE7
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_WIRELESS_BOX_RESULTS 0xE8
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRAINER_HILL_TIMER 0xE9
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNKNOWN_CLOSED_DOOR 0xEA
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEB
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEC
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xED
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEE
- TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEF
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NORMAL
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_WALL
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_TALL_GRASS
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_LONG_GRASS
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_04
+ TILE_ATTRIBUTES(FALSE, FALSE, TRUE), // MB_UNUSED_05
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_DEEP_SAND
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHORT_GRASS
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_UNUSED_CAVE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LONG_GRASS_SOUTH_EDGE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NO_RUNNING
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_INDOOR_ENCOUNTER
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MOUNTAIN_TOP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BATTLE_PYRAMID_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MOSSDEEP_GYM_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MT_PYRE_HOLE
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_POND_WATER
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEMI_DEEP_WATER
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_DEEP_WATER
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATERFALL
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_SOOTOPOLIS_DEEP_WATER
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_OCEAN_WATER
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PUDDLE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHALLOW_WATER
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_SOOTOPOLIS_DEEP_WATER
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_NO_SURFACING
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_STAIRS_OUTSIDE_ABANDONED_SHIP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHOAL_CAVE_ENTRANCE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_1D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_1E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_1F
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ICE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SAND
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEAWEED
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UNUSED_23
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_ASHGRASS
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_FOOTPRINTS
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_THIN_ICE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_ICE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_HOT_SPRINGS
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LAVARIDGE_GYM_B1F_WARP
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEAWEED_NO_SURFACING
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_REFLECTION_UNDER_BRIDGE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_2C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_2D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_2E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_2F
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_EAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_WEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTHEAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTHWEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTHEAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTHWEST
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_EAST
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_WEST
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_NORTH
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_SOUTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_NORTHEAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_NORTHWEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_SOUTHEAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_SOUTHWEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_EAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_WEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_NORTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_SOUTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_EAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_WEST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_NORTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_SOUTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_TRICK_HOUSE_PUZZLE_8_FLOOR
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UNUSED_49
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UNUSED_4A
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_4B
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_4C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_4D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_4E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_4F
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_EASTWARD_CURRENT
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WESTWARD_CURRENT
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_NORTHWARD_CURRENT
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_SOUTHWARD_CURRENT
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_54
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_55
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_56
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_57
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_58
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_59
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5A
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5B
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_5F
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NON_ANIMATED_DOOR
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LADDER
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_EAST_ARROW_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WEST_ARROW_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NORTH_ARROW_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SOUTH_ARROW_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_FLOOR_HOLE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_AQUA_HIDEOUT_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LAVARIDGE_GYM_1F_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ANIMATED_DOOR
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UP_ESCALATOR
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_DOWN_ESCALATOR
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATER_DOOR
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATER_SOUTH_ARROW_WARP
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_DEEP_SOUTH_WARP
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_UNUSED_6F
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_WARP_OR_BRIDGE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UNUSED_71
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_1
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_VERTICAL_LOG_1
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_VERTICAL_LOG_2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_HORIZONTAL_LOG_1
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_HORIZONTAL_LOG_2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_FORTREE_BRIDGE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_79
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_SOUTH_BRIDGE_1
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_SOUTH_BRIDGE_2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_3
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_4
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UNUSED_7E
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE110_BRIDGE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_COUNTER
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_81
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_82
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CABLE_BOX_RESULTS_1
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_REGION_MAP
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TELEVISION
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_POKEBLOCK_FEEDER
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_88
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SLOT_MACHINE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_ROULETTE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CLOSED_SOOTOPOLIS_DOOR
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRICK_HOUSE_PUZZLE_DOOR
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PETALBURG_GYM_DOOR
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_RUNNING_SHOES_INSTRUCTION
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_QUESTIONNAIRE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_RED_CAVE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_RED_CAVE_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BROWN_CAVE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_YELLOW_CAVE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_LEFT
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_SHRUB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_SHRUB_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BLUE_CAVE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_RIGHT
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_9E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_9F
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BERRY_TREE_SOIL
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A1
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A2
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A3
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A4
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A5
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A6
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A7
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A8
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_A9
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AA
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AD
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_AF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_PC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_REGISTER_PC
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_UNUSED
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BLOCK_DECORATION
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_DECORATION
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_LARGE_MAT_EDGE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_B6
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_NORTH_WALL
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_BALLOON
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_IMPASSABLE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_GLITTER_MAT
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_JUMP_MAT
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_SPIN_MAT
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_SOUND_MAT
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_BREAKABLE_DOOR
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SAND_ORNAMENT
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTH_AND_NORTH
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_WEST_AND_EAST
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_HOLE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LARGE_MAT_CENTER
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_TV_SHIELD
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PLAYER_ROOM_PC_ON
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_C6
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_POSTER
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_C8
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_C9
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CA
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CD
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_CF
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MUDDY_SLOPE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BUMPY_SLOPE
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_FLOOR
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ISOLATED_VERTICAL_RAIL
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ISOLATED_HORIZONTAL_RAIL
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_VERTICAL_RAIL
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_HORIZONTAL_RAIL
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_D7
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_D8
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_D9
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DA
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DD
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_DF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PICTURE_BOOK_SHELF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BOOKSHELF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_POKEMON_CENTER_BOOKSHELF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_VASE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRASH_CAN
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SHOP_SHELF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BLUEPRINT
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CABLE_BOX_RESULTS_2
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_WIRELESS_BOX_RESULTS
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRAINER_HILL_TIMER
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNKNOWN_CLOSED_DOOR
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_EB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_EC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_ED
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_EE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNUSED_EF
};
-bool8 MetatileBehavior_IsATile(u8 var)
+bool8 MetatileBehavior_IsATile(u8 metatileBehavior)
{
return TRUE;
}
-bool8 MetatileBehavior_IsEncounterTile(u8 var)
+bool8 MetatileBehavior_IsEncounterTile(u8 metatileBehavior)
{
- if ((sTileBitAttributes[var] & TILE_FLAG_ENCOUNTER_TILE) != 0)
+ if ((sTileBitAttributes[metatileBehavior] & TILE_FLAG_ENCOUNTER_TILE))
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsJumpEast(u8 var)
+bool8 MetatileBehavior_IsJumpEast(u8 metatileBehavior)
{
- if (var == MB_JUMP_EAST)
+ if (metatileBehavior == MB_JUMP_EAST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsJumpWest(u8 var)
+bool8 MetatileBehavior_IsJumpWest(u8 metatileBehavior)
{
- if (var == MB_JUMP_WEST)
+ if (metatileBehavior == MB_JUMP_WEST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsJumpNorth(u8 var)
+bool8 MetatileBehavior_IsJumpNorth(u8 metatileBehavior)
{
- if (var == MB_JUMP_NORTH)
+ if (metatileBehavior == MB_JUMP_NORTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsJumpSouth(u8 var)
+bool8 MetatileBehavior_IsJumpSouth(u8 metatileBehavior)
{
- if (var == MB_JUMP_SOUTH)
+ if (metatileBehavior == MB_JUMP_SOUTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPokeGrass(u8 var)
+bool8 MetatileBehavior_IsPokeGrass(u8 metatileBehavior)
{
- if (var == MB_TALL_GRASS || var == MB_LONG_GRASS)
+ if (metatileBehavior == MB_TALL_GRASS || metatileBehavior == MB_LONG_GRASS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSandOrDeepSand(u8 var)
+bool8 MetatileBehavior_IsSandOrDeepSand(u8 metatileBehavior)
{
- if (var == MB_SAND || var == MB_DEEP_SAND)
+ if (metatileBehavior == MB_SAND || metatileBehavior == MB_DEEP_SAND)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsDeepSand(u8 var)
+bool8 MetatileBehavior_IsDeepSand(u8 metatileBehavior)
{
- if (var == MB_DEEP_SAND)
+ if (metatileBehavior == MB_DEEP_SAND)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsReflective(u8 var)
+bool8 MetatileBehavior_IsReflective(u8 metatileBehavior)
{
- if (var == MB_POND_WATER || var == MB_PUDDLE || var == MB_1A || var == MB_ICE || var == MB_SOOTOPOLIS_DEEP_WATER || var == MB_REFLECTION_UNDER_BRIDGE)
+ if (metatileBehavior == MB_POND_WATER
+ || metatileBehavior == MB_PUDDLE
+ || metatileBehavior == MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2
+ || metatileBehavior == MB_ICE
+ || metatileBehavior == MB_SOOTOPOLIS_DEEP_WATER
+ || metatileBehavior == MB_REFLECTION_UNDER_BRIDGE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsIce(u8 var)
+bool8 MetatileBehavior_IsIce(u8 metatileBehavior)
{
- if (var == MB_ICE)
+ if (metatileBehavior == MB_ICE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWarpDoor(u8 var)
+bool8 MetatileBehavior_IsWarpDoor(u8 metatileBehavior)
{
- if (var == MB_ANIMATED_DOOR)
+ if (metatileBehavior == MB_ANIMATED_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsDoor(u8 var)
+bool8 MetatileBehavior_IsDoor(u8 metatileBehavior)
{
- if (var == MB_8D || var == MB_ANIMATED_DOOR)
+ if (metatileBehavior == MB_PETALBURG_GYM_DOOR
+ || metatileBehavior == MB_ANIMATED_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsEscalator(u8 var)
+bool8 MetatileBehavior_IsEscalator(u8 metatileBehavior)
{
- if (var == MB_UP_ESCALATOR || var == MB_DOWN_ESCALATOR)
+ if (metatileBehavior == MB_UP_ESCALATOR
+ || metatileBehavior == MB_DOWN_ESCALATOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_04(u8 var) // unused
+bool8 Unref_MetatileBehavior_IsUnused04(u8 metatileBehavior)
{
- if (var == MB_04)
+ if (metatileBehavior == MB_UNUSED_04)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsLadder(u8 var)
+bool8 MetatileBehavior_IsLadder(u8 metatileBehavior)
{
- if (var == MB_LADDER)
+ if (metatileBehavior == MB_LADDER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsNonAnimDoor(u8 var)
+bool8 MetatileBehavior_IsNonAnimDoor(u8 metatileBehavior)
{
- if (var == MB_NON_ANIMATED_DOOR || var == MB_WATER_DOOR || var == MB_DEEP_SOUTH_WARP)
+ if (metatileBehavior == MB_NON_ANIMATED_DOOR
+ || metatileBehavior == MB_WATER_DOOR
+ || metatileBehavior == MB_DEEP_SOUTH_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsDeepSouthWarp(u8 var)
+bool8 MetatileBehavior_IsDeepSouthWarp(u8 metatileBehavior)
{
- if (var == MB_DEEP_SOUTH_WARP)
+ if (metatileBehavior == MB_DEEP_SOUTH_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8 var)
+bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8 metatileBehavior)
{
- if ((sTileBitAttributes[var] & TILE_FLAG_SURFABLE) != 0)
+ if ((sTileBitAttributes[metatileBehavior] & TILE_FLAG_SURFABLE))
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsEastArrowWarp(u8 var)
+bool8 MetatileBehavior_IsEastArrowWarp(u8 metatileBehavior)
{
- if (var == MB_EAST_ARROW_WARP)
+ if (metatileBehavior == MB_EAST_ARROW_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWestArrowWarp(u8 var)
+bool8 MetatileBehavior_IsWestArrowWarp(u8 metatileBehavior)
{
- if (var == MB_WEST_ARROW_WARP)
+ if (metatileBehavior == MB_WEST_ARROW_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsNorthArrowWarp(u8 var)
+bool8 MetatileBehavior_IsNorthArrowWarp(u8 metatileBehavior)
{
- if (var == MB_NORTH_ARROW_WARP || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP)
+ if (metatileBehavior == MB_NORTH_ARROW_WARP
+ || metatileBehavior == MB_STAIRS_OUTSIDE_ABANDONED_SHIP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSouthArrowWarp(u8 var)
+bool8 MetatileBehavior_IsSouthArrowWarp(u8 metatileBehavior)
{
- if (var == MB_SOUTH_ARROW_WARP || var == MB_WATER_SOUTH_ARROW_WARP || var == MB_SHOAL_CAVE_ENTRANCE)
+ if (metatileBehavior == MB_SOUTH_ARROW_WARP
+ || metatileBehavior == MB_WATER_SOUTH_ARROW_WARP
+ || metatileBehavior == MB_SHOAL_CAVE_ENTRANCE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsArrowWarp(u8 var) // unused
+bool8 Unref_MetatileBehavior_IsArrowWarp(u8 metatileBehavior)
{
- u8 ret = FALSE;
+ u8 isArrowWarp = FALSE;
- if (MetatileBehavior_IsEastArrowWarp(var)
- || MetatileBehavior_IsWestArrowWarp(var)
- || MetatileBehavior_IsNorthArrowWarp(var)
- || MetatileBehavior_IsSouthArrowWarp(var))
+ if (MetatileBehavior_IsEastArrowWarp(metatileBehavior)
+ || MetatileBehavior_IsWestArrowWarp(metatileBehavior)
+ || MetatileBehavior_IsNorthArrowWarp(metatileBehavior)
+ || MetatileBehavior_IsSouthArrowWarp(metatileBehavior))
{
- ret = TRUE;
+ isArrowWarp = TRUE;
}
- return ret;
+ return isArrowWarp;
}
-bool8 MetatileBehavior_IsMoveTile(u8 var)
+bool8 MetatileBehavior_IsForcedMovementTile(u8 metatileBehavior)
{
- if ((var >= MB_WALK_EAST && var <= MB_TRICK_HOUSE_PUZZLE_8_FLOOR) || (var >= MB_EASTWARD_CURRENT && var <= MB_SOUTHWARD_CURRENT)
- || var == MB_MUDDY_SLOPE || var == MB_CRACKED_FLOOR || var == MB_WATERFALL || var == MB_ICE || var == MB_SECRET_BASE_JUMP_MAT || var == MB_SECRET_BASE_SPIN_MAT)
+ if ((metatileBehavior >= MB_WALK_EAST && metatileBehavior <= MB_TRICK_HOUSE_PUZZLE_8_FLOOR)
+ || (metatileBehavior >= MB_EASTWARD_CURRENT && metatileBehavior <= MB_SOUTHWARD_CURRENT)
+ || metatileBehavior == MB_MUDDY_SLOPE
+ || metatileBehavior == MB_CRACKED_FLOOR
+ || metatileBehavior == MB_WATERFALL
+ || metatileBehavior == MB_ICE
+ || metatileBehavior == MB_SECRET_BASE_JUMP_MAT
+ || metatileBehavior == MB_SECRET_BASE_SPIN_MAT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsIce_2(u8 var)
+bool8 MetatileBehavior_IsIce_2(u8 metatileBehavior)
{
- if (var == MB_ICE)
+ if (metatileBehavior == MB_ICE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 var)
+bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 metatileBehavior)
{
- if (var == MB_TRICK_HOUSE_PUZZLE_8_FLOOR)
+ if (metatileBehavior == MB_TRICK_HOUSE_PUZZLE_8_FLOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_05(u8 var)
+bool8 Unref_MetatileBehavior_IsUnused05(u8 metatileBehavior)
{
- if (var == MB_05)
+ if (metatileBehavior == MB_UNUSED_05)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWalkNorth(u8 var)
+bool8 MetatileBehavior_IsWalkNorth(u8 metatileBehavior)
{
- if (var == MB_WALK_NORTH)
+ if (metatileBehavior == MB_WALK_NORTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWalkSouth(u8 var)
+bool8 MetatileBehavior_IsWalkSouth(u8 metatileBehavior)
{
- if (var == MB_WALK_SOUTH)
+ if (metatileBehavior == MB_WALK_SOUTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWalkWest(u8 var)
+bool8 MetatileBehavior_IsWalkWest(u8 metatileBehavior)
{
- if (var == MB_WALK_WEST)
+ if (metatileBehavior == MB_WALK_WEST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWalkEast(u8 var)
+bool8 MetatileBehavior_IsWalkEast(u8 metatileBehavior)
{
- if (var == MB_WALK_EAST)
+ if (metatileBehavior == MB_WALK_EAST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsNorthwardCurrent(u8 var)
+bool8 MetatileBehavior_IsNorthwardCurrent(u8 metatileBehavior)
{
- if (var == MB_NORTHWARD_CURRENT)
+ if (metatileBehavior == MB_NORTHWARD_CURRENT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSouthwardCurrent(u8 var)
+bool8 MetatileBehavior_IsSouthwardCurrent(u8 metatileBehavior)
{
- if (var == MB_SOUTHWARD_CURRENT)
+ if (metatileBehavior == MB_SOUTHWARD_CURRENT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWestwardCurrent(u8 var)
+bool8 MetatileBehavior_IsWestwardCurrent(u8 metatileBehavior)
{
- if (var == MB_WESTWARD_CURRENT)
+ if (metatileBehavior == MB_WESTWARD_CURRENT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsEastwardCurrent(u8 var)
+bool8 MetatileBehavior_IsEastwardCurrent(u8 metatileBehavior)
{
- if (var == MB_EASTWARD_CURRENT)
+ if (metatileBehavior == MB_EASTWARD_CURRENT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSlideNorth(u8 var)
+bool8 MetatileBehavior_IsSlideNorth(u8 metatileBehavior)
{
- if (var == MB_SLIDE_NORTH)
+ if (metatileBehavior == MB_SLIDE_NORTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSlideSouth(u8 var)
+bool8 MetatileBehavior_IsSlideSouth(u8 metatileBehavior)
{
- if (var == MB_SLIDE_SOUTH)
+ if (metatileBehavior == MB_SLIDE_SOUTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSlideWest(u8 var)
+bool8 MetatileBehavior_IsSlideWest(u8 metatileBehavior)
{
- if (var == MB_SLIDE_WEST)
+ if (metatileBehavior == MB_SLIDE_WEST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSlideEast(u8 var)
+bool8 MetatileBehavior_IsSlideEast(u8 metatileBehavior)
{
- if (var == MB_SLIDE_EAST)
+ if (metatileBehavior == MB_SLIDE_EAST)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsCounter(u8 var)
+bool8 MetatileBehavior_IsCounter(u8 metatileBehavior)
{
- if (var == MB_COUNTER)
+ if (metatileBehavior == MB_COUNTER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDir)
+bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 metatileBehavior, u8 playerDir)
{
- if (playerDir != CONNECTION_NORTH) // if the player isn't facing north, forget about it.
+ if (playerDir != DIR_NORTH)
return FALSE;
- else if (tile == MB_TELEVISION) // is the player's north tile a TV?
+ else if (metatileBehavior == MB_TELEVISION)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPC(u8 var)
+bool8 MetatileBehavior_IsPC(u8 metatileBehavior)
{
- if (var == MB_PC)
+ if (metatileBehavior == MB_PC)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsCableBoxResults1(u8 var)
+bool8 MetatileBehavior_IsCableBoxResults1(u8 metatileBehavior)
{
- if (var == MB_CABLE_BOX_RESULTS_1)
+ if (metatileBehavior == MB_CABLE_BOX_RESULTS_1)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseOpen(u8 var)
+bool8 MetatileBehavior_IsOpenSecretBaseDoor(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_SPOT_RED_CAVE_OPEN || var == MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN
- || var == MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN || var == MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN
- || var == MB_SECRET_BASE_SPOT_SHRUB_OPEN || var == MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN
- || var == MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN)
+ if (metatileBehavior == MB_SECRET_BASE_SPOT_RED_CAVE_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_SHRUB_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN
+ || metatileBehavior == MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseCave(u8 var)
+bool8 MetatileBehavior_IsSecretBaseCave(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_SPOT_RED_CAVE || var == MB_SECRET_BASE_SPOT_BROWN_CAVE || var == MB_SECRET_BASE_SPOT_YELLOW_CAVE || var == MB_SECRET_BASE_SPOT_BLUE_CAVE)
+ if (metatileBehavior == MB_SECRET_BASE_SPOT_RED_CAVE
+ || metatileBehavior == MB_SECRET_BASE_SPOT_BROWN_CAVE
+ || metatileBehavior == MB_SECRET_BASE_SPOT_YELLOW_CAVE
+ || metatileBehavior == MB_SECRET_BASE_SPOT_BLUE_CAVE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseTree(u8 var)
+bool8 MetatileBehavior_IsSecretBaseTree(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_SPOT_TREE_LEFT || var == MB_SECRET_BASE_SPOT_TREE_RIGHT)
+ if (metatileBehavior == MB_SECRET_BASE_SPOT_TREE_LEFT
+ || metatileBehavior == MB_SECRET_BASE_SPOT_TREE_RIGHT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseShrub(u8 var)
+bool8 MetatileBehavior_IsSecretBaseShrub(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_SPOT_SHRUB)
+ if (metatileBehavior == MB_SECRET_BASE_SPOT_SHRUB)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBasePC(u8 var)
+bool8 MetatileBehavior_IsSecretBasePC(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_PC)
+ if (metatileBehavior == MB_SECRET_BASE_PC)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseRegisterPC(u8 var)
+bool8 MetatileBehavior_IsSecretBaseRegisterPC(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_REGISTER_PC)
+ if (metatileBehavior == MB_SECRET_BASE_REGISTER_PC)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_B2(u8 var) // unused
+bool8 Unref_MetatileBehavior_IsSecretBaseUnused_B2(u8 metatileBehavior)
{
- if (var == MB_B2)
+ if (metatileBehavior == MB_SECRET_BASE_UNUSED)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_B3(u8 var)
+bool8 MetatileBehavior_IsBlockDecoration(u8 metatileBehavior)
{
- if (var == MB_B3)
+ if (metatileBehavior == MB_BLOCK_DECORATION)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_B9(u8 var)
+bool8 MetatileBehavior_IsSecretBaseImpassable(u8 metatileBehavior)
{
- if (var == MB_B9)
+ if (metatileBehavior == MB_SECRET_BASE_IMPASSABLE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_C6(u8 var)
+bool8 MetatileBehavior_IsMB_C6(u8 metatileBehavior)
{
- if (var == MB_C6)
+ if (metatileBehavior == MB_C6)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBasePoster(u8 var)
+bool8 MetatileBehavior_IsSecretBasePoster(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_POSTER)
+ if (metatileBehavior == MB_SECRET_BASE_POSTER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsNormal(u8 var)
+bool8 MetatileBehavior_IsNormal(u8 metatileBehavior)
{
- if (var == MB_NORMAL)
+ if (metatileBehavior == MB_NORMAL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_B7(u8 var)
+bool8 MetatileBehavior_IsSecretBaseNorthWall(u8 metatileBehavior)
{
- if (var == MB_B7)
+ if (metatileBehavior == MB_SECRET_BASE_NORTH_WALL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_B2_Duplicate(u8 var) // unused
+bool8 Unref_MetatileBehavior_IsSecretBaseUnused_B2_2(u8 metatileBehavior)
{
- if (var == MB_B2)
+ if (metatileBehavior == MB_SECRET_BASE_UNUSED)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_B5(u8 var)
+bool8 MetatileBehavior_IsSecretBaseLargeMatEdge(u8 metatileBehavior)
{
- if (var == MB_B5)
+ if (metatileBehavior == MB_SECRET_BASE_LARGE_MAT_EDGE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_C3(u8 var)
+bool8 MetatileBehavior_IsLargeMatCenter(u8 metatileBehavior)
{
- if (var == MB_C3)
+ if (metatileBehavior == MB_LARGE_MAT_CENTER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_C2(u8 var)
+bool8 MetatileBehavior_IsSecretBaseHole(u8 metatileBehavior)
{
- if (var == MB_C2)
+ if (metatileBehavior == MB_SECRET_BASE_HOLE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseBalloon(u8 var)
+bool8 MetatileBehavior_IsSecretBaseBalloon(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_BALLOON)
+ if (metatileBehavior == MB_SECRET_BASE_BALLOON)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_BE(u8 var)
+bool8 MetatileBehavior_IsSecretBaseBreakableDoor(u8 metatileBehavior)
{
- if (var == MB_BE)
+ if (metatileBehavior == MB_SECRET_BASE_BREAKABLE_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseSoundMat(u8 var)
+bool8 MetatileBehavior_IsSecretBaseSoundMat(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_SOUND_MAT)
+ if (metatileBehavior == MB_SECRET_BASE_SOUND_MAT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8 var)
+bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_GLITTER_MAT)
+ if (metatileBehavior == MB_SECRET_BASE_GLITTER_MAT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_BF(u8 var)
+bool8 MetatileBehavior_IsSecretBaseSandOrnament(u8 metatileBehavior)
{
- if (var == MB_BF)
+ if (metatileBehavior == MB_SECRET_BASE_SAND_ORNAMENT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseTvOrShield(u8 var)
+bool8 MetatileBehavior_IsSecretBaseTvOrShield(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_TV_SHIELD)
+ if (metatileBehavior == MB_SECRET_BASE_TV_SHIELD)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_C5(u8 var)
+bool8 MetatileBehavior_IsPlayerRoomPCOn(u8 metatileBehavior)
{
- if (var == MB_C5)
+ if (metatileBehavior == MB_PLAYER_ROOM_PC_ON)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_HasRipples(u8 var)
+bool8 MetatileBehavior_HasRipples(u8 metatileBehavior)
{
- if (var == MB_POND_WATER || var == MB_PUDDLE || var == MB_SOOTOPOLIS_DEEP_WATER)
+ if (metatileBehavior == MB_POND_WATER || metatileBehavior == MB_PUDDLE || metatileBehavior == MB_SOOTOPOLIS_DEEP_WATER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPuddle(u8 var)
+bool8 MetatileBehavior_IsPuddle(u8 metatileBehavior)
{
- if (var == MB_PUDDLE)
+ if (metatileBehavior == MB_PUDDLE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsTallGrass(u8 var)
+bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior)
{
- if (var == MB_TALL_GRASS)
+ if (metatileBehavior == MB_TALL_GRASS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsLongGrass(u8 var)
+bool8 MetatileBehavior_IsLongGrass(u8 metatileBehavior)
{
- if (var == MB_LONG_GRASS)
+ if (metatileBehavior == MB_LONG_GRASS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsBerryTreeSoil(u8 var)
+bool8 MetatileBehavior_IsBerryTreeSoil(u8 metatileBehavior)
{
- if (var == MB_BERRY_TREE_SOIL)
+ if (metatileBehavior == MB_BERRY_TREE_SOIL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsAshGrass(u8 var)
+bool8 MetatileBehavior_IsAshGrass(u8 metatileBehavior)
{
- if (var == MB_ASHGRASS)
+ if (metatileBehavior == MB_ASHGRASS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8 var)
+bool8 MetatileBehavior_IsFootprints(u8 metatileBehavior)
{
- if (var == MB_25)
+ // MB_FOOTPRINTS is not used by any metatiles.
+ if (metatileBehavior == MB_FOOTPRINTS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsBridge(u8 var)
+bool8 MetatileBehavior_IsBridge(u8 metatileBehavior)
{
- if ((var == MB_WARP_OR_BRIDGE || var == MB_71 || var == MB_ROUTE120_NORTH_BRIDGE_1 || var == MB_ROUTE120_NORTH_BRIDGE_2)
- || (var == MB_ROUTE120_NORTH_BRIDGE_3 || var == MB_ROUTE120_NORTH_BRIDGE_4 || var == MB_7E || var == MB_ROUTE110_BRIDGE))
+ if ((metatileBehavior == MB_WARP_OR_BRIDGE || metatileBehavior == MB_UNUSED_71 || metatileBehavior == MB_ROUTE120_NORTH_BRIDGE_1 || metatileBehavior == MB_ROUTE120_NORTH_BRIDGE_2)
+ || (metatileBehavior == MB_ROUTE120_NORTH_BRIDGE_3 || metatileBehavior == MB_ROUTE120_NORTH_BRIDGE_4 || metatileBehavior == MB_UNUSED_7E || metatileBehavior == MB_ROUTE110_BRIDGE))
return TRUE;
else
return FALSE;
}
-u8 MetatileBehavior_GetBridgeSth(u8 var)
+u8 MetatileBehavior_GetBridgeSth(u8 metatileBehavior)
{
- u8 result = var - MB_WARP_OR_BRIDGE;
+ u8 result = metatileBehavior - MB_WARP_OR_BRIDGE;
if (result < 4)
return result;
- result = var - MB_ROUTE120_SOUTH_BRIDGE_1;
+ result = metatileBehavior - MB_ROUTE120_SOUTH_BRIDGE_1;
if (result < 2)
return 2;
- result = var - MB_ROUTE120_NORTH_BRIDGE_3;
+ result = metatileBehavior - MB_ROUTE120_NORTH_BRIDGE_3;
if (result < 2)
return 3;
return 0;
}
-u8 MetatileBehavior_8089510(u8 var)
+u8 MetatileBehavior_8089510(u8 metatileBehavior)
{
- u8 result = var - MB_WARP_OR_BRIDGE;
+ u8 result = metatileBehavior - MB_WARP_OR_BRIDGE;
if (result < 4)
return 1;
@@ -898,485 +924,514 @@ u8 MetatileBehavior_8089510(u8 var)
return 0;
}
-bool8 MetatileBehavior_IsLandWildEncounter(u8 var)
+bool8 MetatileBehavior_IsLandWildEncounter(u8 metatileBehavior)
{
- if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) == FALSE && MetatileBehavior_IsEncounterTile(var) == TRUE)
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(metatileBehavior) == FALSE && MetatileBehavior_IsEncounterTile(metatileBehavior) == TRUE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWaterWildEncounter(u8 var)
+bool8 MetatileBehavior_IsWaterWildEncounter(u8 metatileBehavior)
{
- if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) == TRUE && MetatileBehavior_IsEncounterTile(var) == TRUE)
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(metatileBehavior) == TRUE && MetatileBehavior_IsEncounterTile(metatileBehavior) == TRUE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_0B(u8 var)
+bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior)
{
- if (var == MB_0B)
+ if (metatileBehavior == MB_INDOOR_ENCOUNTER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMountain(u8 var)
+bool8 MetatileBehavior_IsMountain(u8 metatileBehavior)
{
- if (var == MB_MOUNTAIN_TOP)
+ if (metatileBehavior == MB_MOUNTAIN_TOP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsDiveable(u8 var)
+bool8 MetatileBehavior_IsDiveable(u8 metatileBehavior)
{
- if (var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER || var == MB_SOOTOPOLIS_DEEP_WATER)
+ if (metatileBehavior == MB_SEMI_DEEP_WATER
+ || metatileBehavior == MB_DEEP_WATER
+ || metatileBehavior == MB_SOOTOPOLIS_DEEP_WATER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsUnableToEmerge(u8 var)
+bool8 MetatileBehavior_IsUnableToEmerge(u8 metatileBehavior)
{
- if (var == MB_NO_SURFACING || var == MB_SEAWEED_NO_SURFACING)
+ if (metatileBehavior == MB_NO_SURFACING
+ || metatileBehavior == MB_SEAWEED_NO_SURFACING)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsShallowFlowingWater(u8 var)
+bool8 MetatileBehavior_IsShallowFlowingWater(u8 metatileBehavior)
{
- if (var == MB_SHALLOW_WATER || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP || var == MB_SHOAL_CAVE_ENTRANCE)
+ if (metatileBehavior == MB_SHALLOW_WATER
+ || metatileBehavior == MB_STAIRS_OUTSIDE_ABANDONED_SHIP
+ || metatileBehavior == MB_SHOAL_CAVE_ENTRANCE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsThinIce(u8 var)
+bool8 MetatileBehavior_IsThinIce(u8 metatileBehavior)
{
- if (var == MB_THIN_ICE)
+ if (metatileBehavior == MB_THIN_ICE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsCrackedIce(u8 var)
+bool8 MetatileBehavior_IsCrackedIce(u8 metatileBehavior)
{
- if (var == MB_CRACKED_ICE)
+ if (metatileBehavior == MB_CRACKED_ICE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsDeepOrOceanWater(u8 var)
+bool8 MetatileBehavior_IsDeepOrOceanWater(u8 metatileBehavior)
{
- if (var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER)
+ if (metatileBehavior == MB_OCEAN_WATER
+ || metatileBehavior == MB_SEMI_DEEP_WATER
+ || metatileBehavior == MB_DEEP_WATER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMB_18_OrMB_1A(u8 var) // unused
+bool8 Unref_MetatileBehavior_IsUnusedSootopolisWater(u8 metatileBehavior)
{
- if (var == MB_18 || var == MB_1A)
+ if (metatileBehavior == MB_UNUSED_SOOTOPOLIS_DEEP_WATER
+ || metatileBehavior == MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSurfableAndNotWaterfall(u8 var)
+bool8 MetatileBehavior_IsSurfableAndNotWaterfall(u8 metatileBehavior)
{
- if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) && MetatileBehavior_IsWaterfall(var) == FALSE)
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(metatileBehavior)
+ && MetatileBehavior_IsWaterfall(metatileBehavior) == FALSE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsEastBlocked(u8 var)
+bool8 MetatileBehavior_IsEastBlocked(u8 metatileBehavior)
{
- if (var == MB_IMPASSABLE_EAST || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_SOUTHEAST || var == MB_C1 || var == MB_BE)
+ if (metatileBehavior == MB_IMPASSABLE_EAST
+ || metatileBehavior == MB_IMPASSABLE_NORTHEAST
+ || metatileBehavior == MB_IMPASSABLE_SOUTHEAST
+ || metatileBehavior == MB_IMPASSABLE_WEST_AND_EAST
+ || metatileBehavior == MB_SECRET_BASE_BREAKABLE_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWestBlocked(u8 var)
+bool8 MetatileBehavior_IsWestBlocked(u8 metatileBehavior)
{
- if (var == MB_IMPASSABLE_WEST || var == MB_IMPASSABLE_NORTHWEST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_C1 || var == MB_BE)
+ if (metatileBehavior == MB_IMPASSABLE_WEST
+ || metatileBehavior == MB_IMPASSABLE_NORTHWEST
+ || metatileBehavior == MB_IMPASSABLE_SOUTHWEST
+ || metatileBehavior == MB_IMPASSABLE_WEST_AND_EAST
+ || metatileBehavior == MB_SECRET_BASE_BREAKABLE_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsNorthBlocked(u8 var)
+bool8 MetatileBehavior_IsNorthBlocked(u8 metatileBehavior)
{
- if (var == MB_IMPASSABLE_NORTH || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_NORTHWEST || var == MB_BED)
+ if (metatileBehavior == MB_IMPASSABLE_NORTH
+ || metatileBehavior == MB_IMPASSABLE_NORTHEAST
+ || metatileBehavior == MB_IMPASSABLE_NORTHWEST
+ || metatileBehavior == MB_IMPASSABLE_SOUTH_AND_NORTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSouthBlocked(u8 var)
+bool8 MetatileBehavior_IsSouthBlocked(u8 metatileBehavior)
{
- if (var == MB_IMPASSABLE_SOUTH || var == MB_IMPASSABLE_SOUTHEAST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_BED)
+ if (metatileBehavior == MB_IMPASSABLE_SOUTH
+ || metatileBehavior == MB_IMPASSABLE_SOUTHEAST
+ || metatileBehavior == MB_IMPASSABLE_SOUTHWEST
+ || metatileBehavior == MB_IMPASSABLE_SOUTH_AND_NORTH)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsShortGrass(u8 var)
+bool8 MetatileBehavior_IsShortGrass(u8 metatileBehavior)
{
- if (var == MB_SHORT_GRASS)
+ if (metatileBehavior == MB_SHORT_GRASS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsHotSprings(u8 var)
+bool8 MetatileBehavior_IsHotSprings(u8 metatileBehavior)
{
- if (var == MB_HOT_SPRINGS)
+ if (metatileBehavior == MB_HOT_SPRINGS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWaterfall(u8 var)
+bool8 MetatileBehavior_IsWaterfall(u8 metatileBehavior)
{
- if (var == MB_WATERFALL)
+ if (metatileBehavior == MB_WATERFALL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsFortreeBridge(u8 var)
+bool8 MetatileBehavior_IsFortreeBridge(u8 metatileBehavior)
{
- if (var == MB_FORTREE_BRIDGE)
+ if (metatileBehavior == MB_FORTREE_BRIDGE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPacifilogVerticalLog1(u8 var)
+bool8 MetatileBehavior_IsPacifilogVerticalLog1(u8 metatileBehavior)
{
- if (var == MB_PACIFIDLOG_VERTICAL_LOG_1)
+ if (metatileBehavior == MB_PACIFIDLOG_VERTICAL_LOG_1)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPacifilogVerticalLog2(u8 var)
+bool8 MetatileBehavior_IsPacifilogVerticalLog2(u8 metatileBehavior)
{
- if (var == MB_PACIFIDLOG_VERTICAL_LOG_2)
+ if (metatileBehavior == MB_PACIFIDLOG_VERTICAL_LOG_2)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPacifilogHorizontalLog1(u8 var)
+bool8 MetatileBehavior_IsPacifilogHorizontalLog1(u8 metatileBehavior)
{
- if (var == MB_PACIFIDLOG_HORIZONTAL_LOG_1)
+ if (metatileBehavior == MB_PACIFIDLOG_HORIZONTAL_LOG_1)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPacifilogHorizontalLog2(u8 var)
+bool8 MetatileBehavior_IsPacifilogHorizontalLog2(u8 metatileBehavior)
{
- if (var == MB_PACIFIDLOG_HORIZONTAL_LOG_2)
+ if (metatileBehavior == MB_PACIFIDLOG_HORIZONTAL_LOG_2)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPacifidlogLog(u8 var)
+bool8 MetatileBehavior_IsPacifidlogLog(u8 metatileBehavior)
{
- if (var == MB_PACIFIDLOG_VERTICAL_LOG_1 || var == MB_PACIFIDLOG_VERTICAL_LOG_2
- || var == MB_PACIFIDLOG_HORIZONTAL_LOG_1 || var == MB_PACIFIDLOG_HORIZONTAL_LOG_2)
+ if (metatileBehavior == MB_PACIFIDLOG_VERTICAL_LOG_1 || metatileBehavior == MB_PACIFIDLOG_VERTICAL_LOG_2
+ || metatileBehavior == MB_PACIFIDLOG_HORIZONTAL_LOG_1 || metatileBehavior == MB_PACIFIDLOG_HORIZONTAL_LOG_2)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8 var)
+bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8 metatileBehavior)
{
- if (var == MB_TRICK_HOUSE_PUZZLE_DOOR)
+ if (metatileBehavior == MB_TRICK_HOUSE_PUZZLE_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsRegionMap(u8 var)
+bool8 MetatileBehavior_IsRegionMap(u8 metatileBehavior)
{
- if (var == MB_REGION_MAP)
+ if (metatileBehavior == MB_REGION_MAP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8 var)
+bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8 metatileBehavior)
{
- if (var == MB_CLOSED_SOOTOPOLIS_GYM_DOOR)
+ if (metatileBehavior == MB_CLOSED_SOOTOPOLIS_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsUnknownClosedDoor(u8 var)
+bool8 MetatileBehavior_IsUnknownClosedDoor(u8 metatileBehavior)
{
- if (var == MB_UNKNOWN_CLOSED_DOOR)
+ if (metatileBehavior == MB_UNKNOWN_CLOSED_DOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsRoulette(u8 var) // unused
+bool8 MetatileBehavior_IsRoulette(u8 metatileBehavior) // unused
{
- if (var == MB_ROULETTE)
+ if (metatileBehavior == MB_ROULETTE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPokeblockFeeder(u8 var)
+bool8 MetatileBehavior_IsPokeblockFeeder(u8 metatileBehavior)
{
- if (var == MB_POKEBLOCK_FEEDER)
+ if (metatileBehavior == MB_POKEBLOCK_FEEDER)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseJumpMat(u8 var)
+bool8 MetatileBehavior_IsSecretBaseJumpMat(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_JUMP_MAT)
+ if (metatileBehavior == MB_SECRET_BASE_JUMP_MAT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseSpinMat(u8 var)
+bool8 MetatileBehavior_IsSecretBaseSpinMat(u8 metatileBehavior)
{
- if (var == MB_SECRET_BASE_SPIN_MAT)
+ if (metatileBehavior == MB_SECRET_BASE_SPIN_MAT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 var)
+bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 metatileBehavior)
{
- if (var == MB_LAVARIDGE_GYM_B1F_WARP)
+ if (metatileBehavior == MB_LAVARIDGE_GYM_B1F_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsLavaridge1FWarp(u8 var)
+bool8 MetatileBehavior_IsLavaridge1FWarp(u8 metatileBehavior)
{
- if (var == MB_LAVARIDGE_GYM_1F_WARP)
+ if (metatileBehavior == MB_LAVARIDGE_GYM_1F_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsAquaHideoutWarp(u8 var)
+bool8 MetatileBehavior_IsAquaHideoutWarp(u8 metatileBehavior)
{
- if (var == MB_AQUA_HIDEOUT_WARP)
+ if (metatileBehavior == MB_AQUA_HIDEOUT_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsWarpOrBridge(u8 var)
+bool8 MetatileBehavior_IsWarpOrBridge(u8 metatileBehavior)
{
- if (var == MB_WARP_OR_BRIDGE)
+ if (metatileBehavior == MB_WARP_OR_BRIDGE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMossdeepGymWarp(u8 var)
+bool8 MetatileBehavior_IsMossdeepGymWarp(u8 metatileBehavior)
{
- if (var == MB_MOSSDEEP_GYM_WARP)
+ if (metatileBehavior == MB_MOSSDEEP_GYM_WARP)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSurfableFishableWater(u8 var)
+bool8 MetatileBehavior_IsSurfableFishableWater(u8 metatileBehavior)
{
- if (var == MB_POND_WATER || var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER
- || var == MB_SOOTOPOLIS_DEEP_WATER || (var == MB_EASTWARD_CURRENT || var == MB_WESTWARD_CURRENT
- || var == MB_NORTHWARD_CURRENT || var == MB_SOUTHWARD_CURRENT))
+ if (metatileBehavior == MB_POND_WATER || metatileBehavior == MB_OCEAN_WATER || metatileBehavior == MB_SEMI_DEEP_WATER || metatileBehavior == MB_DEEP_WATER
+ || metatileBehavior == MB_SOOTOPOLIS_DEEP_WATER || (metatileBehavior == MB_EASTWARD_CURRENT || metatileBehavior == MB_WESTWARD_CURRENT
+ || metatileBehavior == MB_NORTHWARD_CURRENT || metatileBehavior == MB_SOUTHWARD_CURRENT))
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMtPyreHole(u8 var)
+bool8 MetatileBehavior_IsMtPyreHole(u8 metatileBehavior)
{
- if (var == MB_MT_PYRE_HOLE)
+ if (metatileBehavior == MB_MT_PYRE_HOLE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsCrackedFloorHole(u8 var)
+bool8 MetatileBehavior_IsCrackedFloorHole(u8 metatileBehavior)
{
- if (var == MB_CRACKED_FLOOR_HOLE)
+ if (metatileBehavior == MB_CRACKED_FLOOR_HOLE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsCrackedFloor(u8 var)
+bool8 MetatileBehavior_IsCrackedFloor(u8 metatileBehavior)
{
- if (var == MB_CRACKED_FLOOR)
+ if (metatileBehavior == MB_CRACKED_FLOOR)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsMuddySlope(u8 var)
+bool8 MetatileBehavior_IsMuddySlope(u8 metatileBehavior)
{
- if (var == MB_MUDDY_SLOPE)
+ if (metatileBehavior == MB_MUDDY_SLOPE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsBumpySlope(u8 var)
+bool8 MetatileBehavior_IsBumpySlope(u8 metatileBehavior)
{
- if (var == MB_BUMPY_SLOPE)
+ if (metatileBehavior == MB_BUMPY_SLOPE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 var)
+bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 metatileBehavior)
{
- if (var == MB_ISOLATED_VERTICAL_RAIL)
+ if (metatileBehavior == MB_ISOLATED_VERTICAL_RAIL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8 var)
+bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8 metatileBehavior)
{
- if (var == MB_ISOLATED_HORIZONTAL_RAIL)
+ if (metatileBehavior == MB_ISOLATED_HORIZONTAL_RAIL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsVerticalRail(u8 var)
+bool8 MetatileBehavior_IsVerticalRail(u8 metatileBehavior)
{
- if (var == MB_VERTICAL_RAIL)
+ if (metatileBehavior == MB_VERTICAL_RAIL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsHorizontalRail(u8 var)
+bool8 MetatileBehavior_IsHorizontalRail(u8 metatileBehavior)
{
- if (var == MB_HORIZONTAL_RAIL)
+ if (metatileBehavior == MB_HORIZONTAL_RAIL)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsSeaweed(u8 var)
+bool8 MetatileBehavior_IsSeaweed(u8 metatileBehavior)
{
- if (var == MB_SEAWEED || var == MB_SEAWEED_NO_SURFACING)
+ if (metatileBehavior == MB_SEAWEED || metatileBehavior == MB_SEAWEED_NO_SURFACING)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsRunningDisallowed(u8 var)
+bool8 MetatileBehavior_IsRunningDisallowed(u8 metatileBehavior)
{
- if (var == MB_NO_RUNNING || var == MB_LONG_GRASS || var == MB_HOT_SPRINGS || MetatileBehavior_IsPacifidlogLog(var) != FALSE)
+ if (metatileBehavior == MB_NO_RUNNING
+ || metatileBehavior == MB_LONG_GRASS
+ || metatileBehavior == MB_HOT_SPRINGS
+ || MetatileBehavior_IsPacifidlogLog(metatileBehavior) != FALSE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsCuttableGrass(u8 var)
+bool8 MetatileBehavior_IsCuttableGrass(u8 metatileBehavior)
{
- if (var == MB_TALL_GRASS || var == MB_LONG_GRASS || var == MB_ASHGRASS || var == MB_LONG_GRASS_SOUTH_EDGE)
+ if (metatileBehavior == MB_TALL_GRASS
+ || metatileBehavior == MB_LONG_GRASS
+ || metatileBehavior == MB_ASHGRASS
+ || metatileBehavior == MB_LONG_GRASS_SOUTH_EDGE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsRunningShoesInstruction(u8 var)
+bool8 MetatileBehavior_IsRunningShoesInstruction(u8 metatileBehavior)
{
- if (var == MB_RUNNING_SHOES_INSTRUCTION)
+ if (metatileBehavior == MB_RUNNING_SHOES_INSTRUCTION)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPictureBookShelf(u8 var)
+bool8 MetatileBehavior_IsPictureBookShelf(u8 metatileBehavior)
{
- if (var == MB_PICTURE_BOOK_SHELF)
+ if (metatileBehavior == MB_PICTURE_BOOK_SHELF)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsBookShelf(u8 var)
+bool8 MetatileBehavior_IsBookShelf(u8 metatileBehavior)
{
- if (var == MB_BOOKSHELF)
+ if (metatileBehavior == MB_BOOKSHELF)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsPokeCenterBookShelf(u8 var)
+bool8 MetatileBehavior_IsPokeCenterBookShelf(u8 metatileBehavior)
{
- if (var == MB_POKEMON_CENTER_BOOKSHELF)
+ if (metatileBehavior == MB_POKEMON_CENTER_BOOKSHELF)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsVase(u8 var)
+bool8 MetatileBehavior_IsVase(u8 metatileBehavior)
{
- if (var == MB_VASE)
+ if (metatileBehavior == MB_VASE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsTrashCan(u8 var)
+bool8 MetatileBehavior_IsTrashCan(u8 metatileBehavior)
{
- if (var == MB_TRASH_CAN)
+ if (metatileBehavior == MB_TRASH_CAN)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsShopShelf(u8 var)
+bool8 MetatileBehavior_IsShopShelf(u8 metatileBehavior)
{
- if (var == MB_SHOP_SHELF)
+ if (metatileBehavior == MB_SHOP_SHELF)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsBlueprint(u8 var)
+bool8 MetatileBehavior_IsBlueprint(u8 metatileBehavior)
{
- if (var == MB_BLUEPRINT)
+ if (metatileBehavior == MB_BLUEPRINT)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsBattlePyramidWarp(u8 var)
+bool8 MetatileBehavior_IsBattlePyramidWarp(u8 metatileBehavior)
{
- if (var == MB_BATTLE_PYRAMID_WARP)
+ if (metatileBehavior == MB_BATTLE_PYRAMID_WARP)
return TRUE;
else
return FALSE;
@@ -1402,33 +1457,33 @@ bool8 MetatileBehavior_IsCableBoxResults2(u8 tile, u8 playerDir)
return FALSE;
}
-bool8 MetatileBehavior_IsQuestionnaire(u8 var)
+bool8 MetatileBehavior_IsQuestionnaire(u8 metatileBehavior)
{
- if (var == MB_QUESTIONNAIRE)
+ if (metatileBehavior == MB_QUESTIONNAIRE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsLongGrass_Duplicate(u8 var)
+bool8 MetatileBehavior_IsLongGrass_Duplicate(u8 metatileBehavior)
{
- if (var == MB_LONG_GRASS)
+ if (metatileBehavior == MB_LONG_GRASS)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsLongGrassSouthEdge(u8 var)
+bool8 MetatileBehavior_IsLongGrassSouthEdge(u8 metatileBehavior)
{
- if (var == MB_LONG_GRASS_SOUTH_EDGE)
+ if (metatileBehavior == MB_LONG_GRASS_SOUTH_EDGE)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsTrainerHillTimer(u8 var)
+bool8 MetatileBehavior_IsTrainerHillTimer(u8 metatileBehavior)
{
- if (var == MB_TRAINER_HILL_TIMER)
+ if (metatileBehavior == MB_TRAINER_HILL_TIMER)
return TRUE;
else
return FALSE;
diff --git a/src/pokemon.c b/src/pokemon.c
index 78a7a55a5..8e2e3b764 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -5307,7 +5307,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
// I have to re-use this variable to match.
r5 = gActiveBattler;
gActiveBattler = battlerId;
- BtlController_EmitGetMonData(0, 0, 0);
+ BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0);
MarkBattlerForControllerExec(gActiveBattler);
gActiveBattler = r5;
}
@@ -6621,7 +6621,7 @@ u16 GetBattleBGM(void)
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
trainerClass = GetFrontierOpponentClass(gTrainerBattleOpponent_A);
- else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
trainerClass = TRAINER_CLASS_EXPERT;
else
trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index fc3b8b94a..355ed5e07 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -19,7 +19,7 @@
#define ILLEGAL_BATTLE_TYPES ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \
| BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \
| BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \
- | BATTLE_TYPE_RECORDED | BATTLE_TYPE_x4000000 | BATTLE_TYPE_SECRET_BASE \
+ | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE \
| BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA))
extern u8 gUnknown_03001278;
@@ -273,7 +273,7 @@ void sub_81851A8(u8 *arg0)
return;
}
- if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
{
for (var2 = *arg0; var2 != 0;)
{
@@ -360,7 +360,7 @@ u32 MoveRecordedBattleToSaveData(void)
battleSave->battleFlags = (sBattleFlags & ~(BATTLE_TYPE_LINK | BATTLE_TYPE_20));
battleSave->battleFlags |= BATTLE_TYPE_x2000000;
- if (sBattleFlags & BATTLE_TYPE_WILD)
+ if (sBattleFlags & BATTLE_TYPE_IS_MASTER)
{
battleSave->battleFlags |= BATTLE_TYPE_x80000000;
}
diff --git a/src/rom_8034C54.c b/src/rom_8034C54.c
index da18c330c..1ef223c69 100644
--- a/src/rom_8034C54.c
+++ b/src/rom_8034C54.c
@@ -431,9 +431,9 @@ static bool32 SharesPalWithAnyActive(u32 id)
return FALSE;
}
-u8 sub_80355F8(u32 arg0, u32 arg1)
+u8 sub_80355F8(u32 shape, u32 size)
{
- return gUnknown_082FF1C8[arg0][arg1];
+ return gUnknown_082FF1C8[shape][size];
}
static void sub_8035608(void)
diff --git a/src/rom_81520A8.c b/src/rom_81520A8.c
new file mode 100644
index 000000000..f6d14d49c
--- /dev/null
+++ b/src/rom_81520A8.c
@@ -0,0 +1,218 @@
+#include "global.h"
+#include "rom_81520A8.h"
+#include "malloc.h"
+#include "main.h"
+#include "rom_8034C54.h"
+
+static EWRAM_DATA struct
+{
+ u8 count;
+ struct UnkStruct_81520A8 *unk4;
+} *sUnknown_0203ABB8 = NULL;
+
+void sub_81520A8(void *dest, u16 value, u8 left, u8 top, u8 width, u8 height) // Unused.
+{
+ u8 i;
+ u8 j;
+ u8 x;
+ u8 y;
+
+ for (i = 0, y = top; i < height; i++)
+ {
+ for (x = left, j = 0; j < width; j++)
+ {
+ *(u16 *)((dest) + (y * 64 + x * 2)) = value;
+ x = (x + 1) % 32;
+ }
+ y = (y + 1) % 32;
+ }
+}
+
+void sub_8152134(void *dest, const u16 *src, u8 left, u8 top, u8 width, u8 height) // Unused.
+{
+ u8 i;
+ u8 j;
+ u8 x;
+ u8 y;
+ const u16 *_src;
+
+ for (i = 0, _src = src, y = top; i < height; i++)
+ {
+ for (x = left, j = 0; j < width; j++)
+ {
+ *(u16 *)((dest) + (y * 64 + x * 2)) = *(_src++);
+ x = (x + 1) % 32;
+ }
+ y = (y + 1) % 32;
+ }
+}
+
+bool32 sub_81521C0(u8 count)
+{
+ u8 i = 0;
+
+ if (count == 0)
+ return FALSE;
+ if (count > 64)
+ count = 64;
+
+ sUnknown_0203ABB8 = AllocZeroed(sizeof(*sUnknown_0203ABB8));
+ if (sUnknown_0203ABB8 == NULL)
+ return FALSE;
+ sUnknown_0203ABB8->unk4 = AllocZeroed(count * sizeof(struct UnkStruct_81520A8));
+ if (sUnknown_0203ABB8->unk4 == NULL)
+ {
+ FREE_AND_SET_NULL(sUnknown_0203ABB8);
+ return FALSE;
+ }
+
+ sUnknown_0203ABB8->count = count;
+ for (i = 0; i < count; i++)
+ {
+ memcpy(&sUnknown_0203ABB8->unk4[i].oam, &gDummyOamData, sizeof(struct OamData));
+ sUnknown_0203ABB8->unk4[i].unk19_2 = TRUE;
+ }
+
+ return TRUE;
+}
+
+bool32 sub_8152254(void)
+{
+ u8 i = 0;
+
+ if (sUnknown_0203ABB8 == NULL)
+ return FALSE;
+
+ for (i = 0; i < sUnknown_0203ABB8->count; i++)
+ memcpy(&gMain.oamBuffer[i + 64], &gDummyOamData, sizeof(struct OamData));
+
+ memset(sUnknown_0203ABB8->unk4, 0, sUnknown_0203ABB8->count * sizeof(struct UnkStruct_81520A8));
+ FREE_AND_SET_NULL(sUnknown_0203ABB8->unk4);
+ memset(sUnknown_0203ABB8, 0, sizeof(*sUnknown_0203ABB8));
+ FREE_AND_SET_NULL(sUnknown_0203ABB8);
+
+ return TRUE;
+}
+
+bool32 sub_81522D4(void)
+{
+ u8 i = 0;
+
+ if (sUnknown_0203ABB8 == NULL || sUnknown_0203ABB8->unk4 == NULL)
+ return FALSE;
+
+ for (i = 0; i < sUnknown_0203ABB8->count; i++)
+ {
+ if (sUnknown_0203ABB8->unk4[i].unk19_0 && sUnknown_0203ABB8->unk4[i].unk19_1)
+ {
+ if (sUnknown_0203ABB8->unk4[i].callback != NULL)
+ sUnknown_0203ABB8->unk4[i].callback(&sUnknown_0203ABB8->unk4[i]);
+
+ if (sUnknown_0203ABB8->unk4[i].unk19_2)
+ {
+ memcpy(&gMain.oamBuffer[i + 64], &gDummyOamData, sizeof(struct OamData));
+ }
+ else
+ {
+ sUnknown_0203ABB8->unk4[i].oam.y = sUnknown_0203ABB8->unk4[i].y + sUnknown_0203ABB8->unk4[i].yDelta;
+ sUnknown_0203ABB8->unk4[i].oam.x = sUnknown_0203ABB8->unk4[i].x + sUnknown_0203ABB8->unk4[i].xDelta;
+ sUnknown_0203ABB8->unk4[i].oam.priority = sUnknown_0203ABB8->unk4[i].priority;
+ sUnknown_0203ABB8->unk4[i].oam.tileNum = sUnknown_0203ABB8->unk4[i].tileNum;
+ memcpy(&gMain.oamBuffer[i + 64], &sUnknown_0203ABB8->unk4[i], sizeof(struct OamData));
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_81523F4(struct UnkStruct_81520A8 *structPtr, u8 arg1)
+{
+ u16 tileStart;
+
+ if (structPtr == NULL)
+ return FALSE;
+
+ tileStart = GetSpriteTileStartByTag(structPtr->tileTag);
+ if (tileStart == 0xFFFF)
+ return FALSE;
+
+ structPtr->unk18 = arg1;
+ structPtr->tileNum = (sub_80355F8(structPtr->oam.shape, structPtr->oam.size) * arg1) + tileStart;
+ return TRUE;
+}
+
+u8 sub_8152438(u8 id, void (*func)(struct UnkStruct_81520A8 *))
+{
+ if (sUnknown_0203ABB8 == NULL || id >= sUnknown_0203ABB8->count)
+ return 0xFF;
+ else if (!sUnknown_0203ABB8->unk4[id].unk19_0)
+ return 0xFF;
+
+ sUnknown_0203ABB8->unk4[id].callback = func;
+ return id;
+}
+
+u8 sub_8152474(u8 id, u8 dataArrayId, s16 dataValue)
+{
+ if (sUnknown_0203ABB8 == NULL || id >= sUnknown_0203ABB8->count)
+ return 0xFF;
+ else if (!sUnknown_0203ABB8->unk4[id].unk19_0 || dataArrayId >= ARRAY_COUNT(sUnknown_0203ABB8->unk4[id].data))
+ return 0xFF;
+
+ sUnknown_0203ABB8->unk4[id].data[dataArrayId] = dataValue;
+ return id;
+}
+
+u8 sub_81524C4(const struct OamData *oam, u16 tileTag, u16 palTag, s16 x, s16 y, u8 arg5, u8 priority)
+{
+ struct UnkStruct_81520A8 *structPtr = NULL;
+ u8 i;
+
+ if (sUnknown_0203ABB8 == NULL || oam == NULL)
+ return 0xFF;
+
+ for (i = 0; i < sUnknown_0203ABB8->count; i++)
+ {
+ if (!sUnknown_0203ABB8->unk4[i].unk19_0)
+ {
+ structPtr = &sUnknown_0203ABB8->unk4[i];
+ memset(structPtr, 0, sizeof(*structPtr));
+ structPtr->id = i;
+ structPtr->unk19_0 = TRUE;
+ structPtr->unk19_1 = TRUE;
+ break;
+ }
+ }
+
+ if (structPtr == NULL)
+ return 0xFF;
+
+ memcpy(&structPtr->oam, oam, sizeof(*oam));
+ structPtr->tileTag = tileTag;
+ structPtr->palTag = palTag;
+ structPtr->x = x;
+ structPtr->y = y;
+ structPtr->oam.paletteNum = IndexOfSpritePaletteTag(palTag);
+ if (priority < 4)
+ {
+ structPtr->priority = priority;
+ structPtr->oam.priority = priority;
+ }
+ sub_81523F4(structPtr, arg5);
+
+ return structPtr->id;
+}
+
+u8 sub_81525D0(u8 id)
+{
+ if (sUnknown_0203ABB8 == NULL || !sUnknown_0203ABB8->unk4[id].unk19_0)
+ return 0xFF;
+
+ memset(&sUnknown_0203ABB8->unk4[id], 0, sizeof(struct UnkStruct_81520A8));
+ sUnknown_0203ABB8->unk4[id].oam.y = 160;
+ sUnknown_0203ABB8->unk4[id].oam.x = 240;
+ sUnknown_0203ABB8->unk4[id].unk19_2 = TRUE;
+ memcpy(&gMain.oamBuffer[id + 64], &gDummyOamData, sizeof(struct OamData));
+ return id;
+}
diff --git a/src/secret_base.c b/src/secret_base.c
index 7fae50a81..441bdef04 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -548,7 +548,7 @@ void sub_80E933C(void)
gSpecialVar_0x8006 = roomDecorPos[decorIdx] >> 4;
gSpecialVar_0x8007 = roomDecorPos[decorIdx] & 0xF;
metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
- if (MetatileBehavior_IsMB_B5(metatile) == TRUE || MetatileBehavior_IsMB_C3(metatile) == TRUE)
+ if (MetatileBehavior_IsSecretBaseLargeMatEdge(metatile) == TRUE || MetatileBehavior_IsLargeMatCenter(metatile) == TRUE)
{
gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + VAR_0x3F20;
VarSet(gSpecialVar_Result, gDecorations[roomDecor[decorIdx]].tiles[0]);
@@ -1271,7 +1271,7 @@ void sub_80EA3E4(u8 taskId)
}
}
}
- else if (MetatileBehavior_IsMB_BE(behavior) == TRUE)
+ else if (MetatileBehavior_IsSecretBaseBreakableDoor(behavior) == TRUE)
{
if (gUnknown_0203A01D == TRUE)
{
diff --git a/src/slot_machine.c b/src/slot_machine.c
index ed00f41c2..ef52b7171 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -22,6 +22,20 @@
#include "text_window.h"
#include "constants/rgb.h"
#include "main_menu.h"
+#include "bg.h"
+#include "window.h"
+
+extern u8 gOamLimit;
+
+// Text
+extern const u8 gText_YouDontHaveThreeCoins[];
+extern const u8 gText_QuitTheGame[];
+extern const u8 gText_YouveGot9999Coins[];
+extern const u8 gText_YouveRunOutOfCoins[];
+extern const u8 gText_ReelTimeHelp[];
+
+// gfx
+extern const u8 gSlotMachineReelTime_Gfx[];
enum
{
@@ -97,8 +111,6 @@ struct SlotMachineEwramStruct
/*0x64*/ MainCallback prevMainCb;
};
-extern struct SlotMachineEwramStruct *sSlotMachine;
-
struct UnkStruct1
{
/*0x00*/ u8 unk00;
@@ -108,213 +120,543 @@ struct UnkStruct1
#define SLOTMACHINE_GFX_TILES 233
-/*static*/void CB2_SlotMachineSetup(void);
-/*static*/void CB2_SlotMachineLoop(void);
-/*static*/void PlaySlotMachine_Internal(u8 arg0, MainCallback cb);
-/*static*/void SlotMachineDummyTask(u8 taskId);
-/*static*/void SlotMachineSetup_0_0(void);
-/*static*/void SlotMachineSetup_6_2(void);
-/*static*/void SlotMachineSetup_1_0(void);
-/*static*/void SlotMachineSetup_2_0(void);
-/*static*/void SlotMachineSetup_2_1(void);
-/*static*/void SlotMachineSetup_0_1(void);
-/*static*/void SlotMachineSetup_3_0(void);
-/*static*/void SlotMachineSetup_4_0(void);
-/*static*/void SlotMachineSetup_5_0(void);
-/*static*/void SlotMachineSetup_6_0(void);
-/*static*/void SlotMachineSetup_6_1(void);
-/*static*/void SlotMachineSetup_8_0(void);
-/*static*/void SlotMachineSetup_9_0(void);
-/*static*/void SlotMachineSetup_10_0(void);
-/*static*/void SlotMachineSetup_10_1(void);
-/*static*/void sub_8101D04(void);
-/*static*/void sub_8104DA4(void);
-/*static*/void sub_8101D24(u8 taskId);
-/*static*/bool8 sub_8101D5C(struct Task *task);
-/*static*/bool8 sub_8101D8C(struct Task *task);
-/*static*/bool8 sub_8101DB0(struct Task *task);
-/*static*/bool8 sub_8101DF4(struct Task *task);
-/*static*/bool8 sub_8101E10(struct Task *task);
-/*static*/bool8 sub_8101E3C(struct Task *task);
-/*static*/bool8 sub_8101F44(struct Task *task);
-/*static*/bool8 sub_8101F60(struct Task *task);
-/*static*/bool8 sub_8101F88(struct Task *task);
-/*static*/bool8 sub_8101FA4(struct Task *task);
-/*static*/bool8 sub_8102008(struct Task *task);
-/*static*/bool8 sub_8102034(struct Task *task);
-/*static*/bool8 sub_8102058(struct Task *task);
-/*static*/bool8 sub_8102090(struct Task *task);
-bool8 sub_81020C8(struct Task *task);
-/*static*/bool8 sub_81021E0(struct Task *task);
-/*static*/bool8 sub_81021FC(struct Task *task);
-/*static*/bool8 sub_8102264(struct Task *task);
-/*static*/bool8 sub_81022A0(struct Task *task);
-/*static*/bool8 sub_81022CC(struct Task *task);
-/*static*/bool8 sub_81022F0(struct Task *task);
-/*static*/bool8 sub_8102318(struct Task *task);
-/*static*/bool8 sub_8102344(struct Task *task);
-/*static*/bool8 sub_810239C(struct Task *task);
-/*static*/bool8 sub_81023B8(struct Task *task);
-/*static*/bool8 sub_81023E0_(struct Task *task);
-/*static*/bool8 sub_81023FC(struct Task *task);
-/*static*/bool8 sub_8102424(struct Task *task);
-/*static*/bool8 sub_8102460(struct Task *task);
-/*static*/void sub_8102484(void);
-/*static*/void sub_81024F0(void);
-/*static*/bool8 sub_8102540_(void);
-/*static*/u8 sub_8102578(void);
-/*static*/u16 dp15_jump_random_unknown(void);
-/*static*/u8 sub_81025BC(void);
-/*static*/void CheckMatch(void);
-/*static*/void CheckMatch_CenterRow(void);
-/*static*/void CheckMatch_TopAndBottom(void);
-/*static*/void CheckMatch_Diagonals(void);
-/*static*/u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3);
-/*static*/void sub_8102A24(void);
-/*static*/void sub_8102A64(u8 taskId);
-/*static*/bool8 sub_8102A44(void);
-/*static*/bool8 sub_8102A9C(struct Task *task);
-/*static*/bool8 sub_8102AD0(struct Task *task);
-/*static*/bool8 sub_8102B80(struct Task *task);
-/*static*/u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y);
-/*static*/void sub_8102DA8(void);
-/*static*/void sub_8102DEC(u8 a0);
-/*static*/void sub_8102E1C(u8 a0);
-/*static*/bool8 sub_8102E40(u8 a0);
-/*static*/void sub_8102E68(u8 taskId);
-/*static*/bool8 sub_8102EA0(struct Task *task);
-/*static*/bool8 sub_8102EA4(struct Task *task);
-/*static*/bool8 sub_8102EC0(struct Task *task);
-/*static*/bool8 sub_8102F4C(struct Task *task);
-/*static*/bool8 sub_8103008(struct Task *task);
-/*static*/bool8 sub_810305C(void);
-/*static*/bool8 sub_8103154(u8 a0, u8 a1);
-/*static*/bool8 sub_81031B4(u8 a0, u8 a1);
-/*static*/bool8 sub_81032C0(void);
-/*static*/bool8 sub_81032E8(void);
-/*static*/bool8 sub_810333C(void);
-/*static*/bool8 sub_81033DC(void);
-/*static*/bool8 sub_810341C(u8 a0);
-/*static*/bool8 sub_810347C(u8 a0);
-/*static*/void sub_81034F4(void);
-/*static*/void sub_8103540(void);
-/*static*/void sub_8103564(void);
-/*static*/void j5_08111E84(void);
-/*static*/void sub_8103668(void);
-/*static*/void sub_810380C(void);
-/*static*/void sub_8103830(void);
-/*static*/void sub_8103910(void);
-/*static*/void sub_8103A78(void);
-/*static*/void sub_8103C14(u8 a0);
-/*static*/void sub_8103C48(u8 taskId);
-/*static*/void sub_8103D50(u8 a0);
-/*static*/void sub_8103C78(struct Task *task, u8 taskId);
-/*static*/void sub_8103CAC(struct Task *task, u8 taskId);
-/*static*/void sub_8103CC8(struct Task *task, u8 taskId);
-/*static*/void sub_8103D8C(u8 a0);
-/*static*/void sub_8103DC8(void);
-/*static*/void sub_8103E04(u8 a0);
-/*static*/bool8 sub_8103E38(void);
-/*static*/bool8 sub_8103E7C(void);
-/*static*/bool8 sub_8103EAC(u8 spriteId);
-/*static*/void sub_8103EE4(struct Sprite *sprite);
-/*static*/void sub_8103F70(void);
-/*static*/bool8 sub_8103FA0(void);
-/*static*/void sub_8103FE8(u8 taskId);
-/*static*/void sub_8104048(void);
-/*static*/void sub_8104064(u8 pikaPower);
-/*static*/bool8 sub_81040C8(void);
-/*static*/void sub_81040E8(u8 taskId);
-/*static*/void nullsub_68(struct Task *task);
-/*static*/void sub_810411C(struct Task *task);
-/*static*/void sub_8104144(struct Task *task);
-/*static*/void sub_81041AC(struct Task *task);
-/*static*/void sub_810421C(struct Task *task);
-/*static*/void sub_810423C(u8 pikaPower);
-/*static*/void sub_810430C(void);
-/*static*/bool8 sub_810432C(void);
-/*static*/void sub_810434C(u8 taskId);
-/*static*/void sub_810437C(struct Task *task);
-/*static*/void sub_81043EC(struct Task *task);
-/*static*/void sub_8104468(struct Task *task);
-/*static*/void sub_8104498(struct Task *task);
-/*static*/void sub_8104548(struct Task *task);
-/*static*/void sub_8104598(struct Task *task);
-/*static*/void sub_81045CC(struct Task *task);
-/*static*/void sub_810463C(struct Task *task);
-/*static*/void sub_81046C0(struct Task *task);
-/*static*/void sub_8104764(struct Task *task);
-/*static*/void sub_8104794(struct Task *task);
-/*static*/void sub_81047EC(struct Task *task);
-/*static*/void sub_8104860(struct Task *task);
-/*static*/void sub_81048A8(struct Task *task);
-/*static*/void sub_81048CC(struct Task *task);
-/*static*/void sub_8104940(struct Task *task);
-/*static*/void sub_81049C8(struct Task *task);
-/*static*/void sub_81049F8(struct Task *task);
-/*static*/void sub_8104A40(s16 a0, s16 a1);
-/*static*/void sub_8104A88(s16 a0);
-/*static*/void sub_8104AB8(u8 a0);
-/*static*/bool8 sub_8104AEC(void);
-/*static*/void sub_8104B0C(u8 taskId);
-/*static*/void sub_8104B3C(struct Task *task);
-/*static*/void sub_8104B60(struct Task *task);
-/*static*/void sub_8104B80(struct Task *task);
-/*static*/void sub_8104BC8(struct Task *task);
-/*static*/void sub_8104BFC(struct Task *task);
-/*static*/void sub_8104C44(struct Task *task);
-/*static*/void sub_8104C5C(void);
-/*static*/void sub_8104CAC(u8 arg0);
-/*static*/bool8 sub_8104E18(void);
-/*static*/void nullsub_69(struct Task *task);
-/*static*/void sub_8104E74(u8 taskId);
-/*static*/void sub_8104EA8(void);
-/*static*/void sub_8104F8C(void);
-/*static*/void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3);
-/*static*/void sub_81050C4(void);
-/*static*/void sub_8105100(void);
-/*static*/void sub_810514C(void);
-/*static*/void sub_81051C0(void);
-/*static*/void sub_8105284(void);
-/*static*/void sub_81052EC(void);
-/*static*/void sub_81053A0(void);
-/*static*/void sub_810545C(void);
-/*static*/void sub_81054B8(void);
-/*static*/void sub_8105524(void);
-/*static*/void sub_8105554(void);
-/*static*/void sub_8105578(void);
-/*static*/void sub_8105688(s16 a0);
-/*static*/void sub_81056C0(void);
-/*static*/void sub_81056F0(void);
-/*static*/void sub_81057E8(s16 a0);
-/*static*/void sub_8105804(void);
-/*static*/void sub_8105854(void);
-/*static*/void sub_81058A0(void);
-/*static*/void sub_81058C4(void);
-/*static*/void sub_81059B8(void);
-/*static*/void sub_81059E8(void);
-/*static*/bool8 sub_8105ACC(void);
-/*static*/void sub_8105AEC(void);
-/*static*/u8 sub_8105B1C(s16 x, s16 y);
-/*static*/void sub_8105B88(u8 spriteId);
-/*static*/u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4);
-/*static*/void sub_81063C0(void);
-/*static*/void sub_8106404(void);
-/*static*/void sub_8106448(void);
-/*static*/void sub_81064B8(void);
-/*static*/void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
-/*static*/void sub_81065DC(void);
-/*static*/extern const struct UnkStruct1 *const gUnknown_083ED048[];
-/*static*/extern const u16 gPalette_83EDE24[];
-/*static*/extern const u8 gUnknown_083ECD04[][3];
-/*static*/extern const u8 gUnknown_083ECE3A[];
-/*static*/extern const u16 gUnknown_083ECE42[];
-/*static*/extern const u16 gUnknown_083ECE48[];
+/*static */void CB2_SlotMachineSetup(void);
+/*static */void CB2_SlotMachineLoop(void);
+/*static */void PlaySlotMachine_Internal(u8 arg0, MainCallback cb);
+/*static */void SlotMachineDummyTask(u8 taskId);
+/*static */void SlotMachineSetup_0_0(void);
+/*static */void SlotMachineSetup_6_2(void);
+/*static */void SlotMachineSetup_1_0(void);
+/*static */void SlotMachineSetup_2_0(void);
+/*static */void SlotMachineSetup_2_1(void);
+/*static */void SlotMachineSetup_0_1(void);
+/*static */void SlotMachineSetup_3_0(void);
+/*static */void SlotMachineSetup_4_0(void);
+/*static */void SlotMachineSetup_5_0(void);
+/*static */void SlotMachineSetup_6_0(void);
+/*static */void SlotMachineSetup_6_1(void);
+/*static */void SlotMachineSetup_8_0(void);
+/*static */void SlotMachineSetup_9_0(void);
+/*static */void SlotMachineSetup_10_0(void);
+/*static */void SlotMachineSetup_10_1(void);
+/*static */void sub_8101D04(void);
+/*static */void sub_8104DA4(void);
+/*static */void sub_8101D24(u8 taskId);
+/*static */bool8 sub_8101D5C(struct Task *task);
+/*static */bool8 sub_8101D8C(struct Task *task);
+/*static */bool8 sub_8101DB0(struct Task *task);
+/*static */bool8 sub_8101DF4(struct Task *task);
+/*static */bool8 sub_8101E10(struct Task *task);
+/*static */bool8 sub_8101E3C(struct Task *task);
+/*static */bool8 sub_8101F44(struct Task *task);
+/*static */bool8 sub_8101F60(struct Task *task);
+/*static */bool8 sub_8101F88(struct Task *task);
+/*static */bool8 sub_8101FA4(struct Task *task);
+/*static */bool8 sub_8102008(struct Task *task);
+/*static */bool8 sub_8102034(struct Task *task);
+/*static */bool8 sub_8102058(struct Task *task);
+/*static */bool8 sub_8102090(struct Task *task);
+/*static */bool8 sub_81020C8(struct Task *task);
+/*static */bool8 sub_81021E0(struct Task *task);
+/*static */bool8 sub_81021FC(struct Task *task);
+/*static */bool8 sub_8102264(struct Task *task);
+/*static */bool8 sub_81022A0(struct Task *task);
+/*static */bool8 sub_81022CC(struct Task *task);
+/*static */bool8 sub_81022F0(struct Task *task);
+/*static */bool8 sub_8102318(struct Task *task);
+/*static */bool8 sub_8102344(struct Task *task);
+/*static */bool8 sub_810239C(struct Task *task);
+/*static */bool8 sub_81023B8(struct Task *task);
+/*static */bool8 sub_81023E0_(struct Task *task);
+/*static */bool8 sub_81023FC(struct Task *task);
+/*static */bool8 sub_8102424(struct Task *task);
+/*static */bool8 sub_8102460(struct Task *task);
+/*static */void sub_8102484(void);
+/*static */void sub_81024F0(void);
+/*static */bool8 sub_8102540_(void);
+/*static */u8 sub_8102578(void);
+/*static */u16 dp15_jump_random_unknown(void);
+/*static */u8 sub_81025BC(void);
+/*static */void CheckMatch(void);
+/*static */void CheckMatch_CenterRow(void);
+/*static */void CheckMatch_TopAndBottom(void);
+/*static */void CheckMatch_Diagonals(void);
+/*static */u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3);
+/*static */void sub_8102A24(void);
+/*static */void sub_8102A64(u8 taskId);
+/*static */bool8 sub_8102A44(void);
+/*static */bool8 sub_8102A9C(struct Task *task);
+/*static */bool8 sub_8102AD0(struct Task *task);
+/*static */bool8 sub_8102B80(struct Task *task);
+/*static */u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y);
+/*static */void sub_8102DA8(void);
+/*static */void sub_8102DEC(u8 a0);
+/*static */void sub_8102E1C(u8 a0);
+/*static */bool8 sub_8102E40(u8 a0);
+/*static */void sub_8102E68(u8 taskId);
+/*static */bool8 sub_8102EA0(struct Task *task);
+/*static */bool8 sub_8102EA4(struct Task *task);
+/*static */bool8 sub_8102EC0(struct Task *task);
+/*static */bool8 sub_8102F4C(struct Task *task);
+/*static */bool8 sub_8103008(struct Task *task);
+/*static */bool8 sub_810305C(void);
+/*static */bool8 sub_8103154(u8 a0, u8 a1);
+/*static */bool8 sub_81031B4(u8 a0, u8 a1);
+/*static */bool8 sub_81032C0(void);
+/*static */bool8 sub_81032E8(void);
+/*static */bool8 sub_810333C(void);
+/*static */bool8 sub_81033DC(void);
+/*static */bool8 sub_810341C(u8 a0);
+/*static */bool8 sub_810347C(u8 a0);
+/*static */void sub_81034F4(void);
+/*static */void sub_8103540(void);
+/*static */void sub_8103564(void);
+/*static */void j5_08111E84(void);
+/*static */void sub_8103668(void);
+/*static */void sub_810380C(void);
+/*static */void sub_8103830(void);
+/*static */void sub_8103910(void);
+/*static */void sub_8103A78(void);
+/*static */void sub_8103C14(u8 a0);
+/*static */void sub_8103C48(u8 taskId);
+/*static */void sub_8103D50(u8 a0);
+/*static */void sub_8103C78(struct Task *task, u8 taskId);
+/*static */void sub_8103CAC(struct Task *task, u8 taskId);
+/*static */void sub_8103CC8(struct Task *task, u8 taskId);
+/*static */void sub_8103D8C(u8 a0);
+/*static */void sub_8103DC8(void);
+/*static */void sub_8103E04(u8 a0);
+/*static */bool8 sub_8103E38(void);
+/*static */bool8 sub_8103E7C(void);
+/*static */bool8 sub_8103EAC(u8 spriteId);
+/*static */void sub_8103EE4(struct Sprite *sprite);
+/*static */void sub_8103F70(void);
+/*static */bool8 sub_8103FA0(void);
+/*static */void sub_8103FE8_(u8 taskId);
+/*static */void sub_8104048(void);
+/*static */void sub_8104064(u8 pikaPower);
+/*static */bool8 sub_81040C8(void);
+/*static */void sub_81040E8(u8 taskId);
+/*static */void nullsub_68(struct Task *task);
+/*static */void sub_810411C(struct Task *task);
+/*static */void sub_8104144(struct Task *task);
+/*static */void sub_81041AC(struct Task *task);
+/*static */void sub_812D394(struct Task *task);
+/*static */void sub_810423C(u8 pikaPower);
+/*static */void sub_810430C(void);
+/*static */bool8 sub_810432C(void);
+/*static */void sub_810434C(u8 taskId);
+/*static */void sub_810437C(struct Task *task);
+/*static */void sub_81043EC(struct Task *task);
+/*static */void sub_8104468(struct Task *task);
+/*static */void sub_8104498(struct Task *task);
+/*static */void sub_8104548(struct Task *task);
+/*static */void sub_8104598(struct Task *task);
+/*static */void sub_81045CC(struct Task *task);
+/*static */void sub_810463C(struct Task *task);
+/*static */void sub_81046C0(struct Task *task);
+/*static */void sub_8104764(struct Task *task);
+/*static */void sub_8104794(struct Task *task);
+/*static */void sub_81047EC(struct Task *task);
+/*static */void sub_8104860(struct Task *task);
+/*static */void sub_81048A8(struct Task *task);
+/*static */void sub_81048CC(struct Task *task);
+/*static */void sub_8104940(struct Task *task);
+/*static */void sub_81049C8(struct Task *task);
+/*static */void sub_81049F8(struct Task *task);
+/*static */void sub_8104A40(s16 a0, s16 a1);
+/*static */void sub_8104A88(s16 a0);
+/*static */void sub_8104AB8(u8 a0);
+/*static */bool8 sub_8104AEC(void);
+/*static */void sub_8104B0C(u8 taskId);
+/*static */void sub_8104B3C(struct Task *task);
+/*static */void sub_8104B60(struct Task *task);
+/*static */void sub_8104B80(struct Task *task);
+/*static */void sub_8104BC8(struct Task *task);
+/*static */void sub_812DD78(struct Task *task);
+/*static */void sub_8104BFC(struct Task *task);
+/*static */void sub_812DE14(struct Task *task);
+/*static */void sub_812DE30(struct Task *task);
+/*static */void sub_8104C44(struct Task *task);
+/*static */void sub_8104C5C(void);
+/*static */void sub_8104CAC(u8 arg0);
+/*static */bool8 sub_8104E18(void);
+/*static */void nullsub_69(struct Task *task);
+/*static */void sub_8104E74_(u8 taskId);
+/*static */void sub_8104EA8(void);
+/*static */void sub_8104F8C(void);
+/*static */void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3);
+/*static */void sub_81050C4(void);
+/*static */void sub_8105100(void);
+/*static */void sub_810514C(void);
+/*static */void sub_81051C0(void);
+/*static */void sub_8105284_(void);
+/*static */void sub_81052EC(void);
+/*static */void sub_81053A0(void);
+/*static */void sub_810545C(void);
+/*static */void sub_81054B8(void);
+/*static */void sub_8105524(void);
+/*static */void sub_8105554(void);
+/*static */void sub_8105578(void);
+/*static */void sub_8105688(s16 a0);
+/*static */void sub_81056C0(void);
+/*static */void sub_81056F0(void);
+/*static */void sub_81057E8(s16 a0);
+/*static */void sub_8105804(void);
+/*static */void sub_8105854(void);
+/*static */void sub_81058A0(void);
+/*static */void sub_81058C4(void);
+/*static */void sub_81059B8(void);
+/*static */void sub_81059E8(void);
+/*static */bool8 sub_8105ACC(void);
+/*static */void sub_8105AEC(void);
+/*static */u8 sub_8105B1C(s16 x, s16 y);
+/*static */void sub_8105B88(u8 spriteId);
+/*static */u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4);
+/*static */void sub_81063C0(void);
+/*static */void sub_8106404(void);
+/*static */void sub_8106448(void);
+/*static */void sub_81064B8(void);
+/*static */void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
+/*static */void sub_81065DC(void);
+/*static */void sub_812F958(void);
+/*static */void sub_812F968(void);
+/*static */void LoadSlotMachineWheelOverlay(void);
+/*static */u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2);
+
+// Ewram variables
+static EWRAM_DATA u16 *gUnknown_0203AAC8 = NULL;
+static EWRAM_DATA u16 *gUnknown_0203AACC = NULL;
+static EWRAM_DATA u16 *gUnknown_0203AAD0 = NULL;
+static EWRAM_DATA u8 *gUnknown_0203AAD4 = NULL;
+static EWRAM_DATA u8 *gUnknown_0203AAD8 = NULL;
+static EWRAM_DATA u16 *gUnknown_0203AADC = NULL;
+static EWRAM_DATA u8 *gUnknown_0203AAE0 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAE4 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAE8 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAEC = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF0 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF4 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF8 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAFC = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB00 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB04 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB08 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB0C = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB10 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB14 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB18 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB1C = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB20 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB24 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB28 = NULL;
+static EWRAM_DATA struct SpriteSheet *gUnknown_0203AB2C = NULL;
+static EWRAM_DATA struct SpriteSheet *gUnknown_0203AB30 = NULL;
+static EWRAM_DATA struct SlotMachineEwramStruct *sSlotMachine = NULL;
+
+// IWRAM bss
+static IWRAM_DATA struct SpriteFrameImage *gUnknown_03001188[26];
+
+// Const rom data.
+extern const struct UnkStruct1 *const gUnknown_083ED048[];
+extern const u16 gPalette_83EDE24[];
+extern const u8 gUnknown_083ECD04[][3];
+extern const u8 gUnknown_083ECE3A[];
+extern const u16 gUnknown_083ECE42[];
+extern const u16 gUnknown_083ECE48[];
+extern const s16 gUnknown_083ECE7E[][2];
+extern const SpriteCallback gUnknown_083ECF0C[];
+extern const struct SpriteTemplate *const gUnknown_083EDB5C[];
+extern const struct SubspriteTable *const gUnknown_083EDBC4[];
+extern const struct SpriteTemplate gSpriteTemplate_83ED6CC;
+extern const struct SpriteTemplate gSpriteTemplate_83ED564;
+extern const struct SpriteTemplate gSpriteTemplate_83ED54C;
+extern const struct SpriteTemplate gSpriteTemplate_83ED534;
+extern const u8 gUnknown_083ECC58[2];
+extern const struct SpriteTemplate gSpriteTemplate_83ED51C;
+extern const u16 gUnknown_083ECE12[];
+extern const u16 *const gUnknown_083EDE10[];
+extern const u16 gUnknown_083ECE1C[][2];
+extern const u16 gUnknown_083ECE30[];
+extern const u16 sSlotMatchFlags[];
+extern const u16 sSlotPayouts[];
+extern const u8 *const gUnknown_083EDCE4;
+extern const u8 *const gUnknown_083EDCDC;
+extern const u8 sReelTimeGfx[];
+extern const struct SpriteSheet sSlotMachineSpriteSheets[];
+extern const struct SpritePalette gSlotMachineSpritePalettes[];
+extern const u16 *const gUnknown_083EDE20;
+extern const s16 gUnknown_083ECCF8[][2];
+extern const struct BgTemplate gUnknown_085A7424[4];
+extern const struct WindowTemplate gUnknown_085A7434[];
+extern const u8 gUnknown_083ECD16[][6];
+extern const u8 gUnknown_083ECD28[][6];
+extern const u8 gUnknown_083ECD46[][17];
+extern const u8 gUnknown_083ECDAC[][17];
+extern const u8 sSym2Match[];
+extern const u8 gUnknown_083ECCF1[];
+extern const u8 sReelSymbols[][21];
+extern const u16 *const gUnknown_083EDD08[];
+extern const u16 *const gUnknown_083EDD1C[];
+extern const u8 gUnknown_083EDD30[];
+extern const u8 gUnknown_083EDD35[][2];
+extern const u8 gUnknown_083EDD3B[];
+extern const u16 *const gUnknown_083EDDA0[];
+extern const u16 *const gUnknown_083EDDAC;
+extern const u16 sReelTimeWindowTilemap[];
+extern const u16 gUnknown_085A9898[];
+extern void (*const gUnknown_083ED064[])(void);
+
+const struct BgTemplate gUnknown_085A7424[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 28,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+};
+
+const struct WindowTemplate gUnknown_085A7434[] =
+{
+ {0, 2, 15, 0x1B, 4, 15, 0x194},
+ DUMMY_WIN_TEMPLATE
+};
+
+const struct WindowTemplate gUnknown_085A7444 =
+{
+ 0, 1, 3, 20, 13, 13, 1
+};
+
+const u8 gUnknown_085A744C[] = {3, 1, 2, 0};
+
+bool8 (*const gUnknown_083ECAAC[])(struct Task *task) =
+{
+ sub_8101D5C,
+ sub_8101D8C,
+ sub_8101DB0,
+ sub_8101DF4,
+ sub_8101E10,
+ sub_8101E3C,
+ sub_8101F44,
+ sub_8101F60,
+ sub_8101F88,
+ sub_8101FA4,
+ sub_8102008,
+ sub_8102034,
+ sub_8102058,
+ sub_8102090,
+ sub_81020C8,
+ sub_81021E0,
+ sub_81021FC,
+ sub_8102264,
+ sub_81022A0,
+ sub_81022CC,
+ sub_81022F0,
+ sub_8102318,
+ sub_8102344,
+ sub_810239C,
+ sub_81023B8,
+ sub_81023E0_,
+ sub_81023FC,
+ sub_8102424,
+ sub_8102460,
+};
+
+bool8 (*const gUnknown_083ECB20[])(struct Task *task) =
+{
+ sub_8102A9C,
+ sub_8102AD0,
+ sub_8102B80
+};
+
+bool8 (*const gUnknown_083ECB2C[])(struct Task *task) =
+{
+ sub_8102EA0,
+ sub_8102EA4,
+ sub_8102EC0,
+ sub_8102F4C,
+ sub_8103008
+};
+
+bool8 (*const gUnknown_083ECB40[])(void) =
+{
+ sub_810305C,
+ sub_81032C0,
+ sub_81033DC
+};
+
+void (*const gUnknown_083ECB4C[])(void) =
+{
+ sub_81034F4,
+ sub_8103540,
+ sub_810380C
+};
+
+const u16 gUnknown_085A74FC[] = {2, 4, 4, 4, 8};
+
+bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) =
+{
+ sub_8103154,
+ sub_81031B4,
+ sub_81031B4
+};
+
+bool8 (*const gUnknown_083ECB70[])(void) =
+{
+ sub_81032E8,
+ sub_81032E8,
+ sub_810333C
+};
+
+bool8 (*const gUnknown_083ECB7C[])(u8 a0) =
+{
+ sub_810341C,
+ sub_810341C,
+ sub_810347C
+};
+
+void (*const gUnknown_083ECB88[])(void) =
+{
+ sub_8103564,
+ j5_08111E84,
+ sub_8103668
+};
+
+void (*const gUnknown_083ECB94[])(void) =
+{
+ sub_8103830,
+ sub_8103910,
+ sub_8103A78
+};
+
+void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) =
+{
+ sub_8103C78,
+ sub_8103CAC,
+ sub_8103CC8
+};
+
+const s16 gUnknown_083ECBAC[] = {5, 10, 15};
+
+void (*const gUnknown_083ECBB4[])(struct Task *task) =
+{
+ nullsub_68,
+ sub_810411C,
+ sub_8104144,
+ sub_81041AC
+};
+
+const u16 gUnknown_083ECBC4[][2] =
+{
+ {0x9e, 0x6e},
+ {0x9f, 0x6f},
+ {0xaf, 0x7f},
+};
+
+void (*const gUnknown_083ECBD0[])(struct Task *task) =
+{
+ sub_810437C,
+ sub_81043EC,
+ sub_8104468,
+ sub_8104498,
+ sub_8104548,
+ sub_8104598,
+ sub_81045CC,
+ sub_810463C,
+ sub_81046C0,
+ sub_8104764,
+ sub_8104794,
+ sub_81047EC,
+ sub_8104860,
+ sub_81048A8,
+ sub_81048CC,
+ sub_8104940,
+ sub_81049C8,
+ sub_8104794,
+ sub_81049F8
+};
+
+const u8 gUnknown_085A75C0[] = {1, 1, 2, 2};
+const s16 gUnknown_085A75C4[] = {0x40, 0x30, 0x18, 0x08};
+const s16 gUnknown_085A75CC[] = {10, 8, 6, 4};
+
+void (*const gUnknown_083ECC30[])(struct Task *task) =
+{
+ sub_8104B3C,
+ sub_8104B60,
+ sub_8104B80,
+ sub_8104B60,
+ sub_812DD78,
+ sub_8104B60,
+ sub_8104BC8,
+ sub_8104B60,
+ sub_812DE14,
+ sub_8104B60,
+ sub_812DE30,
+ sub_8104B60,
+ sub_8104BFC,
+ sub_8104B60,
+ sub_8104C44,
+};
+
+void (*const gUnknown_083ECC54[])(struct Task *task) =
+{
+ nullsub_69,
+};
+
+extern const struct SpriteTemplate gSpriteTemplate_83ED504;
+extern const struct SpriteTemplate gSpriteTemplate_83ED4EC;
+extern const struct SubspriteTable gSubspriteTables_83ED7D4[];
+extern const struct SpriteTemplate gSpriteTemplate_83ED4D4;
+extern const struct SubspriteTable gSubspriteTables_83ED7B4[];
+extern const struct SpriteTemplate gSpriteTemplate_83ED4BC;
+extern const struct SpriteTemplate gSpriteTemplate_83ED4A4;
+extern const struct SubspriteTable gSubspriteTables_83ED78C[];
+extern const struct SpriteTemplate gSpriteTemplate_83ED474;
+extern const struct SpriteTemplate gSpriteTemplate_83ED48C;
+extern const struct SubspriteTable gSubspriteTables_83ED73C[];
+extern const struct SubspriteTable gSubspriteTables_83ED75C[];
+extern const struct SpriteTemplate gSpriteTemplate_83ED444;
+extern const struct SubspriteTable gSubspriteTables_83ED704[];
+extern const struct SpriteTemplate gSpriteTemplate_83ED42C;
+extern const struct SpriteTemplate gSpriteTemplate_83ED414;
+extern const struct SpriteTemplate gSpriteTemplate_83ED45C;
// code
#define tState data[0]
-void Task_FadeToSlotMachine(u8 taskId)
+/*static */void Task_FadeToSlotMachine(u8 taskId)
{
switch (gTasks[taskId].tState)
{
@@ -344,7 +686,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
#undef tState
-void CB2_SlotMachineSetup(void)
+/*static */void CB2_SlotMachineSetup(void)
{
switch (gMain.state)
{
@@ -405,7 +747,7 @@ void CB2_SlotMachineSetup(void)
}
}
-void CB2_SlotMachineLoop(void)
+/*static */void CB2_SlotMachineLoop(void)
{
RunTasks();
AnimateSprites();
@@ -413,7 +755,7 @@ void CB2_SlotMachineLoop(void)
UpdatePaletteFade();
}
-void SlotMachine_VBlankCallback(void)
+/*static */void SlotMachine_VBlankCallback(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -424,28 +766,25 @@ void SlotMachine_VBlankCallback(void)
SetGpuReg(REG_OFFSET_WINOUT, sSlotMachine->winOut);
}
-void PlaySlotMachine_Internal(u8 arg0, MainCallback cb)
+/*static */void PlaySlotMachine_Internal(u8 arg0, MainCallback cb)
{
struct Task *task = gTasks + CreateTask(SlotMachineDummyTask, 0xFF);
task->data[0] = arg0;
StoreWordInTwoHalfwords(task->data + 1, (intptr_t)cb);
}
-void sub_81019EC(void)
+/*static */void sub_81019EC(void)
{
struct Task *task = gTasks + FindTaskIdByFunc(SlotMachineDummyTask);
sSlotMachine->unk01 = task->data[0];
LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&sSlotMachine->prevMainCb);
}
-void SlotMachineDummyTask(u8 taskId)
+/*static */void SlotMachineDummyTask(u8 taskId)
{
}
-extern const struct BgTemplate gUnknown_085A7424[4];
-extern const struct WindowTemplate gUnknown_085A7434[];
-
-void SlotMachineSetup_0_0(void)
+/*static */void SlotMachineSetup_0_0(void)
{
SetVBlankCallback(NULL);
SetHBlankCallback(NULL);
@@ -456,24 +795,24 @@ void SlotMachineSetup_0_0(void)
DeactivateAllTextPrinters();
}
-void SlotMachineSetup_6_0(void)
+/*static */void SlotMachineSetup_6_0(void)
{
SetVBlankCallback(SlotMachine_VBlankCallback);
EnableInterrupts(INTR_FLAG_VBLANK);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
}
-void SlotMachineSetup_1_0(void)
+/*static */void SlotMachineSetup_1_0(void)
{
DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000);
}
-void SlotMachineSetup_2_0(void)
+/*static */void SlotMachineSetup_2_0(void)
{
DmaClear16(3, (u16 *)OAM, OAM_SIZE);
}
-void SlotMachineSetup_2_1(void)
+/*static */void SlotMachineSetup_2_1(void)
{
SetGpuReg(REG_OFFSET_BG0CNT, 0);
SetGpuReg(REG_OFFSET_BG1CNT, 0);
@@ -493,9 +832,7 @@ void SlotMachineSetup_2_1(void)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(9, 8));
}
-extern const s16 gUnknown_083ECCF8[][2];
-
-void SlotMachineSetup_0_1(void)
+/*static */void SlotMachineSetup_0_1(void)
{
u8 i;
@@ -528,9 +865,7 @@ void SlotMachineSetup_0_1(void)
sub_80EDE70(GetCoins());
}
-extern u8 gOamLimit;
-
-void SlotMachineSetup_3_0(void)
+/*static */void SlotMachineSetup_3_0(void)
{
ResetPaletteFade();
ResetSpriteData();
@@ -539,35 +874,7 @@ void SlotMachineSetup_3_0(void)
ResetTasks();
}
-extern u16 *gUnknown_0203AAC8;
-extern u16 *gUnknown_0203AACC;
-extern u16 *gUnknown_0203AAD0;
-extern u16 *gUnknown_0203AADC;
-extern void *gUnknown_0203AAF4;
-extern void *gUnknown_0203AAF8;
-extern void *gUnknown_0203AAFC;
-extern void *gUnknown_0203AB00;
-extern void *gUnknown_0203AB04;
-extern void *gUnknown_0203AB08;
-extern void *gUnknown_0203AB0C;
-extern void *gUnknown_0203AB10;
-extern void *gUnknown_0203AB14;
-extern void *gUnknown_0203AB18;
-extern void *gUnknown_0203AB1C;
-extern void *gUnknown_0203AB20;
-extern void *gUnknown_0203AB24;
-extern void *gUnknown_0203AB28;
-extern void *gUnknown_0203AAE4;
-extern void *gUnknown_0203AAE8;
-extern void *gUnknown_0203AAEC;
-extern void *gUnknown_0203AAF0;
-extern void *gUnknown_0203AAD4;
-extern void *gUnknown_0203AAD8;
-extern void *gUnknown_0203AAE0;
-extern void *gUnknown_0203AB2C;
-extern void *gUnknown_0203AB30;
-
-void SlotMachineSetup_4_0(void)
+/*static */void SlotMachineSetup_4_0(void)
{
gUnknown_0203AACC = Alloc(8);
gUnknown_0203AAD0 = AllocZeroed(0xE);
@@ -582,21 +889,17 @@ void SlotMachineSetup_4_0(void)
gUnknown_0203AAD0[6] = 0x20BF;
}
-/*static*/void sub_812F908(void);
-/*static*/void sub_812F958(void);
-/*static*/void sub_812F7E4(void);
-
-void SlotMachineSetup_5_0(void)
+/*static */void SlotMachineSetup_5_0(void)
{
- sub_812F908();
- sub_812F958();
- sub_812F7E4();
+ sub_8106448();
+ sub_81064B8();
+ sub_81063C0();
LoadMessageBoxGfx(0, 0x200, 0xF0);
LoadUserWindowBorderGfx(0, 0x214, 0xE0);
PutWindowTilemap(0);
}
-void SlotMachineSetup_10_0(void)
+/*static */void SlotMachineSetup_10_0(void)
{
sub_8104EA8();
sub_8104F8C();
@@ -604,7 +907,7 @@ void SlotMachineSetup_10_0(void)
sub_81050C4();
}
-void SlotMachineSetup_10_1(void)
+/*static */void SlotMachineSetup_10_1(void)
{
sub_8104048();
sub_8102DA8();
@@ -612,20 +915,18 @@ void SlotMachineSetup_10_1(void)
sub_8101D04();
}
-void sub_8101D04(void)
+/*static */void sub_8101D04(void)
{
sub_8101D24(CreateTask(sub_8101D24, 0));
}
-extern bool8 (*const gUnknown_083ECAAC[])(struct Task *task);
-
-void sub_8101D24(u8 taskId)
+/*static */void sub_8101D24(u8 taskId)
{
while (gUnknown_083ECAAC[sSlotMachine->state](gTasks + taskId))
;
}
-bool8 sub_8101D5C(struct Task *task)
+/*static */bool8 sub_8101D5C(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
sub_810423C(sSlotMachine->pikaPower);
@@ -633,14 +934,14 @@ bool8 sub_8101D5C(struct Task *task)
return FALSE;
}
-bool8 sub_8101D8C(struct Task *task)
+/*static */bool8 sub_8101D8C(struct Task *task)
{
if (!gPaletteFade.active)
sSlotMachine->state++;
return FALSE;
}
-bool8 sub_8101DB0(struct Task *task)
+/*static */bool8 sub_8101DB0(struct Task *task)
{
sSlotMachine->payout = 0;
sSlotMachine->bet = 0;
@@ -659,14 +960,14 @@ bool8 sub_8101DB0(struct Task *task)
return TRUE;
}
-bool8 sub_8101DF4(struct Task *task)
+/*static */bool8 sub_8101DF4(struct Task *task)
{
if (sub_8104E18())
sSlotMachine->state = 4;
return FALSE;
}
-bool8 sub_8101E10(struct Task *task)
+/*static */bool8 sub_8101E10(struct Task *task)
{
sub_8104CAC(0);
sSlotMachine->state = 5;
@@ -675,7 +976,7 @@ bool8 sub_8101E10(struct Task *task)
return TRUE;
}
-bool8 sub_8101E3C(struct Task *task)
+/*static */bool8 sub_8101E3C(struct Task *task)
{
s16 i;
@@ -717,12 +1018,7 @@ bool8 sub_8101E3C(struct Task *task)
return FALSE;
}
-extern const u8 gText_YouDontHaveThreeCoins[];
-extern const u8 gText_QuitTheGame[];
-extern const u8 gText_YouveGot9999Coins[];
-extern const u8 gText_YouveRunOutOfCoins[];
-
-bool8 sub_8101F44(struct Task *task)
+/*static */bool8 sub_8101F44(struct Task *task)
{
NewMenuHelpers_DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouDontHaveThreeCoins, 0, 1, 0, 0);
@@ -731,7 +1027,7 @@ bool8 sub_8101F44(struct Task *task)
return FALSE;
}
-bool8 sub_8101F60(struct Task *task)
+/*static */bool8 sub_8101F60(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
@@ -741,14 +1037,14 @@ bool8 sub_8101F60(struct Task *task)
return FALSE;
}
-bool8 sub_8101F88(struct Task *task)
+/*static */bool8 sub_8101F88(struct Task *task)
{
if (sub_8104AEC())
sSlotMachine->state = 5;
return FALSE;
}
-bool8 sub_8101FA4(struct Task *task)
+/*static */bool8 sub_8101FA4(struct Task *task)
{
sub_8102484();
sub_8104DA4();
@@ -773,7 +1069,7 @@ bool8 sub_8101FA4(struct Task *task)
return FALSE;
}
-bool8 sub_8102008(struct Task *task)
+/*static */bool8 sub_8102008(struct Task *task)
{
if (sub_810432C())
{
@@ -784,7 +1080,7 @@ bool8 sub_8102008(struct Task *task)
return FALSE;
}
-bool8 sub_8102034(struct Task *task)
+/*static */bool8 sub_8102034(struct Task *task)
{
if (++task->data[0] >= 30)
{
@@ -794,7 +1090,7 @@ bool8 sub_8102034(struct Task *task)
return FALSE;
}
-bool8 sub_8102058(struct Task *task)
+/*static */bool8 sub_8102058(struct Task *task)
{
if (gMain.newKeys & A_BUTTON)
{
@@ -806,7 +1102,7 @@ bool8 sub_8102058(struct Task *task)
return FALSE;
}
-bool8 sub_8102090(struct Task *task)
+/*static */bool8 sub_8102090(struct Task *task)
{
if (!sub_8102E40(sSlotMachine->unk18))
{
@@ -821,7 +1117,7 @@ bool8 sub_8102090(struct Task *task)
return FALSE;
}
-bool8 sub_81020C8(struct Task *task)
+/*static */bool8 sub_81020C8(struct Task *task)
{
sSlotMachine->unk04 &= 0xc0;
CheckMatch();
@@ -883,14 +1179,14 @@ bool8 sub_81020C8(struct Task *task)
return FALSE;
}
-bool8 sub_81021E0(struct Task *task)
+/*static */bool8 sub_81021E0(struct Task *task)
{
if (sub_8102A44())
sSlotMachine->state = 16;
return FALSE;
}
-bool8 sub_81021FC(struct Task *task)
+/*static */bool8 sub_81021FC(struct Task *task)
{
if (sub_8103FA0())
{
@@ -913,7 +1209,7 @@ bool8 sub_81021FC(struct Task *task)
return FALSE;
}
-bool8 sub_8102264(struct Task *task)
+/*static */bool8 sub_8102264(struct Task *task)
{
if (!sub_81040C8())
{
@@ -931,7 +1227,7 @@ bool8 sub_8102264(struct Task *task)
return FALSE;
}
-bool8 sub_81022A0(struct Task *task)
+/*static */bool8 sub_81022A0(struct Task *task)
{
if (sub_8104E18())
{
@@ -944,7 +1240,7 @@ bool8 sub_81022A0(struct Task *task)
return FALSE;
}
-bool8 sub_81022CC(struct Task *task)
+/*static */bool8 sub_81022CC(struct Task *task)
{
sub_8103D8C(0);
sub_8103D8C(1);
@@ -953,7 +1249,7 @@ bool8 sub_81022CC(struct Task *task)
return FALSE;
}
-bool8 sub_81022F0(struct Task *task)
+/*static */bool8 sub_81022F0(struct Task *task)
{
if (++task->data[1] > 64)
{
@@ -963,17 +1259,17 @@ bool8 sub_81022F0(struct Task *task)
return FALSE;
}
-bool8 sub_8102318(struct Task *task)
+/*static */bool8 sub_8102318(struct Task *task)
{
NewMenuHelpers_DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_QuitTheGame, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
- sub_80323CC(0x15, 7, 0x214, 0x180, 0xE, 0xF);
+ CreateYesNoMenuParameterized(0x15, 7, 0x214, 0x180, 0xE, 0xF);
sSlotMachine->state = 22;
return FALSE;
}
-bool8 sub_8102344(struct Task *task)
+/*static */bool8 sub_8102344(struct Task *task)
{
s8 input = Menu_ProcessInputNoWrap_();
if (input == 0)
@@ -993,7 +1289,7 @@ bool8 sub_8102344(struct Task *task)
return FALSE;
}
-bool8 sub_810239C(struct Task *task)
+/*static */bool8 sub_810239C(struct Task *task)
{
NewMenuHelpers_DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouveGot9999Coins, 0, 1, 0, 0);
@@ -1002,7 +1298,7 @@ bool8 sub_810239C(struct Task *task)
return FALSE;
}
-bool8 sub_81023B8(struct Task *task)
+/*static */bool8 sub_81023B8(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
@@ -1012,7 +1308,7 @@ bool8 sub_81023B8(struct Task *task)
return FALSE;
}
-bool8 sub_81023E0_(struct Task *task)
+/*static */bool8 sub_81023E0_(struct Task *task)
{
NewMenuHelpers_DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouveRunOutOfCoins, 0, 1, 0, 0);
@@ -1021,7 +1317,7 @@ bool8 sub_81023E0_(struct Task *task)
return FALSE;
}
-bool8 sub_81023FC(struct Task *task)
+/*static */bool8 sub_81023FC(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
@@ -1031,7 +1327,7 @@ bool8 sub_81023FC(struct Task *task)
return FALSE;
}
-bool8 sub_8102424(struct Task *task)
+/*static */bool8 sub_8102424(struct Task *task)
{
SetCoins(sSlotMachine->coins);
sub_80EDD78(GetCoins());
@@ -1040,7 +1336,7 @@ bool8 sub_8102424(struct Task *task)
return FALSE;
}
-bool8 sub_8102460(struct Task *task)
+/*static */bool8 sub_8102460(struct Task *task)
{
if (!gPaletteFade.active)
{
@@ -1082,7 +1378,7 @@ bool8 sub_8102460(struct Task *task)
return FALSE;
}
-void sub_8102484(void)
+/*static */void sub_8102484(void)
{
u8 r3;
@@ -1111,14 +1407,14 @@ void sub_8102484(void)
}
}
-void sub_81024F0(void)
+/*static */void sub_81024F0(void)
{
sSlotMachine->unk06 = 0;
if (sSlotMachine->unk04)
sSlotMachine->unk06 = 1;
}
-u8 sub_810250C(u8 a0)
+/*static */u8 sub_810250C(u8 a0)
{
u8 i;
@@ -1131,7 +1427,7 @@ u8 sub_810250C(u8 a0)
return 0;
}
-bool8 sub_8102540_(void)
+/*static */bool8 sub_8102540_(void)
{
u8 rval = Random();
if (gUnknown_083ECD04[sSlotMachine->unk01][sSlotMachine->bet - 1] > rval)
@@ -1139,12 +1435,7 @@ bool8 sub_8102540_(void)
return FALSE;
}
-extern const u8 gUnknown_083ECD16[][6];
-extern const u8 gUnknown_083ECD28[][6];
-extern const u8 gUnknown_083ECD46[][17];
-extern const u8 gUnknown_083ECDAC[][17];
-
-u8 sub_8102578(void)
+/*static */u8 sub_8102578(void)
{
s16 i;
@@ -1158,7 +1449,7 @@ u8 sub_8102578(void)
return i;
}
-u8 sub_81025BC(void)
+/*static */u8 sub_81025BC(void)
{
s16 i;
@@ -1184,7 +1475,7 @@ u8 sub_81025BC(void)
return i;
}
-u8 sub_810264C(u8 a0)
+/*static */u8 sub_810264C(u8 a0)
{
if (sSlotMachine->unk03 == 0)
return gUnknown_083ECD46[a0][sSlotMachine->pikaPower];
@@ -1192,7 +1483,7 @@ u8 sub_810264C(u8 a0)
return gUnknown_083ECDAC[a0][sSlotMachine->pikaPower];
}
-void sub_8102680(void)
+/*static */void sub_8102680(void)
{
u8 rval;
s16 i;
@@ -1210,13 +1501,7 @@ void sub_8102680(void)
sSlotMachine->unk05 = i;
}
-extern const u16 gUnknown_083ECE12[];
-extern const u16 gUnknown_083ECE1C[][2];
-extern const u16 gUnknown_083ECE30[];
-extern const u16 sSlotMatchFlags[];
-extern const u16 sSlotPayouts[];
-
-bool8 sub_81026DC(u16 a0)
+/*static */bool8 sub_81026DC(u16 a0)
{
u16 rval = Random() & 0xff;
if (rval < gUnknown_083ECE12[a0])
@@ -1225,7 +1510,7 @@ bool8 sub_81026DC(u16 a0)
return FALSE;
}
-u16 dp15_jump_random_unknown(void)
+/*static */u16 dp15_jump_random_unknown(void)
{
u8 r4 = 0;
u8 rval;
@@ -1249,7 +1534,7 @@ u16 dp15_jump_random_unknown(void)
return 8;
}
-void CheckMatch(void)
+/*static */void CheckMatch(void)
{
sSlotMachine->matchedSymbols = 0;
CheckMatch_CenterRow();
@@ -1259,7 +1544,7 @@ void CheckMatch(void)
CheckMatch_Diagonals();
}
-void CheckMatch_CenterRow(void)
+/*static */void CheckMatch_CenterRow(void)
{
u8 c1, c2, c3, match;
@@ -1275,7 +1560,7 @@ void CheckMatch_CenterRow(void)
}
}
-void CheckMatch_TopAndBottom(void)
+/*static */void CheckMatch_TopAndBottom(void)
{
u8 c1, c2, c3, match;
@@ -1305,7 +1590,7 @@ void CheckMatch_TopAndBottom(void)
}
}
-void CheckMatch_Diagonals(void)
+/*static */void CheckMatch_Diagonals(void)
{
u8 c1, c2, c3, match;
@@ -1337,9 +1622,7 @@ void CheckMatch_Diagonals(void)
}
}
-extern const u8 sSym2Match[];
-
-u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
+/*static */u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
{
if (c1 == c2 && c1 == c3)
return sSym2Match[c1];
@@ -1352,15 +1635,2982 @@ u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
return SLOT_MACHINE_MATCHED_NONE;
}
-void sub_8102A24(void)
+/*static */void sub_8102A24(void)
{
sub_8102A64(CreateTask(sub_8102A64, 4));
}
-bool8 sub_8102A44(void)
+/*static */bool8 sub_8102A44(void)
{
if (FindTaskIdByFunc(sub_8102A64) == 0xff)
return TRUE;
else
return FALSE;
}
+
+/*static */void sub_8102A64(u8 taskId)
+{
+ while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId))
+ ;
+}
+
+/*static */bool8 sub_8102A9C(struct Task *task)
+{
+ if (sub_8103E38())
+ {
+ task->data[0]++;
+ if (sSlotMachine->payout == 0)
+ {
+ task->data[0] = 2;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+/*static */bool8 sub_8102AD0(struct Task *task)
+{
+ if (!task->data[1]--)
+ {
+ if (IsFanfareTaskInactive())
+ PlaySE(SE_PIN);
+ sSlotMachine->payout--;
+ if (sSlotMachine->coins < 9999)
+ sSlotMachine->coins++;
+ task->data[1] = 8;
+ if (gMain.heldKeys & A_BUTTON)
+ task->data[1] = 4;
+ }
+ if (IsFanfareTaskInactive() && gMain.newKeys & START_BUTTON)
+ {
+ PlaySE(SE_PIN);
+ sSlotMachine->coins += sSlotMachine->payout;
+ if (sSlotMachine->coins > 9999)
+ sSlotMachine->coins = 9999;
+ sSlotMachine->payout = 0;
+ }
+ if (sSlotMachine->payout == 0)
+ task->data[0]++;
+ return FALSE;
+}
+
+/*static */bool8 sub_8102B80(struct Task *task)
+{
+ if (sub_8103E7C())
+ DestroyTask(FindTaskIdByFunc(sub_8102A64));
+ return FALSE;
+}
+
+/*static */u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y)
+{
+ s16 offset = (sSlotMachine->reelPositions[x] + y) % 21;
+ if (offset < 0)
+ offset += 21;
+ return sReelSymbols[x][offset];
+}
+
+/*static */u8 GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(u8 x, s16 y)
+{
+ s16 r6 = 0;
+ s16 result = sSlotMachine->unk1C[x] % 24;
+ if (result != 0)
+ r6 = -1;
+ return GetTagOfReelSymbolOnScreenAtPos(x, y + r6);
+}
+
+/*static */u8 sub_8102C48(s16 a0)
+{
+ s16 r1 = (sSlotMachine->unk16 + a0) % 6;
+ if (r1 < 0)
+ r1 += 6;
+ return gUnknown_083ECCF1[r1];
+}
+
+/*static */void sub_8102C84(u8 a0, s16 a1)
+{
+ sSlotMachine->unk1C[a0] += a1;
+ sSlotMachine->unk1C[a0] %= 504;
+ sSlotMachine->reelPositions[a0] = 21 - sSlotMachine->unk1C[a0] / 24;
+}
+
+s16 sub_8102CCC(u8 a0, s16 a1)
+{
+ s16 r1 = sSlotMachine->unk1C[a0] % 24;
+ if (r1 != 0)
+ {
+ if (r1 < a1)
+ a1 = r1;
+ sub_8102C84(a0, a1);
+ r1 = sSlotMachine->unk1C[a0] % 24;
+ }
+ return r1;
+}
+
+/*static */void sub_8102D28(s16 a0)
+{
+ sSlotMachine->unk14 += a0;
+ sSlotMachine->unk14 %= 120;
+ sSlotMachine->unk16 = 6 - sSlotMachine->unk14 / 20;
+}
+
+s16 sub_8102D5C(s16 a0)
+{
+ s16 r1 = sSlotMachine->unk14 % 20;
+ if (r1 != 0)
+ {
+ if (r1 < a0)
+ a0 = r1;
+ sub_8102D28(a0);
+ r1 = sSlotMachine->unk14 % 20;
+ }
+ return r1;
+}
+
+/*static */void sub_8102DA8(void)
+{
+ u8 i;
+ for (i = 0; i < 3; i++)
+ {
+ u8 taskId = CreateTask(sub_8102E68, 2);
+ gTasks[taskId].data[15] = i;
+ sSlotMachine->reelTasks[i] = taskId;
+ sub_8102E68(taskId);
+ }
+}
+
+/*static */void sub_8102DEC(u8 a0)
+{
+ gTasks[sSlotMachine->reelTasks[a0]].data[0] = 1;
+ gTasks[sSlotMachine->reelTasks[a0]].data[14] = 1;
+}
+
+/*static */void sub_8102E1C(u8 a0)
+{
+ gTasks[sSlotMachine->reelTasks[a0]].data[0] = 2;
+}
+
+/*static */bool8 sub_8102E40(u8 a0)
+{
+ return gTasks[sSlotMachine->reelTasks[a0]].data[14];
+}
+
+/*static */void sub_8102E68(u8 taskId)
+{
+ while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId))
+ ;
+}
+
+/*static */bool8 sub_8102EA0(struct Task *task)
+{
+ return FALSE;
+}
+
+/*static */bool8 sub_8102EA4(struct Task *task)
+{
+ sub_8102C84(task->data[15], sSlotMachine->unk1A);
+ return FALSE;
+}
+
+
+/*static */bool8 sub_8102EC0(struct Task *task)
+{
+ task->data[0]++;
+ sSlotMachine->unk34[task->data[15]] = 0;
+ sSlotMachine->unk2E[task->data[15]] = 0;
+ if (sSlotMachine->unk0A == 0 && (sSlotMachine->unk04 == 0 || sSlotMachine->unk06 == 0 || !gUnknown_083ECB40[task->data[15]]()))
+ {
+ sSlotMachine->unk06 = 0;
+ gUnknown_083ECB4C[task->data[15]]();
+ }
+ task->data[1] = sSlotMachine->unk2E[task->data[15]];
+ return TRUE;
+}
+
+/*static */bool8 sub_8102F4C(struct Task *task)
+{
+ u16 sp[ARRAY_COUNT(gUnknown_085A74FC)];
+ s16 r2;
+
+ memcpy(sp, gUnknown_085A74FC, sizeof(gUnknown_085A74FC));
+ r2 = sSlotMachine->unk1C[task->data[15]] % 24;
+ if (r2 != 0)
+ r2 = sub_8102CCC(task->data[15], sSlotMachine->unk1A);
+ else if (sSlotMachine->unk2E[task->data[15]])
+ {
+ sSlotMachine->unk2E[task->data[15]]--;
+ sub_8102C84(task->data[15], sSlotMachine->unk1A);
+ r2 = sSlotMachine->unk1C[task->data[15]] % 24;
+ }
+ if (r2 == 0 && sSlotMachine->unk2E[task->data[15]] == 0)
+ {
+ task->data[0]++;
+ task->data[1] = sp[task->data[1]];
+ task->data[2] = 0;
+ }
+ return FALSE;
+}
+
+/*static */bool8 sub_8103008(struct Task *task)
+{
+ sSlotMachine->unk22[task->data[15]] = task->data[1];
+ task->data[1] = -task->data[1];
+ task->data[2]++;
+ if ((task->data[2] & 0x3) == 0)
+ task->data[1] >>= 1;
+ if (task->data[1] == 0)
+ {
+ task->data[0] = 0;
+ task->data[14] = 0;
+ sSlotMachine->unk22[task->data[15]] = 0;
+ }
+ return FALSE;
+}
+
+/*static */bool8 sub_810305C(void)
+{
+ u8 r3 = sub_810250C(sSlotMachine->unk04);
+ u8 r5 = r3;
+ if (sSlotMachine->unk04 & 0xc0)
+ {
+ r5 = 0;
+ r3 = 1;
+ }
+ return gUnknown_083ECB64[sSlotMachine->bet - 1](r5, r3);
+}
+
+/*static */bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2)
+{
+ u8 tag = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, y);
+ if (tag == tag1 || tag == tag2)
+ {
+ sSlotMachine->unk07 = tag;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*static */bool8 sub_81030E0(s16 y)
+{
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - y) == 4)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+/*static */bool8 sub_8103134(void)
+{
+ if (sSlotMachine->unk04 & 0xc2)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+/*static */bool8 sub_8103154(u8 a0, u8 a1)
+{
+ s16 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (sub_81030A4(2 - i, a0, a1))
+ {
+ sSlotMachine->unk34[0] = 2;
+ sSlotMachine->unk2E[0] = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+/*static */bool8 sub_81031B4(u8 tag1, u8 tag2)
+{
+ s16 i;
+ bool8 r6 = sub_8103134();
+ if (r6 || !sub_81030E0(0))
+ {
+ for (i = 1; i < 4; i++)
+ {
+ if (sub_81030A4(i, tag1, tag2))
+ {
+ sSlotMachine->unk34[0] = i;
+ sSlotMachine->unk2E[0] = 0;
+ return TRUE;
+ }
+ }
+ }
+ for (i = 1; i < 5; i++)
+ {
+ bool8 r7 = r6;
+ if (r7 || !sub_81030E0(i))
+ {
+ if (sub_81030A4(1 - i, tag1, tag2))
+ {
+ if (i == 1 && (r7 || !sub_81030E0(3)))
+ {
+ sSlotMachine->unk34[0] = 3;
+ sSlotMachine->unk2E[0] = 3;
+ return TRUE;
+ }
+ if (i < 4 && (r7 || !sub_81030E0(i + 1)))
+ {
+ sSlotMachine->unk34[0] = 2;
+ sSlotMachine->unk2E[0] = i + 1;
+ return TRUE;
+ }
+ sSlotMachine->unk34[0] = 1;
+ sSlotMachine->unk2E[0] = i;
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+/*static */bool8 sub_81032C0(void)
+{
+ return gUnknown_083ECB70[sSlotMachine->bet - 1]();
+}
+
+/*static */bool8 sub_81032E8(void)
+{
+ s16 i;
+ s16 unk34_0 = sSlotMachine->unk34[0];
+
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, unk34_0 - i) == sSlotMachine->unk07)
+ {
+ sSlotMachine->unk34[1] = unk34_0;
+ sSlotMachine->unk2E[1] = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+/*static */bool8 sub_810333C(void)
+{
+ s16 i;
+ if (sub_81032E8())
+ {
+ if (sSlotMachine->unk34[0] != 2 && sSlotMachine->unk2E[1] > 1 && sSlotMachine->unk2E[1] != 4)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07)
+ {
+ sSlotMachine->unk34[1] = 2;
+ sSlotMachine->unk2E[1] = i;
+ break;
+ }
+ }
+ }
+ return TRUE;
+ }
+ if (sSlotMachine->unk34[0] != 2)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07)
+ {
+ sSlotMachine->unk34[1] = 2;
+ sSlotMachine->unk2E[1] = i;
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+/*static */bool8 sub_81033DC(void)
+{
+ u8 r3 = sSlotMachine->unk07;
+ if (sSlotMachine->unk04 & 0x40)
+ {
+ r3 = 0;
+ if (sSlotMachine->unk07 == 0)
+ {
+ r3 = 1;
+ }
+ }
+ return gUnknown_083ECB7C[sSlotMachine->bet - 1](r3);
+}
+
+/*static */bool8 sub_810341C(u8 a0)
+{
+ s16 i;
+ s16 unk34_1 = sSlotMachine->unk34[1];
+
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, unk34_1 - i) == a0)
+ {
+ sSlotMachine->unk34[2] = unk34_1;
+ sSlotMachine->unk2E[2] = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+/*static */bool8 sub_810347C(u8 a0)
+{
+ s16 i;
+ s16 r8;
+ if (sSlotMachine->unk34[0] == sSlotMachine->unk34[1])
+ return sub_810341C(a0);
+ if (sSlotMachine->unk34[0] == 1)
+ r8 = 3;
+ else
+ r8 = 1;
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0)
+ {
+ sSlotMachine->unk2E[2] = i;
+ sSlotMachine->unk34[2] = r8;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+/*static */void sub_81034F4(void)
+{
+ s16 i = 0;
+
+ while (sub_81030E0(i) != 0)
+ i++;
+ sSlotMachine->unk2E[0] = i;
+}
+
+/*static */bool8 sub_8103520(u8 *a0)
+{
+ if (*a0 == 0)
+ {
+ *a0 = 1;
+ return TRUE;
+ }
+ if (*a0 == 1)
+ {
+ *a0 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*static */void sub_8103540(void)
+{
+ gUnknown_083ECB88[sSlotMachine->bet - 1]();
+}
+
+/*static */void sub_8103564(void)
+{
+ if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ {
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]);
+ if (sub_8103520(&sp0))
+ {
+ s16 i;
+ for (i = 0; i < 5; i++)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i))
+ {
+ sSlotMachine->unk34[1] = 2;
+ sSlotMachine->unk2E[1] = i;
+ break;
+ }
+ }
+ }
+ }
+}
+
+/*static */void j5_08111E84(void)
+{
+ if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ {
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
+ if (sub_8103520(&sp0))
+ {
+ s16 i;
+ for (i = 0; i < 5; i++)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - i))
+ {
+ sSlotMachine->unk34[1] = sSlotMachine->unk34[0];
+ sSlotMachine->unk2E[1] = i;
+ break;
+ }
+ }
+ }
+ }
+}
+
+/*static */void sub_8103668(void)
+{
+ s16 i;
+ s16 j;
+ if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ {
+ if (sSlotMachine->unk34[0] == 2)
+ {
+ j5_08111E84();
+ }
+ else
+ {
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
+ if (sub_8103520(&sp0))
+ {
+ j = 2;
+ if (sSlotMachine->unk34[0] == 3)
+ j = 3;
+ for (i = 0; i < 2; i++, j--)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, j))
+ {
+ sSlotMachine->unk34[1] = j;
+ sSlotMachine->unk2E[1] = 0;
+ return;
+ }
+ }
+ for (j = 1; j < 5; j++)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - j))
+ {
+ if (sSlotMachine->unk34[0] == 1)
+ {
+ if (j < 3)
+ {
+ sSlotMachine->unk34[1] = 2;
+ sSlotMachine->unk2E[1] = j + 1;
+ }
+ else
+ {
+ sSlotMachine->unk34[1] = 1;
+ sSlotMachine->unk2E[1] = j;
+ }
+ }
+ else
+ {
+ if (j < 3)
+ {
+ sSlotMachine->unk34[1] = 3;
+ sSlotMachine->unk2E[1] = j;
+ }
+ else
+ {
+ sSlotMachine->unk34[1] = 2;
+ sSlotMachine->unk2E[1] = j - 1;
+ }
+ }
+ return;
+ }
+ }
+ }
+ }
+ }
+}
+
+/*static */bool8 sub_8103764(u8 a0, u8 a1)
+{
+ if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+/*static */bool8 sub_810378C(u8 a0, u8 a1, u8 a2)
+{
+ if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+/*static */bool8 sub_81037BC(u8 a0, u8 a1, u8 a2)
+{
+ if ((a0 == 0 && a1 == 1 && a2 == 0) ||
+ (a0 == 1 && a1 == 0 && a2 == 1) ||
+ (a0 == 0 && a1 == 0 && a2 == 1) ||
+ (a0 == 1 && a1 == 1 && a2 == 0) ||
+ (a0 == a1 && a0 == a2))
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+/*static */void sub_810380C(void)
+{
+ gUnknown_083ECB94[sSlotMachine->bet - 1]();
+}
+
+/*static */void sub_8103830(void)
+{
+ s16 i = 0;
+ u8 r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]);
+ u8 r1 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
+ if (r5 == r1)
+ {
+ while (1)
+ {
+ u8 r0;
+ if (!(r5 == (r0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0)))
+ break;
+ i++;
+ }
+ }
+ else if (sub_8103764(r5, r1))
+ {
+ if (sSlotMachine->unk04 & 0x80)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (r5 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ {
+ sSlotMachine->unk2E[2] = i;
+ return;
+ }
+ }
+ }
+ i = 0;
+ while (1)
+ {
+ if (r5 != GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ break;
+ i++;
+ }
+ }
+ sSlotMachine->unk2E[2] = i;
+}
+
+/*static */void sub_8103910(void)
+{
+ s16 sp0 = 0;
+ s16 i;
+ u8 r7;
+ u8 r6;
+ u8 r4;
+
+ if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] == sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80)
+ {
+ r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]);
+ if (sub_8103764(r7, r6))
+ {
+ for (i = 0; i < 5; i++)
+ {
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, sSlotMachine->unk34[1] - i);
+ if (r7 == r4)
+ {
+ sp0 = i;
+ break;
+ }
+ }
+ }
+ }
+ while (1)
+ {
+ s16 r8;
+ for (i = 1, r8 = 0; i < 4; i++)
+ {
+ r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, i - sSlotMachine->unk2E[0]);
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, i - sSlotMachine->unk2E[1]);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, i - sp0);
+ if (!sub_81037BC(r7, r6, r4) && (!sub_810378C(r7, r6, r4) || !(sSlotMachine->unk04 & 0x80)))
+ {
+ r8++;
+ break;
+ }
+ }
+ if (r8 == 0)
+ break;
+ sp0++;
+ }
+ sSlotMachine->unk2E[2] = sp0;
+}
+
+/*static */void sub_8103A78(void)
+{
+ u8 r6;
+ u8 r5;
+ u8 r4;
+ s16 r8;
+ s16 i;
+
+ sub_8103910();
+ if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] != sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80)
+ {
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]);
+ if (sub_8103764(r6, r5))
+ {
+ r8 = 1;
+ if (sSlotMachine->unk34[0] == 1)
+ r8 = 3;
+ for (i = 0; i < 5; i++)
+ {
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - (sSlotMachine->unk2E[2] + i));
+ if (r6 == r4)
+ {
+ sSlotMachine->unk2E[2] += i;
+ break;
+ }
+ }
+ }
+ }
+ while (1)
+ {
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - sSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 3 - sSlotMachine->unk2E[2]);
+ if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80))
+ break;
+ sSlotMachine->unk2E[2]++;
+ }
+ while (1)
+ {
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - sSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 1 - sSlotMachine->unk2E[2]);
+ if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80))
+ break;
+ sSlotMachine->unk2E[2]++;
+ }
+}
+
+/*static */void sub_8103C14(u8 a0)
+{
+ u8 taskId = CreateTask(sub_8103C48, 5);
+ gTasks[taskId].data[15] = a0;
+ sub_8103C48(taskId);
+}
+
+/*static */void sub_8103C48(u8 taskId)
+{
+ gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId);
+}
+
+/*static */void sub_8103C78(struct Task *task, u8 taskId)
+{
+ sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x62, 0x63, 0x72, 0x73);
+ task->data[0]++;
+}
+
+/*static */void sub_8103CAC(struct Task *task, u8 taskId)
+{
+ if (++task->data[1] > 11)
+ task->data[0]++;
+}
+
+/*static */void sub_8103CC8(struct Task *task, u8 taskId)
+{
+ sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x42, 0x43, 0x52, 0x53);
+ DestroyTask(taskId);
+}
+
+/*static */void sub_8103D00(u8 a0)
+{
+ LoadPalette(gUnknown_083EDD08[a0], gUnknown_083EDD30[a0], 2);
+}
+
+/*static */void sub_8103D28(u8 a0)
+{
+ LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2);
+}
+
+/*static */void sub_8103D50(u8 a0)
+{
+ u8 i;
+ for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
+ sub_8103D00(gUnknown_083EDD35[a0][i]);
+}
+
+/*static */void sub_8103D8C(u8 a0)
+{
+ u8 i;
+ for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
+ sub_8103D28(gUnknown_083EDD35[a0][i]);
+}
+
+/*static */void sub_8103DC8(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ u8 spriteId = CreateInvisibleSprite(sub_8103EE4);
+ gSprites[spriteId].data[0] = i;
+ sSlotMachine->unk44[i] = spriteId;
+ }
+}
+
+/*static */void sub_8103E04(u8 a0)
+{
+ struct Sprite *sprite = gSprites + sSlotMachine->unk44[a0];
+ sprite->data[1] = 1;
+ sprite->data[2] = 4;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = 2;
+ sprite->data[7] = 0;
+}
+
+/*static */bool8 sub_8103E38(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ struct Sprite *sprite = &gSprites[sSlotMachine->unk44[i]];
+ if (sprite->data[1] && sprite->data[2])
+ return FALSE;
+ }
+ return TRUE;
+}
+
+/*static */bool8 sub_8103E7C(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ if (!sub_8103EAC(sSlotMachine->unk44[i]))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+/*static */bool8 sub_8103EAC(u8 spriteId)
+{
+ struct Sprite *sprite = gSprites + spriteId;
+ if (!sprite->data[1])
+ return TRUE;
+ if (sprite->data[7])
+ sprite->data[1] = 0;
+ return sprite->data[7];
+}
+
+/*static */void sub_8103EE4(struct Sprite *sprite)
+{
+ s16 r4;
+ if (sprite->data[1])
+ {
+ if (!sprite->data[3]--)
+ {
+ sprite->data[7] = 0;
+ sprite->data[3] = 1;
+ sprite->data[4] += sprite->data[5];
+ r4 = 4;
+ if (sprite->data[2])
+ r4 = 8;
+ if (sprite->data[4] <= 0)
+ {
+ sprite->data[7] = 1;
+ sprite->data[5] = -sprite->data[5];
+ if (sprite->data[2])
+ sprite->data[2]--;
+ }
+ else if (sprite->data[4] >= r4)
+ sprite->data[5] = -sprite->data[5];
+ if (sprite->data[2])
+ sprite->data[3] <<= 1;
+ }
+ MultiplyPaletteRGBComponents(gUnknown_083EDD30[sprite->data[0]], sprite->data[4], sprite->data[4], sprite->data[4]);
+ }
+}
+
+/*static */void sub_8103F70(void)
+{
+ u8 taskId = CreateTask(sub_8103FE8_, 6);
+ gTasks[taskId].data[3] = 1;
+ sub_8103FE8_(taskId);
+}
+
+/*static */bool8 sub_8103FA0(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_8103FE8_);
+ if (!gTasks[taskId].data[2])
+ {
+ DestroyTask(taskId);
+ LoadPalette(gUnknown_083EDDAC, 0x10, 0x20);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*static */void sub_8103FE8_(u8 taskId)
+{
+ struct Task *task = gTasks + taskId;
+ if (!task->data[1]--)
+ {
+ task->data[1] = 4;
+ task->data[2] += task->data[3];
+ if (task->data[2] == 0 || task->data[2] == 2)
+ task->data[3] = -task->data[3];
+ }
+ LoadPalette(gUnknown_083EDDA0[task->data[2]], 0x10, 0x20);
+}
+
+/*static */void sub_8104048(void)
+{
+ sSlotMachine->unk3E = CreateTask(sub_81040E8, 8);
+}
+
+/*static */void sub_8104064(u8 pikaPower)
+{
+ struct Task *task = gTasks + sSlotMachine->unk3E;
+ sub_812D394(task);
+ task->data[0] = 1;
+ task->data[1]++;
+ task->data[15] = 1;
+}
+
+/*static */void sub_8104098(void)
+{
+ struct Task *task = gTasks + sSlotMachine->unk3E;
+ sub_812D394(task);
+ task->data[0] = 3;
+ task->data[15] = 1;
+}
+
+/*static */bool8 sub_81040C8(void)
+{
+ return gTasks[sSlotMachine->unk3E].data[15];
+}
+
+/*static */void sub_81040E8(u8 taskId)
+{
+ gUnknown_083ECBB4[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+/*static */void nullsub_68(struct Task *task)
+{
+}
+
+/*static */void sub_810411C(struct Task *task)
+{
+ task->data[2] = sub_8105B1C((task->data[1] << 3) + 20, 20);
+ task->data[0]++;
+}
+
+/*static */void sub_8104144(struct Task *task)
+{
+ if (gSprites[task->data[2]].data[7])
+ {
+ s16 r5 = task->data[1] + 2;
+ s16 r3 = 0;
+ s16 r2 = 0;
+ if (task->data[1] == 1)
+ r3 = 1, r2 = 1;
+ else if (task->data[1] == 16)
+ r3 = 2, r2 = 2;
+ gUnknown_0203AACC[r2] = gUnknown_083ECBC4[r3][0];
+ LoadBgTilemap(2, &gUnknown_0203AACC[r2], 2, r5 + 0x40);
+ sub_8105B88(task->data[2]);
+ task->data[0] = 0;
+ task->data[15] = 0;
+ }
+}
+
+/*static */void sub_81041AC(struct Task *task)
+{
+ s16 r5 = task->data[1] + 2;
+ s16 r3 = 0;
+ s16 r2 = 3;
+ if (task->data[1] == 1)
+ r3 = 1, r2 = 1;
+ else if (task->data[1] == 16)
+ r3 = 2, r2 = 2;
+ if (task->data[2] == 0)
+ {
+ gUnknown_0203AACC[r2] = gUnknown_083ECBC4[r3][1];
+ LoadBgTilemap(2, &gUnknown_0203AACC[r2], 2, r5 + 0x40);
+ task->data[1]--;
+ }
+ if (++task->data[2] >= 20)
+ task->data[2] = 0;
+ if (task->data[1] == 0)
+ {
+ task->data[0] = 0;
+ task->data[15] = 0;
+ }
+}
+
+/*static */void sub_812D394(struct Task *task)
+{
+ u8 i;
+
+ for (i = 2; i < 16; i++)
+ task->data[i] = 0;
+}
+
+/*static */void sub_810423C(u8 pikaPower)
+{
+ s16 i;
+ s16 r3 = 0, r1 = 0;
+ s16 r4 = 3;
+ for (i = 0; i < pikaPower; i++, r4++)
+ {
+ r3 = 0, r1 = 0;
+ if (i == 0)
+ r3 = 1, r1 = 1;
+ else if (i == 15)
+ r3 = 2, r1 = 2;
+ gUnknown_0203AACC[r1] = gUnknown_083ECBC4[r3][0];
+ LoadBgTilemap(2, &gUnknown_0203AACC[r1], 2, r4 + 0x40);
+ }
+ for (; i < 16; i++, r4++)
+ {
+ r3 = 0, r1 = 3;
+ if (i == 0)
+ r3 = 1, r1 = 1;
+ else if (i == 15)
+ r3 = 2, r1 = 2;
+ gUnknown_0203AACC[r1] = gUnknown_083ECBC4[r3][1];
+ LoadBgTilemap(2, &gUnknown_0203AACC[r1], 2, r4 + 0x40);
+ }
+ gTasks[sSlotMachine->unk3E].data[1] = pikaPower;
+}
+
+/*static */void sub_810430C(void)
+{
+ u8 taskId = CreateTask(sub_810434C, 7);
+ sub_810434C(taskId);
+}
+
+/*static */bool8 sub_810432C(void)
+{
+ if (FindTaskIdByFunc(sub_810434C) == 0xFF)
+ return TRUE;
+ return FALSE;
+}
+
+/*static */void sub_810434C(u8 taskId)
+{
+ gUnknown_083ECBD0[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+/*static */void sub_810437C(struct Task *task)
+{
+ sSlotMachine->unk0A = 0;
+ sSlotMachine->unk14 = 0;
+ sSlotMachine->unk16 = 0;
+ task->data[0]++;
+ task->data[1] = 0;
+ task->data[2] = 30;
+ task->data[4] = 1280;
+ gSpriteCoordOffsetX = 0;
+ gSpriteCoordOffsetY = 0;
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ sub_8104A40(REG_OFFSET_BG3VOFS, 0);
+ sub_81051C0();
+ sub_8105100();
+ sub_81052EC();
+ sub_81053A0();
+ sub_810545C();
+ sub_8102680();
+ StopMapMusic();
+ PlayNewMapMusic(MUS_BD_TIME);
+}
+
+/*static */void sub_81043EC(struct Task *task)
+{
+ s16 r3;
+ gSpriteCoordOffsetX -= 8;
+ task->data[1] += 8;
+ r3 = ((task->data[1] + 240) & 0xff) >> 3;
+ SetGpuReg(REG_OFFSET_BG1HOFS, task->data[1] & 0x1ff);
+ if (r3 != task->data[2] && task->data[3] <= 18)
+ {
+ task->data[2] = r3;
+ task->data[3] = task->data[1] >> 3;
+ sub_8104A40(r3, task->data[3]);
+ }
+ if (task->data[1] >= 200)
+ {
+ task->data[0]++;
+ task->data[3] = 0;
+ }
+ sub_8102D28(task->data[4] >> 8);
+}
+
+/*static */void sub_8104468(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ if (++task->data[5] >= 60)
+ {
+ task->data[0]++;
+ sub_8105578();
+ sub_81056F0();
+ }
+}
+
+/*static */void sub_8104498(struct Task *task)
+{
+ int r5;
+ u8 sp0[ARRAY_COUNT(gUnknown_085A75C0)];
+ s16 sp4[ARRAY_COUNT(gUnknown_085A75C4)];
+ s16 spC[ARRAY_COUNT(gUnknown_085A75CC)];
+
+ memcpy(sp0, gUnknown_085A75C0, sizeof(gUnknown_085A75C0));
+ memcpy(sp4, gUnknown_085A75C4, sizeof(gUnknown_085A75C4));
+ memcpy(spC, gUnknown_085A75CC, sizeof(gUnknown_085A75CC));
+
+ sub_8102D28(task->data[4] >> 8);
+ task->data[4] -= 4;
+ r5 = 4 - (task->data[4] >> 8);
+ sub_8105688(sp4[r5]);
+ sub_81057E8(spC[r5]);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, sp0[r5]);
+ if (task->data[4] <= 0x100)
+ {
+ task->data[0]++;
+ task->data[4] = 0x100;
+ task->data[5] = 0;
+ }
+}
+
+/*static */void sub_8104548(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ if (++task->data[5] >= 80)
+ {
+ task->data[0]++;
+ task->data[5] = 0;
+ sub_81057E8(2);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 3);
+ }
+}
+
+/*static */void sub_8104598(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ task->data[4] = (u8)task->data[4] + 0x80;
+ if (++task->data[5] >= 80)
+ {
+ task->data[0]++;
+ task->data[5] = 0;
+ }
+}
+
+/*static */void sub_81045CC(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ task->data[4] = (u8)task->data[4] + 0x40;
+ if (++task->data[5] >= 40)
+ {
+ task->data[5] = 0;
+ if (sSlotMachine->unk05)
+ {
+ if (sSlotMachine->unk0A <= task->data[6])
+ task->data[0]++;
+ }
+ else if (task->data[6] > 3)
+ {
+ task->data[0]++;
+ }
+ else if (sub_81026DC(task->data[6]))
+ {
+ task->data[0] = 14;
+ }
+ task->data[6]++;
+ }
+}
+
+/*static */void sub_810463C(struct Task *task)
+{
+ s16 r5 = sSlotMachine->unk14 % 20;
+ if (r5)
+ {
+ r5 = sub_8102D5C(task->data[4] >> 8);
+ task->data[4] = (u8)task->data[4] + 0x40;
+ }
+ else if (sub_8102C48(1) != sSlotMachine->unk05)
+ {
+ sub_8102D28(task->data[4] >> 8);
+ r5 = sSlotMachine->unk14 % 20;
+ task->data[4] = (u8)task->data[4] + 0x40;
+ }
+ if (r5 == 0 && sub_8102C48(1) == sSlotMachine->unk05)
+ {
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+}
+
+/*static */void sub_81046C0(struct Task *task)
+{
+ if (++task->data[4] >= 60)
+ {
+ StopMapMusic();
+ sub_81056C0();
+ sub_8105804();
+ task->data[0]++;
+ if(sSlotMachine->unk05 == 0)
+ {
+ task->data[4] = 0xa0;
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5);
+ PlayFanfare(MUS_ME_ZANNEN);
+ }
+ else
+ {
+ task->data[4] = 0xc0;
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 4);
+ gSprites[sSlotMachine->unk3F].animCmdIndex = 0;
+ if (sSlotMachine->pikaPower)
+ {
+ sub_8104098();
+ sSlotMachine->pikaPower = 0;
+ }
+ PlayFanfare(MUS_ME_B_SMALL);
+ }
+ }
+}
+
+/*static */void sub_8104764(struct Task *task)
+{
+ if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8())
+ task->data[0]++;
+}
+
+/*static */void sub_8104794(struct Task *task)
+{
+ s16 r4;
+ gSpriteCoordOffsetX -= 8;
+ task->data[1] += 8;
+ task->data[3] += 8;
+ r4 = ((task->data[1] - 8) & 0xff) >> 3;
+ SetGpuReg(REG_OFFSET_BG1HOFS, task->data[1] & 0x1ff);
+ if (task->data[3] >> 3 <= 25)
+ sub_8104A88(r4);
+ else
+ task->data[0]++;
+}
+
+/*static */void sub_81047EC(struct Task *task)
+{
+ sSlotMachine->unk0B = 0;
+ sSlotMachine->unk0A = sSlotMachine->unk05;
+ gSpriteCoordOffsetX = 0;
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ sSlotMachine->unk1A = 8;
+ sub_810514C();
+ sub_81054B8();
+ sub_8105524();
+ PlayNewMapMusic(sSlotMachine->backupMapMusic);
+ if (sSlotMachine->unk0A == 0)
+ {
+ DestroyTask(FindTaskIdByFunc(sub_810434C));
+ }
+ else
+ {
+ sub_8104CAC(4);
+ task->data[1] = dp15_jump_random_unknown();
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+}
+
+/*static */void sub_8104860(struct Task *task)
+{
+ if (sSlotMachine->unk1A == task->data[1])
+ task->data[0]++;
+ else if (sSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
+ sSlotMachine->unk1A >>= 1;
+}
+
+/*static */void sub_81048A8(struct Task *task)
+{
+ if (sub_8104E18())
+ DestroyTask(FindTaskIdByFunc(sub_810434C));
+}
+
+/*static */void sub_81048CC(struct Task *task)
+{
+ sub_81054B8();
+ sub_81056C0();
+ sub_8105804();
+ sub_8105854();
+ gSprites[sSlotMachine->unk4E[0]].invisible = TRUE;
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5);
+ task->data[0]++;
+ task->data[4] = 4;
+ task->data[5] = 0;
+ StopMapMusic();
+ PlayFanfare(MUS_ME_ZANNEN);
+ PlaySE(SE_W153);
+}
+
+/*static */void sub_8104940(struct Task *task)
+{
+ gSpriteCoordOffsetY = task->data[4];
+ SetGpuReg(REG_OFFSET_BG1VOFS, task->data[4]);
+ if (task->data[5] & 0x01)
+ task->data[4] = -task->data[4];
+ if ((++task->data[5] & 0x1f) == 0)
+ task->data[4] >>= 1;
+ if (task->data[4] == 0)
+ {
+ sub_81058A0();
+ sub_81058C4();
+ sub_8105284_();
+ sub_81059E8();
+ gSprites[sSlotMachine->unk4E[0]].invisible = FALSE;
+ task->data[0]++;
+ task->data[5] = 0;
+ }
+}
+
+/*static */void sub_81049C8(struct Task *task)
+{
+ gSpriteCoordOffsetY = 0;
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ if (sub_8105ACC())
+ {
+ task->data[0]++;
+ sub_8105AEC();
+ }
+}
+
+/*static */void sub_81049F8(struct Task *task)
+{
+ gSpriteCoordOffsetX = 0;
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ PlayNewMapMusic(sSlotMachine->backupMapMusic);
+ sub_810514C();
+ sub_8105554();
+ sub_8105524();
+ sub_81059B8();
+ DestroyTask(FindTaskIdByFunc(sub_810434C));
+}
+
+/*static */void sub_8104A40(s16 a0, s16 a1)
+{
+ s16 i;
+
+ for (i = 4; i < 15; i++)
+ {
+ LoadBgTilemap(1, &sReelTimeWindowTilemap[a1 + (i - 4) * 20], 2, 32 * i + a0);
+ }
+}
+
+/*static */void sub_8104A88(s16 a0)
+{
+ u8 i;
+
+ for (i = 4; i < 15; i++)
+ {
+ LoadBgTilemap(1, gUnknown_085A9898, 2, 32 * i + a0);
+ }
+}
+
+/*static */void sub_8104AB8(u8 a0)
+{
+ u8 taskId = CreateTask(sub_8104B0C, 1);
+ gTasks[taskId].data[1] = a0;
+ sub_8104B0C(taskId);
+}
+
+/*static */bool8 sub_8104AEC(void)
+{
+ if (FindTaskIdByFunc(sub_8104B0C) == 0xFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+/*static */void sub_8104B0C(u8 taskId)
+{
+ gUnknown_083ECC30[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+/*static */void sub_8104B3C(struct Task *task)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ task->data[0]++;
+}
+
+/*static */void sub_8104B60(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ task->data[0]++;
+}
+
+/*static */void sub_8104B80(struct Task *task)
+{
+ sub_8104DA4();
+ sub_81065DC();
+ AddWindow(&gUnknown_085A7444);
+ PutWindowTilemap(1);
+ FillWindowPixelBuffer(1, 0);
+ task->data[0]++;
+}
+
+/*static */void sub_812DD78(struct Task *task)
+{
+ AddTextPrinterParameterized3(1, 1, 2, 5, gUnknown_085A744C, 0, gText_ReelTimeHelp);
+ CopyWindowToVram(1, 3);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
+ task->data[0]++;
+}
+
+/*static */void sub_8104BC8(struct Task *task)
+{
+ if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON))
+ {
+ FillWindowPixelBuffer(1, 0);
+ ClearWindowTilemap(1);
+ CopyWindowToVram(1, 1);
+ RemoveWindow(1);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ task->data[0]++;
+ }
+}
+
+/*static */void sub_812DE14(struct Task *task)
+{
+ sub_812F968();
+ ShowBg(3);
+ task->data[0]++;
+}
+
+/*static */void sub_812DE30(struct Task *task)
+{
+ sub_8104CAC(task->data[1]);
+ task->data[0]++;
+}
+
+/*static */void sub_8104BFC(struct Task *task)
+{
+ sub_810423C(sSlotMachine->pikaPower);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
+ task->data[0]++;
+}
+
+/*static */void sub_8104C44(struct Task *task)
+{
+ DestroyTask(FindTaskIdByFunc(sub_8104B0C));
+}
+
+/*static */void sub_8104C5C(void)
+{
+ u8 i;
+ struct Task *task;
+ i = CreateTask(sub_8104E74_, 3);
+ sSlotMachine->unk3D = i;
+ task = gTasks + i;
+ task->data[1] = -1;
+ for (i = 4; i < 16; i++)
+ task->data[i] = MAX_SPRITES;
+}
+
+/*static */void sub_8104CAC(u8 arg0)
+{
+ u8 i;
+ struct Task *task;
+
+ sub_8104DA4();
+
+ task = gTasks + sSlotMachine->unk3D;
+ task->data[1] = arg0;
+
+ for (i = 0; gUnknown_083ED048[arg0][i].unk00 != 0xFF; i++)
+ {
+ u8 spriteId;
+ spriteId = sub_8105BB4(
+ gUnknown_083ED048[arg0][i].unk00,
+ gUnknown_083ED048[arg0][i].unk01,
+ gUnknown_083ED048[arg0][i].unk02
+ );
+ task->data[4 + i] = spriteId;
+ }
+}
+
+/*static */void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4)
+{
+ u8 i;
+ struct Task *task = gTasks + sSlotMachine->unk3D;
+ for (i = 4; i < 16; i++)
+ {
+ if (task->data[i] == MAX_SPRITES)
+ {
+ task->data[i] = sub_8105BF8(a0, a1, a2, a3, a4);
+ break;
+ }
+ }
+}
+
+/*static */void sub_8104DA4(void)
+{
+ u8 i;
+ struct Task *task = gTasks + sSlotMachine->unk3D;
+ if ((u16)task->data[1] != 0xFFFF)
+ gUnknown_083ED064[task->data[1]]();
+ for (i = 4; i < 16; i++)
+ {
+ if (task->data[i] != MAX_SPRITES)
+ {
+ DestroySprite(gSprites + task->data[i]);
+ task->data[i] = MAX_SPRITES;
+ }
+ }
+}
+
+/*static */bool8 sub_8104E18(void)
+{
+ u8 i;
+ struct Task *task = gTasks + sSlotMachine->unk3D;
+ for (i = 4; i < 16; i++)
+ {
+ if (task->data[i] != MAX_SPRITES)
+ {
+ if (gSprites[task->data[i]].data[7])
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+/*static */void sub_8104E74_(u8 taskId)
+{
+ gUnknown_083ECC54[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+/*static */void nullsub_69(struct Task *task)
+{
+}
+
+/*static */void sub_8104EA8(void)
+{
+ s16 i;
+ s16 j;
+ s16 x;
+ for (i = 0, x = 0x30; i < 3; i++, x += 0x28)
+ {
+ for (j = 0; j < 120; j += 24)
+ {
+ struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED414, x, 0, 14);
+ sprite->oam.priority = 3;
+ sprite->data[0] = i;
+ sprite->data[1] = j;
+ sprite->data[3] = -1;
+ }
+ }
+}
+
+/*static */void sub_8104F18(struct Sprite *sprite)
+{
+ sprite->data[2] = sSlotMachine->unk1C[sprite->data[0]] + sprite->data[1];
+ sprite->data[2] %= 120;
+ sprite->pos1.y = sSlotMachine->unk22[sprite->data[0]] + 28 + sprite->data[2];
+ sprite->sheetTileStart = GetSpriteTileStartByTag(GetTagOfReelSymbolOnScreenAtPos(sprite->data[0], sprite->data[2] / 24));
+ SetSpriteSheetFrameTileNum(sprite);
+}
+
+/*static */void sub_8104F8C(void)
+{
+ s16 i;
+ s16 x;
+
+ for (x = 203, i = 1; i < 10000; i *= 10, x -= 7)
+ sub_8104FF4(x, 23, 0, i);
+ for (x = 235, i = 1; i < 10000; i *= 10, x -= 7)
+ sub_8104FF4(x, 23, 1, i);
+}
+
+/*static */void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3)
+{
+ struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED42C, x, y, 13);
+ sprite->oam.priority = 2;
+ sprite->data[0] = a2;
+ sprite->data[1] = a3;
+ sprite->data[2] = a3 * 10;
+ sprite->data[3] = -1;
+}
+
+/*static */void sub_810506C(struct Sprite *sprite)
+{
+ u16 tag = sSlotMachine->coins;
+ if (sprite->data[0])
+ tag = sSlotMachine->payout;
+ if (sprite->data[3] != tag)
+ {
+ sprite->data[3] = tag;
+ tag %= (u16)sprite->data[2];
+ tag /= (u16)sprite->data[1];
+ tag += 7;
+ sprite->sheetTileStart = GetSpriteTileStartByTag(tag);
+ SetSpriteSheetFrameTileNum(sprite);
+ }
+}
+
+/*static */void sub_81050C4(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED444, 0x58, 0x48, 15);
+ gSprites[spriteId].oam.priority = 3;
+ SetSubspriteTables(gSprites + spriteId, gSubspriteTables_83ED704);
+}
+
+/*static */void sub_8105100(void)
+{
+ struct SpriteTemplate spriteTemplate;
+ u8 spriteId;
+ if (gUnknown_0203AAE4 == NULL)
+ gUnknown_0203AAE4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
+
+ gUnknown_0203AAE4[0].data = gUnknown_0203AAD8 + (0 * 0x800);
+ gUnknown_0203AAE4[0].size = 0x800;
+ gUnknown_0203AAE4[1].data = gUnknown_0203AAD8 + (1 * 0x800);
+ gUnknown_0203AAE4[1].size = 0x800;
+ gUnknown_0203AAE4[2].data = gUnknown_0203AAD8 + (2 * 0x800);
+ gUnknown_0203AAE4[2].size = 0x800;
+ gUnknown_0203AAE4[3].data = gUnknown_0203AAD8 + (3 * 0x800);
+ gUnknown_0203AAE4[3].size = 0x800;
+ gUnknown_0203AAE4[4].data = gUnknown_0203AAD8 + (4 * 0x800);
+ gUnknown_0203AAE4[4].size = 0x800;
+
+ spriteTemplate = gSpriteTemplate_83ED45C;
+ spriteTemplate.images = gUnknown_0203AAE4;
+ spriteId = CreateSprite(&spriteTemplate, 280, 80, 1);
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ sSlotMachine->unk3F = spriteId;
+}
+
+/*static */void sub_810514C(void)
+{
+ DestroySprite(gSprites + sSlotMachine->unk3F);
+ if (gUnknown_0203AAE4 != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203AAE4);
+}
+
+/*static */void sub_8105170(struct Sprite *sprite)
+{
+ sprite->pos2.y = sprite->pos2.x = 0;
+ if (sprite->animNum == 4)
+ {
+ sprite->pos2.y = sprite->pos2.x = 8;
+ if ((sprite->animCmdIndex != 0 && sprite->animDelayCounter != 0) || (sprite->animCmdIndex == 0 && sprite->animDelayCounter == 0))
+ sprite->pos2.y = -8;
+ }
+}
+
+/*static */void sub_81051C0(void)
+{
+ struct SpriteTemplate spriteTemplate;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ if (gUnknown_0203AAE8 == NULL)
+ gUnknown_0203AAE8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+
+ gUnknown_0203AAE8[0].data = gUnknown_0203AAD8 + 0x2800;
+ gUnknown_0203AAE8[0].size = 0x300;
+ spriteTemplate = gSpriteTemplate_83ED474;
+ spriteTemplate.images = gUnknown_0203AAE8;
+ spriteId = CreateSprite(&spriteTemplate, 368, 52, 7);
+ sprite = &gSprites[spriteId];
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED73C);
+ sSlotMachine->unk49[0] = spriteId;
+
+ if (gUnknown_0203AAEC == NULL)
+ gUnknown_0203AAEC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+
+ gUnknown_0203AAEC[0].data = gUnknown_0203AAD8 + 0x2800 + 0x300;
+ gUnknown_0203AAEC[0].size = 0x500;
+ spriteTemplate = gSpriteTemplate_83ED48C;
+ spriteTemplate.images = gUnknown_0203AAEC;
+ spriteId = CreateSprite(&spriteTemplate, 368, 84, 7);
+ sprite = &gSprites[spriteId];
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED75C);
+ sSlotMachine->unk49[1] = spriteId;
+}
+
+/*static */void sub_8105284_(void)
+{
+ struct SpriteTemplate spriteTemplate;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ if (gUnknown_0203AAF0 == NULL)
+ gUnknown_0203AAF0 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+
+ gUnknown_0203AAF0[0].data = gUnknown_0203AAD8 + 0x3000;
+ gUnknown_0203AAF0[0].size = 0x600;
+ spriteTemplate = gSpriteTemplate_83ED4A4;
+ spriteTemplate.images = gUnknown_0203AAF0;
+ spriteId = CreateSprite(&spriteTemplate, 0xa8 - gSpriteCoordOffsetX, 0x50, 7);
+ sprite = &gSprites[spriteId];
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED78C);
+ sSlotMachine->unk42 = spriteId;
+}
+
+/*static */void sub_81052EC(void)
+{
+ u8 i;
+ s16 r5;
+ for (i = 0, r5 = 0; i < 3; i++, r5 += 20)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4BC, 0x170, 0, 10);
+ struct Sprite *sprite = &gSprites[spriteId];
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data[7] = r5;
+ sSlotMachine->unk4B[i] = spriteId;
+ }
+}
+
+/*static */void sub_810535C(struct Sprite *sprite)
+{
+ s16 r0 = (u16)(sSlotMachine->unk14 + sprite->data[7]);
+ r0 %= 40;
+ sprite->pos1.y = r0 + 59;
+ StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20));
+}
+
+/*static */void sub_81053A0(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9);
+ struct Sprite *sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
+ sSlotMachine->unk4E[0] = spriteId;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x120, 0x68, 4);
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
+ sSlotMachine->unk4E[1] = spriteId;
+}
+
+/*static */void sub_810545C(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11);
+ struct Sprite *sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7D4);
+ sSlotMachine->unk40 = spriteId;
+}
+
+/*static */void sub_81054B8(void)
+{
+ u8 i;
+
+ DestroySprite(&gSprites[sSlotMachine->unk40]);
+ for (i = 0; i < 2; i++)
+ DestroySprite(&gSprites[sSlotMachine->unk49[i]]);
+
+ if (gUnknown_0203AAE8 != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203AAE8);
+ if (gUnknown_0203AAEC != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203AAEC);
+
+ for (i = 0; i < 3; i++)
+ DestroySprite(&gSprites[sSlotMachine->unk4B[i]]);
+}
+
+/*static */void sub_8105524(void)
+{
+ u8 i;
+
+ for (i = 0; i < 2; i++)
+ DestroySprite(&gSprites[sSlotMachine->unk4E[i]]);
+}
+
+/*static */void sub_8105554(void)
+{
+ DestroySprite(&gSprites[sSlotMachine->unk42]);
+ if (gUnknown_0203AAF0 != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203AAF0);
+}
+
+/*static */void sub_8105578(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5);
+ struct Sprite *sprite = &gSprites[spriteId];
+ sprite->oam.priority = 1;
+ sprite->hFlip = TRUE;
+ sSlotMachine->unk50[0] = spriteId;
+ sprite->data[0] = 8;
+ sprite->data[1] = -1;
+ sprite->data[2] = -1;
+ sprite->data[7] = 0x20;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5);
+ sprite = &gSprites[spriteId];
+ sprite->oam.priority = 1;
+ sSlotMachine->unk50[1] = spriteId;
+ sprite->data[1] = 1;
+ sprite->data[2] = -1;
+ sprite->data[7] = 0x20;
+}
+
+/*static */void sub_810562C(struct Sprite *sprite)
+{
+ if (sprite->data[0] != 0)
+ {
+ sprite->data[0]--;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->invisible = TRUE;
+ }
+ else
+ {
+ sprite->invisible = FALSE;
+ sprite->pos2.x += sprite->data[1];
+ sprite->pos2.y += sprite->data[2];
+ if (++sprite->data[3] >= 8)
+ {
+ sprite->data[0] = sprite->data[7];
+ sprite->data[3] = 0;
+ }
+ }
+}
+
+/*static */void sub_8105688(s16 a0)
+{
+ gSprites[sSlotMachine->unk50[0]].data[7] = a0;
+ gSprites[sSlotMachine->unk50[1]].data[7] = a0;
+}
+
+/*static */void sub_81056C0(void)
+{
+ u8 i;
+
+ for (i = 0; i < 2; i++)
+ DestroySprite(&gSprites[sSlotMachine->unk50[i]]);
+}
+
+/*static */void sub_81056F0(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x48, 0x50, 3);
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].data[0] = 1;
+ gSprites[spriteId].data[5] = 0;
+ gSprites[spriteId].data[6] = 16;
+ gSprites[spriteId].data[7] = 8;
+ sSlotMachine->unk52[0] = spriteId;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x68, 0x50, 3);
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].hFlip = TRUE;
+ sSlotMachine->unk52[1] = spriteId;
+}
+
+/*static */void sub_8105784(struct Sprite *sprite)
+{
+ u8 sp[] = {16, 0};
+ if (sprite->data[0] && --sprite->data[6] <= 0)
+ {
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, sp[sprite->data[5]], sp[sprite->data[5]], sp[sprite->data[5]]);
+ ++sprite->data[5];
+ sprite->data[5] &= 1;
+ sprite->data[6] = sprite->data[7];
+ }
+}
+
+/*static */void sub_81057E8(s16 a0)
+{
+ gSprites[sSlotMachine->unk52[0]].data[7] = a0;
+}
+
+/*static */void sub_8105804(void)
+{
+ u8 i;
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0);
+ for (i = 0; i < 2; i++)
+ DestroySprite(&gSprites[sSlotMachine->unk52[i]]);
+}
+
+/*static */void sub_8105854(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED534, 0xa8, 0x50, 6);
+ gSprites[spriteId].oam.priority = 1;
+ sSlotMachine->unk41 = spriteId;
+}
+
+/*static */void sub_8105894(struct Sprite *sprite)
+{
+ sprite->pos2.y = gSpriteCoordOffsetY;
+}
+
+/*static */void sub_81058A0(void)
+{
+ DestroySprite(&gSprites[sSlotMachine->unk41]);
+}
+
+/*static */void sub_81058C4(void)
+{
+ u8 i;
+ u16 sp[] = {0x0, 0x40, 0x80, 0xC0};
+ for (i = 0; i < 4; i++)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED54C, 0x50 - gSpriteCoordOffsetX, 0x44, 0);
+ struct Sprite *sprite = &gSprites[spriteId];
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data[0] = sp[i];
+ sSlotMachine->unk54[i] = spriteId;
+ }
+}
+
+/*static */void sub_810594C(struct Sprite *sprite)
+{
+ sprite->data[0] -= 2;
+ sprite->data[0] &= 0xff;
+ sprite->pos2.x = Cos(sprite->data[0], 20);
+ sprite->pos2.y = Sin(sprite->data[0], 6);
+ sprite->subpriority = 0;
+ if (sprite->data[0] >= 0x80)
+ {
+ sprite->subpriority = 2;
+ }
+ if (++sprite->data[1] >= 16)
+ {
+ sprite->hFlip ^= 1;
+ sprite->data[1] = 0;
+ }
+}
+
+/*static */void sub_81059B8(void)
+{
+ u8 i;
+ for (i = 0; i < 4; i++)
+ {
+ DestroySprite(&gSprites[sSlotMachine->unk54[i]]);
+ }
+}
+
+/*static */void sub_81059E8(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8);
+ struct Sprite *sprite = &gSprites[spriteId];
+ sprite->oam.priority = 1;
+ sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ InitSpriteAffineAnim(sprite);
+ sSlotMachine->unk43 = spriteId;
+}
+
+/*static */void sub_8105A38(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ if (sprite->affineAnimEnded)
+ sprite->data[0]++;
+ }
+ else if (sprite->data[0] == 1)
+ {
+ sprite->invisible ^= 1;
+ if (++sprite->data[2] >= 24)
+ {
+ sprite->data[0]++;
+ sprite->data[2] = 0;
+ }
+ }
+ else
+ {
+ sprite->invisible = TRUE;
+ if (++sprite->data[2] >= 16)
+ sprite->data[7] = 1;
+ }
+ sprite->data[1] &= 0xff;
+ sprite->data[1] += 16;
+ sprite->pos2.y -= (sprite->data[1] >> 8);
+}
+
+/*static */u8 sub_8105ACC(void)
+{
+ return gSprites[sSlotMachine->unk43].data[7];
+}
+
+/*static */void sub_8105AEC(void)
+{
+ struct Sprite *sprite = &gSprites[sSlotMachine->unk43];
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+}
+
+/*static */u8 sub_8105B1C(s16 x, s16 y)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12);
+ struct Sprite *sprite = &gSprites[spriteId];
+ sprite->oam.priority = 2;
+ sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ InitSpriteAffineAnim(sprite);
+ return spriteId;
+}
+
+/*static */void sub_8105B70(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ sprite->data[7] = 1;
+}
+
+/*static */void sub_8105B88(u8 spriteId)
+{
+ struct Sprite *sprite = &gSprites[spriteId];
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+}
+
+/*static */u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2)
+{
+ return sub_8105BF8(templateIdx, gUnknown_083ECF0C[cbAndCoordsIdx], gUnknown_083ECE7E[cbAndCoordsIdx][0], gUnknown_083ECE7E[cbAndCoordsIdx][1], a2);
+}
+
+/*static */u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4)
+{
+ struct SpriteTemplate spriteTemplate;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ spriteTemplate = *gUnknown_083EDB5C[templateIdx];
+ spriteTemplate.images = gUnknown_03001188[templateIdx];
+ spriteId = CreateSprite(&spriteTemplate, x, y, 16);
+ sprite = &gSprites[spriteId];
+ sprite->oam.priority = 3;
+ sprite->callback = callback;
+ sprite->data[6] = a4;
+ sprite->data[7] = 1;
+ if (gUnknown_083EDBC4[templateIdx])
+ SetSubspriteTables(sprite, gUnknown_083EDBC4[templateIdx]);
+ return spriteId;
+}
+
+/*static */void sub_8105C64(struct Sprite *sprite)
+{
+ sprite->data[7] = 0;
+}
+
+/*static */void sub_8105C6C(struct Sprite *sprite)
+{
+ s16 sp0[] = {4, -4, 4, -4};
+ s16 sp8[] = {4, 4, -4, -4};
+
+ if (sprite->data[1]++ >= 16)
+ {
+ sprite->subspriteTableNum ^= 1;
+ sprite->data[1] = 0;
+ }
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ if (sprite->subspriteTableNum != 0)
+ {
+ sprite->pos2.x = sp0[sprite->data[6]];
+ sprite->pos2.y = sp8[sprite->data[6]];
+ }
+}
+
+/*static */void sub_8105CF0(struct Sprite *sprite)
+{
+ sprite->hFlip = TRUE;
+ sub_8105C6C(sprite);
+}
+
+/*static */void sub_8105D08(struct Sprite *sprite)
+{
+ sprite->vFlip = TRUE;
+ sub_8105C6C(sprite);
+}
+
+/*static */void sub_8105D20(struct Sprite *sprite)
+{
+ sprite->hFlip = TRUE;
+ sprite->vFlip = TRUE;
+ sub_8105C6C(sprite);
+}
+
+/*static */void sub_8105D3C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 90)
+ sprite->data[0]++;
+ break;
+ case 2:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0x110)
+ sprite->data[0]++;
+ break;
+ case 3:
+ sprite->data[7] = 0;
+ break;
+ }
+}
+
+/*static */void sub_8105DA4(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x -= 4;
+ if (sprite->pos1.x <= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 90)
+ sprite->data[0]++;
+ break;
+ case 2:
+ sprite->pos1.x -= 4;
+ if (sprite->pos1.x <= 0x90)
+ sprite->data[0]++;
+ break;
+ case 3:
+ sprite->data[7] = 0;
+ break;
+ }
+}
+
+/*static */void sub_8105E08(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ StartSpriteAnim(sprite, sSlotMachine->unk0A - 1);
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ if (++sprite->data[1] >= 4)
+ {
+ sprite->data[0]++;
+ sprite->data[1] = 0;
+ }
+ break;
+ case 2:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ if (++sprite->data[1] > 90)
+ sprite->data[0]++;
+ break;
+ case 4:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xf8)
+ sprite->data[0]++;
+ break;
+ case 5:
+ sprite->data[7] = 0;
+ break;
+ }
+}
+
+/*static */void sub_8105EB4(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->animPaused = TRUE;
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ sprite->pos1.y += 8;
+ if (sprite->pos1.y >= 0x70)
+ {
+ sprite->pos1.y = 0x70;
+ sprite->data[1] = 16;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (sprite->data[2] == 0)
+ {
+ sprite->pos1.y -= sprite->data[1];
+ sprite->data[1] = -sprite->data[1];
+ if (++sprite->data[3] >= 2)
+ {
+ sprite->data[1] >>= 2;
+ sprite->data[3] = 0;
+ if (sprite->data[1] == 0)
+ {
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ sprite->animPaused = FALSE;
+ }
+ }
+ }
+ sprite->data[2]++;
+ sprite->data[2] &= 0x07;
+ break;
+ }
+}
+
+/*static */void sub_8105F54(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[1] > 8)
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->pos1.y += 2;
+ if (sprite->pos1.y >= 0x30)
+ {
+ sprite->pos1.y = 0x30;
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ }
+ break;
+ }
+}
+
+/*static */void sub_8105F9C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->invisible = TRUE;
+ if (++sprite->data[1] > 0x20)
+ {
+ sprite->data[0]++;
+ sprite->data[1] = 5;
+ sprite->oam.mosaic = TRUE;
+ sprite->invisible = FALSE;
+ StartSpriteAnim(sprite, 1);
+ SetGpuReg(REG_OFFSET_MOSAIC, ((sprite->data[1] << 4) | sprite->data[1]) << 8);
+ }
+ break;
+ case 1:
+ sprite->data[1] -= (sprite->data[2] >> 8);
+ if (sprite->data[1] < 0)
+ sprite->data[1] = 0;
+ SetGpuReg(REG_OFFSET_MOSAIC, ((sprite->data[1] << 4) | sprite->data[1]) << 8);
+ sprite->data[2] &= 0xff;
+ sprite->data[2] += 0x80;
+ if (sprite->data[1] == 0)
+ {
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ sprite->oam.mosaic = FALSE;
+ StartSpriteAnim(sprite, 0);
+ }
+ break;
+ }
+}
+
+/*static */void sub_8106058(struct Sprite *sprite)
+{
+ if (sprite->data[1] < 3)
+ {
+ LoadPalette(gUnknown_083EDE10[sprite->data[1]], (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+ if (++sprite->data[2] >= 4)
+ {
+ sprite->data[1]++;
+ sprite->data[2] = 0;
+ }
+ }
+ else
+ {
+ LoadPalette(gUnknown_083EDE10[sprite->data[1]], (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+ if (++sprite->data[2] >= 25)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ }
+ }
+ StartSpriteAnimIfDifferent(sprite, 1);
+ sprite->data[7] = 0;
+}
+
+/*static */void sub_81060FC(struct Sprite *sprite)
+{
+ s16 sp00[] = {0, -40, 0, 0, 48, 0, 24, 0};
+ s16 sp10[] = {-32, 0, -32, -48, 0, -48, 0, -48};
+ s16 sp20[] = {16, 12, 16, 0, 0, 4, 8, 8};
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos2.x = sp00[sprite->data[6]];
+ sprite->pos2.y = sp10[sprite->data[6]];
+ sprite->data[1] = sp20[sprite->data[6]];
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ if (sprite->data[1]-- == 0)
+ sprite->data[0]++;
+ break;
+ case 2:
+ if (sprite->pos2.x > 0)
+ sprite->pos2.x -= 4;
+ else if (sprite->pos2.x < 0)
+ sprite->pos2.x += 4;
+
+ if (sprite->pos2.y > 0)
+ sprite->pos2.y -= 4;
+ else if (sprite->pos2.y < 0)
+ sprite->pos2.y += 4;
+
+ if (sprite->pos2.x == 0 && sprite->pos2.y == 0)
+ sprite->data[0]++;
+ break;
+ }
+}
+
+/*static */void sub_81061C8(struct Sprite *sprite)
+{
+ s16 sp0[] = {160, 192, 224, 104, 80, 64, 48, 24};
+
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[0]++;
+ sprite->data[1] = 12;
+ }
+ sprite->pos2.x = Cos(sp0[sprite->data[6]], sprite->data[1]);
+ sprite->pos2.y = Sin(sp0[sprite->data[6]], sprite->data[1]);
+ if (sprite->data[1] != 0)
+ sprite->data[1]--;
+}
+
+/*static */void sub_8106230(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sSlotMachine->winIn = 0x2f;
+ sSlotMachine->winOut = 0x3f;
+ sSlotMachine->win0v = 0x2088;
+ sprite->invisible = TRUE;
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ sprite->data[1] += 2;
+ sprite->data[2] = sprite->data[1] + 0xb0;
+ sprite->data[3] = 0xf0 - sprite->data[1];
+ if (sprite->data[2] > 0xd0)
+ sprite->data[2] = 0xd0;
+ if (sprite->data[3] < 0xd0)
+ sprite->data[3] = 0xd0;
+ sSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
+ if (sprite->data[1] > 0x33)
+ {
+ sprite->data[0]++;
+ sSlotMachine->winIn = 0x3f;
+ }
+ break;
+ case 2:
+ if (sSlotMachine->bet == 0)
+ break;
+ sub_8104D30(5, SpriteCallbackDummy, 0xd0, 0x74, 0);
+ sSlotMachine->win0h = 0xc0e0;
+ sSlotMachine->win0v = 0x6880;
+ sSlotMachine->winIn = 0x2f;
+ sprite->data[0]++;
+ sprite->data[1] = 0;
+ // fallthrough
+ case 3:
+ sprite->data[1] += 2;
+ sprite->data[2] = sprite->data[1] + 0xc0;
+ sprite->data[3] = 0xe0 - sprite->data[1];
+ if (sprite->data[2] > 0xd0)
+ sprite->data[2] = 0xd0;
+ if (sprite->data[3] < 0xd0)
+ sprite->data[3] = 0xd0;
+ sSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
+ if (sprite->data[1] > 0x0f)
+ {
+ sprite->data[0]++;
+ sSlotMachine->winIn = 0x3f;
+ }
+ break;
+ }
+}
+
+/*static */void nullsub_70(void)
+{
+}
+
+/*static */void sub_8106364(void)
+{
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+}
+
+/*static */void sub_8106370(void)
+{
+ LoadPalette(gUnknown_083EDE20, (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+}
+
+/*static */void sub_810639C(void)
+{
+ sSlotMachine->win0h = 0xf0;
+ sSlotMachine->win0v = 0xa0;
+ sSlotMachine->winIn = 0x3f;
+ sSlotMachine->winOut = 0x3f;
+}
+
+/*static */void sub_81063C0(void)
+{
+ u8 i;
+
+ sub_8106404();
+ gUnknown_0203AAD4 = Alloc(0x3200);
+ LZDecompressWram(gSlotMachineReelTime_Gfx, gUnknown_0203AAD4);
+ gUnknown_0203AAD8 = Alloc(0x3600);
+ LZDecompressWram(sReelTimeGfx, gUnknown_0203AAD8);
+ gUnknown_0203AB30 = AllocZeroed(sizeof(struct SpriteSheet) * 22);
+ for (i = 0; i < 22; i++)
+ {
+ gUnknown_0203AB30[i].data = sSlotMachineSpriteSheets[i].data;
+ gUnknown_0203AB30[i].size = sSlotMachineSpriteSheets[i].size;
+ gUnknown_0203AB30[i].tag = sSlotMachineSpriteSheets[i].tag;
+ }
+ gUnknown_0203AB30[17].data = gUnknown_0203AAD4 + 0xA00;
+ gUnknown_0203AB30[18].data = gUnknown_0203AAD4 + 0x1400;
+ gUnknown_0203AB30[19].data = gUnknown_0203AAD4 + 0x1600;
+ gUnknown_0203AB30[20].data = gUnknown_0203AAD4 + 0x1900;
+ LoadSpriteSheets(gUnknown_0203AB30);
+ LoadSpritePalettes(gSlotMachineSpritePalettes);
+}
+
+/*static */void sub_8106404(void)
+{
+ u8 *dest;
+ u8 i, j;
+
+ gUnknown_0203AB2C = AllocZeroed(sizeof(struct SpriteSheet));
+ gUnknown_0203AAE0 = AllocZeroed(0x2000);
+ dest = gUnknown_0203AAE0;
+ for (i = 0; i < 0x40; i++)
+ {
+ for (j = 0; j < 0x20; j++, dest++)
+ *dest = gUnknown_083EDCDC[j];
+ }
+ gUnknown_0203AB2C->data = gUnknown_0203AAE0;
+ gUnknown_0203AB2C->size = 0x800;
+ gUnknown_0203AB2C->tag = 0x11;
+ LoadSpriteSheet(gUnknown_0203AB2C);
+}
+
+extern const u8 gSlotMachineMenu_Gfx[];
+extern const u8 gSlotMachineMenu_Tilemap[];
+extern const u8 gUnknown_08DCEC70[];
+extern const u16 gSlotMachineMenu_Pal[];
+
+/*static */void sub_8106448(void)
+{
+ gUnknown_0203AAC8 = Alloc(0x2200);
+ LZDecompressWram(gSlotMachineMenu_Gfx, gUnknown_0203AAC8);
+ LoadBgTiles(2, gUnknown_0203AAC8, 0x2200, 0);
+ LoadPalette(gSlotMachineMenu_Pal, 0, 160);
+ LoadPalette(gPalette_83EDE24, 208, 32);
+}
+
+/*static */void sub_81064B8(void)
+{
+ sub_812F968();
+ LoadSlotMachineWheelOverlay();
+}
+
+/*static */void sub_812F968(void)
+{
+ LoadBgTilemap(2, gSlotMachineMenu_Tilemap, 0x500, 0);
+}
+
+/*static */void LoadSlotMachineWheelOverlay(void)
+{
+ s16 x, y, dx;
+
+ for (x = 4; x < 18; x += 5)
+ {
+ for (dx = 0; dx < 4; dx++)
+ {
+ LoadBgTilemap(3, gUnknown_0203AAD0, 2, x + dx + 5 * 32);
+ LoadBgTilemap(3, gUnknown_0203AAD0 + 1, 2, x + dx + 13 * 32);
+ LoadBgTilemap(3, gUnknown_0203AAD0 + 2, 2, x + dx + 6 * 32);
+ LoadBgTilemap(3, gUnknown_0203AAD0 + 3, 2, x + dx + 12 * 32);
+ }
+
+ LoadBgTilemap(3, gUnknown_0203AAD0 + 4, 2, x + 6 * 32);
+ LoadBgTilemap(3, gUnknown_0203AAD0 + 5, 2, x + 12 * 32);
+
+ for (y = 7; y <= 11; y++)
+ LoadBgTilemap(3, gUnknown_0203AAD0 + 6, 2, x + y * 32);
+ }
+}
+
+/*static */void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4)
+{
+ gUnknown_0203AADC[0] = arg1;
+ gUnknown_0203AADC[1] = arg2;
+ gUnknown_0203AADC[2] = arg3;
+ gUnknown_0203AADC[3] = arg4;
+
+ LoadBgTilemap(2, gUnknown_0203AADC, 2, 15 * 32 + arg0);
+ LoadBgTilemap(2, gUnknown_0203AADC + 1, 2, 15 * 32 + 1 + arg0);
+ LoadBgTilemap(2, gUnknown_0203AADC + 2, 2, 16 * 32 + arg0);
+ LoadBgTilemap(2, gUnknown_0203AADC + 3, 2, 16 * 32 + 1 + arg0);
+}
+
+/*static */void sub_81065DC(void)
+{
+ LoadBgTilemap(2, gUnknown_08DCEC70, 0x500, 0);
+ HideBg(3);
+}
+
+/*static */void SlotMachineSetup_9_0(void)
+{
+ gUnknown_03001188[0] = gUnknown_0203AAF4;
+ gUnknown_03001188[1] = gUnknown_0203AAF8;
+ gUnknown_03001188[2] = gUnknown_0203AAFC;
+ gUnknown_03001188[3] = gUnknown_0203AB04;
+ gUnknown_03001188[4] = gUnknown_0203AB08;
+ gUnknown_03001188[5] = gUnknown_0203AB18;
+ gUnknown_03001188[6] = gUnknown_0203AB1C;
+ gUnknown_03001188[7] = gUnknown_0203AB20;
+ gUnknown_03001188[8] = gUnknown_0203AB24;
+ gUnknown_03001188[9] = gUnknown_0203AB28;
+ gUnknown_03001188[10] = gUnknown_0203AB00;
+ gUnknown_03001188[11] = gUnknown_0203AB00;
+ gUnknown_03001188[12] = gUnknown_0203AB00;
+ gUnknown_03001188[13] = gUnknown_0203AB00;
+ gUnknown_03001188[14] = gUnknown_0203AB0C;
+ gUnknown_03001188[15] = gUnknown_0203AB0C;
+ gUnknown_03001188[16] = gUnknown_0203AB0C;
+ gUnknown_03001188[17] = gUnknown_0203AB0C;
+ gUnknown_03001188[18] = gUnknown_0203AB0C;
+ gUnknown_03001188[19] = gUnknown_0203AB10;
+ gUnknown_03001188[20] = gUnknown_0203AB10;
+ gUnknown_03001188[21] = gUnknown_0203AB10;
+ gUnknown_03001188[22] = gUnknown_0203AB14;
+ gUnknown_03001188[23] = gUnknown_0203AB14;
+ gUnknown_03001188[24] = gUnknown_0203AB14;
+ gUnknown_03001188[25] = NULL;
+}
+
+/*static */void SlotMachineSetup_8_0(void)
+{
+ gUnknown_0203AAF4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ gUnknown_0203AAF4[0].data = gUnknown_0203AAD4;
+ gUnknown_0203AAF4[0].size = 0x600;
+
+ gUnknown_0203AAF8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ gUnknown_0203AAF8[0].data = gUnknown_0203AAD4 + 0x600;
+ gUnknown_0203AAF8[0].size = 0x200;
+
+ gUnknown_0203AAFC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ gUnknown_0203AAFC[0].data = gUnknown_0203AAD4 + 0x800;
+ gUnknown_0203AAFC[0].size = 0x200;
+
+ gUnknown_0203AB00 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ gUnknown_0203AB00[0].data = gUnknown_0203AAD4 + 0xA00;
+ gUnknown_0203AB00[0].size = 0x200;
+
+ gUnknown_0203AB04 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ gUnknown_0203AB04[0].data = gUnknown_0203AAD4 + 0xC00;
+ gUnknown_0203AB04[0].size = 0x300;
+
+ gUnknown_0203AB08 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ gUnknown_0203AB08[0].data = gUnknown_0203AAD4 + 0x1000;
+ gUnknown_0203AB08[0].size = 0x400;
+
+ gUnknown_0203AB0C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ gUnknown_0203AB0C[0].data = gUnknown_0203AAD4 + 0x1400;
+ gUnknown_0203AB0C[0].size = 0x200;
+
+ gUnknown_0203AB10 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ gUnknown_0203AB10[0].data = gUnknown_0203AAD4 + 0x1600;
+ gUnknown_0203AB10[0].size = 0x300;
+
+ gUnknown_0203AB14 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ gUnknown_0203AB14[0].data = gUnknown_0203AAD4 + 0x1900;
+ gUnknown_0203AB14[0].size = 0x300;
+
+ gUnknown_0203AB18 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ gUnknown_0203AB18[0].data = gUnknown_0203AAD4 + 0x1C00;
+ gUnknown_0203AB18[0].size = 0x200;
+ gUnknown_0203AB18[1].data = gUnknown_0203AAD4 + 0x1E00;
+ gUnknown_0203AB18[1].size = 0x200;
+
+ gUnknown_0203AB1C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ gUnknown_0203AB1C[0].data = gUnknown_0203AAD4 + 0x2000;
+ gUnknown_0203AB1C[0].size = 640;
+
+ gUnknown_0203AB20 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
+ gUnknown_0203AB20[0].data = gUnknown_0203AAD4 + 0x2280;
+ gUnknown_0203AB20[0].size = 0x80;
+ gUnknown_0203AB20[1].data = gUnknown_0203AAD4 + 0x2300;
+ gUnknown_0203AB20[1].size = 0x80;
+ gUnknown_0203AB20[2].data = gUnknown_0203AAD4 + 0x2380;
+ gUnknown_0203AB20[2].size = 0x80;
+ gUnknown_0203AB20[3].data = gUnknown_0203AAD4 + 0x2400;
+ gUnknown_0203AB20[3].size = 0x80;
+ gUnknown_0203AB20[4].data = gUnknown_0203AAD4 + 0x2480;
+ gUnknown_0203AB20[4].size = 0x80;
+
+ gUnknown_0203AB24 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ gUnknown_0203AB24[0].data = gUnknown_0203AAD4 + 0x2600;
+ gUnknown_0203AB24[0].size = 0x480;
+ gUnknown_0203AB24[1].data = gUnknown_0203AAD4 + 10880;
+ gUnknown_0203AB24[1].size = 0x480;
+
+ gUnknown_0203AB28 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ gUnknown_0203AB28[0].data = gUnknown_0203AAD4 + 0x2F00;
+ gUnknown_0203AB28[0].size = 0x180;
+ gUnknown_0203AB28[1].data = gUnknown_0203AAD4 + 0x3080;
+ gUnknown_0203AB28[1].size = 0x180;
+}
+
+const u8 sReelSymbols[][21] =
+{
+ {
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY
+ },
+ {
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_CHERRY
+ },
+ {
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_CHERRY
+ },
+};
+
+const u8 gUnknown_083ECCF1[] = {
+ 1, 0, 5, 4, 3, 2
+};
+
+const s16 gUnknown_083ECCF8[][2] = {
+ {0, 6},
+ {0, 10},
+ {0, 2}
+};
+
+const u8 gUnknown_083ECD04[][3] = {
+ {1, 1, 12},
+ {1, 1, 14},
+ {2, 2, 14},
+ {2, 2, 14},
+ {2, 3, 16},
+ {3, 3, 16}
+};
+
+const u8 gUnknown_083ECD16[][6] = {
+ {25, 25, 30, 40, 40, 50},
+ {25, 25, 30, 30, 35, 35},
+ {25, 25, 30, 25, 25, 30}
+};
+
+const u8 gUnknown_083ECD28[][6] = {
+ {20, 25, 25, 20, 25, 25},
+ {12, 15, 15, 18, 19, 22},
+ {25, 25, 25, 30, 30, 40},
+ {25, 25, 20, 20, 15, 15},
+ {40, 40, 35, 35, 40, 40}
+};
+
+const u8 gUnknown_083ECD46[][17] = {
+ {243, 243, 243, 80, 80, 80, 80, 40, 40, 40, 40, 40, 40, 5, 5, 5, 5},
+ { 5, 5, 5, 150, 150, 150, 150, 130, 130, 130, 130, 130, 130, 100, 100, 100, 5},
+ { 4, 4, 4, 20, 20, 20, 20, 80, 80, 80, 80, 80, 80, 100, 100, 100, 40},
+ { 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 45, 45, 45, 100},
+ { 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 100},
+ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6}
+};
+
+const u8 gUnknown_083ECDAC[][17] = {
+ { 243, 243, 243, 200, 200, 200, 200, 160, 160, 160, 160, 160, 160, 70, 70, 70, 5},
+ { 5, 5, 5, 25, 25, 25, 25, 5, 5, 5, 5, 5, 5, 2, 2, 2, 6},
+ { 4, 4, 4, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 40, 40, 40, 35},
+ { 2, 2, 2, 3, 3, 3, 3, 30, 30, 30, 30, 30, 30, 100, 100, 100, 50},
+ { 1, 1, 1, 2, 2, 2, 2, 30, 30, 30, 30, 30, 30, 40, 40, 40, 100},
+ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 60}
+};
+
+const u16 gUnknown_083ECE12[] = {
+ 0x80, 0xaf, 0xc8, 0xe1, 0x100
+};
+
+const u16 gUnknown_083ECE1C[][2] = {
+ {10, 5},
+ {10, 10},
+ {10, 15},
+ {10, 25},
+ {10, 35}
+};
+
+const u16 gUnknown_083ECE30[] = {
+ 0, 5, 10, 15, 20
+};
+
+const u8 gUnknown_083ECE3A[] = {
+ 6, 4, 3, 2, 5, 0, 0, 0
+};
+
+const u16 gUnknown_083ECE42[] = {
+ 0x80, 0x20, 0x40
+};
+
+const u16 gUnknown_083ECE48[] = {
+ 0x10, 0x08, 0x04, 0x02, 0x01
+};
+
+const u8 sSym2Match[] = {
+ SLOT_MACHINE_MATCHED_777_RED,
+ SLOT_MACHINE_MATCHED_777_BLUE,
+ SLOT_MACHINE_MATCHED_AZURILL,
+ SLOT_MACHINE_MATCHED_LOTAD,
+ SLOT_MACHINE_MATCHED_1CHERRY,
+ SLOT_MACHINE_MATCHED_POWER,
+ SLOT_MACHINE_MATCHED_REPLAY
+};
+
+const u16 sSlotMatchFlags[] = {
+ 1 << SLOT_MACHINE_MATCHED_1CHERRY,
+ 1 << SLOT_MACHINE_MATCHED_2CHERRY,
+ 1 << SLOT_MACHINE_MATCHED_REPLAY,
+ 1 << SLOT_MACHINE_MATCHED_LOTAD,
+ 1 << SLOT_MACHINE_MATCHED_AZURILL,
+ 1 << SLOT_MACHINE_MATCHED_POWER,
+ 1 << SLOT_MACHINE_MATCHED_777_MIXED,
+ 1 << SLOT_MACHINE_MATCHED_777_RED,
+ 1 << SLOT_MACHINE_MATCHED_777_BLUE
+};
+
+const u16 sSlotPayouts[] = {
+ 2, 4, 0, 6, 12, 3, 90, 300, 300
+};
+
+const s16 gUnknown_083ECE7E[][2] = {
+ { 0xd0, 0x38},
+ { 0xb8, 0x00},
+ { 0xc8, 0x08},
+ { 0xd8, 0x10},
+ { 0xe8, 0x18},
+ { 0xd0, 0x48},
+ { 0xd0, 0x08},
+ { 0xd0, 0x40},
+ { 0xd0, 0x38},
+ { 0xc0, 0x58},
+ { 0xe0, 0x58},
+ { 0xc0, 0x78},
+ { 0xe0, 0x78},
+ { 0x90, 0x38},
+ {0x110, 0x58},
+ { 0xa8, 0x70},
+ { 0xd0, 0x54},
+ { 0xd0, 0x70},
+ { 0xbc, 0x34},
+ { 0xd0, 0x34},
+ { 0xe4, 0x34},
+ { 0xb8, 0x48},
+ { 0xc4, 0x48},
+ { 0xd0, 0x48},
+ { 0xdc, 0x48},
+ { 0xe8, 0x48},
+ { 0xbc, 0x34},
+ { 0xd0, 0x34},
+ { 0xe4, 0x34},
+ { 0xb8, 0x48},
+ { 0xc4, 0x48},
+ { 0xd0, 0x48},
+ { 0xdc, 0x48},
+ { 0xe8, 0x48},
+ { 0x00, 0x00}
+};
+
+const SpriteCallback gUnknown_083ECF0C[] = {
+ sub_8105C64,
+ sub_8105F54,
+ sub_8105F54,
+ sub_8105F54,
+ sub_8105F54,
+ sub_8105F9C,
+ sub_8105EB4,
+ sub_8105C64,
+ sub_8105C64,
+ sub_8105C6C,
+ sub_8105CF0,
+ sub_8105D08,
+ sub_8105D20,
+ sub_8105D3C,
+ sub_8105DA4,
+ sub_8105E08,
+ sub_8105C64,
+ sub_8106058,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_8106230
+};
+
+const struct UnkStruct1 Unknown_83ECF98[] = {
+ {25, 34, 0},
+ {2, 0, 0},
+ {9, 16, 0},
+ {255, 0, 0}
+};
+
+const struct UnkStruct1 Unknown_83ECFA8[] = {
+ {10, 1, 0},
+ {11, 2, 0},
+ {12, 3, 0},
+ {13, 4, 0},
+ {5, 5, 0},
+ {8, 6, 0},
+ {255, 0, 0}
+};
+
+const struct UnkStruct1 Unknown_83ECFC4[] = {
+ {3, 7, 0},
+ {8, 17, 0},
+ {255, 0, 0}
+};
+
+const struct UnkStruct1 Unknown_83ECFD0[] = {
+ {4, 8, 0},
+ {6, 9, 0},
+ {6, 10, 1},
+ {6, 11, 2},
+ {6, 12, 3},
+ {255, 0, 0}
+};
+
+const struct UnkStruct1 Unknown_83ECFE8[] = {
+ {0, 13, 0},
+ {1, 14, 0},
+ {7, 15, 0},
+ {255, 0, 0}
+};
+
+const struct UnkStruct1 Unknown_83ECFF8[] = {
+ {19, 26, 0},
+ {20, 27, 1},
+ {21, 28, 2},
+ {14, 29, 3},
+ {15, 30, 4},
+ {16, 31, 5},
+ {17, 32, 6},
+ {18, 33, 7},
+ {8, 17, 0},
+ {255, 0, 0}
+};
+
+const struct UnkStruct1 Unknown_83ED020[] = {
+ {22, 18, 0},
+ {23, 19, 1},
+ {24, 20, 2},
+ {14, 21, 3},
+ {15, 22, 4},
+ {16, 23, 5},
+ {17, 24, 6},
+ {18, 25, 7},
+ {8, 17, 0},
+ {255, 0, 0}
+};
+
+const struct UnkStruct1 *const gUnknown_083ED048[] = {
+ Unknown_83ECF98,
+ Unknown_83ECFA8,
+ Unknown_83ECFC4,
+ Unknown_83ECFD0,
+ Unknown_83ECFE8,
+ Unknown_83ED020,
+ Unknown_83ECFF8
+};
+
+void (*const gUnknown_083ED064[])(void) = {
+ sub_810639C,
+ sub_8106364,
+ sub_8106370,
+ nullsub_70,
+ nullsub_70,
+ sub_8106370,
+ sub_8106370
+};
diff --git a/src/start_menu.c b/src/start_menu.c
index 56dad89f7..9d10aeaa4 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -866,7 +866,7 @@ static void InitSave(void)
static u8 RunSaveCallback(void)
{
// True if text is still printing
- if (sub_8197224() == TRUE)
+ if (RunTextPrintersAndIsPrinter0Active() == TRUE)
{
return SAVE_IN_PROGRESS;
}
diff --git a/src/tileset_anims.c b/src/tileset_anims.c
index d05931dba..454a2e435 100644
--- a/src/tileset_anims.c
+++ b/src/tileset_anims.c
@@ -1,4 +1,3 @@
-
// Includes
#include "global.h"
#include "palette.h"
@@ -6,6 +5,7 @@
#include "battle_transition.h"
#include "task.h"
#include "battle_transition.h"
+#include "fieldmap.h"
// Static type declarations
@@ -223,25 +223,25 @@ const u16 gTilesetAnims_Mauville1b_Frame1[] = INCBIN_U16("data/tilesets/secondar
const u16 tileset_anims_space_1[16] = {};
u16 *const gTilesetAnims_MauvilleVDests0[] = {
- (u16 *)(BG_VRAM + 0x4c00),
- (u16 *)(BG_VRAM + 0x4c80),
- (u16 *)(BG_VRAM + 0x4d00),
- (u16 *)(BG_VRAM + 0x4d80),
- (u16 *)(BG_VRAM + 0x4e00),
- (u16 *)(BG_VRAM + 0x4e80),
- (u16 *)(BG_VRAM + 0x4f00),
- (u16 *)(BG_VRAM + 0x4f80)
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 96)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 100)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 104)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 108)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 112)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 116)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 120)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 124))
};
u16 *const gTilesetAnims_MauvilleVDests1[] = {
- (u16 *)(BG_VRAM + 0x5000),
- (u16 *)(BG_VRAM + 0x5080),
- (u16 *)(BG_VRAM + 0x5100),
- (u16 *)(BG_VRAM + 0x5180),
- (u16 *)(BG_VRAM + 0x5200),
- (u16 *)(BG_VRAM + 0x5280),
- (u16 *)(BG_VRAM + 0x5300),
- (u16 *)(BG_VRAM + 0x5380)
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 128)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 132)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 136)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 140)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 144)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 148)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 152)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 156))
};
const u16 *const gTilesetAnims_Mauville0a[] = {
@@ -305,14 +305,14 @@ const u16 gTilesetAnims_Rustboro0_Frame6[] = INCBIN_U16("data/tilesets/secondary
const u16 gTilesetAnims_Rustboro0_Frame7[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/7.4bpp");
u16 *const gTilesetAnims_RustboroVDests0[] = {
- (u16 *)(BG_VRAM + 0x5000),
- (u16 *)(BG_VRAM + 0x5080),
- (u16 *)(BG_VRAM + 0x5100),
- (u16 *)(BG_VRAM + 0x5180),
- (u16 *)(BG_VRAM + 0x5200),
- (u16 *)(BG_VRAM + 0x5280),
- (u16 *)(BG_VRAM + 0x5300),
- (u16 *)(BG_VRAM + 0x5380)
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 128)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 132)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 136)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 140)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 144)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 148)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 152)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 156))
};
const u16 *const gTilesetAnims_Rustboro0[] = {
@@ -381,14 +381,14 @@ const u16 gTilesetAnims_EverGrande0_Frame7[] = INCBIN_U16("data/tilesets/seconda
const u16 tileset_anims_space_4[16] = {};
u16 *const gTilesetAnims_EverGrandeVDests0[] = {
- (u16 *)(BG_VRAM + 0x5c00),
- (u16 *)(BG_VRAM + 0x5c80),
- (u16 *)(BG_VRAM + 0x5d00),
- (u16 *)(BG_VRAM + 0x5d80),
- (u16 *)(BG_VRAM + 0x5e00),
- (u16 *)(BG_VRAM + 0x5e80),
- (u16 *)(BG_VRAM + 0x5f00),
- (u16 *)(BG_VRAM + 0x5f80)
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 224)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 228)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 232)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 236)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 240)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 244)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 248)),
+ (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 252))
};
const u16 *const gTilesetAnims_EverGrande0[] = {
@@ -719,22 +719,22 @@ void TilesetCb_InsideBuilding(void)
static void sub_80A0B70(u16 timer)
{
- static void sub_80A0BCC(u16);
- static void sub_80A0BF4(u16);
- static void sub_80A0C1C(u16);
- static void sub_80A0C44(u16);
- static void sub_80A12AC(u16);
+ static void gTilesetAnims_Flower(u16);
+ static void gTilesetAnims_Water(u16);
+ static void gTilesetAnims_SandWaterEdge(u16);
+ static void gTilesetAnims_Waterfall(u16);
+ static void gTilesetAnims_LandWaterEdge (u16);
if ((timer & 0x0F) == 0)
- sub_80A0BCC(timer >> 4);
+ gTilesetAnims_Flower(timer >> 4);
if ((timer & 0x0F) == 1)
- sub_80A0BF4(timer >> 4);
+ gTilesetAnims_Water(timer >> 4);
if ((timer & 0x0F) == 2)
- sub_80A0C1C(timer >> 4);
+ gTilesetAnims_SandWaterEdge(timer >> 4);
if ((timer & 0x0F) == 3)
- sub_80A0C44(timer >> 4);
+ gTilesetAnims_Waterfall(timer >> 4);
if ((timer & 0x0F) == 4)
- sub_80A12AC(timer >> 4);
+ gTilesetAnims_LandWaterEdge (timer >> 4);
}
static void sub_80A0BB4(u16 timer)
@@ -745,36 +745,36 @@ static void sub_80A0BB4(u16 timer)
sub_80A1688(timer >> 3);
}
-static void sub_80A0BCC(u16 timer)
+static void gTilesetAnims_Flower(u16 timer)
{
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_General0[idx], (u16 *)(BG_VRAM + 0x3F80), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_General0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(508)), 0x80);
}
-static void sub_80A0BF4(u16 timer)
+static void gTilesetAnims_Water(u16 timer)
{
u8 idx;
idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_General1[idx], (u16 *)(BG_VRAM + 0x3600), 0x3C0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_General1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(432)), 0x3C0);
}
-static void sub_80A0C1C(u16 timer)
+static void gTilesetAnims_SandWaterEdge(u16 timer)
{
u16 idx;
idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_General2[idx], (u16 *)(BG_VRAM + 0x3a00), 0x140);
+ AppendTilesetAnimToBuffer(gTilesetAnims_General2[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(464)), 0x140);
}
-static void sub_80A0C44(u16 timer)
+static void gTilesetAnims_Waterfall(u16 timer)
{
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_General3[idx], (u16 *)(BG_VRAM + 0x3e00), 0xc0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_General3[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(496)), 0xc0);
}
void TilesetCb_Petalburg(void)
@@ -1122,12 +1122,12 @@ static void sub_80A1294(u16 timer)
sub_80A1570(timer >> 3);
}
-static void sub_80A12AC(u16 timer)
+static void gTilesetAnims_LandWaterEdge (u16 timer)
{
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_General4[idx], (u16 *)(BG_VRAM + 0x3c00), 0x140);
+ AppendTilesetAnimToBuffer(gTilesetAnims_General4[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(480)), 0x140);
}
static void sub_80A12D4(u8 timer)
@@ -1135,10 +1135,10 @@ static void sub_80A12D4(u8 timer)
u8 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + 0x6400), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 288)), 0x80);
idx = (timer + 2) % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + 0x6480), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 292)), 0x80);
}
static void sub_80A131C(u8 timer)
@@ -1146,7 +1146,7 @@ static void sub_80A131C(u8 timer)
u8 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog0[idx], (u16 *)(BG_VRAM + 0x7a00), 0x3C0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 464)), 0x3C0);
}
static void sub_80A1344(u8 timer)
@@ -1154,7 +1154,7 @@ static void sub_80A1344(u8 timer)
u8 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Underwater0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Underwater0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x80);
}
static void sub_80A136C(u8 timer)
@@ -1162,7 +1162,7 @@ static void sub_80A136C(u8 timer)
u8 idx;
idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog1[idx], (u16 *)(BG_VRAM + 0x7e00), 0x100);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x100);
}
static void sub_80A1394(u16 timer_div, u8 timer_mod)
@@ -1195,7 +1195,7 @@ static void sub_80A1470(u16 timer)
u16 idx;
idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro1[idx], (u16 *)(BG_VRAM + 0x7800), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 448)), 0x80);
}
static void sub_80A1498(u16 timer)
@@ -1203,7 +1203,7 @@ static void sub_80A1498(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + 0x5400), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 160)), 0x80);
}
static void sub_80A14C0(u16 timer_div, u8 timer_mod)
@@ -1219,7 +1219,7 @@ static void sub_80A14F8(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + 0x7400), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 416)), 0x80);
}
static void sub_80A1520(u16 timer)
@@ -1227,7 +1227,7 @@ static void sub_80A1520(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Dewford0[idx], (u16 *)(BG_VRAM + 0x5540), 0xC0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Dewford0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 170)), 0xC0);
}
static void sub_80A1548(u16 timer)
@@ -1235,7 +1235,7 @@ static void sub_80A1548(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideWest0[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideWest0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 218)), 0xC0);
}
static void sub_80A1570(u16 timer)
@@ -1243,7 +1243,7 @@ static void sub_80A1570(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideEast0[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0);
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideEast0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 218)), 0xC0);
}
static void sub_80A1598(u16 timer)
@@ -1251,7 +1251,7 @@ static void sub_80A1598(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Slateport0[idx], (u16 *)(BG_VRAM + 0x5c00), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Slateport0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 224)), 0x80);
}
static void sub_80A15C0(u16 timer)
@@ -1321,7 +1321,7 @@ static void sub_80A1688(u16 timer)
u16 idx;
idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_InsideBuilding0[idx], (u16 *)(BG_VRAM + 0x3e00), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_InsideBuilding0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(496)), 0x80);
}
static void sub_80A16B0(u16 timer)
@@ -1329,8 +1329,8 @@ static void sub_80A16B0(u16 timer)
u16 idx;
idx = timer % 3;
- AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x180);
- AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym1[idx], (u16 *)(BG_VRAM + 0x7a00), 0x280);
+ AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x180);
+ AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 464)), 0x280);
}
static void sub_80A16F8(u16 timer)
@@ -1338,7 +1338,7 @@ static void sub_80A16F8(u16 timer)
u16 idx;
idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour1[idx], (u16 *)(BG_VRAM + 0x7f00), 0x20);
+ AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 504)), 0x20);
}
static void sub_80A1720(u16 timer)
@@ -1346,7 +1346,7 @@ static void sub_80A1720(u16 timer)
u16 idx;
idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour0[idx], (u16 *)(BG_VRAM + 0x7c00), 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 480)), 0x80);
}
static void sub_80A1748(u16 timer)
@@ -1354,7 +1354,7 @@ static void sub_80A1748(u16 timer)
u16 idx;
idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_MauvilleGym0[idx], (u16 *)(BG_VRAM + 0x5200), 0x200);
+ AppendTilesetAnimToBuffer(gTilesetAnims_MauvilleGym0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 144)), 0x200);
}
static void sub_80A1770(u16 timer)
@@ -1362,7 +1362,7 @@ static void sub_80A1770(u16 timer)
u16 idx;
idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_BikeShop0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x120);
+ AppendTilesetAnimToBuffer(gTilesetAnims_BikeShop0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x120);
}
static void sub_80A1798(u16 timer)
@@ -1370,7 +1370,7 @@ static void sub_80A1798(u16 timer)
u16 idx;
idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_Sootopolis0[idx], (u16 *)(BG_VRAM + 0x5e00), 0xc00);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Sootopolis0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 240)), 0xc00);
}
static void sub_80A17C0(u16 timer)
@@ -1378,7 +1378,7 @@ static void sub_80A17C0(u16 timer)
u16 idx;
idx = timer % 3;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid0[idx], (u16 *)(BG_VRAM + 0x52e0), 0x100);
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 151)), 0x100);
}
static void sub_80A17EC(u16 timer)
@@ -1386,7 +1386,7 @@ static void sub_80A17EC(u16 timer)
u16 idx;
idx = timer % 3;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid1[idx], (u16 *)(BG_VRAM + 0x50e0), 0x100);
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 135)), 0x100);
}
static void sub_80A1818(u16 a1)