diff options
Diffstat (limited to 'src')
61 files changed, 1762 insertions, 1910 deletions
diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c index 8d045c42d..450844453 100644 --- a/src/battle/anim/fight.c +++ b/src/battle/anim/fight.c @@ -12,7 +12,7 @@ extern u8 gBattlerAttacker; extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; extern u8 gBattlerSpriteIds[]; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; @@ -516,7 +516,7 @@ void sub_80D90F4(struct Sprite *sprite) if (Random() & 1) y *= -1; - if ((gBanksBySide[bank] & 1) == 0) + if ((gBattlerPositions[bank] & 1) == 0) y += 0xFFF0; sprite->pos1.x += x; diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index 1f36c933a..407c9a08f 100644 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -12,7 +12,7 @@ extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; extern u8 gAnimVisualTaskCount; extern struct OamMatrix gOamMatrices[]; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB538; void sub_80785E4(struct Sprite *sprite); @@ -1899,7 +1899,7 @@ void sub_80DAD84(struct Sprite * sprite) if (gMain.inBattle) { - if (gBanksBySide[gBattleAnimTarget] & 1) + if (gBattlerPositions[gBattleAnimTarget] & 1) { sprite->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3]; } diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c index 4002ceec1..e41057d72 100644 --- a/src/battle/anim/ice.c +++ b/src/battle/anim/ice.c @@ -14,7 +14,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; extern u8 gAnimVisualTaskCount; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u8 gBattlerSpriteIds[]; extern u16 gBattle_BG1_X; @@ -1419,12 +1419,12 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite) if (GetBattlerSpriteCoord(gBattleAnimAttacker, 2) < GetBattlerSpriteCoord(gBattleAnimTarget, 2)) sprite->data[7] = 0x8000; - if (!(gBanksBySide[gBattleAnimTarget] & 1)) + if (!(gBattlerPositions[gBattleAnimTarget] & 1)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; - if ((sprite->data[7] & 0x8000) && !(gBanksBySide[gBattleAnimAttacker] & 1)) + if ((sprite->data[7] & 0x8000) && !(gBattlerPositions[gBattleAnimAttacker] & 1)) sprite->subpriority = gSprites[GetAnimBattlerSpriteId(1)].subpriority + 1; sprite->data[6] = 1; @@ -1490,7 +1490,7 @@ static void sub_80D8874(struct Sprite *sprite) sprite->data[3] = sprite->pos1.y; sprite->data[4] = sprite->pos1.y + 29; sprite->data[7]++; - if (gMain.inBattle && gBanksBySide[gBattleAnimTarget] & 1) + if (gMain.inBattle && gBattlerPositions[gBattleAnimTarget] & 1) sprite->data[5] = 204; else sprite->data[5] = value2; @@ -1535,7 +1535,7 @@ static void sub_80D8874(struct Sprite *sprite) sprite->data[1] = sprite->pos1.x += sprite->pos2.x; sprite->data[3] = sprite->pos1.y += sprite->pos2.y; sprite->data[4] = sprite->pos1.y + 4; - if (gMain.inBattle && gBanksBySide[gBattleAnimTarget] & 1) + if (gMain.inBattle && gBattlerPositions[gBattleAnimTarget] & 1) sprite->data[2] = 0x100; else sprite->data[2] = -0x10; @@ -1646,7 +1646,7 @@ NAKED static void sub_80D8874(struct Sprite *sprite) "\tands r0, r1\n" "\tcmp r0, 0\n" "\tbeq _080D8938\n" - "\tldr r1, _080D8934 @ =gBanksBySide\n" + "\tldr r1, _080D8934 @ =gBattlerPositions\n" "\tldrb r0, [r6]\n" "\tadds r0, r1\n" "\tldrb r1, [r0]\n" @@ -1661,7 +1661,7 @@ NAKED static void sub_80D8874(struct Sprite *sprite) "_080D8928: .4byte gBattleAnimTarget\n" "_080D892C: .4byte gMain\n" "_080D8930: .4byte 0x0000043d\n" - "_080D8934: .4byte gBanksBySide\n" + "_080D8934: .4byte gBattlerPositions\n" "_080D8938:\n" "\tstrh r5, [r4, 0x38]\n" "_080D893A:\n" @@ -1806,7 +1806,7 @@ NAKED static void sub_80D8874(struct Sprite *sprite) "\tands r0, r1\n" "\tcmp r0, 0\n" "\tbeq _080D8A78\n" - "\tldr r1, _080D8A70 @ =gBanksBySide\n" + "\tldr r1, _080D8A70 @ =gBattlerPositions\n" "\tldr r0, _080D8A74 @ =gBattleAnimTarget\n" "\tldrb r0, [r0]\n" "\tadds r0, r1\n" @@ -1821,7 +1821,7 @@ NAKED static void sub_80D8874(struct Sprite *sprite) "\t.align 2, 0\n" "_080D8A68: .4byte gMain\n" "_080D8A6C: .4byte 0x0000043d\n" - "_080D8A70: .4byte gBanksBySide\n" + "_080D8A70: .4byte gBattlerPositions\n" "_080D8A74: .4byte gBattleAnimTarget\n" "_080D8A78:\n" "\tldr r0, _080D8A90 @ =0x0000fff0\n" diff --git a/src/battle/anim/sonic.c b/src/battle/anim/sonic.c index 9cdda992f..cef255eda 100644 --- a/src/battle/anim/sonic.c +++ b/src/battle/anim/sonic.c @@ -9,7 +9,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u16 gBattleTypeFlags; extern void sub_80D4CA4(struct Sprite *sprite); @@ -296,7 +296,7 @@ void sub_80CFB04(u8 taskId) } else { - if ((gBanksBySide[gBattleAnimTarget] & 1) == 0) + if ((gBattlerPositions[gBattleAnimTarget] & 1) == 0) { gTasks[taskId].data[4] = 1; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 0c8b8fb1b..405776db6 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -26,9 +26,9 @@ extern u8 gBattlerTarget; extern u8 gAbsentBattlerFlags; extern u8 gMoveResultFlags; extern u16 gDynamicBasePower; -extern u16 gLastUsedMove[MAX_BATTLERS_COUNT]; +extern u16 gLastMoves[MAX_BATTLERS_COUNT]; extern u32 gStatuses3[MAX_BATTLERS_COUNT]; -extern u16 gSideAffecting[2]; +extern u16 gSideStatuses[2]; extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT]; extern u8 gCritMultiplier; extern u16 gTrainerBattleOpponent; @@ -448,7 +448,7 @@ void sub_810745C(void) { if (AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] == 0) { - AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] = gLastUsedMove[gBattlerTarget]; + AI_BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] = gLastMoves[gBattlerTarget]; return; } } @@ -468,7 +468,7 @@ void RecordAbilityBattle(u8 a, u8 b) AI_BATTLE_HISTORY->abilities[GetBattlerPosition(a) & 1] = b; } -void RecordItemBattle(u8 a, u8 b) +void RecordItemEffectBattle(u8 a, u8 b) { if (GetBattlerSide(a) == 0) AI_BATTLE_HISTORY->itemEffects[GetBattlerPosition(a) & 1] = b; @@ -697,7 +697,7 @@ static void BattleAICmd_if_status4(void) arg1 = GetBattlerPosition(index) & 1; arg2 = T1_READ_32(gAIScriptPtr + 2); - if ((gSideAffecting[arg1] & arg2) != 0) + if ((gSideStatuses[arg1] & arg2) != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 6); else gAIScriptPtr += 10; @@ -716,7 +716,7 @@ static void BattleAICmd_if_not_status4(void) arg1 = GetBattlerPosition(index) & 1; arg2 = T1_READ_32(gAIScriptPtr + 2); - if ((gSideAffecting[arg1] & arg2) == 0) + if ((gSideStatuses[arg1] & arg2) == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 6); else gAIScriptPtr += 10; @@ -1256,9 +1256,9 @@ _081083D0: .4byte gAIScriptPtr\n\ static void BattleAICmd_get_move(void) { if (gAIScriptPtr[1] == USER) - AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBattlerAttacker]; + AI_THINKING_STRUCT->funcResult = gLastMoves[gBattlerAttacker]; else - AI_THINKING_STRUCT->funcResult = gLastUsedMove[gBattlerTarget]; + AI_THINKING_STRUCT->funcResult = gLastMoves[gBattlerTarget]; gAIScriptPtr += 2; } diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 9da56a220..b4b2841e0 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -1,13 +1,13 @@ #include "global.h" #include "battle.h" #include "battle_ai_switch_items.h" +#include "battle_controllers.h" #include "battle_script_commands.h" #include "data2.h" #include "ewram.h" #include "pokemon.h" #include "random.h" #include "rom_8077ABC.h" -#include "rom3.h" #include "util.h" #include "constants/abilities.h" #include "constants/items.h" @@ -386,7 +386,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) static bool8 ShouldSwitchIfNaturalCure(void) { - if (!(gBattleMons[gActiveBattler].status1 & STATUS_SLEEP)) + if (!(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)) return FALSE; if (gBattleMons[gActiveBattler].ability != ABILITY_NATURAL_CURE) return FALSE; @@ -936,27 +936,27 @@ static bool8 ShouldUseItem(void) break; case AI_ITEM_CURE_CONDITION: ewram160DA(gActiveBattler) = 0; - if (itemEffects[3] & 0x20 && gBattleMons[gActiveBattler].status1 & STATUS_SLEEP) + if (itemEffects[3] & 0x20 && gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) { ewram160DA(gActiveBattler) |= 0x20; shouldUse = TRUE; } - if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBattler].status1 & STATUS_POISON || gBattleMons[gActiveBattler].status1 & STATUS_TOXIC_POISON)) + if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBattler].status1 & STATUS1_POISON || gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON)) { ewram160DA(gActiveBattler) |= 0x10; shouldUse = TRUE; } - if (itemEffects[3] & 0x8 && gBattleMons[gActiveBattler].status1 & STATUS_BURN) + if (itemEffects[3] & 0x8 && gBattleMons[gActiveBattler].status1 & STATUS1_BURN) { ewram160DA(gActiveBattler) |= 0x8; shouldUse = TRUE; } - if (itemEffects[3] & 0x4 && gBattleMons[gActiveBattler].status1 & STATUS_FREEZE) + if (itemEffects[3] & 0x4 && gBattleMons[gActiveBattler].status1 & STATUS1_FREEZE) { ewram160DA(gActiveBattler) |= 0x4; shouldUse = TRUE; } - if (itemEffects[3] & 0x2 && gBattleMons[gActiveBattler].status1 & STATUS_PARALYSIS) + if (itemEffects[3] & 0x2 && gBattleMons[gActiveBattler].status1 & STATUS1_PARALYSIS) { ewram160DA(gActiveBattler) |= 0x2; shouldUse = TRUE; diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 8a53aca75..445c6eac5 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -2,6 +2,7 @@ #include "battle.h" #include "battle_anim.h" #include "battle_anim_special.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "data2.h" #include "link.h" @@ -9,7 +10,6 @@ #include "main.h" #include "palette.h" #include "rom_8077ABC.h" -#include "rom3.h" #include "constants/songs.h" #include "sound.h" #include "sprite.h" diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index ae9e6353d..acc35e2d2 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -2,6 +2,7 @@ #include "battle.h" #include "battle_anim.h" #include "battle_anim_special.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "data2.h" #include "battle_811DA74.h" @@ -12,7 +13,6 @@ #include "palette.h" #include "pokeball.h" #include "pokemon.h" -#include "rom3.h" #include "rom_8077ABC.h" #include "sound.h" #include "constants/songs.h" diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 429a9ec26..9fe69811e 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -3,6 +3,7 @@ #include "battle_ai_script_commands.h" #include "battle_ai_switch_items.h" #include "battle_anim.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "data2.h" #include "battle_811DA74.h" @@ -15,7 +16,6 @@ #include "pokeball.h" #include "pokemon.h" #include "random.h" -#include "rom3.h" #include "rom_8077ABC.h" #include "sound.h" #include "constants/songs.h" diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index e1c632f37..9a48f4e16 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -3,6 +3,7 @@ #include "battle.h" #include "battle_anim.h" #include "battle_anim_special.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "battle_message.h" #include "item.h" @@ -14,7 +15,6 @@ #include "constants/moves.h" #include "palette.h" #include "pokemon.h" -#include "rom3.h" #include "constants/songs.h" #include "sound.h" #include "string_util.h" @@ -818,10 +818,10 @@ void sub_802CA60(void) r9->unkC[gMoveSelectionCursor[gActiveBattler]] = r9->unkC[gUnknown_03004344]; r9->unkC[gUnknown_03004344] = i; - if (gDisableStructs[gActiveBattler].unk18_b & gBitTable[gMoveSelectionCursor[gActiveBattler]]) + if (gDisableStructs[gActiveBattler].mimickedMoves & gBitTable[gMoveSelectionCursor[gActiveBattler]]) { - gDisableStructs[gActiveBattler].unk18_b &= ~gBitTable[gMoveSelectionCursor[gActiveBattler]]; - gDisableStructs[gActiveBattler].unk18_b |= gBitTable[gUnknown_03004344]; + gDisableStructs[gActiveBattler].mimickedMoves &= ~gBitTable[gMoveSelectionCursor[gActiveBattler]]; + gDisableStructs[gActiveBattler].mimickedMoves |= gBitTable[gUnknown_03004344]; } sub_802E1B0(); diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index bc4695ddc..c015cb4cf 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle_anim_81258BC.h" #include "battle.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "battle_message.h" #include "data2.h" @@ -8,7 +9,6 @@ #include "main.h" #include "menu_cursor.h" #include "palette.h" -#include "rom3.h" #include "constants/songs.h" #include "sound.h" #include "text.h" diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index eb1486738..50ede7c7d 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -2,6 +2,7 @@ #include "battle.h" #include "battle_anim.h" #include "battle_anim_special.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "battle_message.h" #include "data2.h" @@ -10,7 +11,6 @@ #include "menu_cursor.h" #include "palette.h" #include "pokemon.h" -#include "rom3.h" #include "constants/songs.h" #include "sound.h" #include "sprite.h" @@ -58,7 +58,6 @@ extern u8 gUnknown_0300434C[]; extern const u8 BattleText_WallyMenu[]; extern const u8 BattleText_MenuOptions[]; -// TODO: include rom3.h when my other PR gets merged extern void BtlController_EmitTwoReturnValues(u8, u8, u16); extern void BtlController_EmitOneReturnValue(u8, u16); diff --git a/src/rom3.c b/src/battle_controllers.c index c4a6ffec0..02cb59cc4 100644 --- a/src/rom3.c +++ b/src/battle_controllers.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle.h" +#include "battle_controllers.h" #include "battle_811DA74.h" #include "battle_ai_script_commands.h" #include "battle_anim.h" @@ -10,7 +11,6 @@ #include "constants/items.h" #include "link.h" #include "pokemon.h" -#include "rom3.h" #include "rom_8094928.h" #include "constants/species.h" #include "task.h" @@ -18,6 +18,7 @@ #include "battle_message.h" #include "data2.h" #include "ewram.h" +#include "constants/abilities.h" extern u16 gBattleTypeFlags; extern u16 gBattleWeather; @@ -34,7 +35,7 @@ extern u8 gActiveBattler; extern u32 gBattleControllerExecFlags; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[]; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u16 gCurrentMove; extern u16 gChosenMove; extern u16 gLastUsedItem; @@ -57,7 +58,14 @@ extern void (*gBattlerControllerFuncs[])(void); u8 gBattleBuffersTransferData[0x170]; -void sub_800B858(void) +// this file's funcionts +static void CreateTasksForSendRecvLinkBuffers(void); +static void InitSinglePlayerBtlControllers(void); +static void SetBattlePartyIds(void); +static void Task_HandleSendLinkBuffersData(u8 taskId); +static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId); + +void HandleLinkBattleSetup(void) { if (gBattleTypeFlags & BATTLE_TYPE_LINK) { @@ -76,14 +84,16 @@ void SetUpBattleVarsAndBirchPoochyena(void) s32 i; gBattleMainFunc = nullsub_41; - for (i = 0; i < 4; i++) + + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { gBattlerControllerFuncs[i] = nullsub_91; - gBanksBySide[i] = 0xFF; + gBattlerPositions[i] = 0xFF; gActionSelectionCursor[i] = 0; gMoveSelectionCursor[i] = 0; } - sub_800B858(); + + HandleLinkBattleSetup(); gBattleControllerExecFlags = 0; ClearBattleAnimationVars(); ClearBattleMonForms(); @@ -114,10 +124,12 @@ void sub_800B950(void) s32 i; if (gBattleTypeFlags & BATTLE_TYPE_LINK) - sub_800BA78(); + InitLinkBtlControllers(); else - sub_800B9A8(); - sub_800BD54(); + InitSinglePlayerBtlControllers(); + + SetBattlePartyIds(); + if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { for (i = 0; i < gBattlersCount; i++) @@ -125,7 +137,7 @@ void sub_800B950(void) } } -void sub_800B9A8(void) +static void InitSinglePlayerBtlControllers(void) { if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { @@ -136,27 +148,27 @@ void sub_800B9A8(void) gBattlerControllerFuncs[0] = SetBankFuncToWallyBufferRunCommand; else gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; + gBattlerPositions[0] = 0; gBattlerControllerFuncs[1] = SetBankFuncToOpponentBufferRunCommand; - gBanksBySide[1] = 1; + gBattlerPositions[1] = 1; gBattlersCount = 2; } else { gBattleMainFunc = sub_8010800; gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; + gBattlerPositions[0] = 0; gBattlerControllerFuncs[1] = SetBankFuncToOpponentBufferRunCommand; - gBanksBySide[1] = 1; + gBattlerPositions[1] = 1; gBattlerControllerFuncs[2] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[2] = 2; + gBattlerPositions[2] = 2; gBattlerControllerFuncs[3] = SetBankFuncToOpponentBufferRunCommand; - gBanksBySide[3] = 3; + gBattlerPositions[3] = 3; gBattlersCount = 4; } } -void sub_800BA78(void) +void InitLinkBtlControllers(void) { u8 multiplayerId; int i; @@ -167,17 +179,17 @@ void sub_800BA78(void) { gBattleMainFunc = sub_8010800; gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; + gBattlerPositions[0] = 0; gBattlerControllerFuncs[1] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[1] = 1; + gBattlerPositions[1] = 1; gBattlersCount = 2; } else { gBattlerControllerFuncs[1] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[1] = 0; + gBattlerPositions[1] = 0; gBattlerControllerFuncs[0] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[0] = 1; + gBattlerPositions[0] = 1; gBattlersCount = 2; } return; @@ -188,25 +200,25 @@ void sub_800BA78(void) { gBattleMainFunc = sub_8010800; gBattlerControllerFuncs[0] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[0] = 0; + gBattlerPositions[0] = 0; gBattlerControllerFuncs[1] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[1] = 1; + gBattlerPositions[1] = 1; gBattlerControllerFuncs[2] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[2] = 2; + gBattlerPositions[2] = 2; gBattlerControllerFuncs[3] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[3] = 3; + gBattlerPositions[3] = 3; gBattlersCount = 4; } else { gBattlerControllerFuncs[1] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[1] = 0; + gBattlerPositions[1] = 0; gBattlerControllerFuncs[0] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[0] = 1; + gBattlerPositions[0] = 1; gBattlerControllerFuncs[3] = SetBankFuncToPlayerBufferRunCommand; - gBanksBySide[3] = 2; + gBattlerPositions[3] = 2; gBattlerControllerFuncs[2] = SetBankFuncToLinkOpponentBufferRunCommand; - gBanksBySide[2] = 3; + gBattlerPositions[2] = 3; gBattlersCount = 4; } @@ -236,12 +248,12 @@ void sub_800BA78(void) { case 0: case 3: - gBanksBySide[gLinkPlayers[i].id] = 0; + gBattlerPositions[gLinkPlayers[i].id] = 0; gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; break; case 1: case 2: - gBanksBySide[gLinkPlayers[i].id] = 2; + gBattlerPositions[gLinkPlayers[i].id] = 2; gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; break; } @@ -256,12 +268,12 @@ void sub_800BA78(void) { case 0: case 3: - gBanksBySide[gLinkPlayers[i].id] = 0; + gBattlerPositions[gLinkPlayers[i].id] = 0; gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; break; case 1: case 2: - gBanksBySide[gLinkPlayers[i].id] = 2; + gBattlerPositions[gLinkPlayers[i].id] = 2; gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; break; } @@ -273,12 +285,12 @@ void sub_800BA78(void) { case 0: case 3: - gBanksBySide[gLinkPlayers[i].id] = 1; + gBattlerPositions[gLinkPlayers[i].id] = 1; gBattlerPartyIndexes[gLinkPlayers[i].id] = 0; break; case 1: case 2: - gBanksBySide[gLinkPlayers[i].id] = 3; + gBattlerPositions[gLinkPlayers[i].id] = 3; gBattlerPartyIndexes[gLinkPlayers[i].id] = 3; break; } @@ -288,23 +300,22 @@ void sub_800BA78(void) gBattlersCount = 4; } -void sub_800BD54(void) +static void SetBattlePartyIds(void) { - int i; - int j; + s32 i, j; if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { for (i = 0; i < gBattlersCount; i++) { - for (j = 0; j < 6; j++) + for (j = 0; j < PARTY_SIZE; j++) { if (i < 2) { - if (!(gBanksBySide[i] & 1)) + if (GET_BATTLER_SIDE2(i) == B_SIDE_PLAYER) { if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 - && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != 0 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_NONE && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0) { @@ -315,7 +326,7 @@ void sub_800BD54(void) else { if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 - && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0) { @@ -326,10 +337,10 @@ void sub_800BD54(void) } else { - if (!(gBanksBySide[i] & 1)) + if (GET_BATTLER_SIDE2(i) == B_SIDE_PLAYER) { if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 - && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != 0 //Probably a typo by Game Freak. The rest use SPECIES2 + && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != SPECIES_NONE // Probably a typo by Game Freak. The rest use SPECIES2 && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0 && gBattlerPartyIndexes[i - 2] != j) @@ -341,7 +352,7 @@ void sub_800BD54(void) else { if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 - && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != 0 + && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0 && gBattlerPartyIndexes[i - 2] != j) @@ -356,17 +367,17 @@ void sub_800BD54(void) } } -void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size) +static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size) { - int i; + s32 i; if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - PrepareBufferDataTransferLink(a, size, data); + PrepareBufferDataTransferLink(bufferId, size, data); } else { - switch (a) + switch (bufferId) { case 0: for (i = 0; i < size; i++) @@ -386,7 +397,7 @@ void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size) } } -void CreateTasksForSendRecvLinkBuffers(void) +static void CreateTasksForSendRecvLinkBuffers(void) { sLinkSendTaskId = CreateTask(Task_HandleSendLinkBuffersData, 0); gTasks[sLinkSendTaskId].data[11] = 0; @@ -538,10 +549,10 @@ void sub_800C35C(void) } } -void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) +static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) { - u16 r7; - u8 r4; + u16 blockSize; + u8 battlerId; u8 r2; if (gTasks[taskId].data[15] != gTasks[taskId].data[14]) @@ -552,15 +563,15 @@ void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) gTasks[taskId].data[12] = 0; gTasks[taskId].data[15] = 0; } - r4 = ewram15000arr(1, gTasks[taskId].data[15]); - r7 = ewram15000arr(4, gTasks[taskId].data[15]) | (ewram15000arr(5, gTasks[taskId].data[15]) << 8); + battlerId = ewram15000arr(1, gTasks[taskId].data[15]); + blockSize = ewram15000arr(4, gTasks[taskId].data[15]) | (ewram15000arr(5, gTasks[taskId].data[15]) << 8); switch (ewram15000arr(0, gTasks[taskId].data[15])) { case 0: - if (gBattleControllerExecFlags & gBitTable[r4]) + if (gBattleControllerExecFlags & gBitTable[battlerId]) return; - memcpy(gBattleBufferA[r4], &ewram15000arr(8, gTasks[taskId].data[15]), r7); - sub_80155A4(r4); + memcpy(gBattleBufferA[battlerId], &ewram15000arr(8, gTasks[taskId].data[15]), blockSize); + sub_80155A4(battlerId); if (!(gBattleTypeFlags & BATTLE_TYPE_WILD)) { gBattlerAttacker = ewram15000arr(2, gTasks[taskId].data[15]); @@ -570,172 +581,172 @@ void Task_HandleCopyReceivedLinkBuffersData(u8 taskId) } break; case 1: - memcpy(gBattleBufferB[r4], &ewram15000arr(8, gTasks[taskId].data[15]), r7); + memcpy(gBattleBufferB[battlerId], &ewram15000arr(8, gTasks[taskId].data[15]), blockSize); break; case 2: r2 = ewram15000arr(8, gTasks[taskId].data[15]); - gBattleControllerExecFlags &= ~(gBitTable[r4] << (r2 * 4)); + gBattleControllerExecFlags &= ~(gBitTable[battlerId] << (r2 * 4)); break; } - gTasks[taskId].data[15] = gTasks[taskId].data[15] + r7 + 8; + gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + 8; } } -void BtlController_EmitGetMonData(u8 bufferId, u8 b, u8 c) +void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck) { - gBattleBuffersTransferData[0] = 0; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[0] = CONTROLLER_GETMONDATA; + gBattleBuffersTransferData[1] = requestId; + gBattleBuffersTransferData[2] = monToCheck; gBattleBuffersTransferData[3] = 0; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitGetRawMonData(u8 bufferId, u8 b, u8 c) +void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes) { - gBattleBuffersTransferData[0] = 1; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA; + gBattleBuffersTransferData[1] = monId; + gBattleBuffersTransferData[2] = bytes; gBattleBuffersTransferData[3] = 0; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitSetMonData(u8 bufferId, u8 b, u8 c, u8 d, void *e) +void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data) { - int i; + s32 i; - gBattleBuffersTransferData[0] = 2; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - for (i = 0; i < d; i++) - gBattleBuffersTransferData[3 + i] = *(u8*)(e++); - PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, d + 3); + gBattleBuffersTransferData[0] = CONTROLLER_SETMONDATA; + gBattleBuffersTransferData[1] = requestId; + gBattleBuffersTransferData[2] = monToCheck; + for (i = 0; i < bytes; i++) + gBattleBuffersTransferData[3 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 3 + bytes); } -void BtlController_EmitSetRawMonData(u8 bufferId, u8 b, u8 c, u8 *d) +void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data) { - int i; + s32 i; - gBattleBuffersTransferData[0] = 3; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; - for (i = 0; i < c; i++) - gBattleBuffersTransferData[3 + i] = *(d++); - PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, c + 3); + gBattleBuffersTransferData[0] = CONTROLLER_SETRAWMONDATA; + gBattleBuffersTransferData[1] = monId; + gBattleBuffersTransferData[2] = bytes; + for (i = 0; i < bytes; i++) + gBattleBuffersTransferData[3 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, bytes + 3); } void BtlController_EmitLoadMonSprite(u8 bufferId) { - gBattleBuffersTransferData[0] = 4; - gBattleBuffersTransferData[1] = 4; - gBattleBuffersTransferData[2] = 4; - gBattleBuffersTransferData[3] = 4; + gBattleBuffersTransferData[0] = CONTROLLER_LOADMONSPRITE; + gBattleBuffersTransferData[1] = CONTROLLER_LOADMONSPRITE; + gBattleBuffersTransferData[2] = CONTROLLER_LOADMONSPRITE; + gBattleBuffersTransferData[3] = CONTROLLER_LOADMONSPRITE; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitSwitchInAnim(u8 bufferId, u8 b, u8 c) +void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit) { - gBattleBuffersTransferData[0] = 5; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = c; + gBattleBuffersTransferData[0] = CONTROLLER_SWITCHINANIM; + gBattleBuffersTransferData[1] = partyId; + gBattleBuffersTransferData[2] = dontClearSubstituteBit; gBattleBuffersTransferData[3] = 5; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitReturnMonToBall(u8 bufferId, u8 b) +void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1) { - gBattleBuffersTransferData[0] = 6; - gBattleBuffersTransferData[1] = b; + gBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL; + gBattleBuffersTransferData[1] = arg1; PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); } -void BtlController_EmitDrawTrainerPic(u8 a) +void BtlController_EmitDrawTrainerPic(u8 bufferId) { - gBattleBuffersTransferData[0] = 7; - gBattleBuffersTransferData[1] = 7; - gBattleBuffersTransferData[2] = 7; - gBattleBuffersTransferData[3] = 7; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_DRAWTRAINERPIC; + gBattleBuffersTransferData[1] = CONTROLLER_DRAWTRAINERPIC; + gBattleBuffersTransferData[2] = CONTROLLER_DRAWTRAINERPIC; + gBattleBuffersTransferData[3] = CONTROLLER_DRAWTRAINERPIC; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitTrainerSlide(u8 a) +void BtlController_EmitTrainerSlide(u8 bufferId) { - gBattleBuffersTransferData[0] = 8; - gBattleBuffersTransferData[1] = 8; - gBattleBuffersTransferData[2] = 8; - gBattleBuffersTransferData[3] = 8; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDE; + gBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDE; + gBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDE; + gBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDE; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitTrainerSlideBack(u8 a) +void BtlController_EmitTrainerSlideBack(u8 bufferId) { - gBattleBuffersTransferData[0] = 9; - gBattleBuffersTransferData[1] = 9; - gBattleBuffersTransferData[2] = 9; - gBattleBuffersTransferData[3] = 9; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDEBACK; + gBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDEBACK; + gBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDEBACK; + gBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDEBACK; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitFaintAnimation(u8 a) +void BtlController_EmitFaintAnimation(u8 bufferId) { - gBattleBuffersTransferData[0] = 10; - gBattleBuffersTransferData[1] = 10; - gBattleBuffersTransferData[2] = 10; - gBattleBuffersTransferData[3] = 10; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_FAINTANIMATION; + gBattleBuffersTransferData[1] = CONTROLLER_FAINTANIMATION; + gBattleBuffersTransferData[2] = CONTROLLER_FAINTANIMATION; + gBattleBuffersTransferData[3] = CONTROLLER_FAINTANIMATION; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitPaletteFade(u8 a) +void BtlController_EmitPaletteFade(u8 bufferId) { - gBattleBuffersTransferData[0] = 11; - gBattleBuffersTransferData[1] = 11; - gBattleBuffersTransferData[2] = 11; - gBattleBuffersTransferData[3] = 11; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_PALETTEFADE; + gBattleBuffersTransferData[1] = CONTROLLER_PALETTEFADE; + gBattleBuffersTransferData[2] = CONTROLLER_PALETTEFADE; + gBattleBuffersTransferData[3] = CONTROLLER_PALETTEFADE; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitSuccessBallThrowAnim(u8 a) +void BtlController_EmitSuccessBallThrowAnim(u8 bufferId) { - gBattleBuffersTransferData[0] = 12; - gBattleBuffersTransferData[1] = 12; - gBattleBuffersTransferData[2] = 12; - gBattleBuffersTransferData[3] = 12; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); + gBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM; + gBattleBuffersTransferData[1] = CONTROLLER_SUCCESSBALLTHROWANIM; + gBattleBuffersTransferData[2] = CONTROLLER_SUCCESSBALLTHROWANIM; + gBattleBuffersTransferData[3] = CONTROLLER_SUCCESSBALLTHROWANIM; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void BtlController_EmitBallThrowAnim(u8 a, u8 b) +void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId) { - gBattleBuffersTransferData[0] = 13; - gBattleBuffersTransferData[1] = b; - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2); + gBattleBuffersTransferData[0] = CONTROLLER_BALLTHROWANIM; + gBattleBuffersTransferData[1] = caseId; + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2); } -void BtlController_EmitPause(u8 a, u8 b, u8 *c) +void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data) { - int i; - - gBattleBuffersTransferData[0] = 14; - gBattleBuffersTransferData[1] = b; - for (i = 0; i < b * 3; i++) - gBattleBuffersTransferData[2 + i] = *(c++); - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b * 3 + 2); -} + s32 i; -void BtlController_EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g) -{ - gBattleBuffersTransferData[0] = 15; - gBattleBuffersTransferData[1] = b; - gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; - gBattleBuffersTransferData[3] = c; - gBattleBuffersTransferData[4] = d; - gBattleBuffersTransferData[5] = (d & 0xFF00) >> 8; - gBattleBuffersTransferData[6] = e; - gBattleBuffersTransferData[7] = (e & 0x0000FF00) >> 8; - gBattleBuffersTransferData[8] = (e & 0x00FF0000) >> 16; - gBattleBuffersTransferData[9] = (e & 0xFF000000) >> 24; - gBattleBuffersTransferData[10] = f; + gBattleBuffersTransferData[0] = CONTROLLER_PAUSE; + gBattleBuffersTransferData[1] = toWait; + for (i = 0; i < toWait * 3; i++) + gBattleBuffersTransferData[2 + i] = *(u8*)(data++); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, toWait * 3 + 2); +} + +void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr) +{ + gBattleBuffersTransferData[0] = CONTROLLER_MOVEANIMATION; + gBattleBuffersTransferData[1] = move; + gBattleBuffersTransferData[2] = (move & 0xFF00) >> 8; + gBattleBuffersTransferData[3] = turnOfMove; + gBattleBuffersTransferData[4] = movePower; + gBattleBuffersTransferData[5] = (movePower & 0xFF00) >> 8; + gBattleBuffersTransferData[6] = dmg; + gBattleBuffersTransferData[7] = (dmg & 0x0000FF00) >> 8; + gBattleBuffersTransferData[8] = (dmg & 0x00FF0000) >> 16; + gBattleBuffersTransferData[9] = (dmg & 0xFF000000) >> 24; + gBattleBuffersTransferData[10] = friendship; gBattleBuffersTransferData[11] = gMultiHitCounter; - if (AbilityBattleEffects(14, 0, 13, 0, 0) == 0 && AbilityBattleEffects(14, 0, 0x4D, 0, 0) == 0) + if (WEATHER_HAS_EFFECT2) { gBattleBuffersTransferData[12] = gBattleWeather; gBattleBuffersTransferData[13] = (gBattleWeather & 0xFF00) >> 8; @@ -747,8 +758,8 @@ void BtlController_EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, stru } gBattleBuffersTransferData[14] = 0; gBattleBuffersTransferData[15] = 0; - memcpy(&gBattleBuffersTransferData[16], g, sizeof(*g)); - PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 0x2C); + memcpy(&gBattleBuffersTransferData[16], disableStructPtr, sizeof(struct DisableStruct)); + PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 16 + sizeof(struct DisableStruct)); } void BtlController_EmitPrintString(u8 a, u16 stringID) diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 10989231f..a2a48dd38 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -27,7 +27,7 @@ extern u8 gBattleBufferA[][0x200]; extern u8 gActiveBattler; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[]; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u8 gBattlerSpriteIds[]; extern u16 gUnknown_02024DE8; extern u8 gDoingBattleAnim; @@ -464,7 +464,7 @@ void unref_sub_8031BA0(void) count = 4; } for (i = 0; i < count; i++) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[i]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[i]]); } bool8 sub_8031C30(u8 a) @@ -490,9 +490,9 @@ bool8 sub_8031C30(u8 a) else if (a == 3) LoadCompressedObjectPic(&gUnknown_0820A484); else if (a == 4) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[0]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[0]]); else if (a == 5) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[1]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[1]]); else retVal = TRUE; } @@ -507,13 +507,13 @@ bool8 sub_8031C30(u8 a) else if (a == 5) LoadCompressedObjectPic(&gUnknown_0820A49C[1]); else if (a == 6) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[0]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[0]]); else if (a == 7) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[1]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[1]]); else if (a == 8) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[2]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[2]]); else if (a == 9) - LoadCompressedObjectPic(&gUnknown_0820A4B4[gBanksBySide[3]]); + LoadCompressedObjectPic(&gUnknown_0820A4B4[gBattlerPositions[3]]); else retVal = TRUE; } @@ -564,7 +564,7 @@ u8 battle_load_something(u8 *pState, u8 *b) break; case 4: sub_8043F44(*b); - if (gBanksBySide[*b] <= 1) + if (gBattlerPositions[*b] <= 1) nullsub_11(gHealthboxSpriteIds[*b], 0); else nullsub_11(gHealthboxSpriteIds[*b], 1); diff --git a/src/battle_interface.c b/src/battle_interface.c index 5ec42bb4b..052910d35 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -423,7 +423,7 @@ u8 *const gUnknown_0820A904[10] = extern u8 gDisplayedStringBattle[]; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[]; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u8 gHealthboxSpriteIds[]; extern u16 gBattleTypeFlags; @@ -834,7 +834,7 @@ u8 battle_make_oam_normal_battle(u8 a) } //_08043B50 - spriteId3 = CreateSpriteAtEnd(&gSpriteTemplates_820A56C[gBanksBySide[a]], 140, 60, 0); + spriteId3 = CreateSpriteAtEnd(&gSpriteTemplates_820A56C[gBattlerPositions[a]], 140, 60, 0); sprite = &gSprites[spriteId3]; SetSubspriteTables(sprite, &gSubspriteTables_820A684[GetBattlerSide(a)]); sprite->subspriteMode = 2; diff --git a/src/battle_main.c b/src/battle_main.c index 56eabd515..721aa7f9f 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -9,6 +9,7 @@ #include "gba/flash_internal.h" #include "battle.h" #include "battle_ai_script_commands.h" +#include "battle_controllers.h" #include "battle_interface.h" #include "battle_message.h" #include "battle_setup.h" @@ -32,7 +33,6 @@ #include "pokemon.h" #include "random.h" #include "roamer.h" -#include "rom3.h" #include "rom_8077ABC.h" #include "rom_8094928.h" #include "safari_zone.h" @@ -83,7 +83,7 @@ extern u32 gBattleControllerExecFlags; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[]; extern u8 gCurrentActionFuncId; -extern u8 gBanksByTurnOrder[]; +extern u8 gBattlerByTurnOrder[]; extern u8 gBattlerSpriteIds[]; extern u16 gCurrentMove; // This is mis-named. It is a species, not a move ID. extern u8 gLastUsedAbility; @@ -92,7 +92,7 @@ extern u8 gAbsentBattlerFlags; extern u8 gMultiHitCounter; extern u8 gActionForBanks[]; extern u16 gUnknown_02024C2C[]; -extern u16 gLastUsedMove[]; +extern u16 gLastMoves[]; extern u16 gLastLandedMoves[]; extern u16 gLastHitByType[]; extern u16 gUnknown_02024C4C[]; @@ -100,7 +100,7 @@ extern u16 gLockedMoves[]; extern u16 gChosenMovesByBanks[]; extern u32 gHitMarker; extern u8 gUnknown_02024C70[]; -extern u16 gSideAffecting[]; +extern u16 gSideStatuses[]; extern u32 gStatuses3[]; //extern u8 gDisableStructs[][0x1C]; extern u16 gPauseCounterBattle; @@ -208,7 +208,7 @@ void CB2_InitBattle(void) { if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { - sub_800B858(); + HandleLinkBattleSetup(); SetMainCallback2(sub_800F104); gBattleCommunication[0] = 0; } @@ -1402,9 +1402,9 @@ extern const u16 gUnknown_Debug_821F424[][5]; extern const u16 gUnknown_Debug_821F56C[][5]; extern const u32 gUnknown_Debug_821F798[][4]; -extern const u8 gUnusedOldCharmap_Gfx_lz[]; -extern const u8 gUnusedOldCharmap_Tilemap_lz[]; -extern const u8 gUnusedOldCharmap_Pal_lz[]; +extern const u8 gDebugBattleCharmap_Gfx_lz[]; +extern const u8 gDebugBattleCharmap_Tilemap_lz[]; +extern const u8 gDebugBattleCharmap_Pal_lz[]; void debug_sub_8010800(void) { @@ -1457,10 +1457,10 @@ void debug_sub_80108B8(void) REG_BG1CNT = 0x4801; REG_BLDCNT = 0; REG_BLDY = 0; - LZDecompressVram(gUnusedOldCharmap_Gfx_lz, (void *)VRAM); - LZDecompressWram(gUnusedOldCharmap_Tilemap_lz, gSharedMem); - LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)PLTT); - LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)(PLTT + 0x1E0)); + LZDecompressVram(gDebugBattleCharmap_Gfx_lz, (void *)VRAM); + LZDecompressWram(gDebugBattleCharmap_Tilemap_lz, gSharedMem); + LZDecompressVram(gDebugBattleCharmap_Pal_lz, (void *)PLTT); + LZDecompressVram(gDebugBattleCharmap_Pal_lz, (void *)(PLTT + 0x1E0)); m4aSoundVSyncOn(); SetVBlankCallback(debug_sub_8011D40); SetMainCallback2(debug_sub_8010CAC); @@ -2475,11 +2475,13 @@ void debug_nullsub_3(void) extern const u32 gUnknown_Debug_821F680[][0x23]; +// Shows a cursor void debug_sub_80125A0(void) { gSharedMem[gUnknown_Debug_821F680[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]] = 0x6D; } +// Hides a cursor void debug_sub_80125E4(void) { gSharedMem[gUnknown_Debug_821F680[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]] = 0x81; @@ -3329,7 +3331,7 @@ void sub_8010874(void) MEMSET_ALT(&gDisableStructs[i], 0, 0x1C, j, r4); gDisableStructs[i].isFirstTurn= 2; gUnknown_02024C70[i] = 0; - gLastUsedMove[i] = 0; + gLastMoves[i] = 0; gLastLandedMoves[i] = 0; gLastHitByType[i] = 0; gUnknown_02024C4C[i] = 0; @@ -3341,7 +3343,7 @@ void sub_8010874(void) for (i = 0; i < 2; i++) { - gSideAffecting[i] = 0; + gSideStatuses[i] = 0; MEMSET_ALT(&gSideTimers[i], 0, 12, j, r4); } @@ -3399,7 +3401,7 @@ void sub_8010874(void) gBattleResults.unk2 = 0; gBattleResults.unk3 = 0; gBattleResults.unk4 = 0; - gBattleResults.unk5_0 = 0; + gBattleResults.playerMonWasDamaged = 0; gBattleResults.unk5_1 = 0; gBattleResults.lastOpponentSpecies = 0; gBattleResults.lastUsedMove = 0; @@ -3433,23 +3435,23 @@ void SwitchInClearSetData(void) { if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBattler) gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION; - if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBattler) + if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].battlerWithSureHit == gActiveBattler) { gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; - gDisableStructs[i].bankWithSureHit = 0; + gDisableStructs[i].battlerWithSureHit = 0; } } } if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { gBattleMons[gActiveBattler].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED); - gStatuses3[gActiveBattler] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); + gStatuses3[gActiveBattler] &= (STATUS3_LEECHSEED_BATTLER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); for (i = 0; i < gBattlersCount; i++) { if (GetBattlerSide(gActiveBattler) != GetBattlerSide(i) && (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0 - && (gDisableStructs[i].bankWithSureHit == gActiveBattler)) + && (gDisableStructs[i].battlerWithSureHit == gActiveBattler)) { gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; gStatuses3[i] |= 0x10; @@ -3478,13 +3480,13 @@ void SwitchInClearSetData(void) if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { gDisableStructs[gActiveBattler].substituteHP = sp0.substituteHP; - gDisableStructs[gActiveBattler].bankWithSureHit = sp0.bankWithSureHit; + gDisableStructs[gActiveBattler].battlerWithSureHit = sp0.battlerWithSureHit; gDisableStructs[gActiveBattler].perishSongTimer1 = sp0.perishSongTimer1; gDisableStructs[gActiveBattler].perishSongTimer2 = sp0.perishSongTimer2; } gDisableStructs[gActiveBattler].isFirstTurn= 2; - gLastUsedMove[gActiveBattler] = 0; + gLastMoves[gActiveBattler] = 0; gLastLandedMoves[gActiveBattler] = 0; gLastHitByType[gActiveBattler] = 0; gUnknown_02024C4C[gActiveBattler] = 0; @@ -3548,7 +3550,7 @@ void UndoEffectsAfterFainting(void) gProtectStructs[gActiveBattler].notFirstStrike = 0; gDisableStructs[gActiveBattler].isFirstTurn= 2; - gLastUsedMove[gActiveBattler] = 0; + gLastMoves[gActiveBattler] = 0; gLastLandedMoves[gActiveBattler] = 0; gLastHitByType[gActiveBattler] = 0; gUnknown_02024C4C[gActiveBattler] = 0; @@ -3885,12 +3887,12 @@ void BattleBeginFirstTurn(void) if (ewram16058 == 0) { for (i = 0; i < gBattlersCount; i++) - gBanksByTurnOrder[i] = i; + gBattlerByTurnOrder[i] = i; for (i = 0; i < gBattlersCount - 1; i++) { for (j = i + 1; j < gBattlersCount; j++) { - if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 1) != 0) + if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], 1) != 0) SwapTurnOrder(i, j); } } @@ -3902,7 +3904,7 @@ void BattleBeginFirstTurn(void) } while (ewram16058 < gBattlersCount) { - if (AbilityBattleEffects(0, gBanksByTurnOrder[ewram16058], 0, 0, 0) != 0) + if (AbilityBattleEffects(0, gBattlerByTurnOrder[ewram16058], 0, 0, 0) != 0) r9++; ewram16058++; if (r9 != 0) @@ -3914,7 +3916,7 @@ void BattleBeginFirstTurn(void) return; while (ewram160F9 < gBattlersCount) { - if (ItemBattleEffects(0, gBanksByTurnOrder[ewram160F9], 0) != 0) + if (ItemBattleEffects(0, gBattlerByTurnOrder[ewram160F9], 0) != 0) r9++; ewram160F9++; if (r9 != 0) @@ -3981,7 +3983,7 @@ void BattleTurnPassed(void) TurnValuesCleanUp(1); if (gBattleOutcome == 0) { - if (UpdateTurnCounters() != 0) + if (DoFieldEndTurnEffects() != 0) return; if (TurnBasedEffects() != 0) return; @@ -4482,9 +4484,9 @@ void SwapTurnOrder(u8 a, u8 b) gActionsByTurnOrder[a] = gActionsByTurnOrder[b]; gActionsByTurnOrder[b] = temp; - temp = gBanksByTurnOrder[a]; - gBanksByTurnOrder[a] = gBanksByTurnOrder[b]; - gBanksByTurnOrder[b] = temp; + temp = gBattlerByTurnOrder[a]; + gBattlerByTurnOrder[a] = gBattlerByTurnOrder[b]; + gBattlerByTurnOrder[b] = temp; } // Determines which of the two given mons will strike first in a battle. @@ -4545,7 +4547,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities) if (heldItemEffect == HOLD_EFFECT_MACHO_BRACE) bank1AdjustedSpeed /= 2; - if (gBattleMons[bank1].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank1].status1 & STATUS1_PARALYSIS) bank1AdjustedSpeed /= 4; if (heldItemEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (heldItemEffectParam * 0xFFFF) / 100) @@ -4575,7 +4577,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities) if (heldItemEffect == HOLD_EFFECT_MACHO_BRACE) bank2AdjustedSpeed /= 2; - if (gBattleMons[bank2].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank2].status1 & STATUS1_PARALYSIS) bank2AdjustedSpeed /= 4; if (heldItemEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (heldItemEffectParam * 0xFFFF) / 100) @@ -4642,7 +4644,7 @@ void SetActionsAndBanksTurnOrder(void) for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { gActionsByTurnOrder[var] = gActionForBanks[gActiveBattler]; - gBanksByTurnOrder[var] = gActiveBattler; + gBattlerByTurnOrder[var] = gActiveBattler; var++; } } @@ -4671,14 +4673,14 @@ void SetActionsAndBanksTurnOrder(void) if (var == 5) { gActionsByTurnOrder[0] = gActionForBanks[gActiveBattler]; - gBanksByTurnOrder[0] = gActiveBattler; + gBattlerByTurnOrder[0] = gActiveBattler; var = 1; for (i = 0; i < gBattlersCount; i++) { if (i != gActiveBattler) { gActionsByTurnOrder[var] = gActionForBanks[i]; - gBanksByTurnOrder[var] = i; + gBattlerByTurnOrder[var] = i; var++; } } @@ -4693,7 +4695,7 @@ void SetActionsAndBanksTurnOrder(void) if (gActionForBanks[gActiveBattler] == B_ACTION_USE_ITEM || gActionForBanks[gActiveBattler] == B_ACTION_SWITCH) { gActionsByTurnOrder[var] = gActionForBanks[gActiveBattler]; - gBanksByTurnOrder[var] = gActiveBattler; + gBattlerByTurnOrder[var] = gActiveBattler; var++; } } @@ -4702,7 +4704,7 @@ void SetActionsAndBanksTurnOrder(void) if (gActionForBanks[gActiveBattler] != B_ACTION_USE_ITEM && gActionForBanks[gActiveBattler] != B_ACTION_SWITCH) { gActionsByTurnOrder[var] = gActionForBanks[gActiveBattler]; - gBanksByTurnOrder[var] = gActiveBattler; + gBattlerByTurnOrder[var] = gActiveBattler; var++; } } @@ -4710,8 +4712,8 @@ void SetActionsAndBanksTurnOrder(void) { for (j = i + 1; j < gBattlersCount; j++) { - u8 bank1 = gBanksByTurnOrder[i]; - u8 bank2 = gBanksByTurnOrder[j]; + u8 bank1 = gBattlerByTurnOrder[i]; + u8 bank2 = gBattlerByTurnOrder[j]; if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM && gActionsByTurnOrder[j] != B_ACTION_USE_ITEM && gActionsByTurnOrder[i] != B_ACTION_SWITCH @@ -4787,7 +4789,7 @@ void CheckFocusPunch_ClearVarsBeforeTurnStarts(void) gActiveBattler = gBattlerAttacker = eFocusPunchBattler; eFocusPunchBattler++; if (gChosenMovesByBanks[gActiveBattler] == MOVE_FOCUS_PUNCH - && !(gBattleMons[gActiveBattler].status1 & STATUS_SLEEP) + && !(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) && !(gDisableStructs[gBattlerAttacker].truantCounter) && !(gProtectStructs[gActiveBattler].noValidMoves)) { @@ -4846,7 +4848,7 @@ void HandleEndTurn_BattleWon(void) gBattleTextBuff1[0] = gBattleOutcome; gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; - gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN); + gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN); } else if (gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)) { @@ -4896,7 +4898,7 @@ void HandleEndTurn_BattleLost(void) gBattleTextBuff1[0] = gBattleOutcome; gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; - gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN); + gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN); } else { @@ -4983,7 +4985,7 @@ static void FreeResetData_ReturnToOvOrDoEvolutions(void) if (!gPaletteFade.active) { ResetSpriteData(); - if (gLeveledUpInBattle == 0 || gBattleOutcome != BATTLE_WON) + if (gLeveledUpInBattle == 0 || gBattleOutcome != B_OUTCOME_WON) { gBattleMainFunc = ReturnFromBattleToOverworld; return; @@ -5049,7 +5051,7 @@ static void ReturnFromBattleToOverworld(void) if (gBattleTypeFlags & BATTLE_TYPE_ROAMER) { UpdateRoamerHPStatus(&gEnemyParty[0]); - if (gBattleOutcome == BATTLE_WON || gBattleOutcome == BATTLE_CAUGHT) + if (gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT) SetRoamerInactive(); } @@ -5083,7 +5085,7 @@ void HandleAction_UseMove(void) u8 side; u8 var = 4; - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; if (ewram160A6 & gBitTable[gBattlerAttacker]) { @@ -5167,9 +5169,9 @@ void HandleAction_UseMove(void) if (side != GetBattlerSide(gActiveBattler) && ewram16010arr(gBattlerAttacker) != gActiveBattler && gBattleMons[gActiveBattler].ability == ABILITY_LIGHTNING_ROD - && BankGetTurnOrder(gActiveBattler) < var) + && GetBattlerTurnOrderNum(gActiveBattler) < var) { - var = BankGetTurnOrder(gActiveBattler); + var = GetBattlerTurnOrderNum(gActiveBattler); } } if (var == 4) @@ -5212,7 +5214,7 @@ void HandleAction_UseMove(void) } else { - gActiveBattler = gBanksByTurnOrder[var]; + gActiveBattler = gBattlerByTurnOrder[var]; RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability); gSpecialStatuses[gActiveBattler].lightningRodRedirected = 1; gBattlerTarget = gActiveBattler; @@ -5266,7 +5268,7 @@ void HandleAction_UseMove(void) void HandleAction_Switch(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gActionSelectionCursor[gBattlerAttacker] = 0; @@ -5284,7 +5286,7 @@ void HandleAction_Switch(void) void HandleAction_UseItem(void) { - gBattlerAttacker = gBattlerTarget = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerTarget = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gDisableStructs[gBattlerAttacker].furyCutterCounter = 0; @@ -5407,7 +5409,7 @@ bool8 TryRunFromBattle(u8 bank) if (effect) { gCurrentTurnActionNumber = gBattlersCount; - gBattleOutcome = BATTLE_RAN; + gBattleOutcome = B_OUTCOME_RAN; } return effect; @@ -5415,7 +5417,7 @@ bool8 TryRunFromBattle(u8 bank) void HandleAction_Run(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; if (gBattleTypeFlags & BATTLE_TYPE_LINK) { @@ -5426,16 +5428,16 @@ void HandleAction_Run(void) if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) { if (gActionForBanks[gActiveBattler] == B_ACTION_RUN) - gBattleOutcome |= BATTLE_LOST; + gBattleOutcome |= B_OUTCOME_LOST; } else { if (gActionForBanks[gActiveBattler] == B_ACTION_RUN) - gBattleOutcome |= BATTLE_WON; + gBattleOutcome |= B_OUTCOME_WON; } } - gBattleOutcome |= OUTCOME_LINK_BATTLE_RUN; + gBattleOutcome |= B_OUTCOME_LINK_BATTLE_RAN; } else { @@ -5460,7 +5462,7 @@ void HandleAction_Run(void) else { gCurrentTurnActionNumber = gBattlersCount; - gBattleOutcome = BATTLE_POKE_FLED; + gBattleOutcome = B_OUTCOME_MON_FLED; } } } @@ -5468,7 +5470,7 @@ void HandleAction_Run(void) void HandleAction_WatchesCarefully(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0]; @@ -5477,7 +5479,7 @@ void HandleAction_WatchesCarefully(void) void HandleAction_SafariZoneBallThrow(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gNumSafariBalls--; @@ -5488,7 +5490,7 @@ void HandleAction_SafariZoneBallThrow(void) void HandleAction_ThrowPokeblock(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBattlerAttacker][1] - 1; @@ -5510,7 +5512,7 @@ void HandleAction_ThrowPokeblock(void) void HandleAction_GoNear(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -5537,15 +5539,15 @@ void HandleAction_GoNear(void) void HandleAction_SafriZoneRun(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; PlaySE(SE_NIGERU); gCurrentTurnActionNumber = gBattlersCount; - gBattleOutcome = BATTLE_RAN; + gBattleOutcome = B_OUTCOME_RAN; } void HandleAction_Action9(void) { - gBattlerAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -5573,7 +5575,7 @@ void HandleAction_NothingIsFainted(void) | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000 | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT - | HITMARKER_x8000000 | HITMARKER_x4000000); + | HITMARKER_CHARGING | HITMARKER_x4000000); } void HandleAction_ActionFinished(void) @@ -5585,7 +5587,7 @@ void HandleAction_ActionFinished(void) | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000 | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT - | HITMARKER_x8000000 | HITMARKER_x4000000); + | HITMARKER_CHARGING | HITMARKER_x4000000); gBattleMoveDamage = 0; ewram16002 = 0; diff --git a/src/battle_message.c b/src/battle_message.c index b218c2b8d..ce1e63edd 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -379,7 +379,7 @@ void BufferStringBattle(u16 stringID) gBattleTextBuff1[0] &= ~(0x80); if (GetBattlerSide(gActiveBattler) == 1 && gBattleTextBuff1[0] != 3) gBattleTextBuff1[0] ^= 3; - if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW) + if (gBattleTextBuff1[0] == B_OUTCOME_LOST || gBattleTextBuff1[0] == B_OUTCOME_DREW) stringPtr = BattleText_GotAwaySafely; else { @@ -397,13 +397,13 @@ void BufferStringBattle(u16 stringID) { switch (gBattleTextBuff1[0]) { - case BATTLE_WON: + case B_OUTCOME_WON: stringPtr = BattleText_PlayerDefeatedTrainers; break; - case BATTLE_LOST: + case B_OUTCOME_LOST: stringPtr = BattleText_PlayerLostTrainers; break; - case BATTLE_DREW: + case B_OUTCOME_DREW: stringPtr = BattleText_PlayerTiedTrainers; break; } @@ -412,13 +412,13 @@ void BufferStringBattle(u16 stringID) { switch (gBattleTextBuff1[0]) { - case BATTLE_WON: + case B_OUTCOME_WON: stringPtr = BattleText_PlayerDefeatedTrainer; break; - case BATTLE_LOST: + case B_OUTCOME_LOST: stringPtr = BattleText_PlayerLostTrainer; break; - case BATTLE_DREW: + case B_OUTCOME_DREW: stringPtr = BattleText_PlayerTiedTrainer; break; } diff --git a/src/battle_records.c b/src/battle_records.c index d94d88032..e462e8992 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -21,12 +21,12 @@ extern u8 gBattleOutcome; const struct DebugStruct1 gUnknown_Debug_4245CC[] = { { 1, _("NUMBER1") }, - { 2, _("ใใณใใผ2") }, - { 3, _("ใใณใใผ3") }, - { 4, _("ใใณใใผ4") }, - { 5, _("ใใณใใผ5") }, - { 6, _("ใใณใใผ6") }, - { 7, _("ใใณใใผ7") }, + { 2, DTR("ใใณใใผ2", "NUMBER2") }, + { 3, DTR("ใใณใใผ3", "NUMBER3") }, + { 4, DTR("ใใณใใผ4", "NUMBER4") }, + { 5, DTR("ใใณใใผ5", "NUMBER5") }, + { 6, DTR("ใใณใใผ6", "NUMBER6") }, + { 7, DTR("ใใณใใผ7", "NUMBER7") }, }; const struct {u8 unk0; u8 unk1;} gUnknown_Debug_8424620[] = diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 577a8149a..32887efc1 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -12,7 +12,7 @@ #include "data2.h" #include "constants/hold_effects.h" #include "random.h" -#include "rom3.h" +#include "battle_controllers.h" #include "constants/species.h" #include "pokemon.h" #include "text.h" @@ -32,69 +32,6 @@ #define RET_VALUE_LEVELLED_UP 11 -enum -{ - CONTROLLER_GETMONDATA, - CONTROLLER_GETRAWMONDATA, - CONTROLLER_SETMONDATA, - CONTROLLER_SETRAWMONDATA, - CONTROLLER_LOADMONSPRITE, - CONTROLLER_SWITCHINANIM, - CONTROLLER_RETURNMONTOBALL, - CONTROLLER_DRAWTRAINERPIC, - CONTROLLER_TRAINERSLIDE, - CONTROLLER_TRAINERSLIDEBACK, - CONTROLLER_FAINTANIMATION, - CONTROLLER_PALETTEFADE, - CONTROLLER_SUCCESSBALLTHROWANIM, - CONTROLLER_BALLTHROWANIM, - CONTROLLER_PAUSE, - CONTROLLER_MOVEANIMATION, - CONTROLLER_PRINTSTRING, - CONTROLLER_PRINTSTRINGPLAYERONLY, - CONTROLLER_CHOOSEACTION, - CONTROLLER_UNKNOWNYESNOBOX, - CONTROLLER_CHOOSEMOVE, - CONTROLLER_OPENBAG, - CONTROLLER_CHOOSEPOKEMON, - CONTROLLER_23, - CONTROLLER_HEALTHBARUPDATE, - CONTROLLER_EXPUPDATE, - CONTROLLER_STATUSICONUPDATE, - CONTROLLER_STATUSANIMATION, - CONTROLLER_STATUSXOR, - CONTROLLER_DATATRANSFER, - CONTROLLER_DMA3TRANSFER, - CONTROLLER_31, - CONTROLLER_32, - CONTROLLER_TWORETURNVALUES, - CONTROLLER_CHOSENMONRETURNVALUE, - CONTROLLER_ONERETURNVALUE, - CONTROLLER_ONERETURNVALUE_DUPLICATE, - CONTROLLER_37, - CONTROLLER_38, - CONTROLLER_39, - CONTROLLER_40, - CONTROLLER_HITANIMATION, - CONTROLLER_42, - CONTROLLER_EFFECTIVENESSSOUND, - CONTROLLER_PLAYFANFAREORBGM, - CONTROLLER_FAINTINGCRY, - CONTROLLER_INTROSLIDE, - CONTROLLER_INTROTRAINERBALLTHROW, - CONTROLLER_DRAWPARTYSTATUSSUMMARY, - CONTROLLER_49, - CONTROLLER_50, - CONTROLLER_SPRITEINVISIBILITY, - CONTROLLER_BATTLEANIMATION, - CONTROLLER_LINKSTANDBYMSG, - CONTROLLER_RESETACTIONMOVESELECTION, - CONTROLLER_55, - /*new controllers should go here*/ - CONTROLLER_TERMINATOR_NOP, - CONTROLLER_CMDS_COUNT -}; - //extern needed variables extern u8 gUnknown_02023A14_50; extern u8 gCritMultiplier; @@ -108,7 +45,7 @@ extern u8 gActiveBattler; extern u32 gBattleControllerExecFlags; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT]; -extern u8 gBanksByTurnOrder[MAX_BATTLERS_COUNT]; +extern u8 gBattlerByTurnOrder[MAX_BATTLERS_COUNT]; extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; extern u16 gCurrentMove; extern u8 gLastUsedAbility; @@ -117,10 +54,10 @@ extern u8 gPotentialItemEffectBattler; extern u8 gEffectBattler; extern u8 gAbsentBattlerFlags; extern u8 gMultiHitCounter; -extern u16 gLastUsedMove[4]; +extern u16 gLastMoves[4]; extern u16 gLockedMoves[4]; extern u16 gChosenMovesByBanks[4]; -extern u16 gSideAffecting[2]; +extern u16 gSideStatuses[2]; extern u16 gPauseCounterBattle; extern u16 gPaydayMoney; extern u16 gRandomTurnNumber; @@ -144,7 +81,7 @@ extern u16 gLastUsedItem; extern u16 gBattleMovePower; extern s32 gHpDealt; extern s32 gTakenDmg[MAX_BATTLERS_COUNT]; -extern u8 gTakenDmgBanks[MAX_BATTLERS_COUNT]; +extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT]; extern const u16 gMissStringIds[]; extern u8 gSentPokesToOpponent[2]; extern u8 gBank1; @@ -188,13 +125,13 @@ void CancelMultiTurnMoves(u8 bank); void BattleScriptPush(const u8* BS_ptr); void BattleScriptPushCursor(void); void RecordAbilityBattle(u8 bank, u8 ability); -void RecordItemBattle(u8 bank, u8 holdEffect); +void RecordItemEffectBattle(u8 bank, u8 holdEffect); static bool8 IsTwoTurnsMove(u16 move); static void TrySetDestinyBondToHappen(void); static void CheckWonderGuardAndLevitate(void); u8 GetBattlerPosition(u8 bank); u8 GetBattlerSide(u8 bank); -u8 GetBattleBank(u8 bankValue); +u8 GetBattlerForBattleScript(u8 bankValue); s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def); static u8 AttacksThisTurn(u8 bank, u16 move); //Note: returns 1 if it's a charging turn, otherwise 2 void UndoEffectsAfterFainting(void); @@ -294,7 +231,7 @@ extern u8 BattleScript_PrintPayDayMoneyString[]; //bs payday money give extern u8 BattleScript_FaintAttacker[]; extern u8 BattleScript_FaintTarget[]; extern u8 BattleScript_DestinyBondTakesLife[]; -extern u8 BattleScript_SelectingImprisionedMoveInPalace[]; +extern u8 BattleScript_GrudgeTakesPp[]; // read via orr #define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) @@ -306,7 +243,7 @@ extern u8 BattleScript_SelectingImprisionedMoveInPalace[]; #define BS2ScriptRead16(ptr) ((ptr)[0] + ((ptr)[1] << 8)) #define BS2ScriptReadPtr(ptr) ((void *)BS2ScriptRead32(ptr)) -#define TARGET_PROTECT_AFFECTED ((gProtectStructs[gBattlerTarget].protected && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_PROTECT)) +#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_PROTECT)) //array entries for battle communication #define MOVE_EFFECT_BYTE 0x3 @@ -315,9 +252,9 @@ extern u8 BattleScript_SelectingImprisionedMoveInPalace[]; #define TARGET_SELECTED 0x0 #define TARGET_DEPENDS 0x1 -#define TARGET_BOTH 0x8 -#define TARGET_FOES_AND_ALLY 0x20 -#define TARGET_OPPONENTS_FIELD 0x40 +#define MOVE_TARGET_BOTH 0x8 +#define MOVE_TARGET_FOES_AND_ALLY 0x20 +#define MOVE_TARGET_OPPONENTS_FIELD 0x40 #define TYPE_FORESIGHT 0xFE #define TYPE_ENDTABLE 0xFF @@ -444,11 +381,11 @@ static void atk5A_yesnoboxlearnmove(void); static void atk5B_yesnoboxstoplearningmove(void); static void atk5C_hitanimation(void); static void atk5D_getmoneyreward(void); -static void atk5E_8025A70(void); -static void atk5F_8025B24(void); +static void atk5E(void); +static void atk5F_swapattackerwithtarget(void); static void atk60_incrementgamestat(void); static void atk61_drawpartystatussummary(void); -static void atk62_08025C6C(void); +static void atk62_hidepartystatussummary(void); static void atk63_jumptorandomattack(void); static void atk64_statusanimation(void); static void atk65_status2animation(void); @@ -570,10 +507,10 @@ static void atkD7_setyawn(void); static void atkD8_setdamagetohealthdifference(void); static void atkD9_scaledamagebyhealthratio(void); static void atkDA_tryswapabilities(void); -static void atkDB_tryimprision(void); +static void atkDB_tryimprison(void); static void atkDC_trysetgrudge(void); static void atkDD_weightdamagecalculation(void); -static void atkDE_asistattackselect(void); +static void atkDE_assistattackselect(void); static void atkDF_trysetmagiccoat(void); static void atkE0_trysetsnatch(void); static void atkE1_trygetintimidatetarget(void); @@ -588,7 +525,7 @@ static void atkE9_setweatherballtype(void); static void atkEA_tryrecycleitem(void); static void atkEB_settypetoterrain(void); static void atkEC_pursuitrelated(void); -static void atkED_snatchsetbanks(void); +static void atkEF_snatchsetbattlers(void); static void atkEE_removelightscreenreflect(void); void atkEF_handleballthrow(void); static void atkF0_givecaughtmon(void); @@ -696,11 +633,11 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk5B_yesnoboxstoplearningmove, atk5C_hitanimation, atk5D_getmoneyreward, - atk5E_8025A70, - atk5F_8025B24, + atk5E, + atk5F_swapattackerwithtarget, atk60_incrementgamestat, atk61_drawpartystatussummary, - atk62_08025C6C, + atk62_hidepartystatussummary, atk63_jumptorandomattack, atk64_statusanimation, atk65_status2animation, @@ -821,10 +758,10 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkD8_setdamagetohealthdifference, atkD9_scaledamagebyhealthratio, atkDA_tryswapabilities, - atkDB_tryimprision, + atkDB_tryimprison, atkDC_trysetgrudge, atkDD_weightdamagecalculation, - atkDE_asistattackselect, + atkDE_assistattackselect, atkDF_trysetmagiccoat, atkE0_trysetsnatch, atkE1_trygetintimidatetarget, @@ -839,7 +776,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkEA_tryrecycleitem, atkEB_settypetoterrain, atkEC_pursuitrelated, - atkED_snatchsetbanks, + atkEF_snatchsetbattlers, atkEE_removelightscreenreflect, atkEF_handleballthrow, atkF0_givecaughtmon, @@ -881,12 +818,12 @@ static const u16 sCriticalHitChance[] = {16, 8, 4, 3, 2}; static const u32 sStatusFlagsForMoveEffects[] = { 0x00000000, - STATUS_SLEEP, - STATUS_POISON, - STATUS_BURN, - STATUS_FREEZE, - STATUS_PARALYSIS, - STATUS_TOXIC_POISON, + STATUS1_SLEEP, + STATUS1_POISON, + STATUS1_BURN, + STATUS1_FREEZE, + STATUS1_PARALYSIS, + STATUS1_TOXIC_POISON, STATUS2_CONFUSION, STATUS2_FLINCHED, 0x00000000, @@ -1001,26 +938,26 @@ static const u16 sProtectSuccessRates[] = {0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF}; static const u16 sMovesForbiddenToCopy[] = { - MOVE_METRONOME, - MOVE_STRUGGLE, - MOVE_SKETCH, - MOVE_MIMIC, - MIMIC_FORBIDDEN_END, - MOVE_COUNTER, - MOVE_MIRROR_COAT, - MOVE_PROTECT, - MOVE_DETECT, - MOVE_ENDURE, - MOVE_DESTINY_BOND, - MOVE_SLEEP_TALK, - MOVE_THIEF, - MOVE_FOLLOW_ME, - MOVE_SNATCH, - MOVE_HELPING_HAND, - MOVE_COVET, - MOVE_TRICK, - MOVE_FOCUS_PUNCH, - METRONOME_FORBIDDEN_END + MOVE_METRONOME, + MOVE_STRUGGLE, + MOVE_SKETCH, + MOVE_MIMIC, + MIMIC_FORBIDDEN_END, + MOVE_COUNTER, + MOVE_MIRROR_COAT, + MOVE_PROTECT, + MOVE_DETECT, + MOVE_ENDURE, + MOVE_DESTINY_BOND, + MOVE_SLEEP_TALK, + MOVE_THIEF, + MOVE_FOLLOW_ME, + MOVE_SNATCH, + MOVE_HELPING_HAND, + MOVE_COVET, + MOVE_TRICK, + MOVE_FOCUS_PUNCH, + METRONOME_FORBIDDEN_END }; static const u8 sFlailHpScaleToPowerTable[] = //reversal+flail HP thresholds to power @@ -1111,7 +1048,7 @@ static void atk00_attackcanceler(void) return; if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBattlerTarget, 0, 0, 0)) return; - if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200) + if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & (HITMARKER_x800000 | HITMARKER_NO_ATTACKSTRING)) && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) { gBattlescriptCurrInstr = BattleScript_NoPPForMove; @@ -1150,11 +1087,11 @@ static void atk00_attackcanceler(void) for (i = 0; i < gBattlersCount; i++) { - if ((gProtectStructs[gBanksByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_SNATCH) + if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & F_AFFECTED_BY_SNATCH) { - PressurePPLose(gBattlerAttacker, gBanksByTurnOrder[i], MOVE_SNATCH); - gProtectStructs[gBanksByTurnOrder[i]].stealMove = 0; - gBattleStruct->scriptingActive = gBanksByTurnOrder[i]; + PressurePPLose(gBattlerAttacker, gBattlerByTurnOrder[i], MOVE_SNATCH); + gProtectStructs[gBattlerByTurnOrder[i]].stealMove = 0; + gBattleStruct->scriptingActive = gBattlerByTurnOrder[i]; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SnatchedMove; return; @@ -1169,8 +1106,8 @@ static void atk00_attackcanceler(void) gBattlescriptCurrInstr = BattleScript_TookAttack; RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); } - else if (TARGET_PROTECT_AFFECTED - && (gCurrentMove != MOVE_CURSE || (gBattleMons[gBattlerAttacker].type1 == TYPE_GHOST || gBattleMons[gBattlerAttacker].type2 == TYPE_GHOST)) + else if (DEFENDER_IS_PROTECTED + && (gCurrentMove != MOVE_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)))) { CancelMultiTurnMoves(gBattlerAttacker); @@ -1206,7 +1143,7 @@ static void JumpIfMoveFailed(u8 adder, u16 move) static void atk40_jumpifaffectedbyprotect(void) { - if (TARGET_PROTECT_AFFECTED) + if (DEFENDER_IS_PROTECTED) { gMoveResultFlags |= MOVE_RESULT_MISSED; JumpIfMoveFailed(5, 0); @@ -1221,7 +1158,7 @@ static void atk40_jumpifaffectedbyprotect(void) static bool8 JumpIfMoveAffectedByProtect(u16 move) { bool8 affected = FALSE; - if (TARGET_PROTECT_AFFECTED) + if (DEFENDER_IS_PROTECTED) { gMoveResultFlags |= MOVE_RESULT_MISSED; JumpIfMoveFailed(7, move); @@ -1233,7 +1170,7 @@ static bool8 JumpIfMoveAffectedByProtect(u16 move) static bool8 AccuracyCalcHelper(u16 move) { - if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBattlerTarget].bankWithSureHit == gBattlerAttacker) + if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker) { JumpIfMoveFailed(7, move); return TRUE; @@ -1282,7 +1219,7 @@ static void atk01_accuracycheck(void) if (move == 0xFFFE || move == 0xFFFF) { - if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBattlerTarget].bankWithSureHit == gBattlerAttacker) + if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker) gBattlescriptCurrInstr += 7; else if (gStatuses3[gBattlerTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -1391,11 +1328,11 @@ static void atk03_ppreduce(void) { switch (gBattleMoves[gCurrentMove].target) { - case TARGET_FOES_AND_ALLY: + case MOVE_TARGET_FOES_AND_ALLY: ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBattlerAttacker, ABILITY_PRESSURE, 0, 0); break; - case TARGET_BOTH: - case TARGET_OPPONENTS_FIELD: + case MOVE_TARGET_BOTH: + case MOVE_TARGET_OPPONENTS_FIELD: ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBattlerAttacker, ABILITY_PRESSURE, 0, 0); break; default: @@ -1415,7 +1352,7 @@ static void atk03_ppreduce(void) gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = 0; if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) - && !((gDisableStructs[gBattlerAttacker].unk18_b) & gBitTable[gCurrMovePos])) + && !((gDisableStructs[gBattlerAttacker].mimickedMoves) & gBitTable[gCurrMovePos])) { gActiveBattler = gBattlerAttacker; BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBattlerAttacker].pp[gCurrMovePos]); @@ -1450,8 +1387,8 @@ static void atk04_critcalc(void) + 2 * (holdEffect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBattlerAttacker].species == SPECIES_CHANSEY) + 2 * (holdEffect == HOLD_EFFECT_STICK && gBattleMons[gBattlerAttacker].species == SPECIES_FARFETCHD); - if (critChance > 4) - critChance = 4; + if (critChance >= ARRAY_COUNT(sCriticalHitChance)) + critChance = ARRAY_COUNT(sCriticalHitChance) - 1; if ((gBattleMons[gBattlerTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBattlerTarget].ability != ABILITY_SHELL_ARMOR) && !(gStatuses3[gBattlerAttacker] & STATUS3_CANT_SCORE_A_CRIT) @@ -1466,9 +1403,9 @@ static void atk04_critcalc(void) static void atk05_damagecalc(void) { - u16 side_hword = gSideAffecting[GetBattlerPosition(gBattlerTarget) & 1]; + u16 sideStatus = gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)]; gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove, - side_hword, gDynamicBasePower, + sideStatus, gDynamicBasePower, gBattleStruct->dynamicMoveType, gBattlerAttacker, gBattlerTarget); gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleStruct->dmgMultiplier; @@ -1480,18 +1417,18 @@ static void atk05_damagecalc(void) gBattlescriptCurrInstr++; } -void AI_CalcDmg(u8 BankAtk, u8 BankDef) +void AI_CalcDmg(u8 attacker, u8 defender) { - u16 side_hword = gSideAffecting[GetBattlerPosition(BankDef) & 1]; - gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[BankAtk], &gBattleMons[BankDef], gCurrentMove, - side_hword, gDynamicBasePower, - gBattleStruct->dynamicMoveType, BankAtk, BankDef); + u16 sideStatus = gSideStatuses[GET_BATTLER_SIDE(defender)]; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[attacker], &gBattleMons[defender], gCurrentMove, + sideStatus, gDynamicBasePower, + gBattleStruct->dynamicMoveType, attacker, defender); gDynamicBasePower = 0; gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleStruct->dmgMultiplier; - if (gStatuses3[BankAtk] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + if (gStatuses3[attacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) gBattleMoveDamage *= 2; - if (gProtectStructs[BankAtk].helpingHand) + if (gProtectStructs[attacker].helpingHand) gBattleMoveDamage = gBattleMoveDamage * 15 / 10; } @@ -1503,12 +1440,12 @@ static void ModulateDmgByType(u8 multiplier) switch (multiplier) { - case 0: //no effect + case TYPE_MUL_NO_EFFECT: gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE; gMoveResultFlags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE; gMoveResultFlags &= ~MOVE_RESULT_SUPER_EFFECTIVE; break; - case 5: //not very effecting + case TYPE_MUL_NOT_EFFECTIVE: if (gBattleMoves[gCurrentMove].power && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) @@ -1517,7 +1454,7 @@ static void ModulateDmgByType(u8 multiplier) gMoveResultFlags |= MOVE_RESULT_NOT_VERY_EFFECTIVE; } break; - case 20: //super effective + case TYPE_MUL_SUPER_EFFECTIVE: if (gBattleMoves[gCurrentMove].power && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE) @@ -1532,28 +1469,28 @@ static void ModulateDmgByType(u8 multiplier) static void atk06_typecalc(void) { int i = 0; - u8 move_type; + u8 moveType; if (gCurrentMove != MOVE_STRUGGLE) { if (gBattleStruct->dynamicMoveType) - move_type = gBattleStruct->dynamicMoveType & 0x3F; + moveType = gBattleStruct->dynamicMoveType & 0x3F; else - move_type = gBattleMoves[gCurrentMove].type; + moveType = gBattleMoves[gCurrentMove].type; //check stab - if (gBattleMons[gBattlerAttacker].type1 == move_type || gBattleMons[gBattlerAttacker].type2 == move_type) + if (gBattleMons[gBattlerAttacker].type1 == moveType || gBattleMons[gBattlerAttacker].type2 == moveType) { gBattleMoveDamage = gBattleMoveDamage * 15; gBattleMoveDamage = gBattleMoveDamage / 10; } - if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) { gLastUsedAbility = gBattleMons[gBattlerTarget].ability; gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE); gLastLandedMoves[gBattlerTarget] = 0; gLastHitByType[gBattlerTarget] = 0; - gBattleCommunication[6] = move_type; + gBattleCommunication[6] = moveType; RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); } else @@ -1568,7 +1505,7 @@ static void atk06_typecalc(void) continue; } - else if (gTypeEffectiveness[i] == move_type) + else if (gTypeEffectiveness[i] == moveType) { //check type1 if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type1) @@ -1601,24 +1538,21 @@ static void atk06_typecalc(void) static void CheckWonderGuardAndLevitate(void) { u8 flags = 0; - int i = 0; - u8 move_type; + s32 i = 0; + u8 moveType; if (gCurrentMove == MOVE_STRUGGLE || !gBattleMoves[gCurrentMove].power) return; - if (gBattleStruct->dynamicMoveType) - move_type = gBattleStruct->dynamicMoveType & 0x3F; - else - move_type = gBattleMoves[gCurrentMove].type; + GET_MOVE_TYPE(gCurrentMove, moveType); - if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) { - RecordAbilitySetField6(ABILITY_LEVITATE, move_type); + RecordAbilitySetField6(ABILITY_LEVITATE, moveType); return; } - while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + while (gTypeEffectiveness[i] != TYPE_ENDTABLE) { if (gTypeEffectiveness[i] == TYPE_FORESIGHT) { @@ -1628,9 +1562,9 @@ static void CheckWonderGuardAndLevitate(void) continue; } - if (gTypeEffectiveness[i] == move_type) + if (gTypeEffectiveness[i] == moveType) { - //check no effect + // check no effect if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type1 && gTypeEffectiveness[i + 2] == 0) { gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE; @@ -1644,7 +1578,7 @@ static void CheckWonderGuardAndLevitate(void) gProtectStructs[gBattlerAttacker].targetNotAffected = 1; } - //check super effective + // check super effective if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type1 && gTypeEffectiveness[i + 2] == 20) flags |= 1; if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type2 @@ -1652,7 +1586,7 @@ static void CheckWonderGuardAndLevitate(void) && gTypeEffectiveness[i + 2] == 20) flags |= 1; - //check not very effective + // check not very effective if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type1 && gTypeEffectiveness[i + 2] == 5) flags |= 2; if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type2 @@ -1672,7 +1606,7 @@ static void CheckWonderGuardAndLevitate(void) } } -static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal copy of the ModulateDmgbyType1 with different args... +static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) // same as ModulateDmgByType except different arguments { gBattleMoveDamage = gBattleMoveDamage * multiplier / 10; if (gBattleMoveDamage == 0 && multiplier != 0) @@ -1680,12 +1614,12 @@ static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal c switch (multiplier) { - case 0: //no effect + case TYPE_MUL_NO_EFFECT: *flags |= MOVE_RESULT_DOESNT_AFFECT_FOE; *flags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE; *flags &= ~MOVE_RESULT_SUPER_EFFECTIVE; break; - case 5: //not very effecting + case TYPE_MUL_NOT_EFFECTIVE: if (gBattleMoves[move].power && !(*flags & MOVE_RESULT_NO_EFFECT)) { if (*flags & MOVE_RESULT_SUPER_EFFECTIVE) @@ -1694,7 +1628,7 @@ static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal c *flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE; } break; - case 20: //super effective + case TYPE_MUL_SUPER_EFFECTIVE: if (gBattleMoves[move].power && !(*flags & MOVE_RESULT_NO_EFFECT)) { if (*flags & MOVE_RESULT_NOT_VERY_EFFECTIVE) @@ -1706,25 +1640,25 @@ static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal c } } -u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) +u8 TypeCalc(u16 move, u8 attacker, u8 defender) { - int i = 0; + s32 i = 0; u8 flags = 0; - u8 move_type; + u8 moveType; if (move == MOVE_STRUGGLE) return 0; - move_type = gBattleMoves[move].type; + moveType = gBattleMoves[move].type; - //check stab - if (gBattleMons[bank_atk].type1 == move_type || gBattleMons[bank_atk].type2 == move_type) + // check stab + if (IS_BATTLER_OF_TYPE(attacker, moveType)) { gBattleMoveDamage = gBattleMoveDamage * 15; gBattleMoveDamage = gBattleMoveDamage / 10; } - if (gBattleMons[bank_def].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + if (gBattleMons[defender].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) { flags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE); } @@ -1734,28 +1668,28 @@ u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) { if (gTypeEffectiveness[i] == TYPE_FORESIGHT) { - if (gBattleMons[bank_def].status2 & STATUS2_FORESIGHT) + if (gBattleMons[defender].status2 & STATUS2_FORESIGHT) break; i += 3; continue; } - else if (gTypeEffectiveness[i] == move_type) + else if (gTypeEffectiveness[i] == moveType) { - //check type1 - if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type1) + // check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[defender].type1) ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); - //check type2 - if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type2 && - gBattleMons[gBattlerTarget /* what the christ */].type1 != gBattleMons[bank_def].type2) + // check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[defender].type2 && + gBattleMons[gBattlerTarget /* what the christ */].type1 != gBattleMons[defender].type2) ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); } i += 3; } } - if (gBattleMons[bank_def].ability == ABILITY_WONDER_GUARD && !(flags & MOVE_RESULT_MISSED) && - AttacksThisTurn(bank_atk, move) == 2 && + if (gBattleMons[defender].ability == ABILITY_WONDER_GUARD && !(flags & MOVE_RESULT_MISSED) && + AttacksThisTurn(attacker, move) == 2 && (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE))) && gBattleMoves[move].power) { @@ -1764,41 +1698,43 @@ u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) return flags; } -u8 AI_TypeCalc(u16 move, u16 species, u8 ability) +u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility) { int i = 0; u8 flags = 0; - u8 type1 = gBaseStats[species].type1, type2 = gBaseStats[species].type2, move_type; + u8 type1 = gBaseStats[targetSpecies].type1, type2 = gBaseStats[targetSpecies].type2, moveType; if (move == MOVE_STRUGGLE) return 0; - move_type = gBattleMoves[move].type; + moveType = gBattleMoves[move].type; - if (ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + if (targetAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND) + { flags = MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE; + } else { - while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { - if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) { i += 3; continue; } - if (gTypeEffectiveness[i] == move_type) + if (TYPE_EFFECT_ATK_TYPE(i) == moveType) { - //check type1 - if (gTypeEffectiveness[i + 1] == type1) - ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); - //check type2 - if (gTypeEffectiveness[i + 1] == type2 && gBattleMons[gBattlerTarget].type1 != type2) //gf you morons, you should check if (type1 != type2)... - ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + // check type1 + if (TYPE_EFFECT_DEF_TYPE(i) == type1) + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); + // check type2 + if (TYPE_EFFECT_DEF_TYPE(i) == type2 && gBattleMons[gBattlerTarget].type1 != type2) //gf you morons, you should check if (type1 != type2)... + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); } i += 3; } } - if (ability == ABILITY_WONDER_GUARD + if (targetAbility == ABILITY_WONDER_GUARD && (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE))) && gBattleMoves[move].power) flags |= MOVE_RESULT_DOESNT_AFFECT_FOE; @@ -1827,23 +1763,26 @@ void Unused_ApplyRandomDmgMultiplier(void) static void atk07_adjustnormaldamage(void) { - u8 hold_effect, quality; + u8 holdEffect, param; + ApplyRandomDmgMultiplier(); + if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) { - hold_effect = gEnigmaBerries[gBattlerTarget].holdEffect, quality = gEnigmaBerries[gBattlerTarget].holdEffectParam; + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect; + param = gEnigmaBerries[gBattlerTarget].holdEffectParam; } else { - hold_effect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); - quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); } gPotentialItemEffectBattler = gBattlerTarget; - if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) { - RecordItemBattle(gBattlerTarget, hold_effect); + RecordItemEffectBattle(gBattlerTarget, holdEffect); gSpecialStatuses[gBattlerTarget].focusBanded = 1; } if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE) @@ -1860,9 +1799,8 @@ static void atk07_adjustnormaldamage(void) if (gProtectStructs[gBattlerTarget].endured) { gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED; - goto END; } - if (gSpecialStatuses[gBattlerTarget].focusBanded) + else if (gSpecialStatuses[gBattlerTarget].focusBanded) { gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON; gLastUsedItem = gBattleMons[gBattlerTarget].item; @@ -1872,33 +1810,34 @@ static void atk07_adjustnormaldamage(void) gBattlescriptCurrInstr++; } -static void atk08_adjustnormaldamage2(void) //literally the same as 0x7 except it doesn't check for false swipe move effect... +static void atk08_adjustnormaldamage2(void) // The same as 0x7 except it doesn't check for false swipe move effect. { - u8 hold_effect, quality; + u8 holdEffect, param; + ApplyRandomDmgMultiplier(); + if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) { - hold_effect = gEnigmaBerries[gBattlerTarget].holdEffect, quality = gEnigmaBerries[gBattlerTarget].holdEffectParam; + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect; + param = gEnigmaBerries[gBattlerTarget].holdEffectParam; } else { - hold_effect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); - quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); } gPotentialItemEffectBattler = gBattlerTarget; - if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) { - RecordItemBattle(gBattlerTarget, hold_effect); + RecordItemEffectBattle(gBattlerTarget, holdEffect); gSpecialStatuses[gBattlerTarget].focusBanded = 1; } if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE) goto END; - if (!gProtectStructs[gBattlerTarget].endured - && !gSpecialStatuses[gBattlerTarget].focusBanded) + if (!gProtectStructs[gBattlerTarget].endured && !gSpecialStatuses[gBattlerTarget].focusBanded) goto END; - if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage) goto END; @@ -1907,9 +1846,8 @@ static void atk08_adjustnormaldamage2(void) //literally the same as 0x7 except i if (gProtectStructs[gBattlerTarget].endured) { gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED; - goto END; } - if (gSpecialStatuses[gBattlerTarget].focusBanded) + else if (gSpecialStatuses[gBattlerTarget].focusBanded) { gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON; gLastUsedItem = gBattleMons[gBattlerTarget].item; @@ -1928,12 +1866,12 @@ static void atk09_attackanimation(void) { BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_Pausex20; - gBattleStruct->animTurn += 1; - gBattleStruct->animTargetsHit += 1; + gBattleStruct->animTurn++; + gBattleStruct->animTargetsHit++; } else { - if ((gBattleMoves[gCurrentMove].target & TARGET_BOTH || gBattleMoves[gCurrentMove].target & TARGET_FOES_AND_ALLY || gBattleMoves[gCurrentMove].target & TARGET_DEPENDS) && gBattleStruct->animTargetsHit) + if ((gBattleMoves[gCurrentMove].target & MOVE_TARGET_BOTH || gBattleMoves[gCurrentMove].target & MOVE_TARGET_FOES_AND_ALLY || gBattleMoves[gCurrentMove].target & TARGET_DEPENDS) && gBattleStruct->animTargetsHit) { gBattlescriptCurrInstr++; return; @@ -1969,7 +1907,7 @@ static void atk0B_healthbarupdate(void) if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) { @@ -1996,7 +1934,7 @@ static void atk0B_healthbarupdate(void) MarkBattlerForControllerExec(gActiveBattler); if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleMoveDamage > 0) - gBattleResults.unk5_0 = 1; + gBattleResults.playerMonWasDamaged = TRUE; } } @@ -2019,7 +1957,7 @@ static void atk0C_datahpupdate(void) if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) { if (gDisableStructs[gActiveBattler].substituteHP >= gBattleMoveDamage) @@ -2064,10 +2002,10 @@ static void atk0C_datahpupdate(void) else { gTakenDmg[gActiveBattler] += gBattleMoveDamage; - if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) - gTakenDmgBanks[gActiveBattler] = gBattlerAttacker; + if (gBattlescriptCurrInstr[1] == BS_TARGET) + gTakenDmgByBattler[gActiveBattler] = gBattlerAttacker; else - gTakenDmgBanks[gActiveBattler] = gBattlerTarget; + gTakenDmgByBattler[gActiveBattler] = gBattlerTarget; } if (gBattleMons[gActiveBattler].hp > gBattleMoveDamage) @@ -2084,11 +2022,11 @@ static void atk0C_datahpupdate(void) if (!gSpecialStatuses[gActiveBattler].dmg && !(gHitMarker & HITMARKER_x100000)) gSpecialStatuses[gActiveBattler].dmg = gHpDealt; - if (TYPE_IS_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT) + if (IS_TYPE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT) { gProtectStructs[gActiveBattler].physicalDmg = gHpDealt; gSpecialStatuses[gActiveBattler].physicalDmg = gHpDealt; - if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) + if (gBattlescriptCurrInstr[1] == BS_TARGET) { gProtectStructs[gActiveBattler].physicalBattlerId = gBattlerAttacker; gSpecialStatuses[gActiveBattler].physicalBattlerId = gBattlerAttacker; @@ -2099,11 +2037,11 @@ static void atk0C_datahpupdate(void) gSpecialStatuses[gActiveBattler].physicalBattlerId = gBattlerTarget; } } - else if (!TYPE_IS_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000)) + else if (!IS_TYPE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000)) { gProtectStructs[gActiveBattler].specialDmg = gHpDealt; gSpecialStatuses[gActiveBattler].specialDmg = gHpDealt; - if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) + if (gBattlescriptCurrInstr[1] == BS_TARGET) { gProtectStructs[gActiveBattler].specialBattlerId = gBattlerAttacker; gSpecialStatuses[gActiveBattler].specialBattlerId = gBattlerAttacker; @@ -2122,7 +2060,7 @@ static void atk0C_datahpupdate(void) } else { - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); if (gSpecialStatuses[gActiveBattler].dmg == 0) gSpecialStatuses[gActiveBattler].dmg = 0xFFFF; } @@ -2150,19 +2088,19 @@ static void atk0E_effectivenesssound(void) gActiveBattler = gBattlerTarget; if (!(gMoveResultFlags & MOVE_RESULT_MISSED)) { - u8 flag = ~MOVE_RESULT_MISSED; - switch (gMoveResultFlags & flag) + switch (gMoveResultFlags & (u8)(~(MOVE_RESULT_MISSED))) { case MOVE_RESULT_SUPER_EFFECTIVE: - BtlController_EmitPlaySE(0, 14); + BtlController_EmitPlaySE(0, SE_KOUKA_H); MarkBattlerForControllerExec(gActiveBattler); break; case MOVE_RESULT_NOT_VERY_EFFECTIVE: - BtlController_EmitPlaySE(0, 12); + BtlController_EmitPlaySE(0, SE_KOUKA_L); MarkBattlerForControllerExec(gActiveBattler); break; case MOVE_RESULT_DOESNT_AFFECT_FOE: case MOVE_RESULT_FAILED: + // no sound break; case MOVE_RESULT_FOE_ENDURED: case MOVE_RESULT_ONE_HIT_KO: @@ -2170,17 +2108,17 @@ static void atk0E_effectivenesssound(void) default: if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) { - BtlController_EmitPlaySE(0, 14); + BtlController_EmitPlaySE(0, SE_KOUKA_H); MarkBattlerForControllerExec(gActiveBattler); } else if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE) { - BtlController_EmitPlaySE(0, 12); + BtlController_EmitPlaySE(0, SE_KOUKA_L); MarkBattlerForControllerExec(gActiveBattler); } else if (!(gMoveResultFlags & (MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED))) { - BtlController_EmitPlaySE(0, 13); + BtlController_EmitPlaySE(0, SE_KOUKA_M); MarkBattlerForControllerExec(gActiveBattler); } break; @@ -2292,8 +2230,10 @@ static void atk10_printstring(void) static void atk11_printselectionstring(void) { gActiveBattler = gBattlerAttacker; + BtlController_EmitPrintSelectionString(0, T2_READ_16(gBattlescriptCurrInstr + 1)); MarkBattlerForControllerExec(gActiveBattler); + gBattlescriptCurrInstr += 3; gBattleCommunication[MSG_DISPLAY] = 1; } @@ -2308,8 +2248,8 @@ static void atk12_waitmessage(void) } else { - u16 to_wait = T2_READ_16(gBattlescriptCurrInstr + 1); - if (++gPauseCounterBattle >= to_wait) + u16 toWait = T2_READ_16(gBattlescriptCurrInstr + 1); + if (++gPauseCounterBattle >= toWait) { gPauseCounterBattle = 0; gBattlescriptCurrInstr += 3; @@ -2345,12 +2285,12 @@ static void atk14_printselectionstringfromtable(void) } } -u8 BankGetTurnOrder(u8 bank) +u8 GetBattlerTurnOrderNum(u8 battlerId) { int i; for (i = 0; i < gBattlersCount; i++) { - if (gBanksByTurnOrder[i] == bank) + if (gBattlerByTurnOrder[i] == battlerId) break; } return i; @@ -2383,7 +2323,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9) {gBattlescriptCurrInstr++; return;} - if (gSideAffecting[GetBattlerPosition(gEffectBattler) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && + if (gSideStatuses[GetBattlerPosition(gEffectBattler) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7) {gBattlescriptCurrInstr++; return;} @@ -2398,7 +2338,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { switch (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) { - case STATUS_SLEEP: + case STATUS1_SLEEP: //check active uproar if (gBattleMons[gEffectBattler].ability != ABILITY_SOUNDPROOF) { @@ -2414,7 +2354,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) CancelMultiTurnMoves(gEffectBattler); StatusChanged = 1; break; - case STATUS_POISON: + case STATUS1_POISON: if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_IMMUNITY; @@ -2448,7 +2388,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) StatusChanged = 1; break; - case STATUS_BURN: + case STATUS1_BURN: if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_WATER_VEIL; @@ -2479,7 +2419,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (gBattleMons[gEffectBattler].status1 == 0) {break;} StatusChanged = 1; break; - case STATUS_FREEZE: + case STATUS1_FREEZE: if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) {NoSunCanFreeze = 0;} if (gBattleMons[gEffectBattler].type1 == TYPE_ICE) {break;} if (gBattleMons[gEffectBattler].type2 == TYPE_ICE) {break;} @@ -2490,7 +2430,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) CancelMultiTurnMoves(gEffectBattler); StatusChanged = 1; break; - case STATUS_PARALYSIS: + case STATUS1_PARALYSIS: if (gBattleMons[gEffectBattler].ability == ABILITY_LIMBER) { if ((primary == 1 || certain == 0x80)) @@ -2514,7 +2454,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (gBattleMons[gEffectBattler].status1) {break;} StatusChanged = 1; break; - case STATUS_TOXIC_POISON: + case STATUS1_TOXIC_POISON: if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_IMMUNITY; @@ -2557,7 +2497,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (StatusChanged == 1) { BattleScriptPush(gBattlescriptCurrInstr + 1); - if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP) + if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS1_SLEEP) gBattleMons[gEffectBattler].status1 |= ((Random() & 3) + 2); else gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; @@ -2615,7 +2555,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) } else { - if (BankGetTurnOrder(gEffectBattler) > gCurrentTurnActionNumber) + if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber) gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; gBattlescriptCurrInstr++; return; } @@ -2781,9 +2721,9 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gBattlescriptCurrInstr = BattleScript_RapidSpinAway; return; case 36: //paralysis removal - if (gBattleMons[gBattlerTarget].status1 & STATUS_PARALYSIS) + if (gBattleMons[gBattlerTarget].status1 & STATUS1_PARALYSIS) { - gBattleMons[gBattlerTarget].status1 &= ~(STATUS_PARALYSIS); + gBattleMons[gBattlerTarget].status1 &= ~(STATUS1_PARALYSIS); gActiveBattler = gBattlerTarget; BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerTarget].status1); MarkBattlerForControllerExec(gActiveBattler); @@ -2929,7 +2869,7 @@ _0801E48A:\n\ mov r1, r8\n\ ldrb r0, [r1]\n\ bl GetBattlerPosition\n\ - ldr r2, _0801E554 @ =gSideAffecting\n\ + ldr r2, _0801E554 @ =gSideStatuses\n\ movs r1, 0x1\n\ ands r1, r0\n\ lsls r1, 1\n\ @@ -3023,7 +2963,7 @@ _0801E544: .4byte gBattlerAttacker\n\ _0801E548: .4byte 0x00016003\n\ _0801E54C: .4byte gBattleMons\n\ _0801E550: .4byte gHitMarker\n\ -_0801E554: .4byte gSideAffecting\n\ +_0801E554: .4byte gSideStatuses\n\ _0801E558: .4byte gBattleCommunication\n\ _0801E55C: .4byte sStatusFlagsForMoveEffects\n\ _0801E560:\n\ @@ -3957,7 +3897,7 @@ _0801ED10: .4byte gBattlescriptCurrInstr\n\ _0801ED14: .4byte BattleScript_FlinchPrevention\n\ _0801ED18:\n\ adds r0, r2, 0\n\ - bl BankGetTurnOrder\n\ + bl GetBattlerTurnOrderNum\n\ ldr r1, _0801ED54 @ =gCurrentTurnActionNumber\n\ lsls r0, 24\n\ lsrs r0, 24\n\ @@ -5017,27 +4957,31 @@ _0801F610: .4byte BattleScript_SAtkDown2\n\ static void atk15_seteffectwithchance(void) { - u32 PercentChance; + u32 percentChance; if (gBattleMons[gBattlerAttacker].ability == ABILITY_SERENE_GRACE) - PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2; + percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2; else - PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance; + percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance; if (DEBUG && (gUnknown_02023A14_50 & 4) - && !(gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + && !(gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_CERTAIN) + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { SetMoveEffect(0, 0); } - else if ((gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + else if ((gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_CERTAIN) + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { - gBattleCommunication[MOVE_EFFECT_BYTE] &= 0x7F; - SetMoveEffect(0, 0x80); + gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_CERTAIN); + SetMoveEffect(0, MOVE_EFFECT_CERTAIN); } - else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] != 0 && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + else if (Random() % 100 <= percentChance // Random() % 100 < percentChance in Emerald + && gBattleCommunication[MOVE_EFFECT_BYTE] + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { - if (PercentChance >= 100) - SetMoveEffect(0, 0x80); + if (percentChance >= 100) + SetMoveEffect(0, MOVE_EFFECT_CERTAIN); else SetMoveEffect(0, 0); } @@ -5062,8 +5006,9 @@ static void atk17_seteffectsecondary(void) static void atk18_clearstatusfromeffect(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); - if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); + + if (gBattleCommunication[MOVE_EFFECT_BYTE] <= MOVE_EFFECT_TOXIC) gBattleMons[gActiveBattler].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); else gBattleMons[gActiveBattler].status2 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); @@ -5075,18 +5020,18 @@ static void atk18_clearstatusfromeffect(void) static void atk19_tryfaintmon(void) { - u8 *r4; + const u8 *BS_ptr; if (gBattlescriptCurrInstr[2] != 0) { - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); if (gHitMarker & HITMARKER_FAINTED(gActiveBattler)) { - r4 = T1_READ_PTR(gBattlescriptCurrInstr + 3); + BS_ptr = T1_READ_PTR(gBattlescriptCurrInstr + 3); BattleScriptPop(); - gBattlescriptCurrInstr = r4; - gSideAffecting[GetBattlerSide(gActiveBattler)] &= ~SIDE_STATUS_SPIKES_DAMAGED; + gBattlescriptCurrInstr = BS_ptr; + gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); } else { @@ -5095,41 +5040,41 @@ static void atk19_tryfaintmon(void) } else { - u8 bank; + u8 battlerId; if (gBattlescriptCurrInstr[1] == 1) { gActiveBattler = gBattlerAttacker; - bank = gBattlerTarget; - r4 = BattleScript_FaintAttacker; + battlerId = gBattlerTarget; + BS_ptr = BattleScript_FaintAttacker; } else { gActiveBattler = gBattlerTarget; - bank = gBattlerAttacker; - r4 = BattleScript_FaintTarget; + battlerId = gBattlerAttacker; + BS_ptr = BattleScript_FaintTarget; } if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler]) && gBattleMons[gActiveBattler].hp == 0) { - ewram160ACarr2(0, bank) = 0; - ewram160ACarr2(1, bank) = 0; - ewram16100arr2(0, bank) = 0; - ewram16100arr2(1, bank) = 0; - ewram16100arr2(2, bank) = 0; - ewram16100arr2(3, bank) = 0; + ewram160ACarr2(0, battlerId) = 0; + ewram160ACarr2(1, battlerId) = 0; + ewram16100arr2(0, battlerId) = 0; + ewram16100arr2(1, battlerId) = 0; + ewram16100arr2(2, battlerId) = 0; + ewram16100arr2(3, battlerId) = 0; gHitMarker |= HITMARKER_FAINTED(gActiveBattler); BattleScriptPush(gBattlescriptCurrInstr + 7); - gBattlescriptCurrInstr = r4; - if (GetBattlerSide(gActiveBattler) == 0) + gBattlescriptCurrInstr = BS_ptr; + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) { gHitMarker |= HITMARKER_x400000; if (gBattleResults.playerFaintCounter < 0xFF) gBattleResults.playerFaintCounter++; - if (gBattleMons[bank].level > gBattleMons[gActiveBattler].level) + if (gBattleMons[battlerId].level > gBattleMons[gActiveBattler].level) { - if (gBattleMons[bank].level - gBattleMons[gActiveBattler].level > 29) + if (gBattleMons[battlerId].level - gBattleMons[gActiveBattler].level > 29) AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], FRIENDSHIP_EVENT_FAINT_LARGE); else AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], FRIENDSHIP_EVENT_FAINT_SMALL); @@ -5144,7 +5089,7 @@ static void atk19_tryfaintmon(void) if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBattlerAttacker].hp != 0) { BattleScriptPush(gBattlescriptCurrInstr); - gBattleMoveDamage = gBattleMons[bank].hp; + gBattleMoveDamage = gBattleMons[battlerId].hp; gBattlescriptCurrInstr = BattleScript_DestinyBondTakesLife; } if ((gStatuses3[gBattlerTarget] & STATUS3_GRUDGE) @@ -5157,7 +5102,7 @@ static void atk19_tryfaintmon(void) gBattleMons[gBattlerAttacker].pp[moveIndex] = 0; BattleScriptPush(gBattlescriptCurrInstr); - gBattlescriptCurrInstr = BattleScript_SelectingImprisionedMoveInPalace; + gBattlescriptCurrInstr = BattleScript_GrudgeTakesPp; gActiveBattler = gBattlerAttacker; BtlController_EmitSetMonData(0, moveIndex + 9, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]); MarkBattlerForControllerExec(gActiveBattler); @@ -5180,7 +5125,7 @@ static void atk1A_dofaintanimation(void) { if (gBattleControllerExecFlags == 0) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); BtlController_EmitFaintAnimation(0); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -5192,7 +5137,7 @@ static void atk1B_cleareffectsonfaint(void) //Clears things like attraction or trapping to other banks if (gBattleControllerExecFlags == 0) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); gBattleMons[gActiveBattler].status1 = 0; BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBattler].status1); MarkBattlerForControllerExec(gActiveBattler); @@ -5203,7 +5148,7 @@ static void atk1B_cleareffectsonfaint(void) static void atk1C_jumpifstatus(void) { - u8 bank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + u8 bank = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2); void* jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 6); if (gBattleMons[bank].status1 & flags && gBattleMons[bank].hp) @@ -5214,10 +5159,10 @@ static void atk1C_jumpifstatus(void) static void atk1D_jumpifstatus2(void) { - u8 bank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + u8 battlerId = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2); void* jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 6); - if (gBattleMons[bank].status2 & flags && gBattleMons[bank].hp) + if (gBattleMons[battlerId].status2 & flags && gBattleMons[battlerId].hp) gBattlescriptCurrInstr = jump_loc; else gBattlescriptCurrInstr += 10; @@ -5225,44 +5170,44 @@ static void atk1D_jumpifstatus2(void) static void atk1E_jumpifability(void) { - u8 bank; - u8 ability = T2_READ_8(gBattlescriptCurrInstr + 2); - void* jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 3); + u8 battlerId; + u8 ability = gBattlescriptCurrInstr[2]; + void* jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 3); if (T2_READ_8(gBattlescriptCurrInstr + 1) == 8) { - bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBattlerAttacker, ability, 0, 0); - if (bank) + battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBattlerAttacker, ability, 0, 0); + if (battlerId) { gLastUsedAbility = ability; - gBattlescriptCurrInstr = jump_loc; - RecordAbilityBattle(bank -1, gLastUsedAbility); - ewram160F8 = bank - 1; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(battlerId -1, gLastUsedAbility); + ewram160F8 = battlerId - 1; } else gBattlescriptCurrInstr += 7; } else if (T2_READ_8(gBattlescriptCurrInstr + 1) == 9) { - bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBattlerAttacker, ability, 0, 0); - if (bank) + battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBattlerAttacker, ability, 0, 0); + if (battlerId) { gLastUsedAbility = ability; - gBattlescriptCurrInstr = jump_loc; - RecordAbilityBattle(bank - 1, gLastUsedAbility); - ewram160F8 = bank - 1; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(battlerId - 1, gLastUsedAbility); + ewram160F8 = battlerId - 1; } else gBattlescriptCurrInstr += 7; } else { - bank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); - if (gBattleMons[bank].ability == ability) + battlerId = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); + if (gBattleMons[battlerId].ability == ability) { gLastUsedAbility = ability; - gBattlescriptCurrInstr = jump_loc; - RecordAbilityBattle(bank, gLastUsedAbility); - ewram160F8 = bank; + gBattlescriptCurrInstr = jumpPtr; + RecordAbilityBattle(battlerId, gLastUsedAbility); + ewram160F8 = battlerId; } else gBattlescriptCurrInstr += 7; @@ -5282,7 +5227,7 @@ static void atk1F_jumpifsideaffecting(void) flags = T2_READ_16(gBattlescriptCurrInstr + 2); jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 4); - if (gSideAffecting[side] & flags) + if (gSideStatuses[side] & flags) gBattlescriptCurrInstr = jump_loc; else gBattlescriptCurrInstr += 8; @@ -5291,8 +5236,8 @@ static void atk1F_jumpifsideaffecting(void) static void atk20_jumpifstat(void) { u8 ret = 0; - u8 bank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); - u8 value = gBattleMons[bank].statStages[T2_READ_8(gBattlescriptCurrInstr + 3)]; + u8 battlerId = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); + u8 value = gBattleMons[battlerId].statStages[T2_READ_8(gBattlescriptCurrInstr + 3)]; switch (T2_READ_8(gBattlescriptCurrInstr + 2)) { case CMP_EQUAL: @@ -5331,7 +5276,7 @@ static void atk21_jumpifstatus3condition(void) u32 flags; void* jump_loc; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); flags = T2_READ_32(gBattlescriptCurrInstr + 2); jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 7); if (T2_READ_8(gBattlescriptCurrInstr + 6)) @@ -5350,13 +5295,13 @@ static void atk21_jumpifstatus3condition(void) } } -static void atk22_jumpiftype(void) //u8 bank, u8 type, *ptr +static void atk22_jumpiftype(void) //u8 battlerId, u8 type, *ptr { - u8 bank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + u8 battlerId = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); u8 type = T2_READ_8(gBattlescriptCurrInstr + 2); void* jump_loc = T2_READ_PTR(gBattlescriptCurrInstr + 3); - if (gBattleMons[bank].type1 == type || gBattleMons[bank].type2 == type) + if (gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type) gBattlescriptCurrInstr = jump_loc; else gBattlescriptCurrInstr += 7; @@ -5372,7 +5317,7 @@ static void atk23_getexp(void) s32 viaExpShare = 0; u16* exp = &gBattleStruct->exp; - gBank1 = GetBattleBank(gBattlescriptCurrInstr[1]); + gBank1 = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); sentIn = gSentPokesToOpponent[(gBank1 & 2) >> 1]; switch (gBattleStruct->getexpStateTracker) @@ -5436,14 +5381,14 @@ static void atk23_getexp(void) } gBattleStruct->getexpStateTracker++; - gBattleStruct->expGetterID = 0; + gBattleStruct->expGetterMonId = 0; gBattleStruct->sentInPokes = sentIn; } // fall through case 2: // set exp value to the poke in expgetter_id and print message if (gBattleControllerExecFlags == 0) { - item = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HELD_ITEM); + item = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HELD_ITEM); if (item == ITEM_ENIGMA_BERRY) holdEffect = gSaveBlock1.enigmaBerry.holdEffect; @@ -5456,7 +5401,7 @@ static void atk23_getexp(void) gBattleStruct->getexpStateTracker = 5; gBattleMoveDamage = 0; // used for exp } - else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL) == 100) + else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) == 100) { gBattleStruct->sentInPokes >>= 1; gBattleStruct->getexpStateTracker = 5; @@ -5468,11 +5413,11 @@ static void atk23_getexp(void) if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !gBattleStruct->wildVictorySong) { BattleStopLowHpSound(); - PlayBGM(0x161); + PlayBGM(MUS_KACHI2); gBattleStruct->wildVictorySong++; } - if (GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP)) + if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP)) { if (gBattleStruct->sentInPokes & 1) gBattleMoveDamage = *exp; @@ -5486,7 +5431,7 @@ static void atk23_getexp(void) if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; - if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterID])) + if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterMonId])) { gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; i = 0x14A; @@ -5499,28 +5444,28 @@ static void atk23_getexp(void) // get exp getter bank if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterID) && !(gAbsentBattlerFlags & gBitTable[2])) - gBattleStruct->expGetterBank = 2; + if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterMonId) && !(gAbsentBattlerFlags & gBitTable[2])) + gBattleStruct->expGetterBattlerId = 2; else { if (!(gAbsentBattlerFlags & gBitTable[0])) - gBattleStruct->expGetterBank = 0; + gBattleStruct->expGetterBattlerId = 0; else - gBattleStruct->expGetterBank = 2; + gBattleStruct->expGetterBattlerId = 2; } } else - gBattleStruct->expGetterBank = 0; + gBattleStruct->expGetterBattlerId = 0; - PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBank, gBattleStruct->expGetterID) + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBattlerId, gBattleStruct->expGetterMonId) // buffer 'gained' or 'gained a boosted' PREPARE_STRING_BUFFER(gBattleTextBuff2, i) PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage) - PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBank); - MonGainEVs(&gPlayerParty[gBattleStruct->expGetterID], gBattleMons[gBank1].species); + PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBattlerId); + MonGainEVs(&gPlayerParty[gBattleStruct->expGetterMonId], gBattleMons[gBank1].species); } gBattleStruct->sentInPokes >>= 1; gBattleStruct->getexpStateTracker++; @@ -5530,19 +5475,19 @@ static void atk23_getexp(void) case 3: // Set stats and give exp if (gBattleControllerExecFlags == 0) { - gBattleBufferB[gBattleStruct->expGetterBank][0] = 0; - if (GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL) != 100) + gBattleBufferB[gBattleStruct->expGetterBattlerId][0] = 0; + if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) != 100) { - gBattleResources_statsBeforeLvlUp->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MAX_HP); - gBattleResources_statsBeforeLvlUp->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_ATK); - gBattleResources_statsBeforeLvlUp->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_DEF); - gBattleResources_statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); - gBattleResources_statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPATK); - gBattleResources_statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPDEF); + gBattleResources_statsBeforeLvlUp->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP); + gBattleResources_statsBeforeLvlUp->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK); + gBattleResources_statsBeforeLvlUp->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF); + gBattleResources_statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleResources_statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK); + gBattleResources_statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF); - gActiveBattler = gBattleStruct->expGetterBank; + gActiveBattler = gBattleStruct->expGetterBattlerId; - BtlController_EmitExpUpdate(0, gBattleStruct->expGetterID, gBattleMoveDamage); + BtlController_EmitExpUpdate(0, gBattleStruct->expGetterMonId, gBattleMoveDamage); MarkBattlerForControllerExec(gActiveBattler); } gBattleStruct->getexpStateTracker++; @@ -5551,49 +5496,49 @@ static void atk23_getexp(void) case 4: // lvl up if necessary if (gBattleControllerExecFlags == 0) { - gActiveBattler = gBattleStruct->expGetterBank; + gActiveBattler = gBattleStruct->expGetterBattlerId; if (gBattleBufferB[gActiveBattler][0] == CONTROLLER_TWORETURNVALUES && gBattleBufferB[gActiveBattler][1] == RET_VALUE_LEVELLED_UP) { - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterID) + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId) HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); - PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterID) + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterMonId) - PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL)) + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL)) BattleScriptPushCursor(); - gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterID]; + gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterMonId]; gBattlescriptCurrInstr = BattleScript_LevelUp; gBattleMoveDamage = (gBattleBufferB[gActiveBattler][2] | (gBattleBufferB[gActiveBattler][3] << 8)); - AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterID], FRIENDSHIP_EVENT_GROW_LEVEL); + AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterMonId], FRIENDSHIP_EVENT_GROW_LEVEL); // update battle mon structure after level up - if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterID && gBattleMons[0].hp) + if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId && gBattleMons[0].hp) { - gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL); - gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP); - gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MAX_HP); - gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_ATK); - gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_DEF); + gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL); + gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP); + gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP); + gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK); + gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF); // Why is this duplicated? - gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); - gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); - gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPATK); - gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPDEF); + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK); + gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF); } // What is else if? - if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterID && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL); - gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP); - gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MAX_HP); - gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_ATK); - gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_DEF); + gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL); + gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP); + gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP); + gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK); + gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF); // Duplicated again, but this time there's no Sp Defense - gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); - gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); - gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPATK); + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED); + gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK); } } else @@ -5608,8 +5553,8 @@ static void atk23_getexp(void) gBattleStruct->getexpStateTracker = 3; else { - gBattleStruct->expGetterID++; - if (gBattleStruct->expGetterID <= 5) + gBattleStruct->expGetterMonId++; + if (gBattleStruct->expGetterMonId <= 5) gBattleStruct->getexpStateTracker = 2; // loop again else gBattleStruct->getexpStateTracker = 6; // we're done @@ -5641,7 +5586,7 @@ static void atk24(void) } if (HP_count == 0) - gBattleOutcome |= BATTLE_LOST; + gBattleOutcome |= B_OUTCOME_LOST; for (HP_count = 0, i = 0; i < 6; i++) { @@ -5650,7 +5595,7 @@ static void atk24(void) } if (!HP_count) - gBattleOutcome |= BATTLE_WON; + gBattleOutcome |= B_OUTCOME_WON; if (!gBattleOutcome && (gBattleTypeFlags & BATTLE_TYPE_LINK)) { @@ -6271,7 +6216,7 @@ static void atk41_call(void) static void atk42_jumpiftype2(void) //u8 bank, u8 type, *ptr { - u8 bank = GetBattleBank(T1_READ_8(gBattlescriptCurrInstr + 1)); + u8 bank = GetBattlerForBattleScript(T1_READ_8(gBattlescriptCurrInstr + 1)); if (T1_READ_8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type1 || T1_READ_8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type2) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); @@ -6296,7 +6241,7 @@ static void atk45_playanimation(void) { const u16* argumentPtr; - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3); if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE @@ -6338,7 +6283,7 @@ static void atk46_playanimation2(void) // animation Id is stored in the first po const u16* argumentPtr; const u8* animationIdPtr; - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); animationIdPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); @@ -6407,7 +6352,7 @@ static void atk48_playstatchangeanimation(void) u32 stats_to_check; u8 arg3; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); stats_to_check = T2_READ_8(gBattlescriptCurrInstr + 2); arg3 = T2_READ_8(gBattlescriptCurrInstr + 3); if (arg3 & 1) @@ -6499,7 +6444,7 @@ push {r4-r7,lr}\n\ ldr r0, [r5]\n\ ldrb r0, [r0, 0x1]\n\ str r3, [sp]\n\ - bl GetBattleBank\n\ + bl GetBattlerForBattleScript\n\ ldr r2, _08021674 @ =gActiveBattler\n\ strb r0, [r2]\n\ ldr r0, [r5]\n\ @@ -6815,12 +6760,12 @@ void atk49_moveend(void) gBattleStruct->cmd49StateTracker++; break; case ATK49_DEFROST: // defrosting check - if (gBattleMons[gBattlerTarget].status1 & STATUS_FREEZE + if (gBattleMons[gBattlerTarget].status1 & STATUS1_FREEZE && gBattleMons[gBattlerTarget].hp && gBattlerAttacker != gBattlerTarget && gSpecialStatuses[gBattlerTarget].specialDmg && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && moveType == TYPE_FIRE) { - gBattleMons[gBattlerTarget].status1 &= ~(STATUS_FREEZE); + gBattleMons[gBattlerTarget].status1 &= ~(STATUS1_FREEZE); gActiveBattler = gBattlerTarget; BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerTarget].status1); MarkBattlerForControllerExec(gActiveBattler); @@ -6939,12 +6884,12 @@ void atk49_moveend(void) gBattleStruct->cmd49StateTracker++; break; case ATK49_UPDATE_LAST_MOVES: - if (gHitMarker & HITMARKER_PURSUIT_TRAP) + if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET) { gActiveBattler = gBattlerAttacker; gBattlerAttacker = gBattlerTarget; gBattlerTarget = gActiveBattler; - gHitMarker &= ~(HITMARKER_PURSUIT_TRAP); + gHitMarker &= ~(HITMARKER_SWAP_ATTACKER_TARGET); } if (gBattleMoves[gChosenMove].effect != 0x7F || (gMoveResultFlags & 0x29)) @@ -6956,12 +6901,12 @@ void atk49_moveend(void) { if (gHitMarker & HITMARKER_OBEYS) { - gLastUsedMove[gBattlerAttacker] = gChosenMove; + gLastMoves[gBattlerAttacker] = gChosenMove; gUnknown_02024C4C[gBattlerAttacker] = gCurrentMove; } else { - gLastUsedMove[gBattlerAttacker] = 0xFFFF; + gLastMoves[gBattlerAttacker] = 0xFFFF; gUnknown_02024C4C[gBattlerAttacker] = 0xFFFF; } @@ -7053,14 +6998,14 @@ static void atk4A_typecalc2(void) { u8 flags = 0; int i = 0; - u8 move_type = gBattleMoves[gCurrentMove].type; + u8 moveType = gBattleMoves[gCurrentMove].type; - if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND) { gLastUsedAbility = gBattleMons[gBattlerTarget].ability; gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE); gLastLandedMoves[gBattlerTarget] = 0; - gBattleCommunication[6] = move_type; + gBattleCommunication[6] = moveType; RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); } else @@ -7073,7 +7018,7 @@ static void atk4A_typecalc2(void) else {i += 3; continue;} } - if (gTypeEffectiveness[i] == move_type) + if (gTypeEffectiveness[i] == moveType) { //check type1 if (gTypeEffectiveness[i + 1] == gBattleMons[gBattlerTarget].type1) @@ -7140,7 +7085,7 @@ static void atk4C_getswitchedmondata(void) if (gBattleControllerExecFlags) return; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); gBattlerPartyIndexes[gActiveBattler] = ewram16068arr(gActiveBattler); @@ -7158,7 +7103,7 @@ static void atk4D_switchindataupdate(void) if (gBattleControllerExecFlags) return; - gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]); + gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); oldData = gBattleMons[gActiveBattler]; monData = (u8*)(&gBattleMons[gActiveBattler]); @@ -7201,7 +7146,7 @@ static void atk4E_switchinanim(void) if (gBattleControllerExecFlags) return; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); if (GetBattlerSide(gActiveBattler) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER))) { GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), 2); @@ -7218,7 +7163,7 @@ static void atk4F_jumpifcantswitch(void) register struct Pokemon *party; u8 r7; //0x80 byte is used as a way of telling the function whether to not check status2/status3 - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1) & 0x7F); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1) & 0x7F); if (!(T2_READ_8(gBattlescriptCurrInstr + 1) & 0x80) && ((gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) || (gStatuses3[gActiveBattler] & STATUS3_ROOTED))) @@ -8170,7 +8115,7 @@ _08023170:\n\ _0802317C:\n\ movs r0, 0x7F\n\ ands r0, r2\n\ - bl GetBattleBank\n\ + bl GetBattlerForBattleScript\n\ lsls r0, 24\n\ lsrs r7, r0, 24\n\ ldr r1, _080231A4 @ =gSpecialStatuses\n\ @@ -8366,7 +8311,7 @@ static void atk51_switchhandleorder(void) if (gBattleControllerExecFlags) return; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); switch (T2_READ_8(gBattlescriptCurrInstr + 2)) { case 0: @@ -8415,17 +8360,17 @@ static void atk52_switchineffects(void) { int i; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); sub_80157C4(gActiveBattler); gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler)); gSpecialStatuses[gActiveBattler].flag40 = 0; - if (!(gSideAffecting[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED) && (gSideAffecting[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES) + if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED) && (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES) && gBattleMons[gActiveBattler].type1 != TYPE_FLYING && gBattleMons[gActiveBattler].type2 != TYPE_FLYING && gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE) { u8 spikesDmg; - gSideAffecting[GetBattlerSide(gActiveBattler)] |= SIDE_STATUS_SPIKES_DAMAGED; + gSideStatuses[GetBattlerSide(gActiveBattler)] |= SIDE_STATUS_SPIKES_DAMAGED; spikesDmg = (5 - gSideTimers[GetBattlerSide(gActiveBattler)].spikesAmount) * 2; gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / (spikesDmg); @@ -8451,11 +8396,11 @@ static void atk52_switchineffects(void) if (AbilityBattleEffects(0, gActiveBattler, 0, 0, 0) == 0 && ItemBattleEffects(0, gActiveBattler, 0) == 0) { - gSideAffecting[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); + gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED); for (i = 0; i < gBattlersCount; i++) { - if (gBanksByTurnOrder[i] == gActiveBattler) + if (gBattlerByTurnOrder[i] == gActiveBattler) gActionsByTurnOrder[i] = 0xC; } @@ -8512,7 +8457,7 @@ static void atk55_fanfare(void) static void atk56_playfaintcry(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); BtlController_EmitFaintingCry(0); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -8528,7 +8473,7 @@ static void atk57(void) static void atk58_returntoball(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); BtlController_EmitReturnMonToBall(0, 1); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -8539,9 +8484,9 @@ void atk59_handlelearnnewmove(void) u8* loc1 = T1_READ_PTR(gBattlescriptCurrInstr + 1); u8* loc2 = T1_READ_PTR(gBattlescriptCurrInstr + 5); - u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterID], T2_READ_8(gBattlescriptCurrInstr + 9)); + u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], T2_READ_8(gBattlescriptCurrInstr + 9)); while (ret == 0xFFFE) - ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterID], 0); + ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], 0); if (ret == 0) { @@ -8554,12 +8499,12 @@ void atk59_handlelearnnewmove(void) else { gActiveBattler = GetBattlerAtPosition(0); - if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterID && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) + if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) //what is else if { gActiveBattler = GetBattlerAtPosition(2); - if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterID && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) + if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret); } gBattlescriptCurrInstr = loc1; @@ -8628,7 +8573,7 @@ static void atk5A_yesnoboxlearnmove(void) case 2: if (!gPaletteFade.active) { - ShowSelectMovePokemonSummaryScreen(gPlayerParty, gBattleStruct->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); gBattleStruct->atk5A_StateTracker++; } break; @@ -8642,7 +8587,7 @@ static void atk5A_yesnoboxlearnmove(void) } else { - u16 move = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MOVE1 + move_pos); + u16 move = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MOVE1 + move_pos); if (IsHMMove2(move)) { PrepareStringBattle(0x13F, gActiveBattler); @@ -8662,16 +8607,16 @@ static void atk5A_yesnoboxlearnmove(void) ptr += 4; } ptr[0] = 0xFF; - RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterID], move_pos); - SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterID], gMoveToLearn, move_pos); - if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[0].unk18_b & gBitTable[move_pos])) + RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterMonId], move_pos); + SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterMonId], gMoveToLearn, move_pos); + if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[0].mimickedMoves & gBitTable[move_pos])) { RemoveBattleMonPPBonus(&gBattleMons[0], move_pos); SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, move_pos); } - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlerPartyIndexes[2] == gBattleStruct->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[2].unk18_b & gBitTable[move_pos])) + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[2].mimickedMoves & gBitTable[move_pos])) { RemoveBattleMonPPBonus(&gBattleMons[2], move_pos); SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, move_pos); @@ -8738,7 +8683,7 @@ static void atk5B_yesnoboxstoplearningmove(void) static void atk5C_hitanimation(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) gBattlescriptCurrInstr += 2; else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBattler].substituteHP == 0) @@ -9076,9 +9021,9 @@ static void atk5D_getmoneyreward(void) } */ -static void atk5E_8025A70(void) +static void atk5E(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); switch (gBattleCommunication[0]) { case 0: @@ -9102,16 +9047,16 @@ static void atk5E_8025A70(void) } } -static void atk5F_8025B24(void) +static void atk5F_swapattackerwithtarget(void) { gActiveBattler = gBattlerAttacker; gBattlerAttacker = gBattlerTarget; gBattlerTarget = gActiveBattler; //what is xor... - if (gHitMarker & HITMARKER_PURSUIT_TRAP) - gHitMarker &= ~(HITMARKER_PURSUIT_TRAP); + if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET) + gHitMarker &= ~(HITMARKER_SWAP_ATTACKER_TARGET); else - gHitMarker |= HITMARKER_PURSUIT_TRAP; + gHitMarker |= HITMARKER_SWAP_ATTACKER_TARGET; gBattlescriptCurrInstr++; } @@ -9132,7 +9077,7 @@ static void atk61_drawpartystatussummary(void) if (gBattleControllerExecFlags) return; - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); if (GetBattlerSide(gActiveBattler) == 0) party = gPlayerParty; else @@ -9156,9 +9101,9 @@ static void atk61_drawpartystatussummary(void) gBattlescriptCurrInstr += 2; } -static void atk62_08025C6C(void) +static void atk62_hidepartystatussummary(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); BtlController_EmitHidePartyStatusSummary(0); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -9177,7 +9122,7 @@ static void atk64_statusanimation(void) { if (gBattleControllerExecFlags == 0) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBattler].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) { BtlController_EmitStatusAnimation(0, 0, gBattleMons[gActiveBattler].status1); @@ -9192,7 +9137,7 @@ static void atk65_status2animation(void) if (gBattleControllerExecFlags == 0) { u32 possible_to_anim; - gActiveBattler = GetBattleBank(T1_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T1_READ_8(gBattlescriptCurrInstr + 1)); possible_to_anim = T1_READ_32(gBattlescriptCurrInstr + 2); if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBattler].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) { @@ -9208,7 +9153,7 @@ static void atk66_chosenstatusanimation(void) if (gBattleControllerExecFlags == 0) { u32 status; - gActiveBattler = GetBattleBank(T1_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T1_READ_8(gBattlescriptCurrInstr + 1)); status = T1_READ_32(gBattlescriptCurrInstr + 3); if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBattler].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) { @@ -9273,20 +9218,20 @@ static void atk68_cancelallactions(void) static void atk69_adjustsetdamage(void) //literally a copy of atk07 except theres no rand dmg modifier... { - u8 hold_effect, quality; + u8 holdEffect, param; if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) - hold_effect = gEnigmaBerries[gBattlerTarget].holdEffect, quality = gEnigmaBerries[gBattlerTarget].holdEffectParam; + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect, param = gEnigmaBerries[gBattlerTarget].holdEffectParam; else { - hold_effect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); - quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); } gPotentialItemEffectBattler = gBattlerTarget; - if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) { - RecordItemBattle(gBattlerTarget, hold_effect); + RecordItemEffectBattle(gBattlerTarget, holdEffect); gSpecialStatuses[gBattlerTarget].focusBanded = 1; } if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE) @@ -9316,7 +9261,7 @@ static void atk69_adjustsetdamage(void) //literally a copy of atk07 except there void atk6A_removeitem(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); USED_HELD_ITEMS(gActiveBattler) = gBattleMons[gActiveBattler].item; gBattleMons[gActiveBattler].item = 0; @@ -9778,7 +9723,7 @@ static void atk6E_setatktoplayer0(void) static void atk6F_makevisible(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); BtlController_EmitSpriteInvisibility(0, 0); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -9786,7 +9731,7 @@ static void atk6F_makevisible(void) static void atk70_recordlastability(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); RecordAbilityBattle(gActiveBattler, gLastUsedAbility); gBattlescriptCurrInstr += 1; //buggy, should be += 2, one byte for command, one byte for argument... } @@ -9820,7 +9765,7 @@ static void atk73_hpthresholds(void) s32 result; if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); opposing_bank = gActiveBattler ^ 1; result = gBattleMons[opposing_bank].hp * 100 / gBattleMons[opposing_bank].maxHP; @@ -9847,7 +9792,7 @@ static void atk74_hpthresholds2(void) s32 result; if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); opposing_bank = gActiveBattler ^ 1; hp_switchout = ewram160BCarr(GetBattlerSide(opposing_bank)); //gBattleStruct->HP_OnSwitchout[GetBattlerSide(opposing_bank)]; result = (hp_switchout - gBattleMons[opposing_bank].hp) * 100 / hp_switchout; @@ -9874,7 +9819,7 @@ static void atk75_useitemonopponent(void) static void atk76_various(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); switch (T2_READ_8(gBattlescriptCurrInstr + 2)) { case 0: @@ -9911,9 +9856,9 @@ static void atk76_various(void) { int i; u16* choiced_move; - if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterID) + if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId) goto ACTIVE_0; - if (gBattlerPartyIndexes[2] != gBattleStruct->expGetterID) + if (gBattlerPartyIndexes[2] != gBattleStruct->expGetterMonId) break; if (gBattlerPartyIndexes[0] == gBattlerPartyIndexes[2]) { @@ -10123,14 +10068,14 @@ static void atk7D_setrain(void) static void atk7E_setreflect(void) { - if (gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_REFLECT) + if (gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_REFLECT) { gMoveResultFlags |= MOVE_RESULT_MISSED; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } else { - gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_REFLECT; + gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_REFLECT; gSideTimers[GetBattlerPosition(gBattlerAttacker) & 1].reflectTimer = 5; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2) gBattleCommunication[MULTISTRING_CHOOSER] = 2; @@ -10193,7 +10138,7 @@ static void atk81_trysetrest(void) gBattlescriptCurrInstr = fail_loc; else { - if (gBattleMons[gBattlerTarget].status1 & ((u8)(~STATUS_SLEEP))) + if (gBattleMons[gBattlerTarget].status1 & ((u8)(~STATUS1_SLEEP))) gBattleCommunication[MULTISTRING_CHOOSER] = 1; else gBattleCommunication[MULTISTRING_CHOOSER] = 0; @@ -10293,7 +10238,7 @@ static void atk86_stockpiletobasedamage(void) if (gBattleCommunication[6] != 1) { gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove, - gSideAffecting[GetBattlerPosition(gBattlerTarget) & 1], 0, + gSideStatuses[GetBattlerPosition(gBattlerTarget) & 1], 0, 0, gBattlerAttacker, gBattlerTarget) * gDisableStructs[gBattlerAttacker].stockpileCounter; gBattleStruct->animTurn = gDisableStructs[gBattlerAttacker].stockpileCounter; @@ -10688,7 +10633,7 @@ static void atk90_tryconversiontypechange(void) //randomly changes user's type to one of its moves' type u8 valid_moves = 0; u8 checked_move; - u8 move_type; + u8 moveType; while (valid_moves < 4) { if (gBattleMons[gBattlerAttacker].moves[valid_moves] == 0) @@ -10698,15 +10643,15 @@ static void atk90_tryconversiontypechange(void) for (checked_move = 0; checked_move < valid_moves; checked_move++) { - move_type = gBattleMoves[gBattleMons[gBattlerAttacker].moves[checked_move]].type; - if (move_type == TYPE_MYSTERY) + moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[checked_move]].type; + if (moveType == TYPE_MYSTERY) { if (gBattleMons[gBattlerAttacker].type1 == TYPE_GHOST || gBattleMons[gBattlerAttacker].type2 == TYPE_GHOST) - move_type = TYPE_GHOST; + moveType = TYPE_GHOST; else - move_type = TYPE_NORMAL; + moveType = TYPE_NORMAL; } - if (move_type != gBattleMons[gBattlerAttacker].type1 && move_type != gBattleMons[gBattlerAttacker].type2) + if (moveType != gBattleMons[gBattlerAttacker].type1 && moveType != gBattleMons[gBattlerAttacker].type2) break; } @@ -10721,22 +10666,22 @@ static void atk90_tryconversiontypechange(void) while ((checked_move = Random() & 3) >= valid_moves); - move_type = gBattleMoves[gBattleMons[gBattlerAttacker].moves[checked_move]].type; - if (move_type == TYPE_MYSTERY) + moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[checked_move]].type; + if (moveType == TYPE_MYSTERY) { if (gBattleMons[gBattlerAttacker].type1 == TYPE_GHOST || gBattleMons[gBattlerAttacker].type2 == TYPE_GHOST) - move_type = TYPE_GHOST; + moveType = TYPE_GHOST; else - move_type = TYPE_NORMAL; + moveType = TYPE_NORMAL; } - } while (move_type == gBattleMons[gBattlerAttacker].type1 || move_type == gBattleMons[gBattlerAttacker].type2); + } while (moveType == gBattleMons[gBattlerAttacker].type1 || moveType == gBattleMons[gBattlerAttacker].type2); - gBattleMons[gBattlerAttacker].type1 = move_type; - gBattleMons[gBattlerAttacker].type2 = move_type; + gBattleMons[gBattlerAttacker].type1 = moveType; + gBattleMons[gBattlerAttacker].type2 = moveType; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 3; - gBattleTextBuff1[2] = move_type; + gBattleTextBuff1[2] = moveType; gBattleTextBuff1[3] = 0xFF; gBattlescriptCurrInstr += 5; @@ -10764,14 +10709,14 @@ static void atk91_givepaydaymoney(void) static void atk92_setlightscreen(void) { - if (gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_LIGHTSCREEN) + if (gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_LIGHTSCREEN) { gMoveResultFlags |= MOVE_RESULT_MISSED; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } else { - gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_LIGHTSCREEN; + gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_LIGHTSCREEN; gSideTimers[GetBattlerPosition(gBattlerAttacker) & 1].lightscreenTimer = 5; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2) gBattleCommunication[MULTISTRING_CHOOSER] = 4; @@ -10785,18 +10730,18 @@ static void atk92_setlightscreen(void) static void atk93_tryKO(void) { if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY) - hold_effect = gEnigmaBerries[gBattlerTarget].holdEffect, quality = gEnigmaBerries[gBattlerTarget].holdEffectParam; + holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect, param = gEnigmaBerries[gBattlerTarget].holdEffectParam; else { - hold_effect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); - quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item); + param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item); } gPotentialItemEffectBattler = gBattlerTarget; - if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality) + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) { - RecordItemBattle(gBattlerTarget, hold_effect); + RecordItemEffectBattle(gBattlerTarget, holdEffect); gSpecialStatuses[gBattlerTarget].focusBanded = 1; } @@ -10819,7 +10764,7 @@ static void atk93_tryKO(void) } else { - if (gDisableStructs[gBattlerTarget].bankWithSureHit != gBattlerAttacker || gBattleMons[gBattlerAttacker].level < gBattleMons[gBattlerTarget].level) + if (gDisableStructs[gBattlerTarget].battlerWithSureHit != gBattlerAttacker || gBattleMons[gBattlerAttacker].level < gBattleMons[gBattlerTarget].level) { } @@ -10896,7 +10841,7 @@ _08026BCE:\n\ bcs _08026C0C\n\ ldrb r0, [r5]\n\ movs r1, 0x27\n\ - bl RecordItemBattle\n\ + bl RecordItemEffectBattle\n\ ldr r2, _08026C54 @ =gSpecialStatuses\n\ ldrb r1, [r5]\n\ lsls r0, r1, 2\n\ @@ -11303,7 +11248,7 @@ static void atk98_updatestatusicon(void) if (T2_READ_8(gBattlescriptCurrInstr + 1) != 4) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 2; @@ -11339,7 +11284,7 @@ static void atk99_setmist(void) else { gSideTimers[GetBattlerPosition(gBattlerAttacker) & 1].mistTimer = 5; - gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_MIST; + gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_MIST; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } gBattlescriptCurrInstr++; @@ -11377,7 +11322,7 @@ static void atk9B_transformdataexecution(void) gDisableStructs[gBattlerAttacker].disabledMove = 0; gDisableStructs[gBattlerAttacker].disableTimer1 = 0; gDisableStructs[gBattlerAttacker].transformedMonPersonality = gBattleMons[gBattlerTarget].personality; - gDisableStructs[gBattlerAttacker].unk18_b = 0; + gDisableStructs[gBattlerAttacker].mimickedMoves = 0; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 6; @@ -11440,8 +11385,8 @@ static bool8 IsMoveUncopyable(u16 move) static void atk9D_mimicattackcopy(void) { gChosenMove = 0xFFFF; - if (IsMoveUncopyable(gLastUsedMove[gBattlerTarget]) || gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED - || gLastUsedMove[gBattlerTarget] == 0 || gLastUsedMove[gBattlerTarget] == 0xFFFF) + if (IsMoveUncopyable(gLastMoves[gBattlerTarget]) || gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED + || gLastMoves[gBattlerTarget] == 0 || gLastMoves[gBattlerTarget] == 0xFFFF) { gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } @@ -11450,24 +11395,24 @@ static void atk9D_mimicattackcopy(void) int i; for (i = 0; i < 4; i++) { - if (gBattleMons[gBattlerAttacker].moves[i] == gLastUsedMove[gBattlerTarget]) + if (gBattleMons[gBattlerAttacker].moves[i] == gLastMoves[gBattlerTarget]) break; } if (i == 4) { - gBattleMons[gBattlerAttacker].moves[gCurrMovePos] = gLastUsedMove[gBattlerTarget]; - if (gBattleMoves[gLastUsedMove[gBattlerTarget]].pp < 5) - gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = gBattleMoves[gLastUsedMove[gBattlerTarget]].pp; + gBattleMons[gBattlerAttacker].moves[gCurrMovePos] = gLastMoves[gBattlerTarget]; + if (gBattleMoves[gLastMoves[gBattlerTarget]].pp < 5) + gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = gBattleMoves[gLastMoves[gBattlerTarget]].pp; else gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = 5; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = gLastUsedMove[gBattlerTarget]; - gBattleTextBuff1[3] = uBYTE1_16(gLastUsedMove[gBattlerTarget]); + gBattleTextBuff1[2] = gLastMoves[gBattlerTarget]; + gBattleTextBuff1[3] = uBYTE1_16(gLastMoves[gBattlerTarget]); gBattleTextBuff1[4] = 0xFF; - gDisableStructs[gBattlerAttacker].unk18_b |= gBitTable[gCurrMovePos]; + gDisableStructs[gBattlerAttacker].mimickedMoves |= gBitTable[gCurrMovePos]; gBattlescriptCurrInstr += 5; } else @@ -11825,7 +11770,7 @@ static void atkA3_disablelastusedattack(void) int i; for (i = 0; i < 4; i++) { - if (gBattleMons[gBattlerTarget].moves[i] == gLastUsedMove[gBattlerTarget]) + if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) break; } if (gDisableStructs[gBattlerTarget].disabledMove == 0 && i != 4 && gBattleMons[gBattlerTarget].pp[i] != 0) @@ -11852,10 +11797,10 @@ static void atkA4_trysetencore(void) int i; for (i = 0; i < 4; i++) { - if (gBattleMons[gBattlerTarget].moves[i] == gLastUsedMove[gBattlerTarget]) + if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) break; } - if (gLastUsedMove[gBattlerTarget] == MOVE_STRUGGLE || gLastUsedMove[gBattlerTarget] == MOVE_ENCORE || gLastUsedMove[gBattlerTarget] == MOVE_MIRROR_MOVE) + if (gLastMoves[gBattlerTarget] == MOVE_STRUGGLE || gLastMoves[gBattlerTarget] == MOVE_ENCORE || gLastMoves[gBattlerTarget] == MOVE_MIRROR_MOVE) i = 4; if (gDisableStructs[gBattlerTarget].encoredMove == 0 && i != 4 && gBattleMons[gBattlerTarget].pp[i] != 0) { @@ -12201,7 +12146,7 @@ static void atkA7_setalwayshitflag(void) { gStatuses3[gBattlerTarget] &= ~(STATUS3_ALWAYS_HITS); gStatuses3[gBattlerTarget] |= 0x10; - gDisableStructs[gBattlerTarget].bankWithSureHit = gBattlerAttacker; + gDisableStructs[gBattlerTarget].battlerWithSureHit = gBattlerAttacker; gBattlescriptCurrInstr++; } @@ -12279,7 +12224,7 @@ static u8 AttacksThisTurn(u8 bank, u16 move) //Note: returns 1 if it's a chargin effect = gBattleMoves[move].effect; if (effect == EFFECT_SKULL_BASH || effect == EFFECT_RAZOR_WIND || effect == EFFECT_SKY_ATTACK || effect == EFFECT_SOLARBEAM || effect == EFFECT_FLY || effect == EFFECT_BIDE) { - if ((gHitMarker & HITMARKER_x8000000)) + if ((gHitMarker & HITMARKER_CHARGING)) return 1; } return 2; @@ -12350,12 +12295,12 @@ static void atkAC_remaininghptopower(void) static void atkAD_tryspiteppreduce(void) { - if (gLastUsedMove[gBattlerTarget] != 0 && gLastUsedMove[gBattlerTarget] != 0xFFFF && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)) + if (gLastMoves[gBattlerTarget] != 0 && gLastMoves[gBattlerTarget] != 0xFFFF && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)) { int i; for (i = 0; i < 4; i++) { - if (gLastUsedMove[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) + if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) break; } if (i != 4 && gBattleMons[gBattlerTarget].pp[i] > 1) @@ -12366,8 +12311,8 @@ static void atkAD_tryspiteppreduce(void) gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = gLastUsedMove[gBattlerTarget]; - gBattleTextBuff1[3] = gLastUsedMove[gBattlerTarget] >> 8; + gBattleTextBuff1[2] = gLastMoves[gBattlerTarget]; + gBattleTextBuff1[3] = gLastMoves[gBattlerTarget] >> 8; gBattleTextBuff1[4] = 0xFF; ConvertIntToDecimalStringN(gBattleTextBuff2, lost_pp, 0, 1); gBattleTextBuff2[0] = 0xFD; @@ -12379,7 +12324,7 @@ static void atkAD_tryspiteppreduce(void) gBattleMons[gBattlerTarget].pp[i] -= lost_pp; gActiveBattler = gBattlerTarget; - if (!(gDisableStructs[gActiveBattler].unk18_b & gBitTable[i]) + if (!(gDisableStructs[gActiveBattler].mimickedMoves & gBitTable[i]) && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) { BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]); @@ -12497,7 +12442,7 @@ static void atkB0_trysetspikes(void) } else { - gSideAffecting[side] |= SIDE_STATUS_SPIKES; + gSideStatuses[side] |= SIDE_STATUS_SPIKES; gSideTimers[side].spikesAmount++; gBattlescriptCurrInstr += 5; } @@ -12631,14 +12576,14 @@ static void atkB7_presentdamagecalculation(void) static void atkB8_setsafeguard(void) { - if (gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_SAFEGUARD) + if (gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] & SIDE_STATUS_SAFEGUARD) { gMoveResultFlags |= MOVE_RESULT_MISSED; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } else { - gSideAffecting[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_SAFEGUARD; + gSideStatuses[GetBattlerPosition(gBattlerAttacker) & 1] |= SIDE_STATUS_SAFEGUARD; gSideTimers[GetBattlerPosition(gBattlerAttacker) & 1].safeguardTimer = 5; gBattleCommunication[MULTISTRING_CHOOSER] = 5; } @@ -12718,13 +12663,13 @@ static void atkBA_jumpifnopursuitswitchdmg(void) gBattlerTarget = GetBattlerAtPosition(2); } - if (gActionForBanks[gBattlerTarget] == 0 && gBattlerAttacker == ewram16010arr(gBattlerTarget) && !(gBattleMons[gBattlerTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE)) + if (gActionForBanks[gBattlerTarget] == 0 && gBattlerAttacker == ewram16010arr(gBattlerTarget) && !(gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE)) && gBattleMons[gBattlerAttacker].hp && !gDisableStructs[gBattlerTarget].truantCounter && gChosenMovesByBanks[gBattlerTarget] == MOVE_PURSUIT) { int i; for (i = 0; i < gBattlersCount; i++) { - if (gBanksByTurnOrder[i] == gBattlerTarget) + if (gBattlerByTurnOrder[i] == gBattlerTarget) gActionsByTurnOrder[i] = 11; } gCurrentMove = MOVE_PURSUIT; @@ -12799,13 +12744,13 @@ static void atkBE_rapidspinfree(void) //rapid spin else if (gStatuses3[gBattlerAttacker] & STATUS3_LEECHSEED) { gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED); - gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED_BANK); + gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED_BATTLER); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_LeechSeedFree; } - else if (gSideAffecting[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_SPIKES) + else if (gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_SPIKES) { - gSideAffecting[GetBattlerSide(gBattlerAttacker)] &= ~(SIDE_STATUS_SPIKES); + gSideStatuses[GetBattlerSide(gBattlerAttacker)] &= ~(SIDE_STATUS_SPIKES); gSideTimers[GetBattlerSide(gBattlerAttacker)].spikesAmount = 0; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SpikesFree; @@ -12892,7 +12837,7 @@ static void atkC3_trysetfutureattack(void) gWishFutureKnock.futureSightAttacker[gBattlerTarget] = gBattlerAttacker; gWishFutureKnock.futureSightCounter[gBattlerTarget] = 3; gWishFutureKnock.futureSightDmg[gBattlerTarget] = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove, - gSideAffecting[GetBattlerPosition(gBattlerTarget) & 1], 0, + gSideStatuses[GetBattlerPosition(gBattlerTarget) & 1], 0, 0, gBattlerAttacker, gBattlerTarget); if (gProtectStructs[gBattlerAttacker].helpingHand) @@ -13308,7 +13253,7 @@ static void atkCC_callterrainattack(void) //nature power static void atkCD_cureifburnedparalysedorpoisoned(void) //refresh { - if (gBattleMons[gBattlerAttacker].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) + if (gBattleMons[gBattlerAttacker].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)) { gBattleMons[gBattlerAttacker].status1 = 0; gBattlescriptCurrInstr += 5; @@ -13554,10 +13499,10 @@ static void atkDA_tryswapabilities(void) } } -static void atkDB_tryimprision(void) +static void atkDB_tryimprison(void) { u8 r8 = 0; - if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISIONED)) + if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISONED_OTHERS)) { gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } @@ -13583,7 +13528,7 @@ static void atkDB_tryimprision(void) } if (j != 4) { - gStatuses3[gBattlerAttacker] |= STATUS3_IMPRISIONED; + gStatuses3[gBattlerAttacker] |= STATUS3_IMPRISONED_OTHERS; gBattlescriptCurrInstr += 5; break; } @@ -13621,7 +13566,7 @@ static void atkDD_weightdamagecalculation(void) } #ifdef NONMATCHING -static void atkDE_asistattackselect(void) +static void atkDE_assistattackselect(void) { u32 chooseable_moves_no = 0; struct Pokemon* party; @@ -13676,7 +13621,7 @@ static void atkDE_asistattackselect(void) #else NAKED -static void atkDE_asistattackselect(void) +static void atkDE_assistattackselect(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -13914,7 +13859,7 @@ static void atkE1_trygetintimidatetarget(void) static void atkE2_switchoutabilities(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); switch (gBattleMons[gActiveBattler].ability) { case ABILITY_NATURAL_CURE: @@ -13928,7 +13873,7 @@ static void atkE2_switchoutabilities(void) static void atkE3_jumpifhasnohp(void) { - gActiveBattler = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1)); if (gBattleMons[gActiveBattler].hp == 0) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); else @@ -14117,7 +14062,7 @@ static void atkEC_pursuitrelated(void) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } -static void atkED_snatchsetbanks(void) +static void atkEF_snatchsetbattlers(void) { gEffectBattler = gBattlerAttacker; if (gBattlerAttacker == gBattlerTarget) @@ -14133,8 +14078,8 @@ static void atkEE_removelightscreenreflect(void) //brick break u8 side = GetBattlerSide(gBattlerAttacker) ^ 1; if (gSideTimers[side].reflectTimer || gSideTimers[side].lightscreenTimer) { - gSideAffecting[side] &= ~(SIDE_STATUS_REFLECT); - gSideAffecting[side] &= ~(SIDE_STATUS_LIGHTSCREEN); + gSideStatuses[side] &= ~(SIDE_STATUS_REFLECT); + gSideStatuses[side] &= ~(SIDE_STATUS_LIGHTSCREEN); gSideTimers[side].reflectTimer = 0; gSideTimers[side].lightscreenTimer = 0; gBattleStruct->animTurn = 1; @@ -14223,9 +14168,9 @@ void atkEF_handleballthrow(void) ball_multiplier = sBallCatchBonuses[gLastUsedItem - 2]; odds = (catch_rate * ball_multiplier / 10) * (gBattleMons[gBattlerTarget].maxHP * 3 - gBattleMons[gBattlerTarget].hp * 2) / (3 * gBattleMons[gBattlerTarget].maxHP); - if (gBattleMons[gBattlerTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE)) + if (gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE)) odds *= 2; - if (gBattleMons[gBattlerTarget].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS /*| STATUS_TOXIC_POISON */)) //nice one gf + if (gBattleMons[gBattlerTarget].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS /*| STATUS1_TOXIC_POISON */)) //nice one gf odds = (odds * 15) / 10; if (gLastUsedItem != ITEM_SAFARI_BALL) diff --git a/src/battle_setup.c b/src/battle_setup.c index 2ad57e961..89064b97b 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -32,6 +32,7 @@ #include "constants/opponents.h" #include "constants/songs.h" #include "constants/species.h" +#include "constants/items.h" extern u16 gSpecialVar_Result; @@ -558,7 +559,7 @@ void ScrSpecial_StartWallyTutorialBattle(void) { CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5); ScriptContext2_Enable(); - gMain.savedCallback = c2_exit_to_overworld_1_continue_scripts_restart_music; + gMain.savedCallback = CB2_ReturnToFieldContinueScriptPlayMapMusic; gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL; CreateBattleStartTask(B_TRANSITION_SLICE, 0); } @@ -640,7 +641,7 @@ void CB2_EndScriptedWildBattle(void) if (IsPlayerDefeated(gBattleOutcome) == TRUE) SetMainCallback2(CB2_WhiteOut); else - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } s8 BattleSetup_GetTerrain(void) @@ -871,7 +872,7 @@ static void CB2_GiveStarter(void) *GetVarPointer(VAR_STARTER_MON) = gSpecialVar_Result; starterPoke = GetStarterPokemon(gSpecialVar_Result); - ScriptGiveMon(starterPoke, 5, 0, 0, 0, 0); + ScriptGiveMon(starterPoke, 5, ITEM_NONE, 0, 0, 0); ResetTasks(); sub_80408BC(); SetMainCallback2(CB2_StartFirstBattle); @@ -898,7 +899,7 @@ static void CB2_StartFirstBattle(void) static void CB2_EndFirstBattle(void) { Overworld_ClearSavedMusic(); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } // why not just use the macros? maybe its because they didnt want to uncast const every time? @@ -926,14 +927,14 @@ static bool32 IsPlayerDefeated(u32 battleOutcome) { switch (battleOutcome) { - case BATTLE_LOST: - case BATTLE_DREW: + case B_OUTCOME_LOST: + case B_OUTCOME_DREW: return TRUE; - case BATTLE_WON: - case BATTLE_RAN: - case BATTLE_PLAYER_TELEPORTED: - case BATTLE_POKE_FLED: - case BATTLE_CAUGHT: + case B_OUTCOME_WON: + case B_OUTCOME_RAN: + case B_OUTCOME_PLAYER_TELEPORTED: + case B_OUTCOME_MON_FLED: + case B_OUTCOME_CAUGHT: return FALSE; default: return FALSE; @@ -1107,7 +1108,7 @@ void CB2_EndTrainerBattle(void) { if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT) { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { @@ -1115,7 +1116,7 @@ void CB2_EndTrainerBattle(void) } else { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); SetCurrentTrainerBattledFlag(); } } @@ -1124,7 +1125,7 @@ void CB2_EndTrainerEyeRematchBattle(void) { if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT) { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { @@ -1132,7 +1133,7 @@ void CB2_EndTrainerEyeRematchBattle(void) } else { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); SetCurrentTrainerBattledFlag(); SetTrainerFlagsAfterTrainerEyeRematch(); } diff --git a/src/battle_tower.c b/src/battle_tower.c index 8449b7e42..a5b2df0a6 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1282,7 +1282,7 @@ void sub_81354CC(void) break; } - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void sub_8135534(u8 taskId) @@ -1805,9 +1805,9 @@ void PrintEReaderTrainerGreeting(void) void PrintEReaderTrainerFarewellMessage(void) { - if (gBattleOutcome == BATTLE_DREW) + if (gBattleOutcome == B_OUTCOME_DREW) gStringVar4[0] = EOS; - else if (gBattleOutcome == BATTLE_WON) + else if (gBattleOutcome == B_OUTCOME_WON) PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerWon); else PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerLost); diff --git a/src/battle_util.c b/src/battle_util.c index 1825d7a2c..b1260cd4e 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1,6 +1,8 @@ #include "global.h" #include "battle.h" #include "battle_util.h" +#include "battle_controllers.h" +#include "battle_message.h" #include "data2.h" #include "event_data.h" #include "ewram.h" @@ -28,7 +30,7 @@ extern const u8* gBattlescriptCurrInstr; extern u8 gActiveBattler; extern u8 gBattleBufferB[4][0x200]; extern u8* gSelectionBattleScripts[4]; //battlescript location when you try to choose a move you're not allowed to -extern u16 gLastUsedMove[4]; +extern u16 gLastMoves[4]; extern struct BattlePokemon gBattleMons[4]; extern struct BattleEnigmaBerry gEnigmaBerries[4]; extern u8 gPotentialItemEffectBattler; @@ -40,8 +42,8 @@ extern u8 gBattlersCount; extern u32 gStatuses3[4]; extern u8 gBattlerAttacker; extern u8 gBattlerTarget; -extern u8 gBanksByTurnOrder[4]; -extern u16 gSideAffecting[2]; +extern u8 gBattlerByTurnOrder[4]; +extern u16 gSideStatuses[2]; extern u16 gBattleWeather; extern void (*gBattleMainFunc)(void); extern u8 gAbsentBattlerFlags; @@ -53,7 +55,7 @@ extern s32 gBattleMoveDamage; extern u16 gBattlerPartyIndexes[4]; extern u16 gChosenMovesByBanks[4]; extern s32 gTakenDmg[4]; -extern u8 gTakenDmgBanks[4]; +extern u8 gTakenDmgByBattler[4]; extern u8 gMoveResultFlags; extern u8 gLastUsedAbility; extern u8 gBattleTextBuff2[]; @@ -89,7 +91,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 sub_803FC34(u8 bank); u16 sub_803FBFC(u8 a); void RecordAbilityBattle(u8 bank, u8 ability); -void RecordItemBattle(u8 bank, u8 holdEffect); +void RecordItemEffectBattle(u8 bank, u8 holdEffect); s8 GetPokeFlavourRelation(u32 pid, u8 flavor); extern u8 BattleScript_MoveSelectionDisabledMove[]; @@ -207,12 +209,12 @@ extern u8 gUnknown_081D99A0[]; //disobedient, hits itself #define MULTISTRING_CHOOSER 0x5 #define MSG_DISPLAY 0x7 -u8 GetBattleBank(u8 caseId) +u8 GetBattlerForBattleScript(u8 caseId) { u8 ret = 0; switch (caseId) { - case BS_GET_TARGET: + case BS_TARGET: ret = gBattlerTarget; break; case BS_GET_ATTACKER: @@ -257,7 +259,7 @@ void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move) gBattleMons[bankAtk].pp[i]--; if (!(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[bankAtk].unk18_b & gBitTable[i])) + && !(gDisableStructs[bankAtk].mimickedMoves & gBitTable[i])) { gActiveBattler = bankAtk; BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]); @@ -291,7 +293,7 @@ void PressurePPLoseOnUsingImprision(u8 bankAtk) if (imprisionPos != 4 && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[bankAtk].unk18_b & gBitTable[imprisionPos])) + && !(gDisableStructs[bankAtk].mimickedMoves & gBitTable[imprisionPos])) { gActiveBattler = bankAtk; BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisionPos]); @@ -324,7 +326,7 @@ void PressurePPLoseOnUsingPerishSong(u8 bankAtk) if (perishSongPos != 4 && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[bankAtk].unk18_b & gBitTable[perishSongPos])) + && !(gDisableStructs[bankAtk].mimickedMoves & gBitTable[perishSongPos])) { gActiveBattler = bankAtk; BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBattler].pp[perishSongPos]); @@ -333,7 +335,7 @@ void PressurePPLoseOnUsingPerishSong(u8 bankAtk) } -void MarkAllBufferBanksForExecution(void) // unused +void MarkAllBattlersForControllerExec(void) // unused { s32 i; @@ -481,7 +483,7 @@ u8 TrySetCantSelectMoveBattleScript(void) //msg can't select a move gSelectionBattleScripts[gActiveBattler] = BattleScript_MoveSelectionDisabledMove; limitations++; } - if (move == gLastUsedMove[gActiveBattler] && move != MOVE_STRUGGLE && gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT) + if (move == gLastMoves[gActiveBattler] && move != MOVE_STRUGGLE && gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT) { CancelMultiTurnMoves(gActiveBattler); gSelectionBattleScripts[gActiveBattler] = BattleScript_MoveSelectionTormented; @@ -522,40 +524,36 @@ u8 TrySetCantSelectMoveBattleScript(void) //msg can't select a move return limitations; } -#define MOVE_LIMITATION_ZEROMOVE (1 << 0) -#define MOVE_LIMITATION_PP (1 << 1) -#define MOVE_LIMITATION_DISABLED (1 << 2) -#define MOVE_LIMITATION_TORMENTED (1 << 3) -#define MOVE_LIMITATION_TAUNT (1 << 4) -#define MOVE_LIMITATION_IMPRISION (1 << 5) - -u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) +u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check) { u8 holdEffect; - u16* choicedMove = CHOICED_MOVE(bank); + u16* choicedMove = CHOICED_MOVE(battlerId); s32 i; - if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) - holdEffect = gEnigmaBerries[bank].holdEffect; + + if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[battlerId].holdEffect; else - holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item); - gPotentialItemEffectBattler = bank; - for (i = 0; i < 4; i++) + holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item); + + gPotentialItemEffectBattler = battlerId; + + for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[bank].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE) + if (gBattleMons[battlerId].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE) unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].pp[i] == 0 && check & MOVE_LIMITATION_PP) + if (gBattleMons[battlerId].pp[i] == 0 && check & MOVE_LIMITATION_PP) unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED) + if (gBattleMons[battlerId].moves[i] == gDisableStructs[battlerId].disabledMove && check & MOVE_LIMITATION_DISABLED) unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].moves[i] == gLastUsedMove[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) + if (gBattleMons[battlerId].moves[i] == gLastMoves[battlerId] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[battlerId].status2 & STATUS2_TORMENT) unusableMoves |= gBitTable[i]; - if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0) + if (gDisableStructs[battlerId].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0) unusableMoves |= gBitTable[i]; - if (IsImprisoned(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION) + if (IsImprisoned(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISON) unusableMoves |= gBitTable[i]; - if (gDisableStructs[bank].encoreTimer1 && gDisableStructs[bank].encoredMove != gBattleMons[bank].moves[i]) + if (gDisableStructs[battlerId].encoreTimer1 && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i]) unusableMoves |= gBitTable[i]; - if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[bank].moves[i]) + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[battlerId].moves[i]) unusableMoves |= gBitTable[i]; } return unusableMoves; @@ -563,9 +561,9 @@ u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) bool8 AreAllMovesUnusable(void) { - u8 unusable; - unusable = CheckMoveLimitations(gActiveBattler, 0, 0xFF); - if (unusable == 0xF) //all moves are unusable + u8 unusable = CheckMoveLimitations(gActiveBattler, 0, 0xFF); + + if (unusable == 0xF) // All moves are unusable. { gProtectStructs[gActiveBattler].noValidMoves = 1; gSelectionBattleScripts[gActiveBattler] = BattleScript_NoMovesLeft; @@ -575,33 +573,53 @@ bool8 AreAllMovesUnusable(void) gBattleBufferB[gActiveBattler][3] = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ 1); } else + { gProtectStructs[gActiveBattler].noValidMoves = 0; + } + return (unusable == 0xF); } -u8 IsImprisoned(u8 bank, u16 move) +u8 IsImprisoned(u8 battlerId, u16 move) { - u8 imprisionedMoves = 0; - u8 bankSide = GetBattlerSide(bank); s32 i; + u8 imprisonedMoves = 0; + u8 battlerSide = GetBattlerSide(battlerId); + for (i = 0; i < gBattlersCount; i++) { - if (bankSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISIONED) + if (battlerSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS) { s32 j; - for (j = 0; j < 4; j++) + for (j = 0; j < MAX_MON_MOVES; j++) { if (move == gBattleMons[i].moves[j]) break; } - if (j < 4) - imprisionedMoves++; + if (j < MAX_MON_MOVES) + imprisonedMoves++; } } - return imprisionedMoves; + + return imprisonedMoves; } -u8 UpdateTurnCounters(void) +enum +{ + ENDTURN_ORDER, + ENDTURN_REFLECT, + ENDTURN_LIGHT_SCREEN, + ENDTURN_MIST, + ENDTURN_SAFEGUARD, + ENDTURN_WISH, + ENDTURN_RAIN, + ENDTURN_SANDSTORM, + ENDTURN_SUN, + ENDTURN_HAIL, + ENDTURN_FIELD_COUNT, +}; + +u8 DoFieldEndTurnEffects(void) { u8 effect = 0; s32 i; @@ -615,43 +633,39 @@ u8 UpdateTurnCounters(void) do { - u8 sideBank; + u8 side; - switch (gBattleStruct->turncountersTracker) + switch (gBattleStruct->turnCountersTracker) { - case 0: + case ENDTURN_ORDER: for (i = 0; i < gBattlersCount; i++) { - gBanksByTurnOrder[i] = i; + gBattlerByTurnOrder[i] = i; } for (i = 0; i < gBattlersCount - 1; i++) { s32 j; for (j = i + 1; j < gBattlersCount; j++) { - if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 0)) + if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], 0)) SwapTurnOrder(i, j); } } - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; - case 1: + // fall through + case ENDTURN_REFLECT: while (gBattleStruct->turnSideTracker < 2) { - gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; + gActiveBattler = gBattlerAttacker = side = gBattleStruct->turnSideTracker; - if (gSideAffecting[sideBank] & SIDE_STATUS_REFLECT) + if (gSideStatuses[side] & SIDE_STATUS_REFLECT) { - if (--gSideTimers[sideBank].reflectTimer == 0) + if (--gSideTimers[side].reflectTimer == 0) { - - gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; + gSideStatuses[side] &= ~SIDE_STATUS_REFLECT; BattleScriptExecute(BattleScript_SideStatusWoreOff); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_REFLECT; - gBattleTextBuff1[3] = MOVE_REFLECT >> 8; - gBattleTextBuff1[4] = EOS; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT); effect++; } } @@ -661,26 +675,22 @@ u8 UpdateTurnCounters(void) } if (!effect) { - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; - case 2: + case ENDTURN_LIGHT_SCREEN: while (gBattleStruct->turnSideTracker < 2) { - gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; - if (gSideAffecting[sideBank] & SIDE_STATUS_LIGHTSCREEN) + gActiveBattler = gBattlerAttacker = side = gBattleStruct->turnSideTracker; + if (gSideStatuses[side] & SIDE_STATUS_LIGHTSCREEN) { - if (--gSideTimers[sideBank].lightscreenTimer == 0) + if (--gSideTimers[side].lightscreenTimer == 0) { - gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; + gSideStatuses[side] &= ~SIDE_STATUS_LIGHTSCREEN; BattleScriptExecute(BattleScript_SideStatusWoreOff); - gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_LIGHT_SCREEN; - gBattleTextBuff1[3] = MOVE_LIGHT_SCREEN >> 8; - gBattleTextBuff1[4] = EOS; + gBattleCommunication[MULTISTRING_CHOOSER] = side; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN); effect++; } } @@ -690,24 +700,20 @@ u8 UpdateTurnCounters(void) } if (!effect) { - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; - case 3: + case ENDTURN_MIST: while (gBattleStruct->turnSideTracker < 2) { - gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; - if (gSideTimers[sideBank].mistTimer && --gSideTimers[sideBank].mistTimer == 0) + gActiveBattler = gBattlerAttacker = side = gBattleStruct->turnSideTracker; + if (gSideTimers[side].mistTimer && --gSideTimers[side].mistTimer == 0) { - gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; + gSideStatuses[side] &= ~SIDE_STATUS_MIST; BattleScriptExecute(BattleScript_SideStatusWoreOff); - gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_MIST; - gBattleTextBuff1[3] = MOVE_MIST >> 8; - gBattleTextBuff1[4] = EOS; + gBattleCommunication[MULTISTRING_CHOOSER] = side; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST); effect++; } gBattleStruct->turnSideTracker++; @@ -716,19 +722,19 @@ u8 UpdateTurnCounters(void) } if (!effect) { - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; - case 4: + case ENDTURN_SAFEGUARD: while (gBattleStruct->turnSideTracker < 2) { - gActiveBattler = gBattlerAttacker = sideBank = gBattleStruct->turnSideTracker; - if (gSideAffecting[sideBank] & SIDE_STATUS_SAFEGUARD) + gActiveBattler = gBattlerAttacker = side = gBattleStruct->turnSideTracker; + if (gSideStatuses[side] & SIDE_STATUS_SAFEGUARD) { - if (--gSideTimers[sideBank].safeguardTimer == 0) + if (--gSideTimers[side].safeguardTimer == 0) { - gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD; + gSideStatuses[side] &= ~SIDE_STATUS_SAFEGUARD; BattleScriptExecute(BattleScript_SafeguardEnds); effect++; } @@ -739,14 +745,14 @@ u8 UpdateTurnCounters(void) } if (!effect) { - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; - case 5: + case ENDTURN_WISH: while (gBattleStruct->turnSideTracker < gBattlersCount) { - gActiveBattler = gBanksByTurnOrder[gBattleStruct->turnSideTracker]; + gActiveBattler = gBattlerByTurnOrder[gBattleStruct->turnSideTracker]; if (gWishFutureKnock.wishCounter[gActiveBattler] && --gWishFutureKnock.wishCounter[gActiveBattler] == 0 && gBattleMons[gActiveBattler].hp) { gBattlerTarget = gActiveBattler; @@ -759,10 +765,10 @@ u8 UpdateTurnCounters(void) } if (!effect) { - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; } break; - case 6: + case ENDTURN_RAIN: if (gBattleWeather & WEATHER_RAIN_ANY) { if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) @@ -779,15 +785,20 @@ u8 UpdateTurnCounters(void) gBattleCommunication[MULTISTRING_CHOOSER] = 0; } else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + { gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } else + { gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + BattleScriptExecute(BattleScript_RainContinuesOrEnds); effect++; } - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; break; - case 7: + case ENDTURN_SANDSTORM: if (gBattleWeather & WEATHER_SANDSTORM_ANY) { if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) @@ -796,16 +807,18 @@ u8 UpdateTurnCounters(void) gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; } else + { gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + } gBattleStruct->animArg1 = B_ANIM_SANDSTORM_CONTINUES; gBattleCommunication[MULTISTRING_CHOOSER] = 0; BattleScriptExecute(gBattlescriptCurrInstr); effect++; } - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; break; - case 8: + case ENDTURN_SUN: if (gBattleWeather & WEATHER_SUN_ANY) { if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) @@ -814,14 +827,16 @@ u8 UpdateTurnCounters(void) gBattlescriptCurrInstr = BattleScript_SunlightFaded; } else + { gBattlescriptCurrInstr = BattleScript_SunlightContinues; + } BattleScriptExecute(gBattlescriptCurrInstr); effect++; } - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; break; - case 9: + case ENDTURN_HAIL: if (gBattleWeather & WEATHER_HAIL) { if (--gWishFutureKnock.weatherDuration == 0) @@ -830,16 +845,18 @@ u8 UpdateTurnCounters(void) gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; } else + { gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + } gBattleStruct->animArg1 = B_ANIM_HAIL_CONTINUES; gBattleCommunication[MULTISTRING_CHOOSER] = 1; BattleScriptExecute(gBattlescriptCurrInstr); effect++; } - gBattleStruct->turncountersTracker++; + gBattleStruct->turnCountersTracker++; break; - case 10: + case ENDTURN_FIELD_COUNT: effect++; break; } @@ -849,23 +866,47 @@ u8 UpdateTurnCounters(void) #define TURNBASED_MAX_CASE 19 +enum +{ + ENDTURN_INGRAIN, + ENDTURN_ABILITIES, + ENDTURN_ITEMS1, + ENDTURN_LEECH_SEED, + ENDTURN_POISON, + ENDTURN_BAD_POISON, + ENDTURN_BURN, + ENDTURN_NIGHTMARES, + ENDTURN_CURSE, + ENDTURN_WRAP, + ENDTURN_UPROAR, + ENDTURN_THRASH, + ENDTURN_DISABLE, + ENDTURN_ENCORE, + ENDTURN_LOCK_ON, + ENDTURN_CHARGE, + ENDTURN_TAUNT, + ENDTURN_YAWN, + ENDTURN_ITEMS2, + ENDTURN_BATTLER_COUNT +}; + u8 TurnBasedEffects(void) { u8 effect = 0; gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); - while (gBattleStruct->turnEffectsBank < gBattlersCount && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE) + while (gBattleStruct->turnEffectsBattlerId < gBattlersCount && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE) { - gActiveBattler = gBattlerAttacker = gBanksByTurnOrder[gBattleStruct->turnEffectsBank]; + gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBattlerId]; if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) { - gBattleStruct->turnEffectsBank++; + gBattleStruct->turnEffectsBattlerId++; } else { switch (gBattleStruct->turnEffectsTracker) { - case 0: // ingrain + case ENDTURN_INGRAIN: // ingrain if ((gStatuses3[gActiveBattler] & STATUS3_ROOTED) && gBattleMons[gActiveBattler].hp != gBattleMons[gActiveBattler].maxHP && gBattleMons[gActiveBattler].hp != 0) @@ -879,25 +920,27 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 1: // end turn abilities + case ENDTURN_ABILITIES: // end turn abilities if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBattler, 0, 0, 0)) effect++; gBattleStruct->turnEffectsTracker++; break; - case 2: // item effects - if (ItemBattleEffects(1, gActiveBattler, 0)) + case ENDTURN_ITEMS1: // item effects + if (ItemBattleEffects(1, gActiveBattler, FALSE)) effect++; gBattleStruct->turnEffectsTracker++; break; - case 18: // item effects again - if (ItemBattleEffects(1, gActiveBattler, 1)) + case ENDTURN_ITEMS2: // item effects again + if (ItemBattleEffects(1, gActiveBattler, TRUE)) effect++; gBattleStruct->turnEffectsTracker++; break; - case 3: // leech seed - if (gStatuses3[gActiveBattler] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK].hp != 0 && gBattleMons[gActiveBattler].hp != 0) + case ENDTURN_LEECH_SEED: // leech seed + if ((gStatuses3[gActiveBattler] & STATUS3_LEECHSEED) + && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER].hp != 0 + && gBattleMons[gActiveBattler].hp != 0) { - gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the bank that receives HP + gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver. gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -908,8 +951,8 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 4: // poison - if ((gBattleMons[gActiveBattler].status1 & STATUS_POISON) && gBattleMons[gActiveBattler].hp != 0) + case ENDTURN_POISON: // poison + if ((gBattleMons[gActiveBattler].status1 & STATUS1_POISON) && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; if (gBattleMoveDamage == 0) @@ -919,13 +962,13 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 5: // toxic poison - if ((gBattleMons[gActiveBattler].status1 & STATUS_TOXIC_POISON) && gBattleMons[gActiveBattler].hp != 0) + case ENDTURN_BAD_POISON: // toxic poison + if ((gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON) && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - if ((gBattleMons[gActiveBattler].status1 & 0xF00) != 0xF00) //not 16 turns + if ((gBattleMons[gActiveBattler].status1 & 0xF00) != 0xF00) // not 16 turns gBattleMons[gActiveBattler].status1 += 0x100; gBattleMoveDamage *= (gBattleMons[gActiveBattler].status1 & 0xF00) >> 8; BattleScriptExecute(BattleScript_PoisonTurnDmg); @@ -933,8 +976,8 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 6: // burn - if ((gBattleMons[gActiveBattler].status1 & STATUS_BURN) && gBattleMons[gActiveBattler].hp != 0) + case ENDTURN_BURN: // burn + if ((gBattleMons[gActiveBattler].status1 & STATUS1_BURN) && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; if (gBattleMoveDamage == 0) @@ -944,7 +987,7 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 7: // spooky nightmares + case ENDTURN_NIGHTMARES: // spooky nightmares if ((gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBattler].hp != 0) { // missing sleep check @@ -956,7 +999,7 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 8: // curse + case ENDTURN_CURSE: // curse if ((gBattleMons[gActiveBattler].status2 & STATUS2_CURSED) && gBattleMons[gActiveBattler].hp != 0) { gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4; @@ -967,7 +1010,7 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 9: // wrap + case ENDTURN_WRAP: // wrap if ((gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBattler].hp != 0) { gBattleMons[gActiveBattler].status2 -= 0x2000; @@ -975,8 +1018,8 @@ u8 TurnBasedEffects(void) { gBattleStruct->animArg1 = ewram16004arr(0, gActiveBattler); gBattleStruct->animArg2 = ewram16004arr(1, gActiveBattler); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; + gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = B_BUFF_MOVE; gBattleTextBuff1[2] = ewram16004arr(0, gActiveBattler); gBattleTextBuff1[3] = ewram16004arr(1, gActiveBattler); gBattleTextBuff1[4] = EOS; @@ -999,15 +1042,15 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 10: // uproar + case ENDTURN_UPROAR: // uproar if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR) { for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) { - if ((gBattleMons[gBattlerAttacker].status1 & STATUS_SLEEP) + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) && gBattleMons[gBattlerAttacker].ability != ABILITY_SOUNDPROOF) { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS_SLEEP); + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); gBattleCommunication[MULTISTRING_CHOOSER] = 1; BattleScriptExecute(BattleScript_MonWokeUpInUproar); @@ -1048,7 +1091,7 @@ u8 TurnBasedEffects(void) if (effect != 2) gBattleStruct->turnEffectsTracker++; break; - case 11: // thrash + case ENDTURN_THRASH: // thrash if (gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE) { gBattleMons[gActiveBattler].status2 -= 0x400; @@ -1070,11 +1113,11 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 12: // disable + case ENDTURN_DISABLE: // disable if (gDisableStructs[gActiveBattler].disableTimer1 != 0) { - int i; - for (i = 0; i < 4; i++) + s32 i; + for (i = 0; i < MAX_MON_MOVES; i++) { if (gDisableStructs[gActiveBattler].disabledMove == gBattleMons[gActiveBattler].moves[i]) break; @@ -1093,7 +1136,7 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 13: // encore + case ENDTURN_ENCORE: // encore if (gDisableStructs[gActiveBattler].encoreTimer1 != 0) { if (gBattleMons[gActiveBattler].moves[gDisableStructs[gActiveBattler].encoredMovePos] != gDisableStructs[gActiveBattler].encoredMove) // pokemon does not have the encored move anymore @@ -1112,26 +1155,26 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 14: // lock-on decrement + case ENDTURN_LOCK_ON: // lock-on decrement if (gStatuses3[gActiveBattler] & STATUS3_ALWAYS_HITS) gStatuses3[gActiveBattler] -= 0x8; gBattleStruct->turnEffectsTracker++; break; - case 15: // charge + case ENDTURN_CHARGE: // charge if (gDisableStructs[gActiveBattler].chargeTimer1 && --gDisableStructs[gActiveBattler].chargeTimer1 == 0) gStatuses3[gActiveBattler] &= ~STATUS3_CHARGED_UP; gBattleStruct->turnEffectsTracker++; break; - case 16: // taunt + case ENDTURN_TAUNT: // taunt if (gDisableStructs[gActiveBattler].tauntTimer1) gDisableStructs[gActiveBattler].tauntTimer1--; gBattleStruct->turnEffectsTracker++; break; - case 17: // yawn + case ENDTURN_YAWN: // yawn if (gStatuses3[gActiveBattler] & STATUS3_YAWN) { gStatuses3[gActiveBattler] -= 0x800; - if (!(gStatuses3[gActiveBattler] & STATUS3_YAWN) && !(gBattleMons[gActiveBattler].status1 & STATUS_ANY) + if (!(gStatuses3[gActiveBattler] & STATUS3_YAWN) && !(gBattleMons[gActiveBattler].status1 & STATUS1_ANY) && gBattleMons[gActiveBattler].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gActiveBattler].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBattler)) { @@ -1146,9 +1189,9 @@ u8 TurnBasedEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case 19: // done + case ENDTURN_BATTLER_COUNT: // done gBattleStruct->turnEffectsTracker = 0; - gBattleStruct->turnEffectsBank++; + gBattleStruct->turnEffectsBattlerId++; break; } if (effect != 0) @@ -1162,17 +1205,20 @@ u8 TurnBasedEffects(void) bool8 HandleWishPerishSongOnTurnEnd(void) { gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); - switch (gBattleStruct->sub80170DC_Tracker) + + switch (gBattleStruct->wishPerishSongState) { case 0: // future sight - while (gBattleStruct->sub80170DC_Bank < gBattlersCount) + while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount) { - gActiveBattler = gBattleStruct->sub80170DC_Bank; + gActiveBattler = gBattleStruct->wishPerishSongBattlerId; if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) - gBattleStruct->sub80170DC_Bank++; + { + gBattleStruct->wishPerishSongBattlerId++; + } else { - gBattleStruct->sub80170DC_Bank++; + gBattleStruct->wishPerishSongBattlerId++; if (gWishFutureKnock.futureSightCounter[gActiveBattler] && --gWishFutureKnock.futureSightCounter[gActiveBattler] == 0 && gBattleMons[gActiveBattler].hp) { if (gWishFutureKnock.futureSightMove[gActiveBattler] == MOVE_FUTURE_SIGHT) @@ -1193,17 +1239,17 @@ bool8 HandleWishPerishSongOnTurnEnd(void) } } } - gBattleStruct->sub80170DC_Tracker = 1; - gBattleStruct->sub80170DC_Bank = 0; + gBattleStruct->wishPerishSongState = 1; + gBattleStruct->wishPerishSongBattlerId = 0; case 1: // perish song - while (gBattleStruct->sub80170DC_Bank < gBattlersCount) + while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount) { - gActiveBattler = gBattlerAttacker = gBanksByTurnOrder[gBattleStruct->sub80170DC_Bank]; + gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->wishPerishSongBattlerId]; if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) - gBattleStruct->sub80170DC_Bank++; + gBattleStruct->wishPerishSongBattlerId++; else { - gBattleStruct->sub80170DC_Bank++; + gBattleStruct->wishPerishSongBattlerId++; if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG) { gBattleTextBuff1[0] = 0xFD; @@ -1333,11 +1379,11 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case 1: // check being asleep - if (gBattleMons[gBattlerAttacker].status1 & STATUS_SLEEP) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) { if (UproarWakeUpCheck(gBattlerAttacker)) { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS_SLEEP); + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = 1; @@ -1351,11 +1397,11 @@ u8 AtkCanceller_UnableToUseMove(void) toSub = 2; else toSub = 1; - if ((gBattleMons[gBattlerAttacker].status1 & STATUS_SLEEP) < toSub) - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS_SLEEP); + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) < toSub) + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); else gBattleMons[gBattlerAttacker].status1 -= toSub; - if (gBattleMons[gBattlerAttacker].status1 & STATUS_SLEEP) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) { if (gCurrentMove != MOVE_SNORE && gCurrentMove != MOVE_SLEEP_TALK) { @@ -1377,7 +1423,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case 2: // check being frozen - if (gBattleMons[gBattlerAttacker].status1 & STATUS_FREEZE) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE) { if (Random() % 5) { @@ -1394,7 +1440,7 @@ u8 AtkCanceller_UnableToUseMove(void) } else // unfreeze { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS_FREEZE); + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; gBattleCommunication[MULTISTRING_CHOOSER] = 0; @@ -1504,7 +1550,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case 10: // paralysis - if (gBattleMons[gBattlerAttacker].status1 & STATUS_PARALYSIS && (Random() % 4) == 0) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS && (Random() % 4) == 0) { gProtectStructs[gBattlerAttacker].prlzImmobility = 1; CancelMultiTurnMoves(gBattlerAttacker); @@ -1545,7 +1591,7 @@ u8 AtkCanceller_UnableToUseMove(void) { gCurrentMove = MOVE_BIDE; *bideDmg = gTakenDmg[gBattlerAttacker] * 2; - gBattlerTarget = gTakenDmgBanks[gBattlerAttacker]; + gBattlerTarget = gTakenDmgByBattler[gBattlerAttacker]; if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) gBattlerTarget = GetMoveTarget(MOVE_BIDE, 1); gBattlescriptCurrInstr = BattleScript_BideAttack; @@ -1558,11 +1604,11 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case 13: // move thawing - if (gBattleMons[gBattlerAttacker].status1 & STATUS_FREEZE) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE) { if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT) { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS_FREEZE); + gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; gBattleCommunication[MULTISTRING_CHOOSER] = 1; @@ -1873,17 +1919,17 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_SHED_SKIN: - if ((gBattleMons[bank].status1 & STATUS_ANY) && (Random() % 3) == 0) + if ((gBattleMons[bank].status1 & STATUS1_ANY) && (Random() % 3) == 0) { - if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON)) + if (gBattleMons[bank].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON)) StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); gBattleMons[bank].status1 = 0; // BUG: The nightmare status does not get cleared here. This was fixed in Emerald. @@ -1955,7 +2001,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_FLASH_FIRE: - if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS_FREEZE)) + if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS1_FREEZE)) { if (!(eFlashFireArr.arr[bank] & 1)) { @@ -2232,7 +2278,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) switch (gBattleMons[bank].ability) { case ABILITY_IMMUNITY: - if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00? + if (gBattleMons[bank].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00? { StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); effect = 1; @@ -2246,7 +2292,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_LIMBER: - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) { StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); effect = 1; @@ -2254,7 +2300,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) break; case ABILITY_INSOMNIA: case ABILITY_VITAL_SPIRIT: - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) { gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); @@ -2262,14 +2308,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_WATER_VEIL: - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) { StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); effect = 1; } break; case ABILITY_MAGMA_ARMOR: - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); effect = 1; @@ -2751,7 +2797,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleMoveDamage *= -1; BattleScriptExecute(BattleScript_ItemHealHP_End2); effect = ITEM_HP_CHANGE; - RecordItemBattle(bank, bankHoldEffect); + RecordItemEffectBattle(bank, bankHoldEffect); } break; // nice copy/paste there gamefreak, making a function for confuse berries was too much eh? @@ -2989,41 +3035,41 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } break; case HOLD_EFFECT_CURE_PAR: - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) { - gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); + gBattleMons[bank].status1 &= ~(STATUS1_PARALYSIS); BattleScriptExecute(BattleScript_BerryCurePrlzEnd2); effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_PSN: - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + if (gBattleMons[bank].status1 & STATUS1_PSN_ANY) { - gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); + gBattleMons[bank].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER); BattleScriptExecute(BattleScript_BerryCurePsnEnd2); effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_BRN: - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) { - gBattleMons[bank].status1 &= ~(STATUS_BURN); + gBattleMons[bank].status1 &= ~(STATUS1_BURN); BattleScriptExecute(BattleScript_BerryCureBrnEnd2); effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_FRZ: - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) { - gBattleMons[bank].status1 &= ~(STATUS_FREEZE); + gBattleMons[bank].status1 &= ~(STATUS1_FREEZE); BattleScriptExecute(BattleScript_BerryCureFrzEnd2); effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_SLP: - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) { - gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + gBattleMons[bank].status1 &= ~(STATUS1_SLEEP); gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); BattleScriptExecute(BattleScript_BerryCureSlpEnd2); effect = ITEM_STATUS_CHANGE; @@ -3038,31 +3084,31 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } break; case HOLD_EFFECT_CURE_STATUS: - if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) + if (gBattleMons[bank].status1 & STATUS1_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) { i = 0; - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + if (gBattleMons[bank].status1 & STATUS1_PSN_ANY) { StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); i++; } - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) { gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); i++; } - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) { StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); i++; } - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) { StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); i++; } - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); i++; @@ -3105,7 +3151,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) MarkBattlerForControllerExec(gActiveBattler); break; case ITEM_PP_CHANGE: - if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].unk18_b & gBitTable[i])) + if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].mimickedMoves & gBitTable[i])) gBattleMons[bank].pp[i] = changedPP; break; } @@ -3131,45 +3177,45 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) switch (bankHoldEffect) { case HOLD_EFFECT_CURE_PAR: - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) { - gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); + gBattleMons[bank].status1 &= ~(STATUS1_PARALYSIS); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureParRet; effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_PSN: - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + if (gBattleMons[bank].status1 & STATUS1_PSN_ANY) { - gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); + gBattleMons[bank].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet; effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_BRN: - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) { - gBattleMons[bank].status1 &= ~(STATUS_BURN); + gBattleMons[bank].status1 &= ~(STATUS1_BURN); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet; effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_FRZ: - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) { - gBattleMons[bank].status1 &= ~(STATUS_FREEZE); + gBattleMons[bank].status1 &= ~(STATUS1_FREEZE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_CURE_SLP: - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) { - gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + gBattleMons[bank].status1 &= ~(STATUS1_SLEEP); gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet; @@ -3197,26 +3243,26 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } break; case HOLD_EFFECT_CURE_STATUS: - if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) + if (gBattleMons[bank].status1 & STATUS1_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) { - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + if (gBattleMons[bank].status1 & STATUS1_PSN_ANY) { StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); } - if (gBattleMons[bank].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS1_SLEEP) { gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); } - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS1_PARALYSIS) { StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); } - if (gBattleMons[bank].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS1_BURN) { StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); } - if (gBattleMons[bank].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS1_FREEZE) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); } @@ -3340,13 +3386,13 @@ void unref_sub_801B40C(void) { gSideTimers[GetBattlerPosition(bank) & 1].field3 = (bank) | ((bank + 2) << 4); gSideTimers[GetBattlerPosition(bank) & 1].field4 = sCombinedMoves[i].newMove; - gSideAffecting[GetBattlerPosition(bank) & 1] |= SIDE_STATUS_X4; + gSideStatuses[GetBattlerPosition(bank) & 1] |= SIDE_STATUS_X4; } if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank + 2] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank]) { gSideTimers[GetBattlerPosition(bank) & 1].field3 = (bank + 2) | ((bank) << 4); gSideTimers[GetBattlerPosition(bank) & 1].field4 = sCombinedMoves[i].newMove; - gSideAffecting[GetBattlerPosition(bank) & 1] |= SIDE_STATUS_X4; + gSideStatuses[GetBattlerPosition(bank) & 1] |= SIDE_STATUS_X4; } bank++; } @@ -3477,7 +3523,7 @@ u8 IsMonDisobedient(void) // is not obedient if (gCurrentMove == MOVE_RAGE) gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_RAGE); - if (gBattleMons[gBattlerAttacker].status1 & STATUS_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) + if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) { gBattlescriptCurrInstr = gUnknown_081D995F; return 1; @@ -3515,7 +3561,7 @@ u8 IsMonDisobedient(void) obedienceLevel = gBattleMons[gBattlerAttacker].level - obedienceLevel; calc = (Random() & 255); - if (calc < obedienceLevel && !(gBattleMons[gBattlerAttacker].status1 & STATUS_ANY) && gBattleMons[gBattlerAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBattlerAttacker].ability != ABILITY_INSOMNIA) + if (calc < obedienceLevel && !(gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY) && gBattleMons[gBattlerAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBattlerAttacker].ability != ABILITY_INSOMNIA) { // try putting asleep int i; diff --git a/src/berry.c b/src/berry.c index 162615086..ad0a31b28 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1072,8 +1072,8 @@ extern const u8 gSpriteImage_UnusedCherry[]; extern const u16 gSpritePalette_UnusedCherry[]; extern u8 gUnknown_Debug_839B6CE[]; -static const u8 gUnknown_Debug_083F7F84[] = _("ใใจใใใใใใใใฎใฟ"); -static const u8 gUnknown_Debug_083F7F90[] = _("ใใ ใใพใใใใฏใคใกใ
ใ"); +static const u8 gUnknown_Debug_083F7F84[] = DTR("ใใจใใใใใใใใฎใฟ", "An exterior BERRY"); +static const u8 gUnknown_Debug_083F7F90[] = DTR("ใใ ใใพใใใใฏใคใกใ
ใ", "Currently under development"); void debug_sub_80C2C18(const u8 *name, u8 holdEffect, u8 holdEffectParam) { diff --git a/src/berry_blender.c b/src/berry_blender.c index 3ccc4ab5d..a0300ed1f 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -1258,7 +1258,7 @@ static void sub_804E9F8(void) break; case 102: if (!gPaletteFade.active) - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); break; } RunTasks(); @@ -2480,7 +2480,7 @@ static void sub_8050E30(void) break; case 12: if (gReceivedRemoteLinkPlayers == 0) - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); break; } @@ -2529,7 +2529,7 @@ static void sub_80510E8(void) if (gBerryBlenderData->field_7C == 0) SetMainCallback2(DoBerryBlending); else - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } break; } @@ -3271,6 +3271,13 @@ void debug_sub_80524BC(void) SetMainCallback2(sub_8052AF8); } +// Partially fixes the clipping on longer names. +#if DEBUG_TRANSLATE && DEBUG +# define BLENDER_DEBUG_BERRY_LEN 12 +#else +# define BLENDER_DEBUG_BERRY_LEN 6 +#endif + static void BlenderDebug_PrintBerryData(void) { u8 text[128]; @@ -3294,8 +3301,8 @@ static void BlenderDebug_PrintBerryData(void) else { CopyItemName(sBlenderDebug.berries[i] + 133, &text[0]); - text[6] = CHAR_SPACE; - text[7] = EOS; + text[BLENDER_DEBUG_BERRY_LEN] = CHAR_SPACE; + text[BLENDER_DEBUG_BERRY_LEN + 1] = EOS; } var = (i * 3) + 3; Menu_PrintText(text, 2, var); @@ -3318,7 +3325,7 @@ static void BlenderDebug_PrintBerryData(void) ConvertIntToDecimalStringN(&text[15], gBerries[sBlenderDebug.berries[i]].smoothness, 2, 2); text[17] = EOS; - Menu_PrintText(text, 7, var); + Menu_PrintText(text, BLENDER_DEBUG_BERRY_LEN + 1, var); } if (sBlenderDebug.pokeblock.color != 0) { @@ -3343,7 +3350,7 @@ static void BlenderDebug_PrintBerryData(void) ConvertIntToHexStringN(&text[15], sBlenderDebug.feel, 2, 2); text[17] = EOS; - Menu_PrintText(text, 7, 17); + Menu_PrintText(text, BLENDER_DEBUG_BERRY_LEN + 1, 17); } } diff --git a/src/bike.c b/src/bike.c index b1176997b..1f5d45418 100644 --- a/src/bike.c +++ b/src/bike.c @@ -20,6 +20,7 @@ extern u8 gUnknown_020297ED; u8 debug_sub_805F2B0(u8); #endif +// this file's functions static void MovePlayerOnMachBike(u8, u16, u16); static u8 GetMachBikeTransition(u8 *); static void MachBikeTransition_FaceDirection(u8); @@ -61,6 +62,8 @@ static u8 CanBikeFaceDirOnMetatile(u8, u8); static bool8 WillPlayerCollideWithCollision(u8, u8); static void Bike_SetBikeStill(void); +// const rom data + /* A bike transition is a type of callback for the bike that actually modifies the bicycle's direction or momentum or otherwise movement. @@ -123,7 +126,7 @@ static const u8 sAcroBikeJumpTimerList[] = {4, 0}; // this is a list of history inputs to do in order to do the check to retrieve a jump direction for acro bike. it seems to be an extensible list, so its possible that Game Freak may have intended for the Acro Bike to have more complex tricks at some point. The final list only has the acro jump. static const struct BikeHistoryInputInfo sAcroBikeTricksList[] = { - // the 0xF is a mask performed with each byte of the array in order to perform the check on only the last entry of the history list, otherwise the check wouldnt work as there can be 0xF0 as opposed to 0x0F. + // the 0xF is a mask performed with each byte of the array in order to perform the check on only the last entry of the history list, otherwise the check wouldn't work as there can be 0xF0 as opposed to 0x0F. {DIR_SOUTH, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_SOUTH}, {DIR_NORTH, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_NORTH}, {DIR_WEST, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_WEST}, @@ -630,7 +633,7 @@ static void AcroBikeTransition_WheelieHoppingMoving(u8 direction) return; } collision = get_some_collision(direction); - //TODO: Try to get rid of this goto + // TODO: Try to get rid of this goto if (collision == 0 || collision == 9) { goto derp; @@ -647,7 +650,7 @@ static void AcroBikeTransition_WheelieHoppingMoving(u8 direction) } else { - derp: + derp: PlayerMovingHoppingWheelie(direction); } } @@ -755,7 +758,7 @@ static void AcroBikeTransition_WheelieRisingMoving(u8 direction) static void AcroBikeTransition_WheelieLoweringMoving(u8 direction) { - u8 var; + u8 collision; struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0) @@ -763,12 +766,12 @@ static void AcroBikeTransition_WheelieLoweringMoving(u8 direction) PlayerEndWheelie(playerEventObj->movementDirection); return; } - var = get_some_collision(direction); - if (var > 0 && var < 12) + collision = get_some_collision(direction); + if (collision > 0 && collision < 12) { - if (var == 6) + if (collision == 6) PlayerJumpLedge(direction); - else if (var < 5 || var > 8) + else if (collision < 5 || collision > 8) PlayerEndWheelie(direction); return; } diff --git a/src/cable_club.c b/src/cable_club.c index b030d8cc2..28bf3b759 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -940,7 +940,7 @@ void unref_sub_8083BB0(void) void sub_8083BDC(void) { - TrainerCard_ShowLinkCard(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music); + TrainerCard_ShowLinkCard(gSpecialVar_0x8006, CB2_ReturnToFieldContinueScriptPlayMapMusic); } bool32 sub_8083BF4(u8 linkPlayerIndex) diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c index e4ae70c0b..760887834 100644 --- a/src/calculate_base_damage.c +++ b/src/calculate_base_damage.c @@ -153,7 +153,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de if (attackerHoldEffect == gHoldEffectToType[i][0] && type == gHoldEffectToType[i][1]) { - if (TYPE_IS_PHYSICAL(type)) + if (IS_TYPE_PHYSICAL(type)) attack = (attack * (attackerHoldEffectParam + 100)) / 100; else spAttack = (spAttack * (attackerHoldEffectParam + 100)) / 100; @@ -204,7 +204,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de if (gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION) defense /= 2; - if (TYPE_IS_PHYSICAL(type)) // type < TYPE_MYSTERY + if (IS_TYPE_PHYSICAL(type)) // type < TYPE_MYSTERY { if (gCritMultiplier == 2) { @@ -232,7 +232,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de damage = damage / damageHelper; damage /= 50; - if ((attacker->status1 & STATUS_BURN) && attacker->ability != ABILITY_GUTS) + if ((attacker->status1 & STATUS1_BURN) && attacker->ability != ABILITY_GUTS) damage /= 2; if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1) @@ -254,7 +254,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de if (type == TYPE_MYSTERY) damage = 0; // is ??? type. does 0 damage. - if (TYPE_IS_SPECIAL(type)) // type > TYPE_MYSTERY + if (IS_TYPE_SPECIAL(type)) // type > TYPE_MYSTERY { if (gCritMultiplier == 2) { diff --git a/src/clock.c b/src/clock.c index fceccdfcb..3bea39754 100644 --- a/src/clock.c +++ b/src/clock.c @@ -1,21 +1,20 @@ #include "global.h" #include "clock.h" -#include "berry.h" -#include "dewford_trend.h" #include "event_data.h" +#include "rtc.h" +#include "time_events.h" #include "field_specials.h" -#include "field_weather.h" #include "lottery_corner.h" +#include "dewford_trend.h" +#include "tv.h" +#include "field_weather.h" +#include "berry.h" #include "main.h" #include "overworld.h" -#include "rtc.h" -#include "time_events.h" -#include "tv.h" #include "wallclock.h" -static void UpdatePerDay(struct Time *time); -static void UpdatePerMinute(struct Time *time); -static void ReturnFromStartWallClock(void); +static void UpdatePerDay(struct Time *localTime); +static void UpdatePerMinute(struct Time *localTime); void InitTimeBasedEvents(void) { @@ -35,50 +34,49 @@ void DoTimeBasedEvents(void) } } -static void UpdatePerDay(struct Time *time) +static void UpdatePerDay(struct Time *localTime) { u16 *varPtr = GetVarPointer(VAR_DAYS); int days = *varPtr; - u16 newDays; + u16 daysSince; - if (days != time->days && days <= time->days) + if (days != localTime->days && days <= localTime->days) { - newDays = time->days - days; + daysSince = localTime->days - days; ClearDailyFlags(); - UpdateDewfordTrendPerDay(newDays); - UpdateTVShowsPerDay(newDays); - UpdateWeatherPerDay(newDays); - UpdatePartyPokerusTime(newDays); - UpdateMirageRnd(newDays); - UpdateBirchState(newDays); - SetShoalItemFlag(newDays); - SetRandomLotteryNumber(newDays); - *varPtr = time->days; + UpdateDewfordTrendPerDay(daysSince); + UpdateTVShowsPerDay(daysSince); + UpdateWeatherPerDay(daysSince); + UpdatePartyPokerusTime(daysSince); + UpdateMirageRnd(daysSince); + UpdateBirchState(daysSince); + SetShoalItemFlag(daysSince); + SetRandomLotteryNumber(daysSince); + *varPtr = localTime->days; } } -static void UpdatePerMinute(struct Time *time) +static void UpdatePerMinute(struct Time *localTime) { - struct Time newTime; - s32 minutesPassed; - - CalcTimeDifference(&newTime, &gSaveBlock2.lastBerryTreeUpdate, time); - minutesPassed = 1440 * newTime.days + 60 * newTime.hours + newTime.minutes; - - if (minutesPassed == 0) // do not do the update for the first minute. - return; + struct Time difference; + int minutes; - if (minutesPassed > -1) // do not perform an update on invalid minutesPassed. + CalcTimeDifference(&difference, &gSaveBlock2.lastBerryTreeUpdate, localTime); + minutes = 24 * 60 * difference.days + 60 * difference.hours + difference.minutes; + if (minutes != 0) { - BerryTreeTimeUpdate(minutesPassed); - gSaveBlock2.lastBerryTreeUpdate = *time; + if (minutes >= 0) + { + BerryTreeTimeUpdate(minutes); + gSaveBlock2.lastBerryTreeUpdate = *localTime; + } } } static void ReturnFromStartWallClock(void) { InitTimeBasedEvents(); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void StartWallClock(void) diff --git a/src/contest.c b/src/contest.c index 54294fdfa..9fb17a86b 100644 --- a/src/contest.c +++ b/src/contest.c @@ -46,7 +46,7 @@ extern u8 gDisplayedStringBattle[]; extern u16 gBattleTypeFlags; extern u8 gBattlerAttacker; extern u8 gBattlerTarget; -extern u8 gBanksBySide[]; +extern u8 gBattlerPositions[]; extern u8 gBattlerSpriteIds[]; extern struct Window gUnknown_03004210; extern u32 gContestRngValue; @@ -528,10 +528,10 @@ u8 sub_80AB70C(u8 *a) CreateApplauseMeterSprite(); sub_80B0324(); sub_80B0518(); - gBanksBySide[0] = 0; - gBanksBySide[1] = 1; - gBanksBySide[2] = 3; - gBanksBySide[3] = 2; + gBattlerPositions[0] = 0; + gBattlerPositions[1] = 1; + gBattlerPositions[2] = 3; + gBattlerPositions[3] = 2; gBattleTypeFlags = 0; gBattlerAttacker = 2; gBattlerTarget = 3; diff --git a/src/contest_link_80C2020.c b/src/contest_link_80C2020.c index 8269f424b..f4203dd42 100644 --- a/src/contest_link_80C2020.c +++ b/src/contest_link_80C2020.c @@ -753,7 +753,7 @@ static void sub_80C2EA0(u8 taskId) REG_BLDCNT = 0; REG_BLDY = 0; DestroyTask(taskId); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } } } diff --git a/src/data/graphics.c b/src/data/graphics.c index 20d8f91d0..9cb0a83d6 100644 --- a/src/data/graphics.c +++ b/src/data/graphics.c @@ -10,10 +10,18 @@ const u8 gMonBackPic_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/circled const u16 gMonPalette_CircledQuestionMark[] = INCBIN_U16("graphics/pokemon/circled_question_mark/normal.gbapal.lz"); const u16 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U16("graphics/pokemon/circled_question_mark/shiny.gbapal.lz"); -// japanese table and bunch of stuff -const u8 gUnusedOldCharmap_Gfx_lz[] = INCBIN_U8("graphics/unused/old_charmap.4bpp.lz"); -const u8 gUnusedOldCharmap_Tilemap_lz[] = INCBIN_U8("graphics/unused/old_charmap.bin.lz"); -const u16 gUnusedOldCharmap_Pal_lz[] = INCBIN_U16("graphics/unused/old_charmap.gbapal.lz"); +// The test menu debug battle tileset. This uses the old Crystal charmap and +// rendering method (it uses tiles instead of text). +// Oddly, the English version is in Japanese and the German version is in English. +#if DEBUG_TRANSLATE || GERMAN +const u8 gDebugBattleCharmap_Gfx_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_en.4bpp.lz"); +const u8 gDebugBattleCharmap_Tilemap_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_en.bin.lz"); +const u8 gDebugBattleCharmap_Pal_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_en.gbapal.lz"); +#else +const u8 gDebugBattleCharmap_Gfx_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_jp.4bpp.lz"); +const u8 gDebugBattleCharmap_Tilemap_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_jp.bin.lz"); +const u8 gDebugBattleCharmap_Pal_lz[] = INCBIN_U8("graphics/debug/debug_battle_charmap_jp.gbapal.lz"); +#endif const u8 gSmokescreenImpactTiles[] = INCBIN_U8("graphics/battle_anims/sprites/smokescreen_impact.4bpp.lz"); const u16 gSmokescreenImpactPalette[] = INCBIN_U16("graphics/battle_anims/sprites/smokescreen_impact.gbapal.lz"); diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json index 9adbc28de..46d6feea4 100644 --- a/src/data/wild_encounters.json +++ b/src/data/wild_encounters.json @@ -26,7 +26,12 @@ "type": "fishing_mons", "encounter_rates": [ 70, 30, 60, 20, 20, 40, 40, 15, 4, 1 - ] + ], + "groups": { + "old_rod": [0, 1], + "good_rod": [2, 3, 4], + "super_rod": [5, 6, 7, 8, 9] + } } ], "encounters": [ diff --git a/src/data/wild_encounters.json.txt b/src/data/wild_encounters.json.txt index de8396dd6..c6bbdd34e 100644 --- a/src/data/wild_encounters.json.txt +++ b/src/data/wild_encounters.json.txt @@ -3,14 +3,26 @@ ## for wild_encounter_group in wild_encounter_groups {% if wild_encounter_group.for_maps %} ## for wild_encounter_field in wild_encounter_group.fields +{% if not existsIn(wild_encounter_field, "groups") %} ## for encounter_rate in wild_encounter_field.encounter_rates -{% if trackVar(encounter_rate, 100) %} +{% if loop.index == 0 %} #define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} {{ encounter_rate }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ subtract(loop.index, 1) }} + {{ encounter_rate }}{% endif %} {{ setVarInt(wild_encounter_field.type, loop.index) }} ## endfor #define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_TOTAL (ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ getVar(wild_encounter_field.type) }}) +{% else %} +## for field_subgroup_key, field_subgroup_subarray in wild_encounter_field.groups +## for field_subgroup_index in field_subgroup_subarray +{% if loop.index == 0 %} +#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ field_subgroup_index }} {{ at(wild_encounter_field.encounter_rates, field_subgroup_index) }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ field_subgroup_index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ getVar("previous_slot") }} + {{ at(wild_encounter_field.encounter_rates, field_subgroup_index) }}{% endif %}{{ setVarInt(concat(wild_encounter_field.type, field_subgroup_key), field_subgroup_index) }}{{ setVarInt("previous_slot", field_subgroup_index) }} +## endfor +#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_TOTAL (ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ getVar(concat(wild_encounter_field.type, field_subgroup_key)) }}) +## endfor +{% endif %} ## endfor {% endif %} + + ## for encounter in wild_encounter_group.encounters {% if contains(encounter.base_label, "Sapphire") %}#ifdef SAPPHIRE {% else if contains(encounter.base_label, "Ruby") %}#ifdef RUBY{% endif %} diff --git a/src/debug/ereader_debug_menu.c b/src/debug/ereader_debug_menu.c index aaffca383..74a5ff10c 100644 --- a/src/debug/ereader_debug_menu.c +++ b/src/debug/ereader_debug_menu.c @@ -10,7 +10,11 @@ #include "berry.h" #include "mail_data.h" +#if DEBUG +const u8 Str_842E238[] = DTR("ใฟใใด", "EGG"); +#else const u8 Str_842E238[] = _("ใฟใใด"); +#endif #if DEBUG @@ -131,7 +135,7 @@ extern u8 gUnknown_Debug_845DDB2[]; extern u8 gUnknown_Debug_845DDB2End[]; extern u8 gUnknown_Debug_845DDD6[]; -const u8 Str_842E23C[] = _("ใฌใคใ"); +const u8 Str_842E23C[] = DTR("ใฌใคใ", "EXTERNAL"); size_t debug_sub_813C5B4(u8 * dest) { @@ -286,7 +290,7 @@ extern u8 gUnknown_Debug_845E4EF[]; extern u8 gUnknown_Debug_845E4EFEnd[]; extern u8 gUnknown_Debug_845E506[]; -const u8 Str_842E253[] = _("ใใใใใใซใผใใคใผ"); +const u8 Str_842E253[] = DTR("ใใใใใใซใผใใคใผ", "eCARD TRAINER"); size_t debug_sub_813C93C(u8 * dest) { @@ -305,22 +309,22 @@ size_t debug_sub_813C93C(u8 * dest) return size; } -const u8 Str_842E25E[] = _("ใใฑใณใใณ"); +const u8 Str_842E25E[] = KANA("ใใฑใณใใณ"); // TRN: kokko? const u8 Str_842E264[] = _("ticket"); const u8 Str_842E26B[] = _("{PKMN}"); -const u8 Str_842E26E[] = _("wrongใ{PKMN}"); +const u8 Str_842E26E[] = _("wrong {PKMN}"); const u8 Str_842E277[] = _("ribbon"); const u8 Str_842E27E[] = _("DEX"); const u8 Str_842E282[] = _("message"); const u8 Str_842E28A[] = _("egg"); -const u8 Str_842E28E[] = _("RAMใseed"); +const u8 Str_842E28E[] = _("RAM seed"); const u8 Str_842E297[] = _("trainer"); const u8 Str_842E29F[] = _("clock"); const u8 Str_842E2A5[] = _("item"); const u8 Str_842E2AA[] = _("goods"); const u8 Str_842E2B0[] = _("potion"); const u8 Str_842E2B7[] = _("ball"); -const u8 Str_842E2BC[] = _("cheriใberry"); +const u8 Str_842E2BC[] = _("cheri berry"); const u8 Str_842E2C8[] = _("TM01"); const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[] = { diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 1d2879661..27d2db66b 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -44,13 +44,13 @@ static void sub_80AA614(u8, u8); static void sub_80AAD08(struct Sprite *, s8); // unused -const u8 gText_Unused83C9150[] = _("ใในใใงใ"); // "test" +const u8 gText_Unused83C9150[] = DTR("ใในใใงใ", "Test"); const u8 gMatsudaDebugMenu_ActionContestText[] = _("Contest"); const u8 gMatsudaDebugMenu_ActionContestResultsText[] = _("Contest results"); // unused -const u8 gMatsudaDebugMenu_ActionChangePerimeterText[] = _("ใใฉใกใผใฟใธใใใ"); // "Change parameter" +const u8 gMatsudaDebugMenu_ActionChangeParameterText[] = DTR("ใใฉใกใผใฟใธใใใ", "Change parameter"); // unused -const u8 gMatsudaDebugMenu_ActionChangeMoveText[] = _("ใใ ใธใใใ"); // "Change move" +const u8 gMatsudaDebugMenu_ActionChangeMoveText[] = DTR("ใใ ใธใใใ", "Change move"); // "Change move" const u8 gMatsudaDebugMenu_ActionContestCommText[] = _("Contest (comm.)"); const u8 gMatsudaDebugMenu_ActionCommTestText[] = _("Init comm. data"); const u8 gMatsudaDebugMenu_ActionSetHighScoreText[] = _("Set highest score"); @@ -387,8 +387,8 @@ static void (* const gUnknown_083C92E4[][2])(struct Sprite *, s8) = }; static const u8 gMatsudaDebugMenu_StartText[] = _("{COLOR CYAN}{HIGHLIGHT RED}"); -static const u8 gMatsudaDebugMenu_StartJapText[] = _("ใใใ"); // because StartText is only called by StringCopy, this part appears to be unused. -static const u8 gMatsudaDebugMenu_GoBackText[] = _("ใใฉใ"); +static const u8 gMatsudaDebugMenu_StartJapText[] = DTR("ใใใ", "START"); // because StartText is only called by StringCopy, this part appears to be unused. +static const u8 gMatsudaDebugMenu_GoBackText[] = DTR("ใใฉใ", "BACK"); #ifdef GERMAN static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP,"); @@ -396,12 +396,12 @@ static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP,"); static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP."); #endif -static const u8 MatsudaDebugMenuText_Cool[] = _("ใใฃใใใ"); // cool -static const u8 MatsudaDebugMenuText_Cute[] = _("ใใใใ"); // cute -static const u8 MatsudaDebugMenuText_Beauty[] = _("ใใคใใใ"); // beauty -static const u8 MatsudaDebugMenuText_Smart[] = _("ใใใใ"); // smart -static const u8 MatsudaDebugMenuText_Tough[] = _("ใใใพใใ"); // tough -static const u8 MatsudaDebugMenuText_Sheen[] = _("ใใฅใ"); // sheen +static const u8 MatsudaDebugMenuText_Cool[] = DTR("ใใฃใใใ", "COOL"); +static const u8 MatsudaDebugMenuText_Cute[] = DTR("ใใใใ", "CUTE"); +static const u8 MatsudaDebugMenuText_Beauty[] = DTR("ใใคใใใ", "BEAUTY"); +static const u8 MatsudaDebugMenuText_Smart[] = DTR("ใใใใ", "SMART"); +static const u8 MatsudaDebugMenuText_Tough[] = DTR("ใใใพใใ", "TOUGH"); +static const u8 MatsudaDebugMenuText_Sheen[] = DTR("ใใฅใ", "SHEEN"); static const u8 *const gMatsudaDebugMenuTextList1[] = { @@ -413,11 +413,11 @@ static const u8 *const gMatsudaDebugMenuTextList1[] = MatsudaDebugMenuText_Sheen, }; -static const u8 MatsudaDebugMenuText_CoolContest[] = _("ใใฃใใใใณใณใในใ"); -static const u8 MatsudaDebugMenuText_BeautyContest[] = _("ใใคใใใใณใณใในใ"); -static const u8 MatsudaDebugMenuText_CuteContest[] = _("ใใใใใณใณใในใใ"); -static const u8 MatsudaDebugMenuText_SmartContest[] = _("ใใใใใณใณใในใใ"); -static const u8 MatsudaDebugMenuText_ToughContest[] = _("ใใใพใใใณใณใในใ"); +static const u8 MatsudaDebugMenuText_CoolContest[] = DTR("ใใฃใใใใณใณใในใ", "COOL CONTEST"); +static const u8 MatsudaDebugMenuText_BeautyContest[] = DTR("ใใคใใใใณใณใในใ", "BEAUTY CONTEST"); +static const u8 MatsudaDebugMenuText_CuteContest[] = DTR("ใใใใใณใณใในใใ", "CUTE CONTEST"); +static const u8 MatsudaDebugMenuText_SmartContest[] = DTR("ใใใใใณใณใในใใ", "SMART CONTEST"); +static const u8 MatsudaDebugMenuText_ToughContest[] = DTR("ใใใพใใใณใณใในใ", "TOUGH CONTEST"); static const u8 *const gMatsudaDebugMenuTextList2[] = { @@ -428,10 +428,10 @@ static const u8 *const gMatsudaDebugMenuTextList2[] = MatsudaDebugMenuText_ToughContest, }; -static const u8 MatsudaDebugMenuText_Fallarbor[] = _("ใใธใใฒ/ใใผใใซ"); // Fallarbor / Normal -static const u8 MatsudaDebugMenuText_Verdanturf[] = _("ใทใใฑ/ในใผใใผใ"); // Verdanturf / Super -static const u8 MatsudaDebugMenuText_Slateport[] = _("ใซใคใ/ใใคใใผใ"); // Slateport / Hyper -static const u8 MatsudaDebugMenuText_Lilycove[] = _("ใใใข/ใในใฟใผใ"); // Lilycove / Master +static const u8 MatsudaDebugMenuText_Fallarbor[] = DTR("ใใธใใฒ/ใใผใใซ", "FALLARBOR/NORMAL"); // Fallarbor / Normal +static const u8 MatsudaDebugMenuText_Verdanturf[] = DTR("ใทใใฑ/ในใผใใผใ", "VERDANTURF/SUPER"); // Verdanturf / Super +static const u8 MatsudaDebugMenuText_Slateport[] = DTR("ใซใคใ/ใใคใใผใ", "SLATEPORT/HYPER"); // Slateport / Hyper +static const u8 MatsudaDebugMenuText_Lilycove[] = DTR("ใใใข/ใในใฟใผใ", "LILYCOVE/MASTER"); // Lilycove / Master static const u8 *const gMatsudaDebugMenuTextList3[] = { diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 4f798ecb3..dfa2487a5 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -31,9 +31,9 @@ const u8 gUnknown_0839B22C[][3] = }; const u8 gUnknown_0839B24A[] = _("ND"); -const u8 gUnknown_0839B24D[] = _("ใฎใใใฉใใฏ\n"); // "'s child <topic-particle>"= +const u8 gUnknown_0839B24D[] = DTR("ใฎใใใฉใใฏ\n", "'s child is\n"); const u8 gUnknown_0839B255[] = _(" "); -const u8 gUnknown_0839B257[] = _("ใชใใใชใพใใฝใใใ"); // "long name pokemon" (used as test name) +const u8 gUnknown_0839B257[] = DTR("ใชใใใชใพใใฝใใใ", "LongName{PKMN}"); // "long name pokemon" (used as test name) const u8 Text_39B262[] = _("Search a child"); const u8 Text_39B271[] = _("Egg"); const u8 Text_39B275[] = _("Egg (male)"); @@ -45,7 +45,7 @@ const u8 Text_39B2AF[] = _("Long name"); #ifdef GERMAN const u8 Text_39B2B9[] = _("Delete {POKEBLOCK}"); #else -const u8 Text_39B2B9[] = _("ใใญใใฏใใ"); +const u8 Text_39B2B9[] = DTR("ใใญใใฏใใ", "Delete {POKEBLOCK}"); #endif const struct MenuAction gMoriDebugMenuActions[] = diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index e6af3c58d..32ac57dc2 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -50,7 +50,7 @@ static bool8 SetPokeblock(void); static const u8 Str_843E36C[] = _("Berries"); static const u8 Str_843E374[] = _("Goods"); static const u8 Str_843E37A[] = _("{PKMN} list"); -static const u8 Str_843E382[] = _("ใใฉใใ"); +static const u8 Str_843E382[] = DTR("ใใฉใใ", "Trap"); static const u8 Str_843E387[] = _("Move your base"); static const u8 Str_843E396[] = _("Moving {PKMN}"); static const u8 Str_843E3A0[] = _("Fishing points"); @@ -874,10 +874,11 @@ static struct { EWRAM_DATA u8 sNakaGenderTest_CursorPosition = 0; static const u8 _843E5D1[] = {0x0F, 0x16, 0x19}; -static const u8 Str_843E5D4[] = _( - "Aใใฟใณใ{ESCAPE}\p" - "ใใBใใฟใณใใผ\n" - "STARTใใใฃใฆใ"); +static const u8 Str_843E5D4[] = DTR( + "Aใใฟใณใ{TALL_PLUS}ใใBใใฟใณใใผ\n" + "STARTใใใฃใฆใ", + "A BUTTON {TALL_PLUS} B BUTTON {JPN}ใผ{ENG}\n" + "START CHOOSE"); void NakaGenderTest(void) { @@ -1916,14 +1917,14 @@ static bool8 SetPokeblock(void) EWRAM_DATA u8 sEVTest_CursorPosition = 0; -static const u8 Str_843E5F2[] = _("HPใใฉใใใใก"); -static const u8 Str_843E5FB[] = _("ใใใใใใฉใใใใก"); -static const u8 Str_843E606[] = _("ใผใใใใใฉใใใใก"); -static const u8 Str_843E611[] = _("ใใฐใใใใฉใใใใก"); -static const u8 Str_843E61C[] = _("ใจใใใใใฉใใใใก"); -static const u8 Str_843E627[] = _("ใจใใผใใใฉใใใใก"); -static const u8 Str_843E632[] = _("ใชใคใใฉ"); -static const u8 Str_843E637[] = _("ใฉใใใใกใใใใใ"); +static const u8 Str_843E5F2[] = DTR("HPใใฉใใใใก", "HP EVs"); +static const u8 Str_843E5FB[] = DTR("ใใใใใใฉใใใใก", "ATK EVs"); +static const u8 Str_843E606[] = DTR("ใผใใใใใฉใใใใก", "DEF EVs"); +static const u8 Str_843E611[] = DTR("ใใฐใใใใฉใใใใก", "SPE EVs"); +static const u8 Str_843E61C[] = DTR("ใจใใใใใฉใใใใก", "SPA EVs"); +static const u8 Str_843E627[] = DTR("ใจใใผใใใฉใใใใก", "SPD EVs"); +static const u8 Str_843E632[] = DTR("ใชใคใใฉ", "FRIENDSHIP"); +static const u8 Str_843E637[] = DTR("ใฉใใใใกใใใใใ", "EV TOTAL"); static void EVTest_Init(void) { @@ -2071,13 +2072,13 @@ EWRAM_DATA u16 sRngRight = 0; EWRAM_DATA u16 sNumSamples = 0; EWRAM_DATA u16 sRngMax = 0; -static const u8 Str_843E642[] = _("ใใใใ"); -static const u8 Str_843E647[] = _("ใใใพใง"); -static const u8 Str_843E64C[] = _("ใใใใ"); -static const u8 Str_843E651[] = _("ใใฃใ"); -static const u8 Str_843E655[] = _("ใใ"); +static const u8 Str_843E642[] = DTR("ใใใใ", "FROM"); +static const u8 Str_843E647[] = DTR("ใใใพใง", "TO"); +static const u8 Str_843E64C[] = DTR("ใใใใ", "TIMES"); +static const u8 Str_843E651[] = DTR("ใใฃใ", "RESULT"); +static const u8 Str_843E655[] = DTR("ใใ", "ร"); static const u8 Str_843E658[] = _("0"); -static const u8 Str_843E65A[] = _("ใฏใใ"); +static const u8 Str_843E65A[] = DTR("ใฏใใ", "RANGE"); static u16 EVTest_GetDiscreteUniformRandomSamples(void) { diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index 349e5111f..d26d6038c 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -57,14 +57,14 @@ bool8 NoharaDebugMenu_LegendsFlagOn(void); bool8 NoharaDebugMenu_AddNumWinningStreaks(void); const u8 gUnknown_Debug_083C48C4[] = _("TV"); -const u8 gUnknown_Debug_083C48C7[] = _("Fan"); -const u8 gUnknown_Debug_083C48CB[] = _("Battleใ(vsใDad)"); -const u8 gUnknown_Debug_083C48DB[] = _("Dadใafterใbattle"); -const u8 gUnknown_Debug_083C48EC[] = _("SOOTOPOLISใCITY"); -const u8 gUnknown_Debug_083C48FC[] = _("Embark"); -const u8 gUnknown_Debug_083C4903[] = _("Yesใ9999"); -const u8 gUnknown_Debug_083C490C[] = _("LegendsใflagใON"); -const u8 gUnknown_Debug_083C491C[] = _("Addใnumใofใwinningใstreaks"); +const u8 gUnknown_Debug_083C48C7[] = DTR("Fan", "LILYCOVE TRAINER FAN CLUB"); +const u8 gUnknown_Debug_083C48CB[] = _("Battle (vs Dad)"); +const u8 gUnknown_Debug_083C48DB[] = _("Dad after battle"); +const u8 gUnknown_Debug_083C48EC[] = _("SOOTOPOLIS CITY"); +const u8 gUnknown_Debug_083C48FC[] = DTR("Embark", "Reset Mr. BRINEY"); +const u8 gUnknown_Debug_083C4903[] = _("Yes 9999"); +const u8 gUnknown_Debug_083C490C[] = _("Legends flag ON"); +const u8 gUnknown_Debug_083C491C[] = _("Add num of winning streaks"); const struct MenuAction gUnknown_Debug_083C4938[] = { {gUnknown_Debug_083C48C4, NoharaDebugMenu_TV}, @@ -104,28 +104,30 @@ bool8 debug_sub_808F414(void) } } -const u8 gUnknown_Debug_083C4980[] = _("Wantใtoใchangeใdataใtype{CLEAR_TO 143}PressใLeft\n" - "toใseeใsecretใtypeใnow๏ผ{CLEAR_TO 143}toใswitch"); +const u8 gUnknown_Debug_083C4980[] = _("Want to change data type{CLEAR_TO 143}PressใLeft\n" + "to see secret type now๏ผ{CLEAR_TO 143}toใswitch"); -const u8 gUnknown_Debug_083C49CA[] = _("ChooseใtheใTVใdataใyouใwishใto\n" - "createใtoใcheckใaใtransmissionใ"); +const u8 gUnknown_Debug_083C49CA[] = _("Choose the TV data you wish to\n" + "create to check a transmissionใ"); -const u8 gUnknown_Debug_083C4A09[] = _("ใปใใใใฎใใฏใฃใใใใคใใใปใใ\n" - "ใใฆใใ ใใใ๏ผใถใใฎ1ใซใใชใใพใ"); +const u8 gUnknown_Debug_083C4A09[] = DTR("ใปใใใใฎใใฏใฃใใใใคใใใปใใ\n" + "ใใฆใใ ใใใ๏ผใถใใฎ1ใซใใชใใพใ", + "Please set the transmission frequency\n" + "Part 1"); const u8 gUnknown_Debug_083C4A2E[] = _("SURVEY"); -const u8 gUnknown_Debug_083C4A35[] = _("RECENTใHAPPENINGS"); -const u8 gUnknown_Debug_083C4A47[] = _("POKใฒMONใFANใCLUB"); -const u8 gUnknown_Debug_083C4A58[] = _("ใธใ "); +const u8 gUnknown_Debug_083C4A35[] = _("RECENT HAPPENINGS"); +const u8 gUnknown_Debug_083C4A47[] = _("POKรฉMON FAN CLUB"); +const u8 gUnknown_Debug_083C4A58[] = DTR("ใธใ ", "GYM"); const u8 gUnknown_Debug_083C4A5B[] = _("OUTBREAKS"); -const u8 gUnknown_Debug_083C4A65[] = _("NAMEใRATER"); +const u8 gUnknown_Debug_083C4A65[] = _("NAME RATER"); const u8 gUnknown_Debug_083C4A70[] = _("CONTEST"); const u8 gUnknown_Debug_083C4A78[] = _("INTRODUCTION"); const u8 gUnknown_Debug_083C4A85[] = _("SHOPPING"); const u8 gUnknown_Debug_083C4A8E[] = _("MISFORTUNE"); const u8 gUnknown_Debug_083C4A99[] = _("FISHING"); -const u8 gUnknown_Debug_083C4AA1[] = _("MEMORABLEใDAY"); -const u8 gUnknown_Debug_083C4AAF[] = _("BRAVOใTRAINER"); +const u8 gUnknown_Debug_083C4AA1[] = _("MEMORABLE DAY"); +const u8 gUnknown_Debug_083C4AAF[] = _("BRAVO TRAINER"); const u8 gUnknown_Debug_083C4ABD[] = { TVSHOW_FAN_CLUB_LETTER, @@ -159,8 +161,8 @@ const u8 *const gUnknown_Debug_083C4ACC[] = { const u8 gDebugText_BigSale[] = _("BIG SALE"); -const u8 gUnknown_Debug_083C4B05[] = _("SERVICEใDAY"); -const u8 gUnknown_Debug_083C4B11[] = _("CLEARใผOUTใSALE"); +const u8 gUnknown_Debug_083C4B05[] = _("SERVICE DAY"); +const u8 gUnknown_Debug_083C4B11[] = _("CLEAR-OUT SALE"); const u8 gUnknown_Debug_083C4B20[] = {1, 2, 3}; const u8 *const gUnknown_Debug_083C4B24[] = { @@ -169,15 +171,15 @@ const u8 *const gUnknown_Debug_083C4B24[] = { gUnknown_Debug_083C4B11 }; -const u8 gUnknown_Debug_083C4B30[] = _("Secretใtype"); +const u8 gUnknown_Debug_083C4B30[] = _("Secret type"); const u8 gUnknown_Debug_083C4B3C[] = _("Start"); -const u8 gUnknown_Debug_083C4B42[] = _("CreateใTV"); -const u8 gUnknown_Debug_083C4B4C[] = _("Allใclear"); -const u8 gUnknown_Debug_083C4B56[] = _("Allใseen"); -const u8 gUnknown_Debug_083C4B5F[] = _("CreateใCM"); -const u8 gUnknown_Debug_083C4B69[] = _("Notใyetใseen"); -const u8 gUnknown_Debug_083C4B76[] = _("HitใTable"); -const u8 gUnknown_Debug_083C4B80[] = _("Setใfull"); +const u8 gUnknown_Debug_083C4B42[] = _("Create TV"); +const u8 gUnknown_Debug_083C4B4C[] = _("All clear"); +const u8 gUnknown_Debug_083C4B56[] = _("All seen"); +const u8 gUnknown_Debug_083C4B5F[] = _("Create CM"); +const u8 gUnknown_Debug_083C4B69[] = _("Not yet seen"); +const u8 gUnknown_Debug_083C4B76[] = _("Hit Table"); +const u8 gUnknown_Debug_083C4B80[] = _("Set full"); // Normaly these would be struct MenuAction, but the prototype of // member .func is not consistent. @@ -754,15 +756,18 @@ bool8 debug_sub_80900AC(void) CloseMenu(); return TRUE; } - -const u8 gUnknown_Debug_083C4C77[] = _("1ใในใฏใซ"); -const u8 gUnknown_Debug_083C4C7D[] = _("2ใใใใซ"); -const u8 gUnknown_Debug_083C4C83[] = _("3ใใชใธใจ"); -const u8 gUnknown_Debug_083C4C89[] = _("4ใใใผใค"); -const u8 gUnknown_Debug_083C4C8F[] = _("5ใใใผใค"); -const u8 gUnknown_Debug_083C4C95[] = _("6ใใคใณใฐ"); -const u8 gUnknown_Debug_083C4C9B[] = _("7ใใฒใผใซ"); -const u8 gUnknown_Debug_083C4CA1[] = _("8ใใชใซใ"); +// These represent the people in Lilycove Fan Club. +// TRN: These translations are probably wrong but it is really hard to tell with +// the abbreviations. They are mosly based on observation +// The first one is selected by default when there are no fans. +const u8 gUnknown_Debug_083C4C77[] = DTR("1ใในใฏใซ", "1 LASS/NONE"); // school (girl) +const u8 gUnknown_Debug_083C4C7D[] = DTR("2ใใใใซ", "2 MIDDLE AGE MAN"); // middle +const u8 gUnknown_Debug_083C4C83[] = DTR("3ใใชใธใจ", "3 DAUGHTER"); // ใใใใ (daughter) +const u8 gUnknown_Debug_083C4C89[] = DTR("4ใใใผใค", "4 YOUNG BOY"); // ๅใ (boy) +const u8 gUnknown_Debug_083C4C8F[] = DTR("5ใใใผใค", "5 BOY"); // boy +const u8 gUnknown_Debug_083C4C95[] = DTR("6ใใคใณใฐ", "6 YOUNG MAN"); // young +const u8 gUnknown_Debug_083C4C9B[] = DTR("7ใใฒใผใซ", "7 MOM"); // ใๆฏใใ? (probably typo) +const u8 gUnknown_Debug_083C4CA1[] = DTR("8ใใชใซใ", "8 OLD LADY"); // old const u8 *const gUnknown_Debug_083C4CA8[] = { gUnknown_Debug_083C4C77, @@ -775,15 +780,15 @@ const u8 *const gUnknown_Debug_083C4CA8[] = { gUnknown_Debug_083C4CA1 }; -const u8 gUnknown_Debug_083C4CC8[] = _("Start"); -const u8 gUnknown_Debug_083C4CCE[] = _("Increase"); -const u8 gUnknown_Debug_083C4CD7[] = _("Reduce"); +const u8 gUnknown_Debug_083C4CC8[] = _("Start"); // Starts the "Oh! I've heard of you' script" +const u8 gUnknown_Debug_083C4CCE[] = _("Increase"); // Increases popularity +const u8 gUnknown_Debug_083C4CD7[] = _("Reduce"); // reduces popularity const u8 gUnknown_Debug_083C4CDE[] = _("Points"); -const u8 gUnknown_Debug_083C4CE5[] = _("Playใtimeใ6"); -const u8 gUnknown_Debug_083C4CF1[] = _("PใELITEใFOUR"); -const u8 gUnknown_Debug_083C4CFE[] = _("PใSECRETใBASE"); -const u8 gUnknown_Debug_083C4D0C[] = _("PใCONTEST"); -const u8 gUnknown_Debug_083C4D16[] = _("PใBATTLEใTOWER"); +const u8 gUnknown_Debug_083C4CE5[] = _("Play time 6"); +const u8 gUnknown_Debug_083C4CF1[] = _("P ELITE FOUR"); +const u8 gUnknown_Debug_083C4CFE[] = _("P SECRET BASE"); +const u8 gUnknown_Debug_083C4D0C[] = _("P CONTEST"); +const u8 gUnknown_Debug_083C4D16[] = _("P BATTLE TOWER"); const struct MenuAction gUnknown_Debug_083C4D28[] = { {gUnknown_Debug_083C4CC8, debug_sub_80901E4}, diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c index 2760c3b0f..dec9b4371 100644 --- a/src/debug/sound_check_menu.c +++ b/src/debug/sound_check_menu.c @@ -156,10 +156,10 @@ void CB2_StartSoundCheckMenu(void) void Task_InitSoundCheckMenu(u8 taskId) { - u8 soundcheckStr[] = _("ใตใฆใณใใใงใใฏ"); + u8 soundcheckStr[] = DTR("ใตใฆใณใใใงใใฏ", "SOUND CHECK"); u8 bgmStr[] = _("BGM"); u8 seStr[] = _("SE "); - u8 abDescStr[] = _("AโฅใใใใใBโฅใใใ"); + u8 abDescStr[] = DTR("AโฅใใใใใBโฅใใใ", "A PLAY B STOP"); u8 upDownStr[] = _("LโฅUP RโฅDOWN"); u8 driverStr[] = _("RโฅDRIVER-TEST"); @@ -399,8 +399,8 @@ void sub_80BA79C(const u8 *const string, u16 x, u16 y) void Task_DrawDriverTestMenu(u8 taskId) // Task_DrawDriverTestMenu { - u8 bbackStr[] = _("Bใผใใใงใใใฉใ"); - u8 aplayStr[] = _("Aใผใใใงใใใใใ"); + u8 bbackStr[] = DTR("Bใผใใใงใใใฉใ", "B BUTTON: BACK"); + u8 aplayStr[] = DTR("Aใผใใใงใใใใใ", "A BUTTON: PLAY"); u8 voiceStr[] = _("VOICEโฅโฅโฅโฅ"); u8 volumeStr[] = _("VOLUMEโฅโฅโฅ"); u8 panpotStr[] = _("PANPOTโฅโฅโฅ"); @@ -410,9 +410,9 @@ void Task_DrawDriverTestMenu(u8 taskId) // Task_DrawDriverTestMenu u8 progressStr[] = _("PROGRESSโฅ"); u8 chorusStr[] = _("CHORUSโฅโฅโฅ"); u8 priorityStr[] = _("PRIORITYโฅ"); - u8 playingStr[] = _("ใใใใใกใใโฅ"); // ๅ็ไธญ (playing) - u8 reverseStr[] = _("ใฏใใฆใโฅโฅโฅโฅ"); // ๅ่ปข (reverse) - u8 stereoStr[] = _("ใใฆใใโฅโฅโฅโฅ"); // stereo + u8 playingStr[] = DTR("ใใใใใกใใโฅ", "PLAYING"); // ๅ็ไธญ (playing) + u8 reverseStr[] = DTR("ใฏใใฆใโฅโฅโฅโฅ", "REVERSE"); // ๅ่ปข (reverse) + u8 stereoStr[] = DTR("ใใฆใใโฅโฅโฅโฅ", "STEREO"); // stereo REG_DISPCNT = 0x3140; Menu_DrawStdWindowFrame(0, 0, 29, 19); @@ -680,7 +680,7 @@ void sub_80BAF84(u8 taskId) { u8 seStr[] = _("SE"); u8 panStr[] = _("PAN"); - u8 playingStr[] = _("ใใใใใกใใโฅ"); + u8 playingStr[] = DTR("ใใใใใกใใโฅ", "PLAYING"); REG_DISPCNT = 0x3140; Menu_DrawStdWindowFrame(0, 0, 29, 19); diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 01f04b8d9..940f21ac7 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -174,8 +174,8 @@ const u8 Str_839B7D8[] = _("Transport"); const u8 Str_839B7E2[] = _("See portraits"); const u8 Str_839B7F0[] = _("Time records"); const u8 Str_839B7FD[] = _("Set time"); -const u8 Str_839B806[] = _("National ใชใซDex"); -const u8 Str_839B815[] = _("Hoenn ใชใซDex"); +const u8 Str_839B806[] = _("National {POKE}Dex"); +const u8 Str_839B815[] = _("Hoenn {POKE}Dex"); const u8 Str_839B821[] = _("Create {PKMN}"); const u8 Str_839B82B[] = _("See {PKMN} graphics"); const u8 Str_839B83B[] = _("See trainers"); @@ -272,49 +272,50 @@ const u8 gUnknown_Debug_839BB64[] = const u8 gUnknown_Debug_0839BBA4[] = _("Debugging Version"); const u8 gUnknown_Debug_0839BBB6[] = _("{VERSION} Version"); const u8 gUnknown_Debug_0839BBC1[] = _("Normal RTC compatible"); -const u8 Str_839BBD7[] = _("ใใใฎใใใฃใใ"); -const u8 Str_839BBE0[] = _("ใใฃใใ2"); -const u8 Str_839BBE6[] = _("BGใใฃใใ"); -const u8 Str_839BBED[] = _("Battle"); -const u8 Str_839BBF4[] = _("ใคใใใใใใฃใใ"); -const u8 Str_839BBFE[] = _("LINK Test2"); -const u8 Str_839BC09[] = _("ใใฃใผใซใใใฏใใใ"); -const u8 Str_839BC14[] = _("ใใฃใผใซใใใคใฅใ"); -const u8 Str_839BC1E[] = _("Sound test"); -const u8 Str_839BC29[] = _("{POKEBLOCK} test"); -const u8 Str_839BC34[] = _("Crash backup data"); -const u8 Str_839BC46[] = _("e-Card test"); -const u8 Str_839BC52[] = _("ใใใใใใขใใใ"); -const u8 Str_839BC5C[] = _("Time in game"); -const u8 Str_839BC69[] = _("ใใงในใฟใใขใผใ"); -const u8 Str_839BC72[] = _("Mimic e-Card"); -const u8 Str_839BC7F[] = _("RTC reset"); -const u8 Str_839BC89[] = _("Converter"); - -const struct MenuAction gUnknown_Debug_839BC94[] = -{ - { Str_839BBD7, DebugMenu_8076CBC }, - { Str_839BBE0, DebugMenu_8076CC0 }, - { Str_839BBE6, DebugMenu_8076CD4 }, - { Str_839BBED, DebugMenu_8076C6C }, - { Str_839BC29, DebugMenu_8076CD8 }, - { Str_839BBFE, DebugMenu_8076D28 }, - { Str_839BC1E, DebugMenu_8076D3C }, - { Str_839BC09, DebugMenu_8076C80 }, - { Str_839BC14, DebugMenu_8076C90 }, - { Str_839BC34, DebugMenu_8076D50 }, - { Str_839BC46, DebugMenu_8076CEC }, - { Str_839BC52, DebugMenu_8076D14 }, - { Str_839BC72, DebugMenu_8076D00 }, - { Str_839BC5C, DebugMenu_8076D5C }, - { Str_839BC7F, DebugMenu_8076E18 }, - { Str_839BC89, DebugMenu_8076EDC }, + +const u8 gTestMenu_TestMenuHeaderText[] = DTR("ใใใฎใใใฃใใ", "TEST MENU"); // ็งใฎๅฎ้จ (Test section) +const u8 gTestMenu_Test2Text[] = DTR("ใใฃใใ2", "Test2"); +const u8 gTestMenu_BGTestText[] = DTR("BGใใฃใใ", "BG Test"); +const u8 gTestMenu_BattleText[] = _("Battle"); +const u8 gTestMenu_UnusedLinkTestText[] = DTR("ใคใใใใใใฃใใ", "LINK Test"); // unused +const u8 gTestMenu_LinkTest2Text[] = _("LINK Test2"); +const u8 gTestMenu_FieldStartText[] = DTR("ใใฃใผใซใใใฏใใใ", "New game"); // "Field start" +const u8 gTestMenu_FieldContinueText[] = DTR("ใใฃใผใซใใใคใฅใ", "Continue game"); // "Field continue" +const u8 gTestMenu_SoundTestText[] = _("Sound test"); +const u8 gTestMenu_PokeblockTestText[] = _("{POKEBLOCK} test"); +const u8 gTestMenu_CrashBackupDataText[] = _("Crash backup data"); +const u8 gTestMenu_eCardTestText[] = _("e-Card test"); +const u8 gTestMenu_TradeDemoText[] = DTR("ใใใใใใขใใใ", "Trade demo"); +const u8 gTestMenu_TimeInGameText[] = _("Time in game"); +const u8 gTestMenu_UnusedFestaModeText[] = DTR("ใใงในใฟใใขใผใ", "Festa mode"); // unused +const u8 gTestMenu_MimicECardText[] = _("Mimic e-Card"); +const u8 gTestMenu_RTCResetText[] = _("RTC reset"); +const u8 gTestMenu_ConverterText[] = _("Converter"); + +const struct MenuAction gDebug_TestMenuItems[] = +{ + { gTestMenu_TestMenuHeaderText, DebugMenu_8076CBC }, // Disabled - nop header + { gTestMenu_Test2Text, DebugMenu_8076CC0 }, // Disabled - freezes game (likely went to tomohara menu + { gTestMenu_BGTestText, DebugMenu_8076CD4 }, // Disabled - nop + { gTestMenu_BattleText, DebugMenu_8076C6C }, + { gTestMenu_PokeblockTestText, DebugMenu_8076CD8 }, + { gTestMenu_LinkTest2Text, DebugMenu_8076D28 }, + { gTestMenu_SoundTestText, DebugMenu_8076D3C }, + { gTestMenu_FieldStartText, DebugMenu_8076C80 }, // Disabled - starts new game w/o intro with preset name + { gTestMenu_FieldContinueText, DebugMenu_8076C90 }, // Disabled - continues game + { gTestMenu_CrashBackupDataText, DebugMenu_8076D50 }, + { gTestMenu_eCardTestText, DebugMenu_8076CEC }, + { gTestMenu_TradeDemoText, DebugMenu_8076D14 }, // Disabled - starts a trade then crashes + { gTestMenu_MimicECardText, DebugMenu_8076D00 }, + { gTestMenu_TimeInGameText, DebugMenu_8076D5C }, + { gTestMenu_RTCResetText, DebugMenu_8076E18 }, + { gTestMenu_ConverterText, DebugMenu_8076EDC }, }; // NOTE: When decompiling this file, I found out that having an extraneous extern // in a C file can affect the generated asm. If this extern is commented out, // debug_sub_8076BB4 will access the array differently and no longer match. -//extern const struct MenuAction gUnknown_Debug_839BC94[]; +//extern const struct MenuAction gDebug_TestMenuItems[]; const u8 gMenuOrders_839BD14[][10] = { @@ -324,22 +325,34 @@ const u8 gMenuOrders_839BD14[][10] = const u8 Str_839BD26[] = {2, 0, 0, 0}; // doesn't appear to be referenced -const u8 Str_839BD2C[] = _("RTCใใใชใปใใใใใพใ\n" // Reset RTC - "AใงใใใฃใใใใใBใงใญใฃใณใปใซ"); - -const u8 Str_839BD4C[] = _("RTCใใใชใปใใใใใ๏ผ"); +const u8 Str_839BD2C[] = DTR("RTCใใใชใปใใใใใพใ\n" // Reset RTC + "AใงใใใฃใใใใใBใงใญใฃใณใปใซ", + "Reset RTC?\n" + "A: START B: CANCEL"); -const u8 Str_839BD5A[] = _("ใปใผใใใผใฟใใใณใณใใผใใใพใ\n" - "AใงใใใฃใฆใใใBใงใใญใฃใณใปใซ"); +const u8 Str_839BD4C[] = DTR("RTCใใใชใปใใใใใ๏ผ", "RTC reset successful!"); -const u8 Str_839BD7D[] = _("ใธใใใใใใใ
ใใใใใใใพใใ๏ผ"); +const u8 Str_839BD5A[] = DTR("ใปใผใใใผใฟใใใณใณใใผใใใพใ\n" + "AใงใใใฃใฆใใใBใงใใญใฃใณใปใซ", + "Convert save data?\n" + "A: CONFIRM B: CANCEL"); +const u8 Str_839BD7D[] = DTR("ใธใใใใใใใ
ใใใใใใใพใใ๏ผ", + "Conversion finished!"); extern const u8 Str_839BD2C[]; extern const u8 Str_839BD4C[]; static u8 gUnknown_030006B8; -UNUSED static const s32 * gUnknown_030006BC; + +struct DebugBuildDateInfo { + s32 max; + s32 digitMultiplier; + s32 numDigits; + s32 offset; +}; + +static const struct DebugBuildDateInfo *gDebugBuildDate; static u8 gUnknown_030006C0; static u8 gUnknown_030006C1; static const u8 * gUnknown_030006C4; @@ -354,7 +367,7 @@ void debug_sub_8076AC8(u8 a) ; Menu_EraseWindowRect(16, 0, 29, 19); Menu_DrawStdWindowFrame(16, 0, 29, r4 * 2 + 1); - Menu_PrintItemsReordered(17, 1, r4, (struct MenuAction2 *)gUnknown_Debug_839BC94, gUnknown_030006C4); + Menu_PrintItemsReordered(17, 1, r4, (struct MenuAction2 *)gDebug_TestMenuItems, gUnknown_030006C4); InitMenu(0, 17, 1, r4, 0, 12); } @@ -387,7 +400,7 @@ void debug_sub_8076BB4(u8 taskId) switch (input) { default: - gUnknown_Debug_839BC94[gUnknown_030006C4[cursorPos]].func(); + gDebug_TestMenuItems[gUnknown_030006C4[cursorPos]].func(); break; case -2: if (gMain.newKeys & 0x20) @@ -593,27 +606,28 @@ u8 DebugMenu_8076EDC(void) return 0; } -const u8 Str_839BD90[] = _("ใธใฅใณใคใ"); -const u8 Str_839BD96[] = _("ใใคใดใญใฆ"); -const u8 Str_839BD9C[] = _("ใใใธ"); -const u8 Str_839BDA0[] = _("ใใฌใณใทใข"); -const u8 Str_839BDA6[] = _("ใใซใณใใ"); -const u8 Str_839BDAC[] = _("RAYMOND"); -const u8 Str_839BDB4[] = _("TIFFANY"); -const u8 Str_839BDBC[] = _("ใใพxใกใ"); +// A list of preset player names +const u8 gTestMenuStr_Junichi[] = DTR("ใธใฅใณใคใ", "JUNICHI"); +const u8 gTestMenuStr_Daigoro[] = DTR("ใใคใดใญใฆ", "DAIGORO"); +const u8 gTestMenuStr_Tetsuji[] = DTR("ใใใธ", "TETSUJI"); +const u8 gTestMenuStr_Valencia[] = DTR("ใใฌใณใทใข", "VALENCY"); // Valencia is too long +const u8 gTestMenuStr_Harukomachi[] = DTR("ใใซใณใใ", "MAY"); // May town? +const u8 gTestMenuStr_Raymond[] = _("RAYMOND"); +const u8 gTestMenuStr_Tiffany[] = _("TIFFANY"); +const u8 gTestMenuStr_KumaXChie[] = DTR("ใใพxใกใ", "KUMA"); // Chie Kuma? const struct { const u8 * text; u32 flags; -} gUnknown_Debug_839BDC4[] = { - {Str_839BD90, 0x0}, - {Str_839BD96, 0x0}, - {Str_839BDA0, 0x1}, - {Str_839BDA6, 0x1}, - {Str_839BDAC, 0x80}, - {Str_839BDB4, 0x81}, - {Str_839BD9C, 0x0}, - {Str_839BDBC, 0x1} +} gTestMenu_FieldStartNames[] = { + {gTestMenuStr_Junichi, 0x0}, + {gTestMenuStr_Daigoro, 0x0}, + {gTestMenuStr_Valencia, 0x1}, + {gTestMenuStr_Harukomachi, 0x1}, + {gTestMenuStr_Raymond, 0x80}, + {gTestMenuStr_Tiffany, 0x81}, + {gTestMenuStr_Tetsuji, 0x0}, + {gTestMenuStr_KumaXChie, 0x1} }; void DebugMenu_8076EF4(void) @@ -621,12 +635,12 @@ void DebugMenu_8076EF4(void) u8 i; Menu_DrawStdWindowFrame(0, 0, 11, 17); - Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), gUnknown_Debug_839BDC4); - for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_839BDC4); i++) + Menu_PrintItems(2, 1, ARRAY_COUNT(gTestMenu_FieldStartNames), gTestMenu_FieldStartNames); + for (i = 0; i < ARRAY_COUNT(gTestMenu_FieldStartNames); i++) { - sub_8071F60((gUnknown_Debug_839BDC4[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1); + sub_8071F60((gTestMenu_FieldStartNames[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1); } - InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), 0, 9); + InitMenu(0, 1, 1, ARRAY_COUNT(gTestMenu_FieldStartNames), 0, 9); } void DebugMenu_8076F60(u8 taskId) @@ -645,9 +659,9 @@ void DebugMenu_8076F60(u8 taskId) break; default: { - u8 flags = gUnknown_Debug_839BDC4[cursorPos].flags; + u8 flags = gTestMenu_FieldStartNames[cursorPos].flags; gSaveBlock2.playerGender = flags & 1; - StringCopy(gSaveBlock2.playerName, gUnknown_Debug_839BDC4[cursorPos].text); + StringCopy(gSaveBlock2.playerName, gTestMenu_FieldStartNames[cursorPos].text); if ((flags & 0x80) == 0) debug_sub_8057508(FALSE); else @@ -869,7 +883,7 @@ const u8 Str_839BE0F[] = _("HP"); const u8 Str_839BE12[] = _("PAR"); const u8 Str_839BE16[] = _("SLP"); const u8 Str_839BE1A[] = _("PSN"); -const u8 Str_839BE1E[] = _("ใฆใใค"); +const u8 Str_839BE1E[] = KANA("ใฆใใค"); u8 DebugMenu_8077434(void) { @@ -1161,10 +1175,12 @@ u8 DebugMenu_8077954(void) return TRUE; } -const u8 Str_839BE6B[] = _("ใใใใใใฎใใใฌใผใใผ:{STR_VAR_1}\n" - "ใใใใใใใใใใใฌใผใใผ:{STR_VAR_2}"); -const u8 Str_839BE8D[] = _("ใใ"); -const u8 Str_839BE90[] = _("ใใชใ"); +const u8 Str_839BE6B[] = DTR("ใใใใใใฎใใใฌใผใใผ:{STR_VAR_1}\n" + "ใใใใใใใใใใใฌใผใใผ:{STR_VAR_2}", + "Rematchable TRAINERS: {STR_VAR_1}\n" + "TRAINERS in rematch state: {STR_VAR_2}"); +const u8 Str_839BE8D[] = DTR("ใใ", "ON"); +const u8 Str_839BE90[] = DTR("ใใชใ", "OFF"); bool8 DebugMenu_8077974(void) { @@ -1251,11 +1267,15 @@ bool8 DebugMenu_8077AE8(void) return TRUE; } -const u8 Str_839BF0C[] = _("ใฎใใใ{STR_VAR_1}ใป"); -const u8 Str_839BF14[] = _("{STR_VAR_1}\n" - "ใฎใใใ{STR_VAR_2}ใป"); -const u8 Str_839BF1F[] = _("ใใฎใพใใซใฏ\n" - "ใญใฅใผใใใใใใพใใ๏ผ"); +const u8 Str_839BF0C[] = DTR("ใฎใใใ{STR_VAR_1}ใป", "Remaining steps: {STR_VAR_1}"); +const u8 Str_839BF14[] = DTR("{STR_VAR_1}\n" + "ใฎใใใ{STR_VAR_2}ใป", + "{STR_VAR_1}\n" + "Remaining steps: {STR_VAR_2}"); +const u8 Str_839BF1F[] = DTR("ใใฎใพใใซใฏ\n" + "ใญใฅใผใใใใใใพใใ๏ผ", + "There is no {POKEBLOCK}\n" + "in front of you!"); bool8 DebugMenu_8077B00(void) { @@ -1268,11 +1288,11 @@ bool8 DebugMenu_8077B00(void) return FALSE; } -const u8 Str_839BF33[] = _("ใปใใใใฎใใ1ใซใใ"); -const u8 Str_839BF3F[] = _("ใใผใซใใฎใใ1ใซใใ"); -const u8 Str_839BF4B[] = _("ใญใฅใผใใใใฐ"); -const u8 Str_839BF53[] = _("ใใผใซใใฎใใ30ใซ"); -const u8 Str_839BF5E[] = _("ใปใใใใฎใใ500ใซ"); +const u8 Str_839BF33[] = DTR("ใปใใใใฎใใ1ใซใใ", "One step remaining"); +const u8 Str_839BF3F[] = DTR("ใใผใซใใฎใใ1ใซใใ", "One BALL remaining"); +const u8 Str_839BF4B[] = DTR("ใญใฅใผใใใใฐ", "{POKEBLOCK} FEEDER"); +const u8 Str_839BF53[] = DTR("ใใผใซใใฎใใ30ใซ", "30 BALLS remaining"); +const u8 Str_839BF5E[] = DTR("ใปใใใใฎใใ500ใซ", "500 steps remaining"); const struct MenuAction gUnknown_Debug_839BF6C[] = { {Str_839BF4B, DebugMenu_8077B00}, @@ -1366,146 +1386,46 @@ u8 DebugMenu_8077C14(void) return FALSE; } -const u8 Str_839BFDC[] = _("ใใใใใใตใใใณใใ"); -const s32 gUnknown_Debug_839BFE8[] = { - 99, 10, 2, 23, - 99, 10, 2, 26 +const u8 Str_839BFDC[] = DTR("ใใใใใใตใใใณใใ", " HOURS MINUTES SECONDS"); + +static const struct DebugBuildDateInfo gDebugBuildDateInfo[] = { + { 99, 10, 2, 23 }, + { 99, 10, 2, 26 } }; -#ifdef NONMATCHING -void DebugMenu_8077C3C(const char * a0, u8 * a1) +// Parses the version code in a highly inefficient and unsafe way. +void DebugMenu_ConvertBuildDate(const char *buildDateStr, u8 *out) { - // Register allocation swap - // Intended: r7 = a1, r6 = gUnknown_030006BC[2] - // Observed: r6 = a1, r7 = gUnknown_030006BC[2] - int i; - - gUnknown_030006BC = gUnknown_Debug_839BFE8; - *a1++ = CHAR_SPACE; - *a1++ = CHAR_SPACE; - - for (i = 0; i < 2; i++, gUnknown_030006BC += 4) - { - u32 r5 = 0; - int r2; - int r4; - for (r2 = gUnknown_030006BC[1], r4 = 0; r4 < gUnknown_030006BC[2]; r4++, r2 /= 10) - r5 += (a0[gUnknown_030006BC[3] + r4] - '0') * r2; - if (gUnknown_030006BC[0] < r5) - r5 = gUnknown_030006BC[0]; - a1 = ConvertIntToDecimalStringN(a1, r5, STR_CONV_MODE_LEADING_ZEROS, gUnknown_030006BC[2]); - } - a1[0] = a0[29] - 'A' + CHAR_A; - if (a1[0] > 0xf6) - a1[0] = 0xf6; - a1[1] = EOS; -} -#else -NAKED void DebugMenu_8077C3C(const char * a0, u8 * a1) -{ - asm("\tpush\t{r4, r5, r6, r7, lr}\n" - "\tmov\tr7, sl\n" - "\tmov\tr6, r9\n" - "\tmov\tr5, r8\n" - "\tpush\t{r5, r6, r7}\n" - "\tadd\tsp, sp, #0xfffffffc\n" - "\tmov\tsl, r0\n" - "\tadd\tr7, r1, #0\n" - "\tldr\tr0, ._271 @ gUnknown_030006BC\n" - "\tldr\tr1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" - "\tstr\tr1, [r0]\n" - "\tmov\tr1, #0x0\n" - "\tstrb\tr1, [r7]\n" - "\tadd\tr7, r7, #0x1\n" - "\tstrb\tr1, [r7]\n" - "\tadd\tr7, r7, #0x1\n" - "\tmov\tr3, #0x0\n" - "\tmov\tr8, r0\n" - "._269:\n" - "\tmov\tr5, #0x0\n" - "\tldr\tr1, ._271 @ gUnknown_030006BC\n" - "\tldr\tr0, [r1]\n" - "\tldr\tr2, [r0, #0x4]\n" - "\tmov\tr4, #0x0\n" - "\tldr\tr1, [r0, #0x8]\n" - "\tadd\tr3, r3, #0x1\n" - "\tmov\tr9, r3\n" - "\tcmp\tr5, r1\n" - "\tbge\t._266\t@cond_branch\n" - "\tadd\tr3, r0, #0\n" - "\tadd\tr6, r1, #0\n" - "._267:\n" - "\tldr\tr0, [r3, #0xc]\n" - "\tadd\tr0, r0, r4\n" - "\tadd r0, r0, sl\n" - "\tldrb\tr0, [r0]\n" - "\tsub\tr0, r0, #0x30\n" - "\tmul\tr0, r0, r2\n" - "\tadd\tr5, r5, r0\n" - "\tadd\tr4, r4, #0x1\n" - "\tadd\tr0, r2, #0\n" - "\tmov\tr1, #0xa\n" - "\tstr\tr3, [sp]\n" - "\tbl\t__divsi3\n" - "\tadd\tr2, r0, #0\n" - "\tldr\tr3, [sp]\n" - "\tcmp\tr4, r6\n" - "\tblt\t._267\t@cond_branch\n" - "._266:\n" - "\tmov\tr0, r8\n" - "\tldr\tr1, [r0]\n" - "\tldr\tr0, [r1]\n" - "\tcmp\tr0, r5\n" - "\tbcs\t._268\t@cond_branch\n" - "\tadd\tr5, r0, #0\n" - "._268:\n" - "\tldrb\tr3, [r1, #0x8]\n" - "\tadd\tr0, r7, #0\n" - "\tadd\tr1, r5, #0\n" - "\tmov\tr2, #0x2\n" - "\tbl\tConvertIntToDecimalStringN\n" - "\tadd\tr7, r0, #0\n" - "\tmov\tr3, r9\n" - "\tmov\tr1, r8\n" - "\tldr\tr0, [r1]\n" - "\tadd\tr0, r0, #0x10\n" - "\tstr\tr0, [r1]\n" - "\tcmp\tr3, #0x1\n" - "\tble\t._269\t@cond_branch\n" - "\tmov\tr1, sl\n" - "\tldrb\tr0, [r1, #0x1d]\n" - "\tadd\tr0, r0, #0x7a\n" - "\tstrb\tr0, [r7]\n" - "\tlsl\tr0, r0, #0x18\n" - "\tlsr\tr0, r0, #0x18\n" - "\tcmp\tr0, #0xf6\n" - "\tbls\t._270\t@cond_branch\n" - "\tmov\tr0, #0xf6\n" - "\tstrb\tr0, [r7]\n" - "._270:\n" - "\tmov\tr0, #0xff\n" - "\tstrb\tr0, [r7, #0x1]\n" - "\tadd\tsp, sp, #0x4\n" - "\tpop\t{r3, r4, r5}\n" - "\tmov\tr8, r3\n" - "\tmov\tr9, r4\n" - "\tmov\tsl, r5\n" - "\tpop\t{r4, r5, r6, r7}\n" - "\tpop\t{r0}\n" - "\tbx\tr0\n" - "._272:\n" - "\t.align\t2, 0\n" - "._271:\n" - "\t.word\tgUnknown_030006BC \n" - "\t.word\tgUnknown_Debug_839BFE8\n"); + // Prevents register allocation swap + // Intended: r7 = out, r6 = gDebugBuildDate->numDigits + // Observed: r6 = out, r7 = gDebugBuildDate->numDigits + ++out; --out; + + gDebugBuildDate = gDebugBuildDateInfo; + *out++ = CHAR_SPACE; + *out++ = CHAR_SPACE; + for (i = 0; i < 2; i++, gDebugBuildDate++) + { + int j; + int mul; + u32 date = 0; + for (mul = gDebugBuildDate->digitMultiplier, j = 0; j < gDebugBuildDate->numDigits; j++, mul /= 10) + date += (buildDateStr[gDebugBuildDate->offset + j] - '0') * mul; + if (gDebugBuildDate->max < date) + date = gDebugBuildDate->max; + out = ConvertIntToDecimalStringN(out, date, STR_CONV_MODE_LEADING_ZEROS, gDebugBuildDate->numDigits); + } + out[0] = buildDateStr[29] - 'A' + CHAR_A; + if (out[0] > 0xf6) // prevent special characters + out[0] = 0xf6; + out[1] = EOS; } -#endif void debug_sub_8077CF4(u8 x, u8 y) { - DebugMenu_8077C3C(BuildDateTime, gStringVar4); + DebugMenu_ConvertBuildDate(BuildDateTime, gStringVar4); Menu_PrintText(gStringVar4, x, y); } @@ -1636,7 +1556,7 @@ void DebugMenu_8077F40(u8 taskId) task->func = DebugMenu_8077F7C; } -const u8 Str_839C014[] = _("Howใmany๏ผ"); +const u8 Str_839C014[] = _("How many๏ผ"); void DebugMenu_8077F7C(u8 taskId) { @@ -1685,13 +1605,19 @@ void DebugMenu_807806C(u8 taskId) DebugMenu_8077048(); } -const u8 Str_839C01E[] = _("ใซใใใใใฐใใใ\n" - "ใใฑใขใณใใณใใผ\n" - "ใใฑใขใณใใ\n" - "ใใชใผใใผใใ\n" - "ใใ
ใใ\n" - "ใใใใใใใ"); -const u8 Str_839C04D[] = _("ใใผใฟใชใ"); +const u8 Str_839C01E[] = DTR("ใซใใใใใฐใใใ\n" + "ใใฑใขใณใใณใใผ\n" + "ใใฑใขใณใใ\n" + "ใใชใผใใผใใ\n" + "ใใ
ใใ\n" + "ใใใใใใใ", + "PORTRAIT No.\n" + "POKรฉMON No.\n" + "POKรฉMON Name\n" + "BREEDER Name\n" // TRN ? + "TYPE\n" + "Personality"); +const u8 Str_839C04D[] = DTR("ใใผใฟใชใ", "No data"); void DebugMenu_807808C(u32 a0) { @@ -1932,60 +1858,61 @@ u8 DebugMenu_OpenMysteryEvent(void) const u8 Str_839C07C[] = _("{STR_VAR_1}:{STR_VAR_2}\n" "{STR_VAR_3}"); -const u8 Str_839C085[] = _("ใฟใใใใใใผใฟ"); +const u8 Str_839C085[] = DTR("ใฟใใใใใใผใฟ", "Unused data"); const u8 Str_839C08E[] = _("Confirmation"); const u8 Str_839C09B[] = _("Max-1 set"); const u8 Str_839C0A5[] = _("Zero clear"); -const u8 Str_839C0B0[] = _("ใฌใใผใ"); -const u8 Str_839C0B5[] = _("ใฏใชใขใใใใ"); -const u8 Str_839C0BD[] = _("ใใ
ใใใใใใใใ"); -const u8 Str_839C0C8[] = _("ใใฎใฟใใใใใใใใใ"); -const u8 Str_839C0D5[] = _("ใใฆใใใใใใใ"); -const u8 Str_839C0DF[] = _("ใปใใ"); -const u8 Str_839C0E3[] = _("ใคใณใฟใใฅใผ"); -const u8 Str_839C0EA[] = _("ใใใซ"); -const u8 Str_839C0EE[] = _("ใใใใใใซ"); -const u8 Str_839C0F5[] = _("ใใฌใผใใผใใใซ"); -const u8 Str_839C0FE[] = _("ใงใใฉใใใ"); -const u8 Str_839C105[] = _("ใใฑใขใณใปใใ"); -const u8 Str_839C10D[] = _("ใคใฃใใใใใใ"); -const u8 Str_839C116[] = _("ใฟใใดใใใฃใ"); -const u8 Str_839C11E[] = _("ใใใใใ"); -const u8 Str_839C124[] = _("ใใฑใปใณใใใใตใ"); -const u8 Str_839C12E[] = _("ใใใใใใใตใ"); -const u8 Str_839C137[] = _("ใตใใกใชใใใใ"); -const u8 Str_839C140[] = _("ใฒใงใ:ใใใใใ"); -const u8 Str_839C14A[] = _("ใฒใงใ:ใใใใ ใ"); -const u8 Str_839C154[] = _("ใใกใใฒใฃใใ"); -const u8 Str_839C15C[] = _("ใคใใใใใใใ"); -const u8 Str_839C165[] = _("ใคใใใใใใใ"); -const u8 Str_839C16E[] = _("ใคใใใใใใก"); -const u8 Str_839C176[] = _("ใคใใใใใพใ"); -const u8 Str_839C17E[] = _("ใคใใใใใฒใใใ"); -const u8 Str_839C188[] = _("ใใ:ใฏใญใ"); -const u8 Str_839C18F[] = _("ใใ:ใใใใใ"); -const u8 Str_839C198[] = _("ในใญใใใใใใใใใใใ"); -const u8 Str_839C1A6[] = _("ใซใผใฌใใใใใใใใ"); -const u8 Str_839C1B2[] = _("ใใใซใฟใฏใผ"); -const u8 Str_839C1B9[] = _("ใใใซใฟใฏใผใใก"); -const u8 Str_839C1C2[] = _("ใใใซใฟใฏใผใใใใใ"); -const u8 Str_839C1CE[] = _("ใใญใใฏใใใใ"); -const u8 Str_839C1D7[] = _("ใคใใใใงใใญใใฏใคใใฃใ"); -const u8 Str_839C1E5[] = _("ใคใใใใณใณใในใใใก"); -const u8 Str_839C1F1[] = _("CPUใณใณใในใใใใ"); -const u8 Str_839C1FD[] = _("CPUใณใณใในใใใก"); -const u8 Str_839C208[] = _("ใใใใฎ"); -const u8 Str_839C20D[] = _("ใใฆใธใณใฐใใทใณ"); -const u8 Str_839C216[] = _("ใใใตใ"); -const u8 Str_839C21B[] = _("ใใใใใฟใ"); -const u8 Str_839C222[] = _("ใชใใณใใใใฃใ"); -const u8 Str_839C22B[] = _("ใ ใใใใจใณใใ"); -const u8 Str_839C234[] = _("TVใใใฟใ"); -const u8 Str_839C23B[] = _("ใจใใใใใฟใ"); -const u8 Str_839C243[] = _("ใใใใใใใฃใ"); -const u8 Str_839C24C[] = _("ใใฑใขใณใใใใ"); -const u8 Str_839C255[] = _("ใญใผใใฆใงใคใใใ"); -const u8 Str_839C25F[] = _("ใใใใใใฏใใฃใ"); +const u8 Str_839C0B0[] = DTR("ใฌใใผใ", "SAVES"); +const u8 Str_839C0B5[] = DTR("ใฏใชใขใใใใ", "Clear time"); +const u8 Str_839C0BD[] = DTR("ใใ
ใใใใใใใใ", "TRENDS created"); +const u8 Str_839C0C8[] = DTR("ใใฎใฟใใใใใใใใใ", "BERRIES planted"); +const u8 Str_839C0D5[] = DTR("ใใฆใใใใใใใ", "BIKE swaps"); +const u8 Str_839C0DF[] = DTR("ใปใใ", "Steps"); +const u8 Str_839C0E3[] = DTR("ใคใณใฟใใฅใผ", "INTERVIEWS"); +const u8 Str_839C0EA[] = DTR("ใใใซ", "BATTLES"); +const u8 Str_839C0EE[] = DTR("ใใใใใใซ", "Wild BATTLES"); +const u8 Str_839C0F5[] = DTR("ใใฌใผใใผใใใซ", "TRAINER BATTLES"); +const u8 Str_839C0FE[] = DTR("ใงใใฉใใใ", "HALL of FAME times"); +const u8 Str_839C105[] = DTR("ใใฑใขใณใปใใ", "POKรฉMON caught"); +const u8 Str_839C10D[] = DTR("ใคใฃใใใใใใ", "Times fished"); +const u8 Str_839C116[] = DTR("ใฟใใดใใใฃใ", "EGGS hatched"); +const u8 Str_839C11E[] = DTR("ใใใใใ", "Evolutions"); +const u8 Str_839C124[] = DTR("ใใฑใปใณใใใใตใ", "{PKMN} Center heals"); +const u8 Str_839C12E[] = DTR("ใใใใใใใตใ", "Home heals"); +const u8 Str_839C137[] = DTR("ใตใใกใชใใใใ", "SAFARI times"); +const u8 Str_839C140[] = DTR("ใฒใงใ:ใใใใใ", "HM: CUT"); +const u8 Str_839C14A[] = DTR("ใฒใงใ:ใใใใ ใ", "HM: ROCK SMASH"); +const u8 Str_839C154[] = DTR("ใใกใใฒใฃใใ", "BASE relocations"); +const u8 Str_839C15C[] = DTR("ใคใใใใใใใ", "LINK TRADES"); +const u8 Str_839C165[] = DTR("ใคใใใใใใใ", "LINK BATTLES"); +const u8 Str_839C16E[] = DTR("ใคใใใใใใก", "LINK WINS"); +const u8 Str_839C176[] = DTR("ใคใใใใใพใ", "LINK LOSSES"); +const u8 Str_839C17E[] = DTR("ใคใใใใใฒใใใ", "LINK TIES"); +// Idiot counter? +const u8 Str_839C188[] = DTR("ใใ:ใฏใญใ", "Move: SPLASH"); +const u8 Str_839C18F[] = DTR("ใใ:ใใใใใ", "Move: STRUGGLE"); +const u8 Str_839C198[] = DTR("ในใญใใใใใใใใใใใ", "SLOTS jackpots"); +const u8 Str_839C1A6[] = DTR("ใซใผใฌใใใใใใใใ", "ROULETTE streak"); +const u8 Str_839C1B2[] = DTR("ใใใซใฟใฏใผ", "BATTLE TOWER"); +const u8 Str_839C1B9[] = DTR("ใใใซใฟใฏใผใใก", "BATTLE TOWER wins"); +const u8 Str_839C1C2[] = DTR("ใใใซใฟใฏใผใใใใใ", "BATTLE TOWER streak"); +const u8 Str_839C1CE[] = DTR("ใใญใใฏใใใใ", "{POKEBLOCK}s created"); +const u8 Str_839C1D7[] = DTR("ใคใใใใงใใญใใฏใคใใฃใ", "LINK {POKEBLOCK}s made"); +const u8 Str_839C1E5[] = DTR("ใคใใใใณใณใในใใใก", "LINK CONTEST wins"); +const u8 Str_839C1F1[] = DTR("CPUใณใณใในใใใใ", "CPU CONTEST entries"); +const u8 Str_839C1FD[] = DTR("CPUใณใณใในใใใก", "CPU CONTEST wins"); +const u8 Str_839C208[] = DTR("ใใใใฎ", "Shopping"); +const u8 Str_839C20D[] = DTR("ใใฆใธใณใฐใใทใณ", "ITEMFINDER"); +const u8 Str_839C216[] = DTR("ใใใตใ", "Rained"); +const u8 Str_839C21B[] = DTR("ใใใใใฟใ", "POKรฉDEX reads"); +const u8 Str_839C222[] = DTR("ใชใใณใใใใฃใ", "RIBBONS awarded"); +const u8 Str_839C22B[] = DTR("ใ ใใใใจใณใใ", "Ledge hops"); +const u8 Str_839C234[] = DTR("TVใใใฟใ", "Watched TV"); +const u8 Str_839C23B[] = DTR("ใจใใใใใฟใ", "Checked CLOCK"); +const u8 Str_839C243[] = DTR("ใใใใใใใฃใ", "LOTTERY wins"); +const u8 Str_839C24C[] = DTR("ใใฑใขใณใใใใ", "POKรฉMON DAYCARE uses"); +const u8 Str_839C255[] = DTR("ใญใผใใฆใงใคใใใ", "CABLE CAR uses"); +const u8 Str_839C25F[] = DTR("ใใใใใใฏใใฃใ", "HOT SPRING uses"); const struct { u32 maxVal; @@ -2248,7 +2175,7 @@ u8 DebugMenu_OpenBerryInfo(void) return TRUE; } -const u8 Str_839C42E[] = _("ใฌใใซใใในใใผใธ"); +const u8 Str_839C42E[] = DTR("ใฌใใซใใในใใผใธ", "TOWER level stage"); void DebugMenu_8078950(void) { @@ -2337,7 +2264,7 @@ u8 DebugMenu_BattleTowerStages(void) return TRUE; } -const u8 Str_839C438[] = _("ใใญใใฏใใฐใซใผใ{STR_VAR_1}"); +const u8 Str_839C438[] = DTR("ใใญใใฏใใฐใซใผใ{STR_VAR_1}", "{POKEBLOCK} GROUP{STR_VAR_1}"); void DebugMenu_8078B70(u16 value) { @@ -2473,10 +2400,10 @@ bool8 DebugMenu_8078CA8(void) return FALSE; } -const u8 Str_839C5CC[] =_("ใใใใฟใใใใใ"); -const u8 Str_839C5D6[] =_("ใใฟใใฟใใใใ"); -const u8 Str_839C5DF[] =_("ใใใใฟใใใฃใฑใ"); -const u8 Str_839C5E9[] =_("ใใฟใใฟใใใฃใฑใ"); +const u8 Str_839C5CC[] = DTR("ใใใใฟใใใใใ", "Write successful"); +const u8 Str_839C5D6[] = DTR("ใใฟใใฟใใใใ", "Read successful"); +const u8 Str_839C5DF[] = DTR("ใใใใฟใใใฃใฑใ", "Writing failed"); +const u8 Str_839C5E9[] = DTR("ใใฟใใฟใใใฃใฑใ", "Reading failed"); bool8 DebugMenu_8078CE4(void) { diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c index 68ccc6f9d..aa3c1d993 100644 --- a/src/debug/taya_debug_window.c +++ b/src/debug/taya_debug_window.c @@ -65,7 +65,7 @@ const u8 gUnknown_Debug_083C4E85[] = _("MAIL"); const u8 gUnknown_Debug_083C4E8A[] = _("MAILใsalutation"); const u8 gUnknown_Debug_083C4E9A[] = _("BARD'sใsong"); const u8 gUnknown_Debug_083C4EA6[] = _("Interview"); -const u8 gUnknown_Debug_083C4EB0[] = _("InterviewใทBTใน"); +const u8 gUnknown_Debug_083C4EB0[] = _("Interview(BT)"); const struct { const u8 * text; @@ -88,10 +88,10 @@ const u8 gUnknown_Debug_083C4F0E[] = _("BARD"); const u8 gUnknown_Debug_083C4F13[] = _("HIPSTER"); const u8 gUnknown_Debug_083C4F1B[] = _("RECYCLE"); const u8 gUnknown_Debug_083C4F23[] = _("STORYTELLER"); -const u8 gUnknown_Debug_083C4F2F[] = _("GIDDYใGUY"); -const u8 gUnknown_Debug_083C4F39[] = _("FlagใOFF"); -const u8 gUnknown_Debug_083C4F42[] = _("21ใletters"); -const u8 gUnknown_Debug_083C4F4D[] = _("ใใฆใใชใ"); +const u8 gUnknown_Debug_083C4F2F[] = _("GIDDY GUY"); +const u8 gUnknown_Debug_083C4F39[] = _("Flag OFF"); +const u8 gUnknown_Debug_083C4F42[] = _("21 letters"); +const u8 gUnknown_Debug_083C4F4D[] = DTR("ใใฆใใชใ", "BECOME HIP"); const struct { const u8 * text; @@ -107,18 +107,18 @@ const struct { {gUnknown_Debug_083C4F4D} }; -const u8 gUnknown_Debug_083C4F94[] = _("ใใใใใใใใพใกใใ ใใ๏ผ"); +const u8 gUnknown_Debug_083C4F94[] = DTR("ใใใใใใใใพใกใใ ใใ๏ผ", "Please wait!"); const u8 gUnknown_Debug_083C4FA3[] = _("Weather"); -const u8 gUnknown_Debug_083C4FAB[] = _("LANETTE'SใPC"); +const u8 gUnknown_Debug_083C4FAB[] = _("LANETTE'S PC"); const u8 gUnknown_Debug_083C4FB8[] = _("SimpleText"); const u8 gUnknown_Debug_083C4FC3[] = _("Oldใman"); const u8 gUnknown_Debug_083C4FCB[] = _("Trend"); -const u8 gUnknown_Debug_083C4FD1[] = _("TrendใR"); -const u8 gUnknown_Debug_083C4FD9[] = _("Townใflag"); -const u8 gUnknown_Debug_083C4FE3[] = _("Awardใaใribbon"); +const u8 gUnknown_Debug_083C4FD1[] = _("Trend R"); +const u8 gUnknown_Debug_083C4FD9[] = _("Town flag"); +const u8 gUnknown_Debug_083C4FE3[] = _("Award a ribbon"); const u8 gUnknown_Debug_083C4FF2[] = _("{PKMN}LOTTERY"); const u8 gUnknown_Debug_083C4FFC[] = _("Trainer"); -const u8 gUnknown_Debug_083C5004[] = _("POKรฉNAVใD"); +const u8 gUnknown_Debug_083C5004[] = _("POKรฉNAV D"); const struct MenuAction gUnknown_Debug_083C5010[] = { {gUnknown_Debug_083C4FA3, debug_sub_808560C}, @@ -195,7 +195,7 @@ const struct { } }; -const u8 gUnknown_Debug_083C517C[] = _("SelectใRibbon"); +const u8 gUnknown_Debug_083C517C[] = _("Select Ribbon"); bool8 TayaDebugMenu_Trend(void) { diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index daaca570c..c9804c638 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -16,6 +16,8 @@ #include "contest_painting.h" #include "sound.h" +// TRN: If anyone wants to translate the dummy options, they are welcome to :P + static u16 sPicTest_Species; static u32 sPicTest_OTID; static u32 sPicTest_Personality; @@ -295,19 +297,19 @@ static const struct MenuAction sMenuActions_TrickRelated[] = { {sString_TrickRelated_TrickMaster, TrickRelated_TrickMaster_InitSubmenu} }; -static const u8 sString_Event1[] = _("ใใผใ1"); -static const u8 sString_Event2[] = _("ใใผใ2"); +static const u8 sString_Event1[] = DTR("ใใผใ1", "PART 1"); +static const u8 sString_Event2[] = DTR("ใใผใ2", "PART 2"); static const struct MenuAction sMenuActions_ControlEvents[] = { {sString_Event1, ControlEvents_InitSubmenu1}, {sString_Event2, ControlEvents_InitSubmenu2} }; -static const u8 sString_EventFlag[] = _("ใคใใณใFLAG"); -static const u8 sString_VanishFlag[] = _("ใใใทใฅFLAG"); -static const u8 sString_TrainerFlag[] = _("ใใฌใผใใผFLAG"); +static const u8 sString_EventFlag[] = DTR("ใคใใณใFLAG", "EVENT FLAG"); +static const u8 sString_VanishFlag[] = DTR("ใใใทใฅFLAG", "VANISH FLAG"); +static const u8 sString_TrainerFlag[] = DTR("ใใฌใผใใผFLAG", "TRAINER FLAG"); static const u8 sString_SysFlag[] = _("SYSFLAG"); -static const u8 sString_BallVanishFlag[] = _("BALLใใใทใฅFLAG"); +static const u8 sString_BallVanishFlag[] = DTR("BALLใใใทใฅFLAG", "VANISH FLAG"); static const u8 sString_FH[] = _("FH"); static const u8 sString_FH_OBJ[] = _("FH-OBJ"); @@ -326,7 +328,7 @@ static const u8 sString_SysWork[] = _("SYSWORK"); static const u8 sString_LocalWork[] = _("LOCALWORK"); static const u8 sString_ObjWork[] = _("OBJWORK"); static const u8 sString_AnsWork[] = _("ANSWORK"); -static const u8 sString_SaveWorkPart2[] = _("SAVEWORKใใใผใ2"); +static const u8 sString_SaveWorkPart2[] = DTR("SAVEWORK ใใผใ2", "SAVEWORK PART 2"); static const struct MenuAction sMenuActions_ControlWorks[] = { {sString_SaveWork, ControlWorks_SaveWork_InitSubmenu}, @@ -337,15 +339,15 @@ static const struct MenuAction sMenuActions_ControlWorks[] = { {sString_SaveWorkPart2, ControlWorks_SaveWorkPart2_InitSubmenu} }; -static const u8 sString_Clear_go[] = _("ใฏใชใขใ"); -static const u8 sString_Coin_kounyuuka[] = _("ใณใคใณใใใซใ
ใใใฎใ"); -static const u8 sString_Oldale_supporter_set[] = _("ใณใใญใตใใผใฟใผใปใใ"); -static const u8 sString_New_Mauville_open[] = _("ใใฅใผใญใณใปใOPEN"); -static const u8 sString_Renrakusen_ni_noreru[] = _("ใใใใใใใซใฎใใ"); -static const u8 sString_Egg_tsuika[] = _("ใฟใใดใคใใ"); -static const u8 sString_Item_ippai[] = _("ใขใคใใ ใใฃใฑใ"); -static const u8 sString_Gezzu_ippai[] = _("ใฐใใบใใฃใฑใ"); -static const u8 sString_Coin_ippai[] = _("COINใใฃใฑใ"); +static const u8 sString_Clear_go[] = DTR("ใฏใชใขใ", "POSTGAME"); +static const u8 sString_Coin_kounyuuka[] = DTR("ใณใคใณใใใซใ
ใใใฎใ", ",Get COIN CASE"); +static const u8 sString_Oldale_supporter_set[] = DTR("ใณใใญใตใใผใฟใผใปใใ", "OLDALE POST RIVAL"); +static const u8 sString_New_Mauville_open[] = DTR("ใใฅใผใญใณใปใOPEN", "Open NEW MAUVILLE"); +static const u8 sString_Renrakusen_ni_noreru[] = DTR("ใใใใใใใซใฎใใ", "Get S.S. TICKET"); +static const u8 sString_Egg_tsuika[] = DTR("ใฟใใดใคใใ", "Get KYOGRE EGG"); +static const u8 sString_Item_ippai[] = DTR("ใขใคใใ ใใฃใฑใ", "Max Items"); +static const u8 sString_Gezzu_ippai[] = DTR("ใฐใใบใใฃใฑใ", "Max Decorations"); +static const u8 sString_Coin_ippai[] = DTR("COINใใฃใฑใ", "Max COINS"); static const struct MenuAction sMenuActions_ControlEvents_Events1[] = { {sString_Clear_go, CallScript_DoHallOfFame}, @@ -359,12 +361,13 @@ static const struct MenuAction sMenuActions_ControlEvents_Events1[] = { {sString_Coin_ippai, CallScript_GiveAllCoins} }; -static const u8 sString_SootpolisGymOpen[] = _("ใ ใญใธใ OPEN"); -static const u8 sString_MoneyTo0[] = _("ใใใญใ0ใธ"); -static const u8 sString_BarboachFull[] = _("ใใธใงใใใFULL"); -static const u8 sString_ShroomishFull[] = _("ใญใใณใณใFULL"); -static const u8 sString_BarboachEgg[] = _("ใใธใงใใใใฟใใด"); -static const u8 sString_ShroomishEgg[] = _("ใญใใณใณใใฟใใด"); +// Note: JP text says Dewford Gym for some reason. +static const u8 sString_SootpolisGymOpen[] = DTR("ใ ใญใธใ OPEN", "Open SOOTOPOLIS GYM"); +static const u8 sString_MoneyTo0[] = DTR("ใใใญใ0ใธ", "Set money to 0"); +static const u8 sString_BarboachFull[] = DTR("ใใธใงใใใFULL", "Full BARBOACH PARTY"); +static const u8 sString_ShroomishFull[] = DTR("ใญใใณใณใFULL", "Full SHROOMISH PARTY"); +static const u8 sString_BarboachEgg[] = DTR("ใใธใงใใใใฟใใด", "Get BARBOACH EGG"); +static const u8 sString_ShroomishEgg[] = DTR("ใญใใณใณใใฟใใด", "Get SHROOMISH EGG"); static const struct MenuAction sMenuActions_ControlEvents_Events2[] = { {sString_SootpolisGymOpen, CallScript_OpenSootopolisGym}, @@ -375,7 +378,7 @@ static const struct MenuAction sMenuActions_ControlEvents_Events2[] = { {sString_ShroomishEgg, CallScript_GiveShroomishEgg} }; -static const u8 sString_Answork_Mikansei[] = _("ANSWORKใใฟใใใใ"); +static const u8 sString_Answork_Mikansei[] = DTR("ANSWORKใใฟใใใใ", "ANSWORK Incomplete"); static const struct MenuAction sMenuActions_ControlEvents_AnsWork[] = { {sString_Answork_Mikansei, DummyMenuAction} @@ -499,15 +502,15 @@ static const u16 gUnknown_Debug_083C12D2[][9] = { {0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10} }; -static const u8 gUnknown_Debug_083C12F6[] = _("BATCH"); -static const u8 gUnknown_Debug_083C12FC[] = _("ใฟใฆใณใจใใกใใ"); -static const u8 gUnknown_Debug_083C1305[] = _("ใทใใฃใจใใกใใ"); +static const u8 gUnknown_Debug_083C12F6[] = DTR("BATCH", "BADGE"); +static const u8 gUnknown_Debug_083C12FC[] = DTR("ใฟใฆใณใจใใกใใ", "Towns arrived"); +static const u8 gUnknown_Debug_083C1305[] = DTR("ใทใใฃใจใใกใใ", "Cities arrived"); static const u8 gUnknown_Debug_083C130E[] = _("GET"); -static const u8 gUnknown_Debug_083C1312[] = _("ใใฎใ1"); -static const u8 gUnknown_Debug_083C1317[] = _("ใใฎใ2"); -static const u8 gUnknown_Debug_083C131C[] = _("ใใฎใ3"); -static const u8 gUnknown_Debug_083C1321[] = _("ใใฎใ4"); -static const u8 gUnknown_Debug_083C1326[] = _("ใใฎใใใจใใกใใ"); +static const u8 gUnknown_Debug_083C1312[] = DTR("ใใฎใ1", "Other 1"); +static const u8 gUnknown_Debug_083C1317[] = DTR("ใใฎใ2", "Other 2"); +static const u8 gUnknown_Debug_083C131C[] = DTR("ใใฎใ3", "Other 3"); +static const u8 gUnknown_Debug_083C1321[] = DTR("ใใฎใ4", "Other 4"); +static const u8 gUnknown_Debug_083C1326[] = DTR("ใใฎใใใจใใกใใ", "Others arrived"); static const struct MenuAction gUnknown_Debug_083C1330[] = { {gUnknown_Debug_083C12F6, debug_sub_808CFA4}, @@ -717,7 +720,7 @@ static const u16 gUnknown_Debug_083C19C6[][9] = { {FLAG_LANDMARK_SEAFLOOR_CAVERN, FLAG_LANDMARK_BATTLE_TOWER, FLAG_LANDMARK_SOUTHERN_ISLAND, FLAG_SYS_POKEMON_LEAGUE_FLY, FLAG_LANDMARK_SKY_PILLAR} }; -static const u8 gDebug_0x83C1A68[] = _("FVใผBALLใใใผใ1"); +static const u8 gDebug_0x83C1A68[] = DTR("FVใผBALLใใใผใ1", "FV-BALL PART 1"); static const struct MenuAction gUnknown_Debug_083C1A78[] = { {gDebug_0x83C1A68, debug_sub_808D8D8} @@ -737,9 +740,9 @@ static const u16 gUnknown_Debug_083C1AAE[][9] = { {FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS_2, FLAG_ITEM_MOSSDEEP_STEVENS_HOUSE_1} }; -static const u8 gUnknown_Debug_083C1AC0[] = _("ใธใ ใชใผใใผ"); -static const u8 gUnknown_Debug_083C1AC7[] = _("ใใฆใใฎใ"); -static const u8 gUnknown_Debug_083C1ACD[] = _("ใฟใคใ/Champใญใผใ"); +static const u8 gUnknown_Debug_083C1AC0[] = DTR("ใธใ ใชใผใใผ", "GYM LEADER"); +static const u8 gUnknown_Debug_083C1AC7[] = DTR("ใใฆใใฎใ", "ELITE FOUR"); +static const u8 gUnknown_Debug_083C1ACD[] = DTR("ใฟใคใ/Champใญใผใ", "WALLY/VICTORY ROAD"); static const struct MenuAction gUnknown_Debug_083C1ADC[] = { {gUnknown_Debug_083C1AC0, debug_sub_808CD08}, @@ -792,14 +795,14 @@ static const u16 gUnknown_Debug_083C1C38[][9] = { {0x04E1} }; -static const u8 gUnknown_Debug_083C1C6E[] = _("120/119ใฐใใฉใใใซใฏใฌใชใณ"); -static const u8 gUnknown_Debug_083C1C80[] = _("ใใฎใ1ใ/ใSUPPORTM/W"); -static const u8 gUnknown_Debug_083C1C92[] = _("ODAMAKI/FIGHTER1"); -static const u8 gUnknown_Debug_083C1CA3[] = _("MITSURU/TENKI"); -static const u8 gUnknown_Debug_083C1CB1[] = _("ใใฎใ2ใ/DAIGO"); +static const u8 gUnknown_Debug_083C1C6E[] = DTR("120/119ใฐใใฉใใใซใฏใฌใชใณ", "ROUTE 120/119 KECLEON"); +static const u8 gUnknown_Debug_083C1C80[] = DTR("ใใฎใ1ใ/ใSUPPORTM/W", "Other 1/SUPPORT/M/W"); +static const u8 gUnknown_Debug_083C1C92[] = DTR("ODAMAKI/FIGHTER1", "BIRCH/FIGHTER1"); +static const u8 gUnknown_Debug_083C1CA3[] = DTR("MITSURU/TENKI", "WALLY/WEATHER"); +static const u8 gUnknown_Debug_083C1CB1[] = DTR("ใใฎใ2ใ/DAIGO", "Other 2/STEVEN"); static const u8 gUnknown_Debug_083C1CBD[] = _("POKE/POKEMON"); static const u8 gUnknown_Debug_083C1CCA[] = _("MAMA/SUPPORT02"); -static const u8 gUnknown_Debug_083C1CD9[] = _("HAGI"); +static const u8 gUnknown_Debug_083C1CD9[] = DTR("HAGI", "Mr. BRINEY"); static const u8 gUnknown_Debug_083C1CDE[] = _("SUPPORT01"); static const struct MenuAction gUnknown_Debug_083C1CE8[] = { @@ -1020,15 +1023,16 @@ static const u16 gUnknown_Debug_083C271A[][9] = { {FLAG_HIDE_RIVAL_BIRCH_LAB, FLAG_HIDE_RIVAL_CHAMPIONS_ROOM, FLAG_HIDE_RIVAL_RUSTBORO, FLAG_HIDE_RIVAL_LILYCOVE_MART, FLAG_HIDE_RIVAL_ROUTE103, FLAG_HIDE_RIVAL_ROUTE110, FLAG_HIDE_RIVAL_ROUTE119, FLAG_HIDE_RIVAL_LAVARIDGE_1, FLAG_HIDE_RIVAL_OLDALE_TOWN} }; -static const u8 gUnknown_Debug_083C27BC[] = _("FEใฒใงใใใ/ใใใณใใใใ"); -static const u8 gUnknown_Debug_083C27CC[] = _("FEใ ใใใชใขใคใใ PART1"); -static const u8 gUnknown_Debug_083C27DC[] = _("ใใฎใ1"); -static const u8 gUnknown_Debug_083C27E1[] = _("MITSURU/DOOR"); -static const u8 gUnknown_Debug_083C27EE[] = _("ใซใฉใฏใชใใใ10ใฎใใใใ/GYM07"); -static const u8 gUnknown_Debug_083C2803[] = _("SUPPORT/ใใฎใ4"); -static const u8 gUnknown_Debug_083C2810[] = _("DAISUKI/ใใฎใ5"); -static const u8 gUnknown_Debug_083C281D[] = _("ใใฎใ2"); -static const u8 gUnknown_Debug_083C2822[] = _("ใใฎใ6"); +static const u8 gUnknown_Debug_083C27BC[] = DTR("FEใฒใงใใใ/ใใใณใใใใ", "Field HMs/DEVON-related"); +static const u8 gUnknown_Debug_083C27CC[] = DTR("FEใ ใใใชใขใคใใ PART1", "Field Key Items Part 1"); +static const u8 gUnknown_Debug_083C27DC[] = DTR("ใใฎใ1", "Other 1"); +static const u8 gUnknown_Debug_083C27E1[] = DTR("MITSURU/DOOR", "WALLY/Door"); +static const u8 gUnknown_Debug_083C27EE[] = DTR("ใซใฉใฏใชใใใ10ใฎใใใใ/GYM07", + "TRICK HOUSE 10 Arrows/GYM 7"); +static const u8 gUnknown_Debug_083C2803[] = DTR("SUPPORT/ใใฎใ4", "Support/Other 4"); +static const u8 gUnknown_Debug_083C2810[] = DTR("DAISUKI/ใใฎใ5", "FAN CLUB/Other 5"); +static const u8 gUnknown_Debug_083C281D[] = DTR("ใใฎใ2", "Other 2"); +static const u8 gUnknown_Debug_083C2822[] = DTR("ใใฎใ6", "Other 6"); static const struct MenuAction gUnknown_Debug_083C2828[] = { {gUnknown_Debug_083C27BC, debug_sub_808C3B0}, @@ -1254,11 +1258,11 @@ static const u16 gUnknown_Debug_83C31E6[][9] = { {FLAG_BIRCH_AIDE_MET, FLAG_DECLINED_BIKE, FLAG_RECEIVED_SECRET_POWER} }; -static const u8 gUnknown_Debug_083C3288[] = _("CYCLEใใใใ"); -static const u8 gUnknown_Debug_083C3292[] = _("ใใใใใใใน"); -static const u8 gUnknown_Debug_083C329A[] = _("ใซใฆใณใฟ"); -static const u8 gUnknown_Debug_083C329F[] = _("ใใฎใ1"); -static const u8 gUnknown_Debug_083C32A4[] = _("ใใฎใ2"); +static const u8 gUnknown_Debug_083C3288[] = DTR("CYCLEใใใใ", "CYCLE-related"); +static const u8 gUnknown_Debug_083C3292[] = DTR("ใใใใใใใน", "Size comparison"); +static const u8 gUnknown_Debug_083C329A[] = DTR("ใซใฆใณใฟ", "Counter"); +static const u8 gUnknown_Debug_083C329F[] = DTR("ใใฎใ1", "Other 1"); +static const u8 gUnknown_Debug_083C32A4[] = DTR("ใใฎใ2", "Other 2"); static const struct MenuAction gUnknown_Debug_083C32AC[] = { {gUnknown_Debug_083C3288, debug_sub_808E400}, @@ -1404,11 +1408,11 @@ static const u16 gUnknown_Debug_083C371E[][9] = { }; static const u8 gUnknown_Debug_083C3742[] = _("SP"); -static const u8 gUnknown_Debug_083C3745[] = _("ใซใผใ ใR110ใPART1/ใซใฉใฏใช"); -static const u8 gUnknown_Debug_083C3759[] = _("ใซใผใ ใR110ใPART2"); -static const u8 gUnknown_Debug_083C3768[] = _("ใซใผใ ใใญใผใ"); -static const u8 gUnknown_Debug_083C3770[] = _("ใฝใใฟ1"); -static const u8 gUnknown_Debug_083C3775[] = _("ใฝใใฟ2"); +static const u8 gUnknown_Debug_083C3745[] = DTR("ใซใผใ ใR110ใPART1/ใซใฉใฏใช", "Room R110 Part 1/TRICK"); +static const u8 gUnknown_Debug_083C3759[] = DTR("ใซใผใ ใR110ใPART2", "Room R110 Part 2"); +static const u8 gUnknown_Debug_083C3768[] = DTR("ใซใผใ ใใญใผใ", "Room road"); // TRN +static const u8 gUnknown_Debug_083C3770[] = DTR("ใฝใใฟ1", "Other 1"); +static const u8 gUnknown_Debug_083C3775[] = DTR("ใฝใใฟ2", "Other 2"); static const struct MenuAction sMenuActions_ControlWorks_SaveWorkPart2[] = { {gUnknown_Debug_083C3742, ControlWorks_SaveWorkPart2_SP_InitSubsubmenu}, @@ -1561,15 +1565,15 @@ static const u16 sControlWorks_SaveWork_ItemArrays[][9] = { {VAR_WEATHER_INSTITUTE_STATE, VAR_SLATEPORT_FAN_CLUB_STATE, 0x40BB, VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, VAR_GAME_CORNER_STATE, VAR_WHICH_FOSSIL_REVIVED} }; -static const u8 sString_Town[] = _("ใฟใฆใณ"); -static const u8 sString_City[] = _("ใทใใฃ"); -static const u8 sString_Route_101_to_109[] = _("ใญใผใ101ใผ109"); -static const u8 sString_Route_110_to_118[] = _("ใญใผใ110ใผ118"); -static const u8 sString_Route_119_to_127[] = _("ใญใผใ119ใผ127"); -static const u8 sString_Route_128_to_134[] = _("ใญใผใ128ใผ134"); -static const u8 sString_Room_Town[] = _("ใซใผใ ใใฟใฆใณ"); -static const u8 sString_Room_City[] = _("ใซใผใ ใใทใใฃ"); -static const u8 sString_Dungeon_nai[] = _("ใใณใธใงใณใชใ"); +static const u8 sString_Town[] = DTR("ใฟใฆใณ", "TOWN"); +static const u8 sString_City[] = DTR("ใทใใฃ", "CITY"); +static const u8 sString_Route_101_to_109[] = DTR("ใญใผใ101ใผ109", "ROUTE 101-109"); +static const u8 sString_Route_110_to_118[] = DTR("ใญใผใ110ใผ118", "ROUTE 110-118"); +static const u8 sString_Route_119_to_127[] = DTR("ใญใผใ119ใผ127", "ROUTE 119-127"); +static const u8 sString_Route_128_to_134[] = DTR("ใญใผใ128ใผ134", "ROUTE 128-134"); +static const u8 sString_Room_Town[] = DTR("ใซใผใ ใใฟใฆใณ", "Room Town"); // TRN +static const u8 sString_Room_City[] = DTR("ใซใผใ ใใทใใฃ", "Room City"); +static const u8 sString_Dungeon_nai[] = DTR("ใใณใธใงใณใชใ", "DUNGEON"); static const struct MenuAction sMenuAction_ControlWorks_SaveWork[] = { {sString_Town, ControlWorks_SaveWork_Town_InitSubsubmenu}, @@ -1858,13 +1862,13 @@ static const struct MenuAction gUnknown_Debug_083C47F0[] = { {gUnknown_Debug_083C47E9, DummyMenuAction} }; -static const u8 gUnknown_Debug_083C4830[] = _("TrickใMaster"); +static const u8 gUnknown_Debug_083C4830[] = _("Trick Master"); -static const u8 gUnknown_Debug_083C483D[] = _("HiddenใMASTER"); -static const u8 gUnknown_Debug_083C484B[] = _("InsideใtheใHOUSE"); -static const u8 gUnknown_Debug_083C485C[] = _("Passใaใreward"); -static const u8 gUnknown_Debug_083C486A[] = _("Rigใaใtrick"); -static const u8 gUnknown_Debug_083C4876[] = _("MASTERใisใgone"); +static const u8 gUnknown_Debug_083C483D[] = _("Hidden MASTER"); +static const u8 gUnknown_Debug_083C484B[] = _("Inside the HOUSE"); +static const u8 gUnknown_Debug_083C485C[] = _("Pass a reward"); +static const u8 gUnknown_Debug_083C486A[] = _("Rig a trick"); +static const u8 gUnknown_Debug_083C4876[] = _("MASTER is gone"); static const struct MenuAction gUnknown_Debug_083C4888[] = { {gUnknown_Debug_083C483D, DummyMenuAction}, @@ -1885,7 +1889,7 @@ bool8 InitTomomichiDebugWindow(void) static void debug_sub_808B868(void) { - c2_exit_to_overworld_1_continue_scripts_restart_music(); + CB2_ReturnToFieldContinueScriptPlayMapMusic(); } static bool8 InitDebugWindow(void) diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index 2e3b684d9..c055781fb 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -400,16 +400,16 @@ void InitSizeComparison(void) gTasks[taskId].data[0] = 0xfc; } -const u8 gUnknown_Debug_083F7FDA[] = _("ใฒใใค"); -const u8 gUnknown_Debug_083F7FDE[] = _("ใใใ"); -const u8 gUnknown_Debug_083F7FE2[] = _("Lใญใผโถใใ
ใใใใ"); -const u8 gUnknown_Debug_083F7FED[] = _("Rใญใผโถใใใ ใ"); -const u8 gUnknown_Debug_083F7FF6[] = _("Uใญใผโถใใใใใฉใ"); -const u8 gUnknown_Debug_083F8001[] = _("Dใญใผโถใใใใใฉใ"); -const u8 gUnknown_Debug_083F800C[] = _("Aใใฟใณโถใใใใใใใ"); -const u8 gUnknown_Debug_083F8019[] = _("Bใใฟใณโถใใใ"); -const u8 gUnknown_Debug_083F8022[] = _("ในใฟใผใ:"); -const u8 gUnknown_Debug_083F8028[] = _(":ใปใฌใฏใ"); +const u8 gUnknown_Debug_083F7FDA[] = DTR("ใฒใใค", "SCALE"); +const u8 gUnknown_Debug_083F7FDE[] = DTR("ใใใ", "HEIGHT"); +const u8 gUnknown_Debug_083F7FE2[] = DTR("Lใญใผโถใใ
ใใใใ", "{LEFT_ARROW}: SHRINK"); +const u8 gUnknown_Debug_083F7FED[] = DTR("Rใญใผโถใใใ ใ", "{RIGHT_ARROW}: ENLARGE"); +const u8 gUnknown_Debug_083F7FF6[] = DTR("Uใญใผโถใใใใใฉใ", "{UP_ARROW}: MOVE UP"); +const u8 gUnknown_Debug_083F8001[] = DTR("Dใญใผโถใใใใใฉใ", "{DOWN_ARROW}: MOVE DOWN"); +const u8 gUnknown_Debug_083F800C[] = DTR("Aใใฟใณโถใใใใใใใ", "A: SWITCH CONTROL"); +const u8 gUnknown_Debug_083F8019[] = DTR("Bใใฟใณโถใใใ", "B: QUIT"); +const u8 gUnknown_Debug_083F8022[] = DTR("ในใฟใผใ:", "START:"); +const u8 gUnknown_Debug_083F8028[] = DTR(":ใปใฌใฏใ", ":SELECT"); #ifdef NONMATCHING void debug_80C3A50(u8 taskId) @@ -1003,11 +1003,13 @@ void debug_80C41A8(void) CreateTask(debug_80C47BC, 0); } -const u8 gUnknown_Debug_083F802E[] = _("ใใใใใใใ"); -const u8 gUnknown_Debug_083F8036[] = _("1VS1ใใใใ"); -const u8 gUnknown_Debug_083F803F[] = _("2VS2ใใใใ"); -const u8 gUnknown_Debug_083F8048[] = _("{COLOR BLUE}1VS1ใคใใใใใใใ"); -const u8 gUnknown_Debug_083F8058[] = _("{COLOR BLUE}2VS2ใคใใใใใใใ"); +const u8 gUnknown_Debug_083F802E[] = DTR("ใใใใใใใ", "Wild BATTLE"); +const u8 gUnknown_Debug_083F8036[] = DTR("1VS1ใใใใ", "1v1 BATTLE"); +const u8 gUnknown_Debug_083F803F[] = DTR("2VS2ใใใใ", "2v2 BATTLE"); +const u8 gUnknown_Debug_083F8048[] = DTR("{COLOR BLUE}1VS1ใคใใใใใใใ", + "{COLOR BLUE}LINK 1v1 BATTLE"); +const u8 gUnknown_Debug_083F8058[] = DTR("{COLOR BLUE}2VS2ใคใใใใใใใ", + "{COLOR BLUE}LINK 2v2 BATTLE"); const struct WatanabeDebugMenuItem gUnknown_Debug_083F8068[] = { {gUnknown_Debug_083F802E, {.type1 = {0x00, 0x01}}}, @@ -1017,16 +1019,16 @@ const struct WatanabeDebugMenuItem gUnknown_Debug_083F8068[] = { {gUnknown_Debug_083F8058, {.type1 = {0x0B, 0x02}}} }; -const u8 gUnknown_Debug_083F8090[] = _("ใใปใใฟใคใ"); -const u8 gUnknown_Debug_083F8097[] = _("AIใฟใคใ2"); -const u8 gUnknown_Debug_083F809E[] = _("AIใฟใคใ3"); -const u8 gUnknown_Debug_083F80A5[] = _("AIใฟใคใ4"); -const u8 gUnknown_Debug_083F80AC[] = _("AIใฟใคใ5"); -const u8 gUnknown_Debug_083F80B3[] = _("AIใฟใคใ6"); -const u8 gUnknown_Debug_083F80BA[] = _("AIใฟใคใ7"); -const u8 gUnknown_Debug_083F80C1[] = _("AIใฟใคใ8"); -const u8 gUnknown_Debug_083F80C8[] = _("AIใฟใคใ9"); -const u8 gUnknown_Debug_083F80CF[] = _("AIใฟใคใ10"); +const u8 gUnknown_Debug_083F8090[] = DTR("ใใปใใฟใคใ", "Base type"); +const u8 gUnknown_Debug_083F8097[] = DTR("AIใฟใคใ2", "AI type 2"); +const u8 gUnknown_Debug_083F809E[] = DTR("AIใฟใคใ3", "AI type 3"); +const u8 gUnknown_Debug_083F80A5[] = DTR("AIใฟใคใ4", "AI type 4"); +const u8 gUnknown_Debug_083F80AC[] = DTR("AIใฟใคใ5", "AI type 5"); +const u8 gUnknown_Debug_083F80B3[] = DTR("AIใฟใคใ6", "AI type 6"); +const u8 gUnknown_Debug_083F80BA[] = DTR("AIใฟใคใ7", "AI type 7"); +const u8 gUnknown_Debug_083F80C1[] = DTR("AIใฟใคใ8", "AI type 8"); +const u8 gUnknown_Debug_083F80C8[] = DTR("AIใฟใคใ9", "AI type 9"); +const u8 gUnknown_Debug_083F80CF[] = DTR("AIใฟใคใ10", "AI type 10"); const struct WatanabeDebugMenuItem gUnknown_Debug_083F80D8[] = { {gUnknown_Debug_083F8090, {.type2 = 0x1}}, @@ -1041,15 +1043,15 @@ const struct WatanabeDebugMenuItem gUnknown_Debug_083F80D8[] = { {gUnknown_Debug_083F80CF, {.type2 = 0x200}} }; -const u8 gUnknown_Debug_083F8128[] = _("ใใ"); -const u8 gUnknown_Debug_083F812B[] = _("ใชใใใใใ"); -const u8 gUnknown_Debug_083F8132[] = _("ใใช"); -const u8 gUnknown_Debug_083F8135[] = _("ใฟใ"); -const u8 gUnknown_Debug_083F8138[] = _("ใใฟ"); -const u8 gUnknown_Debug_083F813B[] = _("ใใ"); -const u8 gUnknown_Debug_083F813E[] = _("ใใ"); -const u8 gUnknown_Debug_083F8141[] = _("ใฉใใใค"); -const u8 gUnknown_Debug_083F8146[] = _("ใใฎใ"); +const u8 gUnknown_Debug_083F8128[] = DTR("ใใ", "GRASS"); +const u8 gUnknown_Debug_083F812B[] = DTR("ใชใใใใใ", "TALL GRASS"); +const u8 gUnknown_Debug_083F8132[] = DTR("ใใช", "SAND"); +const u8 gUnknown_Debug_083F8135[] = DTR("ใฟใ", "WATER"); +const u8 gUnknown_Debug_083F8138[] = DTR("ใใฟ", "SEA"); +const u8 gUnknown_Debug_083F813B[] = DTR("ใใ", "POND"); +const u8 gUnknown_Debug_083F813E[] = DTR("ใใ", "ROCKY"); +const u8 gUnknown_Debug_083F8141[] = DTR("ใฉใใใค", "CAVE"); +const u8 gUnknown_Debug_083F8146[] = DTR("ใใฎใ", "OTHER"); const struct WatanabeDebugMenuItem gUnknown_Debug_083F814C[] = { {gUnknown_Debug_083F8128, {.type3 = 0x0}}, @@ -1105,8 +1107,8 @@ void debug_80C4214(UNUSED u8 a0) void debug_80C42B8(u8 taskId) { - u8 sp00[] = _("ใใฑใขใณใใใใใใงใญ"); - u8 sp0c[] = _("{COLOR RED}START:ใคใใธ"); + u8 sp00[] = DTR("ใใฑใขใณใใใใใใงใญ", "Choose POKรฉMON"); + u8 sp0c[] = DTR("{COLOR RED}START:ใคใใธ", "{COLOR RED}START: NEXT"); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(sp00, 1, 17); @@ -1218,7 +1220,7 @@ void debug_80C4550(u8 taskId) void debug_80C4694(void) { u8 i; - u8 sp00[] = _("{COLOR RED}ใใถใใฎใใใฑใขใณ"); + u8 sp00[] = DTR("{COLOR RED}ใใถใใฎใใใฑใขใณ", "{COLOR RED}Enemy's POKรฉMON"); u8 sp10[POKEMON_NAME_LENGTH + 1]; Menu_DrawStdWindowFrame(0, 0, 14, 15); @@ -1233,7 +1235,7 @@ void debug_80C4694(void) void debug_80C4704(void) { u8 i; - u8 sp00[] = _("{COLOR RED}ใใใฆใฎใใใฑใขใณ"); + u8 sp00[] = DTR("{COLOR RED}ใใใฆใฎใใใฑใขใณ", "{COLOR RED}Your POKรฉMON"); u8 sp10[POKEMON_NAME_LENGTH + 1]; Menu_DrawStdWindowFrame(15, 0, 29, 15); @@ -1256,10 +1258,10 @@ bool8 debug_80C4774(void) void debug_80C47BC(u8 taskId) { u8 i; - u8 sp00[] = _("ใใใใใขใผใใใใใใใงใญ"); - u8 sp10[] = _("{COLOR RED}START:ใคใใธ"); - u8 sp20[] = _("{COLOR RED}ใใใซใขใผใใใใใใ"); - u8 sp30[] = _("{COLOR RED}ใใฌใผใใผAIใใใใใ"); + u8 sp00[] = DTR("ใใใใใขใผใใใใใใใงใญ", "Choose a battle mode"); + u8 sp10[] = DTR("{COLOR RED}START:ใคใใธ", "{COLOR RED}START: NEXT"); + u8 sp20[] = DTR("{COLOR RED}ใใใซใขใผใใใใใใ", "{COLOR RED}Battle mode:"); + u8 sp30[] = DTR("{COLOR RED}ใใฌใผใใผAIใใใใใ", "{COLOR RED}TRAINER AI mode:"); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(sp00, 1, 17); @@ -1424,9 +1426,9 @@ void debug_80C4C44(u8 a0) void debug_80C4D14(u8 taskId) { - u8 sp00[] = _("ใใใใใขใผใใใใใใใงใญ"); - u8 sp10[] = _("{COLOR RED}START:ใใใ"); - u8 sp20[] = _("{COLOR RED}ใใใซใกใใใใใใใ"); + u8 sp00[] = DTR("ใใใใใขใผใใใใใใใงใญ", "Choose a battle mode"); + u8 sp10[] = DTR("{COLOR RED}START:ใใใ", "{COLOR RED}START: BEGIN"); + u8 sp20[] = DTR("{COLOR RED}ใใใซใกใใใใใใใ", "{COLOR RED}Battle terrain:"); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(sp00, 1, 17); @@ -1499,11 +1501,11 @@ void debug_80C4F00(u8 a0) void debug_80C4F48(u8 taskId) { - u8 sp00[] = _("ใใถใใฎใใใในใคใใใใใใงใญ"); - u8 sp14[] = _("{COLOR RED}START:ใคใใธ"); - u8 sp24[] = _("{COLOR RED}ใใในใคใใใใใ"); - u8 sp34[] = _("ใใจใ"); - u8 sp38[] = _("ใใใช"); + u8 sp00[] = DTR("ใใถใใฎใใใในใคใใใใใใงใญ", "Choose a gender"); + u8 sp14[] = DTR("{COLOR RED}START:ใคใใธ", "{COLOR RED}START: NEXT"); + u8 sp24[] = DTR("{COLOR RED}ใใในใคใใใใใ", "{COLOR RED}Gender:"); + u8 sp34[] = DTR("ใใจใ", "BOY"); + u8 sp38[] = DTR("ใใใช", "GIRL"); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(sp00, 1, 17); @@ -1732,7 +1734,7 @@ const u8 gUnknown_Debug_083F851C[] = _("{COLOR RED}DEFใ"); const u8 gUnknown_Debug_083F8524[] = _("{COLOR RED}SPEED"); const u8 gUnknown_Debug_083F852D[] = _("{COLOR RED}SPใATK"); const u8 gUnknown_Debug_083F8537[] = _("{COLOR RED}SPใDEF"); -const u8 gUnknown_Debug_083F8541[] = _("ใชใ"); +const u8 gUnknown_Debug_083F8541[] = DTR("ใชใ", "without"); const u8 gUnknown_Debug_083F8544[] = _("โ"); const u8 gUnknown_Debug_083F8546[] = _("โ"); const u8 gUnknown_Debug_083F8548[] = _("ใผ"); @@ -1828,11 +1830,11 @@ const struct WatanabeDebugMenuItem gUnknown_Debug_083F86E8[] = { {gUnknown_Debug_083F86E0, {.type3 = 0x80}} }; -const u8 gUnknown_Debug_083F8720[] = _("PKMNใฏLIST"); -const u8 gUnknown_Debug_083F872A[] = _("PKMNใฏBOX"); +const u8 gUnknown_Debug_083F8720[] = _("PKMN{RIGHT_ARROW}LIST"); +const u8 gUnknown_Debug_083F872A[] = _("PKMN{RIGHT_ARROW}BOX"); void InitCreatePokemon(void) { - u8 sp04[] = _("CreateใPOKใฒMONใใใLR:ShiftใใSTART:Add"); + u8 sp04[] = _("Create POKรฉMON LR:Shift START:Add"); debug_80C35DC(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); @@ -2193,7 +2195,7 @@ void debug_80C5EF4(void) void debug_80C5FFC(void) { u32 ivs; - u8 sp10[] = _("ใใพใ"); + u8 sp10[] = DTR("ใใพใ", "EGG"); u8 sp14[] = _("DebugใผG"); u8 one; u16 ff; @@ -2600,12 +2602,12 @@ const u16 gUnknown_Debug_083F8790[] = { 0x0002 }; -const u8 gUnknown_Debug_083F87D0[] = _("{COLOR RED}L{ESCAPE}ใญ"); -const u8 gUnknown_Debug_083F87D8[] = _("{COLOR RED}{ESCAPE}ใฏR"); -const u8 gUnknown_Debug_083F87E0[] = _("ใใใฏใคใใณใใผ"); -const u8 gUnknown_Debug_083F87E9[] = _("ใฐใฉใใฃใใฏใใณใใผ"); -const u8 gUnknown_Debug_083F87F4[] = _("{COLOR RED}A:ใซใฉใผใใฃใฆใ"); -const u8 gUnknown_Debug_083F8801[] = _("{COLOR RED}A:ใใฃใฆใใB:ใญใฃใณใปใซ"); +const u8 gUnknown_Debug_083F87D0[] = _("{COLOR RED}L{ESCAPE}{LEFT_ARROW}"); +const u8 gUnknown_Debug_083F87D8[] = _("{COLOR RED}{ESCAPE}{RIGHT_ARROW}R"); +const u8 gUnknown_Debug_083F87E0[] = DTR("ใใใฏใคใใณใใผ", "Devel No."); +const u8 gUnknown_Debug_083F87E9[] = DTR("ใฐใฉใใฃใใฏใใณใใผ", "Graphic No."); +const u8 gUnknown_Debug_083F87F4[] = DTR("{COLOR RED}A:ใซใฉใผใใฃใฆใ", "{COLOR RED}A: SET COLOR"); +const u8 gUnknown_Debug_083F8801[] = DTR("{COLOR RED}A:ใใฃใฆใใB:ใญใฃใณใปใซ", "{COLOR RED}A: CONFIRM B: CANCEL"); const u8 gUnknown_Debug_083F8813[] = _(":"); void debug_80C6B00(u8 taskId) { diff --git a/src/event_data.c b/src/event_data.c index bfa9ff821..7c508f02b 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -114,9 +114,9 @@ u16 *GetVarPointer(u16 id) { if (id < VARS_START) return NULL; - if (id < 0x8000) + if (id < SPECIAL_VARS_START) return &gSaveBlock1.vars[id - VARS_START]; - return gSpecialVars[id - 0x8000]; + return gSpecialVars[id - SPECIAL_VARS_START]; } u16 VarGet(u16 id) diff --git a/src/field_specials.c b/src/field_specials.c index c23a8c44c..5e0315e73 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -769,7 +769,7 @@ u8 GetLeadMonFriendshipScore(void) void CB2_FieldShowRegionMap(void) { - FieldInitRegionMap(c2_exit_to_overworld_1_continue_scripts_restart_music); + FieldInitRegionMap(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void FieldShowRegionMap(void) diff --git a/src/field_weather.c b/src/field_weather.c index 9a5a83737..340445fd2 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -216,21 +216,21 @@ static const u8 sBasePaletteGammaTypes[32] = #if DEBUG -static const u8 sDebugText_Weather_None[] = _("ใชใใใใ"); // "none" -static const u8 sDebugText_Weather_Clear[] = _("ใฏใใใใ"); // "clear" -static const u8 sDebugText_Weather_Clear2[] = _("ใฏใ2ใใ"); // "clear2" -static const u8 sDebugText_Weather_Rain[] = _("ใใใใใ"); // "rain" -static const u8 sDebugText_Weather_Snow[] = _("ใใใใใ"); // "snow" -static const u8 sDebugText_Weather_Lightning[] = _("ใใฟใชใใ"); // "lightning" -static const u8 sDebugText_Weather_Fog[] = _("ใใใใใ"); // "fog" -static const u8 sDebugText_Weather_VolcanicAsh[] = _("ใใใใฐใ"); // "volcanic ash" -static const u8 sDebugText_Weather_Sandstorm[] = _("ใใชใใใ"); // "sandstorm -static const u8 sDebugText_Weather_Fog2[] = _("ใใ2ใใ"); // "fog2" -static const u8 sDebugText_Weather_Underwater[] = _("ใใใฆใใ"); // "undersea" -static const u8 sDebugText_Weather_Cloudy[] = _("ใใใใใ"); // "cloudy" -static const u8 sDebugText_Weather_Clear3[] = _("ใฏใ3ใใ"); // "clear3" -static const u8 sDebugText_Weather_HeavyRain[] = _("ใใใใ"); // "heavy rain" -static const u8 sDebugText_Weather_Underwater2[] = _("ใใใฆใ2"); // "undersea2" +static const u8 sDebugText_Weather_None[] = DTR("ใชใใใใ", "NONE "); +static const u8 sDebugText_Weather_Clear[] = DTR("ใฏใใใใ", "CLOUDY "); +static const u8 sDebugText_Weather_Clear2[] = DTR("ใฏใ2ใใ", "SUNNY "); +static const u8 sDebugText_Weather_Rain[] = DTR("ใใใใใ", "RAIN "); +static const u8 sDebugText_Weather_Snow[] = DTR("ใใใใใ", "SNOW "); +static const u8 sDebugText_Weather_Lightning[] = DTR("ใใฟใชใใ", "LIGHTNING "); +static const u8 sDebugText_Weather_Fog[] = DTR("ใใใใใ", "FOG 1 "); +static const u8 sDebugText_Weather_VolcanicAsh[] = DTR("ใใใใฐใ", "ASH "); +static const u8 sDebugText_Weather_Sandstorm[] = DTR("ใใชใใใ", "SANDSTORM "); +static const u8 sDebugText_Weather_Fog2[] = DTR("ใใ2ใใ", "FOG 2 "); +static const u8 sDebugText_Weather_Underwater[] = DTR("ใใใฆใใ", "FOG 3 "); +static const u8 sDebugText_Weather_Cloudy[] = DTR("ใใใใใ", "SHADE "); +static const u8 sDebugText_Weather_Clear3[] = DTR("ใฏใ3ใใ", "DROUGHT "); +static const u8 sDebugText_Weather_HeavyRain[] = DTR("ใใใใ", "HEAVY RAIN"); +static const u8 sDebugText_Weather_Underwater2[] = DTR("ใใใฆใ2", "UNDERWATER"); static const u8 *const sDebugText_Weather[] = { diff --git a/src/item_use.c b/src/item_use.c index d927b5937..9c8c2da57 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -420,8 +420,6 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y) return HiddenItemAtPos(mapHeader->events, localX, localY); } -// weird math -#ifdef NONMATCHING void sub_80C9720(u8 taskId) { s16 x, y; @@ -429,15 +427,18 @@ void sub_80C9720(u8 taskId) s16 width = gMapHeader.mapLayout->width + 7; s16 height = gMapHeader.mapLayout->height + 7; + s16 var1 = 7; + s16 var2 = 7; + PlayerGetDestCoords(&x, &y); for (curX = x - 7; curX <= x + 7; curX++) { for (curY = y - 5; curY <= y + 5; curY++) { - if (7 > curX + if (var1 > curX || curX >= width - || 7 > curY + || var2 > curY || curY >= height) { struct MapConnection *conn = sub_8056BA0(curX, curY); @@ -447,156 +448,6 @@ void sub_80C9720(u8 taskId) } } } -#else -NAKED -void sub_80C9720(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x4]\n\ - ldr r0, _080C9834 @ =gMapHeader\n\ - ldr r1, [r0]\n\ - ldr r0, [r1]\n\ - adds r0, 0x7\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x8]\n\ - ldr r0, [r1, 0x4]\n\ - adds r0, 0x7\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0xC]\n\ - mov r4, sp\n\ - adds r4, 0x2\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - bl PlayerGetDestCoords\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - subs r0, 0x7\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - asrs r0, 16\n\ - mov r1, sp\n\ - movs r2, 0\n\ - ldrsh r1, [r1, r2]\n\ - adds r1, 0x7\n\ - cmp r0, r1\n\ - bgt _080C9824\n\ -_080C976E:\n\ - mov r5, sp\n\ - ldrh r0, [r5, 0x2]\n\ - subs r0, 0x5\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - lsls r2, r4, 16\n\ - asrs r1, r2, 16\n\ - movs r6, 0x2\n\ - ldrsh r0, [r5, r6]\n\ - adds r0, 0x5\n\ - lsls r3, 16\n\ - mov r8, r3\n\ - cmp r1, r0\n\ - bgt _080C980E\n\ - movs r0, 0x7\n\ - str r0, [sp, 0x10]\n\ - mov r1, r8\n\ - asrs r1, 16\n\ - mov r9, r1\n\ - mov r10, r0\n\ -_080C9796:\n\ - ldr r3, [sp, 0x10]\n\ - cmp r3, r9\n\ - bgt _080C97B8\n\ - ldr r5, [sp, 0x8]\n\ - lsls r0, r5, 16\n\ - asrs r0, 16\n\ - cmp r9, r0\n\ - bge _080C97B8\n\ - asrs r1, r2, 16\n\ - cmp r10, r1\n\ - bgt _080C97B8\n\ - ldr r6, [sp, 0xC]\n\ - lsls r0, r6, 16\n\ - asrs r0, 16\n\ - lsls r7, r4, 16\n\ - cmp r1, r0\n\ - blt _080C97F6\n\ -_080C97B8:\n\ - mov r0, r8\n\ - asrs r5, r0, 16\n\ - lsls r4, 16\n\ - asrs r6, r4, 16\n\ - adds r0, r5, 0\n\ - adds r1, r6, 0\n\ - bl sub_8056BA0\n\ - adds r7, r4, 0\n\ - cmp r0, 0\n\ - beq _080C97F6\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - bl sub_80C9688\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bne _080C97F6\n\ - mov r0, sp\n\ - ldrh r1, [r0]\n\ - subs r1, r5, r1\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - ldrh r2, [r0, 0x2]\n\ - subs r2, r6, r2\n\ - lsls r2, 16\n\ - asrs r2, 16\n\ - ldr r0, [sp, 0x4]\n\ - bl sub_80C9838\n\ -_080C97F6:\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - adds r0, r7, r1\n\ - lsrs r4, r0, 16\n\ - lsls r2, r4, 16\n\ - asrs r1, r2, 16\n\ - mov r3, sp\n\ - movs r5, 0x2\n\ - ldrsh r0, [r3, r5]\n\ - adds r0, 0x5\n\ - cmp r1, r0\n\ - ble _080C9796\n\ -_080C980E:\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - add r1, r8\n\ - lsrs r3, r1, 16\n\ - asrs r1, 16\n\ - mov r0, sp\n\ - movs r6, 0\n\ - ldrsh r0, [r0, r6]\n\ - adds r0, 0x7\n\ - cmp r1, r0\n\ - ble _080C976E\n\ -_080C9824:\n\ - add sp, 0x14\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080C9834: .4byte gMapHeader\n\ - .syntax divided"); -} -#endif void sub_80C9838(u8 taskId, s16 x, s16 y) { diff --git a/src/mail.c b/src/mail.c index 8b4647532..9a56d73cc 100644 --- a/src/mail.c +++ b/src/mail.c @@ -242,9 +242,9 @@ const struct MailLayout gUnknown_083E57A4[] = #if DEBUG -const u8 Str_8411540[] = _("ใฌใคใขใฆใใใใซใปใใใงใใฒใใใ๏ผ"); // Display using Japanese layout? -const u8 Str_8411553[] = _("ใซใปใใใ"); // Japanese -const u8 Str_8411559[] = _("ใใใใใ"); // Overseas +const u8 Str_8411540[] = DTR("ใฌใคใขใฆใใใใซใปใใใงใใฒใใใ๏ผ", "Display using JAPANESE layout?"); +const u8 Str_8411553[] = DTR("ใซใปใใใ", "JAPANESE"); +const u8 Str_8411559[] = DTR("ใใใใใ", "OVERSEAS"); const u8 *const _8411560[] = { @@ -252,20 +252,20 @@ const u8 *const _8411560[] = Str_8411559, }; -const u8 Str_8411568[] = _("ใคใกใผใธใใฟใคใใใใใใใงใญ"); // Choose an image type +const u8 Str_8411568[] = DTR("ใคใกใผใธใใฟใคใใใใใใใงใญ", "Choose an image type"); const u8 Str_8411578[] = _("{STR_VAR_1}"); -const u8 Str_841157B[] = _("ใชใฌใณใธใ"); // Orange -const u8 Str_8411581[] = _("ใใผใใผใ"); // Harbor -const u8 Str_8411587[] = _("ใญใฉใญใฉใ"); // Glitter -const u8 Str_841158D[] = _("ใกใซใใซใซ"); // Mech -const u8 Str_8411593[] = _("ใฆใใใฃใผ"); // Wood -const u8 Str_8411599[] = _("ใฏใญในใใ"); // Wave -const u8 Str_841159F[] = _("ใใฌใธใฃใผ"); // Bead -const u8 Str_84115A5[] = _("ใทใฃใใฆใ"); // Shadow -const u8 Str_84115AB[] = _("ใใญใใซใซ"); // Tropic -const u8 Str_84115B1[] = _("ใใชใผใ ใ"); // Dream -const u8 Str_84115B7[] = _("ใใฉใฏใซใ"); // Fab -const u8 Str_84115BD[] = _("ใฌใใญใใ"); // Retro +const u8 Str_841157B[] = DTR("ใชใฌใณใธใ", "ORANGE "); +const u8 Str_8411581[] = DTR("ใใผใใผใ", "HARBOR "); +const u8 Str_8411587[] = DTR("ใญใฉใญใฉใ", "GLITTER"); +const u8 Str_841158D[] = DTR("ใกใซใใซใซ", "MECH "); +const u8 Str_8411593[] = DTR("ใฆใใใฃใผ", "WOOD "); +const u8 Str_8411599[] = DTR("ใฏใญในใใ", "WAVE "); +const u8 Str_841159F[] = DTR("ใใฌใธใฃใผ", "BEAD "); +const u8 Str_84115A5[] = DTR("ใทใฃใใฆใ", "SHADOW "); +const u8 Str_84115AB[] = DTR("ใใญใใซใซ", "TROPIC "); +const u8 Str_84115B1[] = DTR("ใใชใผใ ใ", "DREAM "); +const u8 Str_84115B7[] = DTR("ใใฉใฏใซใ", "FAB "); +const u8 Str_84115BD[] = DTR("ใฌใใญใใ", "RETRO "); const u8 *const _84115C4[] = { @@ -283,10 +283,10 @@ const u8 *const _84115C4[] = Str_84115BD, }; -const u8 Str_84115F4[] = _("ใกใผใซใใฟใ"); // View Mail -const u8 Str_84115FB[] = _("ใกใผใซใจใใใ"); // Register Mail -const u8 Str_8411603[] = _("ใใใใ"); // Give to Pokรฉmon -const u8 Str_8411608[] = _("ใกใผใซใใใ"); // Delete Mail +const u8 Str_84115F4[] = DTR("ใกใผใซใใฟใ", "View MAIL"); +const u8 Str_84115FB[] = DTR("ใกใผใซใจใใใ", "Register MAIL"); +const u8 Str_8411603[] = DTR("ใใใใ", "Give MAIL"); +const u8 Str_8411608[] = DTR("ใกใผใซใใใ", "Delete MAIL"); #endif @@ -744,7 +744,7 @@ void debug_sub_810CA7C(u8 taskId) void debug_sub_810CB50(u8 taskId) { u8 sp0[] = _("{STR_VAR_1}ใ{STR_VAR_2}"); - u8 sp8[] = _("ใกใผใซ{STR_VAR_1}ใ{STR_VAR_2}"); + u8 sp8[] = DTR("ใกใผใซ{STR_VAR_1}ใ{STR_VAR_2}", "MAIL{STR_VAR_1} {STR_VAR_2}"); bool8 r2 = FALSE; if (gMain.newKeys & A_BUTTON) @@ -791,7 +791,7 @@ void debug_sub_810CB50(u8 taskId) void debug_sub_810CCEC(u8 taskId) { - u8 string1[] = _("ใกใผใซ{STR_VAR_1}ใใใ ใใซใใใใใ๏ผ"); + u8 string1[] = DTR("ใกใผใซ{STR_VAR_1}ใใใ ใใซใใใใใ๏ผ", "Give MAIL {STR_VAR_1} to who?"); u8 string2[] = _("000ใ{STR_VAR_1}"); ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 1, 1); @@ -876,8 +876,10 @@ u8 debug_sub_810CEA4(void) u8 debug_sub_810CED0(void) { - u8 text[] = _("ใใใใฎใใใผใฟใใใจใใใใใฟใใงใ\n" - "ใใใใใจใใใใใงใใพใใ"); + u8 text[] = DTR("ใใใใฎใใใผใฟใใใจใใใใใฟใใงใ\n" + "ใใใใใจใใใใใงใใพใใ", + "Normal data is registered.\n" + "Cannot register new data."); s8 input = Menu_ProcessInput(); switch (input) @@ -911,8 +913,10 @@ u8 debug_sub_810CED0(void) u8 debug_sub_810CFA4(void) { - u8 text[] = _("ใใใใซใใจใใใใใใใกใผใซใใผใฟใฏ\n" - "ใธใใใใใงใใพใใ"); + u8 text[] = DTR("ใใใใซใใจใใใใใใใกใผใซใใผใฟใฏ\n" + "ใธใใใใใงใใพใใ", + "Regularly, registered MAIL data\n" + "cannot be changed."); s8 input = Menu_ProcessInput(); switch (input) @@ -943,9 +947,11 @@ u8 debug_sub_810CFA4(void) u8 debug_sub_810D030(void) { - const u8 text1[] = _("ใกใผใซ{STR_VAR_1}ใใจใใใใใใใใ"); - const u8 text2[] = _("ใใใใฐใกใใฅใผใใใใจใใใใใ\n" - "ใกใผใซใใใใใฏใใใใพใใ"); + const u8 text1[] = DTR("ใกใผใซ{STR_VAR_1}ใใจใใใใใใใใ", "UNREGISTER MAIL{STR_VAR_1}"); + const u8 text2[] = DTR("ใใใใฐใกใใฅใผใใใใจใใใใใ\n" + "ใกใผใซใใใใใฏใใใใพใใ", + "You cannot delete REGISTERED MAIL\n" + "from the DEBUG MENU"); s8 input = Menu_ProcessInput(); switch (input) @@ -990,7 +996,7 @@ u8 debug_sub_810D030(void) void debug_sub_810D174(u8 a) { - u8 string[] = _("ใกใผใซ{STR_VAR_1}ใ{STR_VAR_2}ใ{STR_VAR_3}"); + u8 string[] = DTR("ใกใผใซ{STR_VAR_1}ใ{STR_VAR_2}ใ{STR_VAR_3}", "MAIL{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}"); u8 buffer[9][20]; struct MenuAction menuActions[9]; u8 i; diff --git a/src/main.c b/src/main.c index 5cb8039c7..b778631f3 100644 --- a/src/main.c +++ b/src/main.c @@ -2,13 +2,13 @@ #include "gba/flash_internal.h" #include "gba/m4a_internal.h" #include "main.h" +#include "battle_controllers.h" #include "intro.h" #include "link.h" #include "load_save.h" #include "m4a.h" #include "play_time.h" #include "random.h" -#include "rom3.h" #include "overworld.h" #include "rtc.h" #include "siirtc.h" @@ -34,10 +34,12 @@ const u8 gGameVersion = GAME_VERSION; const u8 gGameLanguage = GAME_LANGUAGE; -#if defined(ENGLISH) -const char BuildDateTime[] = "2002 10 15 20:34"; -#elif defined(GERMAN) +// The debug menu expects this exact format. With the English build string, it +// will overflow on the title debug menu, outputting '9999ใฃ'. +#if defined(GERMAN) || DEBUG const char BuildDateTime[] = "$Name: debug-Euro-2003-05-09-A $"; +#elif defined(ENGLISH) +const char BuildDateTime[] = "2002 10 15 20:34"; #endif const IntrFunc gIntrTableTemplate[] = diff --git a/src/overworld.c b/src/overworld.c index 19fe5f377..934b09dbc 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1441,7 +1441,7 @@ void sub_80546B8(void) CB2_ReturnToField(); } -void c2_exit_to_overworld_1_continue_scripts_restart_music(void) +void CB2_ReturnToFieldContinueScriptPlayMapMusic(void) { FieldClearVBlankHBlankCallbacks(); gFieldCallback = sub_8080990; diff --git a/src/pokemon_item_effect.c b/src/pokemon_item_effect.c index 2542e42c3..d59e8d77c 100644 --- a/src/pokemon_item_effect.c +++ b/src/pokemon_item_effect.c @@ -367,7 +367,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo SetMonData(pkmn, MON_DATA_PP1 + r5, &data); if (gMain.inBattle && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) - && !(gDisableStructs[sp34].unk18_b & gBitTable[r5])) + && !(gDisableStructs[sp34].mimickedMoves & gBitTable[r5])) gBattleMons[sp34].pp[r5] = data; retVal = FALSE; } @@ -392,7 +392,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); if (gMain.inBattle && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) - && !(gDisableStructs[sp34].unk18_b & gBitTable[moveIndex])) + && !(gDisableStructs[sp34].mimickedMoves & gBitTable[moveIndex])) gBattleMons[sp34].pp[moveIndex] = data; retVal = FALSE; } diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index e970cc3bc..ef8360681 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -4772,15 +4772,15 @@ void sub_80A1C30(u8 a) u8 GetPrimaryStatus(u32 status) { - if (status & (STATUS_POISON | STATUS_TOXIC_POISON)) + if (status & (STATUS1_POISON | STATUS1_TOXIC_POISON)) return STATUS_PRIMARY_POISON; - if (status & STATUS_PARALYSIS) + if (status & STATUS1_PARALYSIS) return STATUS_PRIMARY_PARALYSIS; - if (status & STATUS_SLEEP) + if (status & STATUS1_SLEEP) return STATUS_PRIMARY_SLEEP; - if (status & STATUS_FREEZE) + if (status & STATUS1_FREEZE) return STATUS_PRIMARY_FREEZE; - if (status & STATUS_BURN) + if (status & STATUS1_BURN) return STATUS_PRIMARY_BURN; return STATUS_PRIMARY_NONE; diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c index 7c0a47b13..e33caed82 100644 --- a/src/reset_rtc_screen.c +++ b/src/reset_rtc_screen.c @@ -635,10 +635,10 @@ void debug_sub_806F9B8(void) ScriptContext2_Enable(); } -static const u8 sDebugText_Days[] = _("ใซใฃใใ"); // "days" -static const u8 sDebugText_Time[] = _("ใใใ"); // "time" -static const u8 sDebugText_GameTime[] = _("ใฒใผใ ใชใใใใใ"); // "game time" -static const u8 sDebugText_RTCTime[] = _("RTCใใใใ"); // "RTC time" +static const u8 sDebugText_Days[] = DTR("ใซใฃใใ", "days"); +static const u8 sDebugText_Time[] = DTR("ใใใ", "time"); +static const u8 sDebugText_GameTime[] = DTR("ใฒใผใ ใชใใใใใ", "game time"); +static const u8 sDebugText_RTCTime[] = DTR("RTCใใใใ", "RTC time"); void debug_sub_806F9E4(u8 taskId) { diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index e7c49144e..036209fbf 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -62,7 +62,7 @@ extern u8 gBattleMonSprites[NUM_BATTLE_SLOTS]; extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; extern s16 gBattleAnimArgs[8]; -extern u8 gBanksBySide[NUM_BATTLE_SLOTS]; +extern u8 gBattlerPositions[NUM_BATTLE_SLOTS]; extern u8 gBattlersCount; // gNumBattleMons? extern struct OamMatrix gOamMatrices[]; extern struct Struct_2017810 unk_2017810[]; @@ -815,12 +815,12 @@ void InitAnimSpritePos(struct Sprite *sprite, u8 a2) u8 GetBattlerSide(u8 slot) { - return gBanksBySide[slot] & 1; + return gBattlerPositions[slot] & 1; } u8 GetBattlerPosition(u8 slot) { - return gBanksBySide[slot]; + return gBattlerPositions[slot]; } u8 GetBattlerAtPosition(u8 slot) @@ -829,7 +829,7 @@ u8 GetBattlerAtPosition(u8 slot) for (i = 0; i < gBattlersCount; i++) { - if (gBanksBySide[i] == slot) + if (gBattlerPositions[i] == slot) break; } return i; @@ -847,7 +847,7 @@ bool8 IsBankSpritePresent(u8 slot) } else { - if (gBanksBySide[slot] == 0xff) + if (gBattlerPositions[slot] == 0xff) return FALSE; if (GetBattlerSide(slot) != B_SIDE_PLAYER) { diff --git a/src/safari_zone.c b/src/safari_zone.c index 7aa05c7dc..8e5f3c692 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -110,7 +110,7 @@ void sub_80C824C(void) { ScriptContext1_SetupScript(&gUnknown_081C3459); ScriptContext1_Stop(); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } } diff --git a/src/scrcmd.c b/src/scrcmd.c index 6084cfc5d..4dd5d08a2 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1782,7 +1782,7 @@ bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) { u8 v2 = VarGet(ScriptReadHalfword(ctx)); - PlaySlotMachine(v2, c2_exit_to_overworld_1_continue_scripts_restart_music); + PlaySlotMachine(v2, CB2_ReturnToFieldContinueScriptPlayMapMusic); ScriptContext1_Stop(); return TRUE; } diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index f6cb8ae0a..ce6c01439 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -214,7 +214,7 @@ void sub_80C4D80(void) void ShowContestWinnerCleanup(void) { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void ShowContestWinner(void) @@ -521,7 +521,7 @@ void sub_80C5580(void) break; } - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void ChooseBattleTowerPlayerParty(void) @@ -546,7 +546,7 @@ void SetBattleTowerPlayerParty(void) break; } - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void ReducePlayerPartyToThree(void) diff --git a/src/slot_machine.c b/src/slot_machine.c index 3de87e0f7..c03ae0dfa 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -5616,29 +5616,30 @@ static void debug_sub_811B2E8(void) Menu_PrintText(text, 6, 1); } -static const u8 Str_841B1C4[] = _("SETTEI"); -static const u8 Str_841B1CB[] = _("MAWASITA"); -static const u8 Str_841B1D4[] = _("MODOSI"); -static const u8 Str_841B1DB[] = _("NOMARE"); -static const u8 Str_841B1E2[] = _("MAEใ7"); -static const u8 Str_841B1E8[] = _("LRใใHENKOU"); -static const u8 Str_841B1F3[] = _("STARTใใJIDOUSU"); -static const u8 Str_841B202[] = _("SELECTใใSETTEI"); -static const u8 Str_841B211[] = _("TYUHSEN"); +static const u8 Str_841B1C4[] = DTR("SETTEI", "SET"); +static const u8 Str_841B1CB[] = DTR("MAWASITA", "TURNED"); +static const u8 Str_841B1D4[] = DTR("MODOSI", "RETURN"); +static const u8 Str_841B1DB[] = DTR("NOMARE", "CONSUMED"); +static const u8 Str_841B1E2[] = DTR("MAEใ7", "BEFORE 7"); +static const u8 Str_841B1E8[] = DTR("LR HENKOU", "LR: CHANGE"); +static const u8 Str_841B1F3[] = DTR("START JIDOUSU", "START: AUTO"); +static const u8 Str_841B202[] = DTR("SELECT SETTEI", "SELECT: FORCE"); +// Irregular Romaji: ๆฝ้ธ (ใกใ
ใใใ/chuusen) +static const u8 Str_841B211[] = DTR("TYUHSEN", "DRAWINGS"); static const u8 Str_841B219[] = _("CHERRY"); static const u8 Str_841B220[] = _("REPLAY"); -static const u8 Str_841B227[] = _("HASUBO"); -static const u8 Str_841B22E[] = _("RURIRI"); -static const u8 Str_841B235[] = _("INAZU"); +static const u8 Str_841B227[] = DTR("HASUBO", "LOTAD"); +static const u8 Str_841B22E[] = DTR("RURIRI", "AZURILL"); +static const u8 Str_841B235[] = DTR("INAZU", "LIGHTNING"); static const u8 Str_841B23B[] = _("REG"); static const u8 Str_841B23F[] = _("BIG"); -static const u8 Str_841B243[] = _("BD"); +static const u8 Str_841B243[] = DTR("BD", "REEL TIME"); static const u8 Str_841B246[] = _("R7"); static const u8 Str_841B249[] = _("B7"); -static const u8 Str_841B24C[] = _("AใใCOIN"); -static const u8 Str_841B254[] = _("TYUHSEN"); -static const u8 Str_841B25C[] = _("UDใใ100"); -static const u8 Str_841B264[] = _("LRใใ1000"); +static const u8 Str_841B24C[] = DTR("A COIN", "A: COIN"); +static const u8 Str_841B254[] = DTR("TYUHSEN", "DRAWINGS"); +static const u8 Str_841B25C[] = _("UD 100"); +static const u8 Str_841B264[] = _("LR 1000"); static const u8 Str_841B26D[] = _("ร"); void debug_sub_811B310(void) @@ -5675,15 +5676,21 @@ void debug_sub_811B310(void) PRINT_NUMBER(eSlotMachine->unk68, 10, 3); PRINT_NUMBER(eSlotMachine->unk6C, 10, 5); PRINT_NUMBER(eSlotMachine->unk10, 10, 7); - PRINT_NUMBER(eSlotMachine->unk70, 20, 3); - PRINT_NUMBER(eSlotMachine->unk74, 20, 5); - PRINT_NUMBER(eSlotMachine->unk78, 20, 7); - PRINT_NUMBER(eSlotMachine->unk7C, 20, 9); - PRINT_NUMBER(eSlotMachine->unk80, 20, 11); - PRINT_NUMBER(eSlotMachine->unk84, 20, 13); - PRINT_NUMBER(eSlotMachine->unk88, 20, 15); - PRINT_NUMBER(eSlotMachine->unk8C, 20, 17); +#if DEBUG_TRANSLATE +#define OFFSET 24 // wider window +#else +#define OFFSET 20 +#endif + PRINT_NUMBER(eSlotMachine->unk70, OFFSET, 3); + PRINT_NUMBER(eSlotMachine->unk74, OFFSET, 5); + PRINT_NUMBER(eSlotMachine->unk78, OFFSET, 7); + PRINT_NUMBER(eSlotMachine->unk7C, OFFSET, 9); + PRINT_NUMBER(eSlotMachine->unk80, OFFSET, 11); + PRINT_NUMBER(eSlotMachine->unk84, OFFSET, 13); + PRINT_NUMBER(eSlotMachine->unk88, OFFSET, 15); + PRINT_NUMBER(eSlotMachine->unk8C, OFFSET, 17); +#undef OFFSET #undef PRINT_NUMBER if (unk_debug_bss_1_0 != 0) @@ -5778,7 +5785,12 @@ static void debug_sub_811B654(u8 taskId) switch (task->data[0]) { case 0: +#if DEBUG_TRANSLATE + Menu_DrawStdWindowFrame(0, 0, 28, 19); // wider window +#else Menu_DrawStdWindowFrame(0, 0, 24, 19); +#endif + debug_sub_811B310(); task->data[0]++; break; @@ -5882,10 +5894,10 @@ static void debug_sub_811B654(u8 taskId) } } -static const u8 Str_841B2B0[] = _("ยทใซใฆใณใใจใฉใผใใใใพใใ"); -static const u8 Str_841B2BF[] = _("ยทใชใผใซใใใใงใใจใฉใผใใใใใพใใ"); -static const u8 Str_841B2D3[] = _("ยทใใฉใฐใชใใจใฉใผใใใใใพใใ"); -static const u8 Str_841B2E4[] = _("ยทใใผใในใใใใฎใใจใฉใผใใใใใพใใ"); +static const u8 Str_841B2B0[] = DTR("ยทใซใฆใณใใจใฉใผใใใใพใใ", "Count error occured."); +static const u8 Str_841B2BF[] = DTR("ยทใชใผใซใใใใงใใจใฉใผใใใใใพใใ", "Reel processing error occurred."); +static const u8 Str_841B2D3[] = DTR("ยทใใฉใฐใชใใจใฉใผใใใใใพใใ", "FLAG OFF error occurred."); +static const u8 Str_841B2E4[] = DTR("ยทใใผใในใใใใฎใใจใฉใผใใใใใพใใ", "BONUS use error occurred."); // TRN static void debug_sub_811B894(void) { diff --git a/src/trainer_card.c b/src/trainer_card.c index b34517def..5e07fdcc8 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -87,7 +87,7 @@ const struct TrainerCard sTestTrainerCard = .pokemonTrades = 0xFFFF, .money = 99999, .var_28 = {1, 2, 3, 4}, - .playerName = _("ใฆใใจ"), // "test" + .playerName = DTR("ใฆใใจ", "TEST"), }; #endif @@ -635,7 +635,7 @@ void GabbyAndTyBeforeInterview(void) gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.lastUsedMove; if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff) gSaveBlock1.gabbyAndTyData.battleNum ++; - gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0; + gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.playerMonWasDamaged; if (gBattleResults.playerFaintCounter) gSaveBlock1.gabbyAndTyData.valA_1 = 1; @@ -2074,7 +2074,7 @@ void ChangePokemonNickname(void) void ChangePokemonNickname_CB(void) { SetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, gStringVar2); - c2_exit_to_overworld_1_continue_scripts_restart_music(); + CB2_ReturnToFieldContinueScriptPlayMapMusic(); } void TV_CopyNicknameToStringVar1AndEnsureTerminated(void) diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 0680570fc..47eb81541 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -203,34 +203,35 @@ enum static u8 ChooseWildMonIndex_Fishing(u8 rod) { u8 wildMonIndex = 0; - u8 rand = Random() % 100; + u8 rand = Random() % max(max(ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_TOTAL, ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_TOTAL), + ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_TOTAL);; switch (rod) { case OLD_ROD: - if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_0) + if (rand < ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_SLOT_0) wildMonIndex = 0; else wildMonIndex = 1; break; case GOOD_ROD: - if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2) + if (rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_2) wildMonIndex = 2; - if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3) + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_2 && rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_3) wildMonIndex = 3; - if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_4) + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_3 && rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_4) wildMonIndex = 4; break; case SUPER_ROD: - if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5) + if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_5) wildMonIndex = 5; - if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6) + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_5 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_6) wildMonIndex = 6; - if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7) + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_6 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_7) wildMonIndex = 7; - if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8) + if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_7 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8) wildMonIndex = 8; - if (rand == ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8) + if (rand == ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8) wildMonIndex = 9; break; } |