diff options
Diffstat (limited to 'src')
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) |