summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/battle_2.c1214
-rw-r--r--src/battle/battle_3.c24
-rw-r--r--src/battle/battle_4.c69
-rw-r--r--src/battle/battle_controller_linkopponent.c8
-rw-r--r--src/battle/battle_controller_linkpartner.c8
-rw-r--r--src/battle/battle_controller_opponent.c8
-rw-r--r--src/battle/battle_controller_player.c34
-rw-r--r--src/battle/battle_controller_safari.c14
-rw-r--r--src/battle/battle_controller_wally.c14
-rw-r--r--src/battle/reshow_battle_screen.c10
-rw-r--r--src/contest.c24
-rw-r--r--src/debug/matsuda_debug_menu.c12
-rw-r--r--src/field/tv.c2
-rw-r--r--src/scene/evolution_scene.c24
-rw-r--r--src/unknown_task.c8
15 files changed, 1295 insertions, 178 deletions
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index 92e9e3e1d..a30245081 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -1,13 +1,17 @@
#include "global.h"
#include "constants/abilities.h"
#include "battle.h"
+#include "battle_ai.h"
#include "battle_interface.h"
+#include "battle_message.h"
#include "battle_setup.h"
#include "data2.h"
#include "event_data.h"
+#include "evolution_scene.h"
#include "item.h"
#include "link.h"
#include "main.h"
+#include "m4a.h"
#include "name_string_util.h"
#include "palette.h"
#include "party_menu.h"
@@ -15,6 +19,7 @@
#include "pokedex.h"
#include "pokemon.h"
#include "random.h"
+#include "roamer.h"
#include "rom3.h"
#include "rom_8077ABC.h"
#include "rom_8094928.h"
@@ -22,10 +27,12 @@
#include "sound.h"
#include "constants/species.h"
#include "sprite.h"
+#include "string_util.h"
#include "task.h"
#include "text.h"
#include "trainer.h"
#include "trig.h"
+#include "tv.h"
#include "unknown_task.h"
#include "util.h"
#include "constants/battle_move_effects.h"
@@ -60,7 +67,7 @@ extern const u16 gUnknown_08D004E0[];
extern const struct MonCoords gCastformFrontSpriteCoords[];
extern u8 gStatStageRatios[][2];
-extern u8 gUnknown_02024A76[4];
+extern u8 gActionsByTurnOrder[4];
extern struct UnknownPokemonStruct2 gUnknown_02023A00[];
extern u8 gBattleBufferB[][0x200];
extern u8 gActiveBank;
@@ -68,7 +75,7 @@ extern u32 gBattleExecBuffer;
extern u8 gNoOfAllBanks;
extern u16 gBattlePartyID[];
extern u8 gCurrentActionFuncId;
-extern u8 gTurnOrder[];
+extern u8 gBanksByTurnOrder[];
extern struct UnknownStruct12 gUnknown_02024AD0[];
extern u8 gObjectBankIDs[];
extern u16 gCurrentMove;
@@ -82,7 +89,7 @@ extern u16 gLastUsedMove[];
extern u16 gMoveHitWith[];
extern u16 gUnknown_02024C44[];
extern u16 gUnknown_02024C4C[];
-extern u16 gLockedMove[];
+extern u16 gLockedMoves[];
extern u8 gUnknown_02024C5C[];
extern u16 gChosenMovesByBanks[];
extern u32 gHitMarker;
@@ -112,8 +119,8 @@ extern u16 gBattle_WIN0V;
extern u16 gBattle_BG2_Y;
extern u32 gUnknown_03004284;
extern u16 gBattle_BG2_X;
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG0_X;
extern u16 gBattle_BG1_X;
extern u16 gBattle_WIN0H;
extern MainCallback gPreBattleCallback1;
@@ -140,10 +147,33 @@ extern u8 gCurrentTurnActionNumber;
extern void (* const gUnknown_081FA640[])(void);
extern void (* const gUnknown_081FA678[])(void);
extern u8* gBattlescriptCurrInstr;
-extern u8 gUnknown_081D8E02[];
+extern u8 BattleScript_LinkBattleWonOrLost[];
extern u8 BattleScript_PayDayMoneyAndPickUpItems[];
extern u8 gUnknown_081D8E0D[];
extern u8 BattleScript_LocalTrainerBattleWon[];
+extern u8 BattleScript_LocalBattleLost[];
+extern u8 BattleScript_GotAwaySafely[];
+extern u8 BattleScript_SmokeBallEscape[];
+extern u8 BattleScript_RanAwayUsingMonAbility[];
+extern u8 BattleScript_WildMonFled[];
+extern u8 BattleScript_ActionSwitch[];
+extern u8 BattleScript_PrintFailedToRunString[];
+extern const BattleCmdFunc gBattleScriptingCommandsTable[];
+extern u8 gCritMultiplier;
+extern u8 gCurrMovePos;
+extern u8 gUnknown_02024BE5;
+extern u16 gChosenMove;
+extern u8* gBattleScriptsForMoveEffects[];
+extern u16 gLastUsedItem;
+extern u8 * const gBattlescriptsForBallThrow[];
+extern u8 * const gBattlescriptsForRunningByItem[];
+extern u8 * const gBattlescriptsForUsingItem[];
+extern u8 * const gBattlescriptsForSafariActions[];
+extern u8 gBattleTextBuff2[];
+extern u8 gNumSafariBalls;
+extern u8 gUnknown_081FA70C[][3];
+extern u8 gUnknown_081FA71B[];
+extern u8 gUnknown_081FA71F[];
void b_call_bc_move_exec(const u8* BS_ptr);
@@ -153,7 +183,11 @@ void SetActionsAndBanksTurnOrder(void);
static void TurnValuesCleanUp(u8);
void SpecialStatusesClear(void);
static void RunTurnActionsFunctions(void);
-void sub_8013C9C();
+void HandleEndTurn_FinishBattle();
+static void FreeResetData_ReturnToOvOrDoEvolutions(void);
+void TryEvolvePokemon(void);
+static void ReturnFromBattleToOverworld(void);
+static void WaitForEvoSceneToFinish(void);
void sub_800E7C4(void)
{
@@ -202,8 +236,8 @@ void InitBattle(void)
sub_80895F8(gUnknown_081F9674);
SetUpWindowConfig(&gWindowConfig_81E6C58);
ResetPaletteFade();
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
@@ -491,7 +525,7 @@ void sub_800EC9C(void)
{
gPreBattleCallback1 = gMain.callback1;
gMain.callback1 = sub_8010824;
- SetMainCallback2(sub_800F808);
+ SetMainCallback2(BattleMainCB2);
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
gTrainerBattleOpponent = 0x800;
@@ -849,7 +883,7 @@ void sub_800F298(void)
{
gPreBattleCallback1 = gMain.callback1;
gMain.callback1 = sub_8010824;
- SetMainCallback2(sub_800F808);
+ SetMainCallback2(BattleMainCB2);
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
gTrainerBattleOpponent = 0x800;
@@ -860,7 +894,7 @@ void sub_800F298(void)
}
}
-void sub_800F808(void)
+void BattleMainCB2(void)
{
AnimateSprites();
BuildOamBuffer();
@@ -1024,8 +1058,8 @@ void sub_800FCD4(void)
void sub_800FCFC(void)
{
Random(); // unused return value
- REG_BG0HOFS = gUnknown_030042A4;
- REG_BG0VOFS = gUnknown_030042A0;
+ REG_BG0HOFS = gBattle_BG0_X;
+ REG_BG0VOFS = gBattle_BG0_Y;
REG_BG1HOFS = gBattle_BG1_X;
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
@@ -1178,8 +1212,8 @@ void c2_8011A1C(void)
}
SetUpWindowConfig(&gWindowConfig_81E6C58);
ResetPaletteFade();
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
@@ -1549,7 +1583,7 @@ void sub_8010874(void)
gUnknown_02024C44[i] = 0;
gUnknown_02024C4C[i] = 0;
gUnknown_02024C5C[i] = 0xFF;
- gLockedMove[i] = 0;
+ gLockedMoves[i] = 0;
gUnknown_02024C2C[i] = 0;
eFlashFireArr.arr[i] = 0;
}
@@ -2098,12 +2132,12 @@ void BattleBeginFirstTurn(void)
if (ewram16058 == 0)
{
for (i = 0; i < gNoOfAllBanks; i++)
- gTurnOrder[i] = i;
+ gBanksByTurnOrder[i] = i;
for (i = 0; i < gNoOfAllBanks - 1; i++)
{
for (j = i + 1; j < gNoOfAllBanks; j++)
{
- if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 1) != 0)
+ if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 1) != 0)
SwapTurnOrder(i, j);
}
}
@@ -2115,7 +2149,7 @@ void BattleBeginFirstTurn(void)
}
while (ewram16058 < gNoOfAllBanks)
{
- if (AbilityBattleEffects(0, gTurnOrder[ewram16058], 0, 0, 0) != 0)
+ if (AbilityBattleEffects(0, gBanksByTurnOrder[ewram16058], 0, 0, 0) != 0)
r9++;
ewram16058++;
if (r9 != 0)
@@ -2127,7 +2161,7 @@ void BattleBeginFirstTurn(void)
return;
while (ewram160F9 < gNoOfAllBanks)
{
- if (ItemBattleEffects(0, gTurnOrder[ewram160F9], 0) != 0)
+ if (ItemBattleEffects(0, gBanksByTurnOrder[ewram160F9], 0) != 0)
r9++;
ewram160F9++;
if (r9 != 0)
@@ -2199,7 +2233,7 @@ void BattleTurnPassed(void)
if (TurnBasedEffects() != 0)
return;
}
- if (sub_80173A4() != 0)
+ if (HandleFaintedMonActions() != 0)
return;
ewram16059 = 0;
if (sub_80170DC() != 0)
@@ -3861,13 +3895,13 @@ void SwapTurnOrder(u8 a, u8 b)
{
int temp;
- temp = gUnknown_02024A76[a];
- gUnknown_02024A76[a] = gUnknown_02024A76[b];
- gUnknown_02024A76[b] = temp;
+ temp = gActionsByTurnOrder[a];
+ gActionsByTurnOrder[a] = gActionsByTurnOrder[b];
+ gActionsByTurnOrder[b] = temp;
- temp = gTurnOrder[a];
- gTurnOrder[a] = gTurnOrder[b];
- gTurnOrder[b] = temp;
+ temp = gBanksByTurnOrder[a];
+ gBanksByTurnOrder[a] = gBanksByTurnOrder[b];
+ gBanksByTurnOrder[b] = temp;
}
// Determines which of the two given mons will strike first in a battle.
@@ -4024,8 +4058,8 @@ void SetActionsAndBanksTurnOrder(void)
{
for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
{
- gUnknown_02024A76[var] = gActionForBanks[gActiveBank];
- gTurnOrder[var] = gActiveBank;
+ gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
+ gBanksByTurnOrder[var] = gActiveBank;
var++;
}
}
@@ -4053,15 +4087,15 @@ void SetActionsAndBanksTurnOrder(void)
if (var == 5)
{
- gUnknown_02024A76[0] = gActionForBanks[gActiveBank];
- gTurnOrder[0] = gActiveBank;
+ gActionsByTurnOrder[0] = gActionForBanks[gActiveBank];
+ gBanksByTurnOrder[0] = gActiveBank;
var = 1;
for (i = 0; i < gNoOfAllBanks; i++)
{
if (i != gActiveBank)
{
- gUnknown_02024A76[var] = gActionForBanks[i];
- gTurnOrder[var] = i;
+ gActionsByTurnOrder[var] = gActionForBanks[i];
+ gBanksByTurnOrder[var] = i;
var++;
}
}
@@ -4075,8 +4109,8 @@ void SetActionsAndBanksTurnOrder(void)
{
if (gActionForBanks[gActiveBank] == ACTION_USE_ITEM || gActionForBanks[gActiveBank] == ACTION_SWITCH)
{
- gUnknown_02024A76[var] = gActionForBanks[gActiveBank];
- gTurnOrder[var] = gActiveBank;
+ gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
+ gBanksByTurnOrder[var] = gActiveBank;
var++;
}
}
@@ -4084,8 +4118,8 @@ void SetActionsAndBanksTurnOrder(void)
{
if (gActionForBanks[gActiveBank] != ACTION_USE_ITEM && gActionForBanks[gActiveBank] != ACTION_SWITCH)
{
- gUnknown_02024A76[var] = gActionForBanks[gActiveBank];
- gTurnOrder[var] = gActiveBank;
+ gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
+ gBanksByTurnOrder[var] = gActiveBank;
var++;
}
}
@@ -4093,12 +4127,12 @@ void SetActionsAndBanksTurnOrder(void)
{
for (j = i + 1; j < gNoOfAllBanks; j++)
{
- u8 bank1 = gTurnOrder[i];
- u8 bank2 = gTurnOrder[j];
- if (gUnknown_02024A76[i] != ACTION_USE_ITEM
- && gUnknown_02024A76[j] != ACTION_USE_ITEM
- && gUnknown_02024A76[i] != ACTION_SWITCH
- && gUnknown_02024A76[j] != ACTION_SWITCH)
+ u8 bank1 = gBanksByTurnOrder[i];
+ u8 bank2 = gBanksByTurnOrder[j];
+ if (gActionsByTurnOrder[i] != ACTION_USE_ITEM
+ && gActionsByTurnOrder[j] != ACTION_USE_ITEM
+ && gActionsByTurnOrder[i] != ACTION_SWITCH
+ && gActionsByTurnOrder[j] != ACTION_SWITCH)
{
if (GetWhoStrikesFirst(bank1, bank2, FALSE))
SwapTurnOrder(i, j);
@@ -4184,7 +4218,7 @@ void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
{
// something stupid needed to match
u8 zero;
- gCurrentActionFuncId = gUnknown_02024A76[(zero = 0)];
+ gCurrentActionFuncId = gActionsByTurnOrder[(zero = 0)];
}
gDynamicBasePower = 0;
@@ -4227,7 +4261,7 @@ void HandleEndTurn_BattleWon(void)
{
gBattleTextBuff1[0] = gBattleOutcome;
gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
- gBattlescriptCurrInstr = gUnknown_081D8E02;
+ gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost;
gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
}
else if (gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))
@@ -4266,5 +4300,1091 @@ void HandleEndTurn_BattleWon(void)
gBattlescriptCurrInstr = BattleScript_PayDayMoneyAndPickUpItems;
}
- gBattleMainFunc = sub_8013C9C;
+ gBattleMainFunc = HandleEndTurn_FinishBattle;
+}
+
+void HandleEndTurn_BattleLost(void)
+{
+ gCurrentActionFuncId = 0;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gBattleTextBuff1[0] = gBattleOutcome;
+ gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost;
+ gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BattleScript_LocalBattleLost;
+ }
+
+ gBattleMainFunc = HandleEndTurn_FinishBattle;
+}
+
+void HandleEndTurn_RanFromBattle(void)
+{
+ gCurrentActionFuncId = 0;
+
+ switch (gProtectStructs[gBankAttacker].fleeFlag)
+ {
+ default:
+ gBattlescriptCurrInstr = BattleScript_GotAwaySafely;
+ break;
+ case 1:
+ gBattlescriptCurrInstr = BattleScript_SmokeBallEscape;
+ break;
+ case 2:
+ gBattlescriptCurrInstr = BattleScript_RanAwayUsingMonAbility;
+ break;
+ }
+
+ gBattleMainFunc = HandleEndTurn_FinishBattle;
+}
+
+void HandleEndTurn_MonFled(void)
+{
+ gCurrentActionFuncId = 0;
+
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker]);
+ gBattlescriptCurrInstr = BattleScript_WildMonFled;
+
+ gBattleMainFunc = HandleEndTurn_FinishBattle;
+}
+
+void HandleEndTurn_FinishBattle(void)
+{
+ if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC)
+ {
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
+ | BATTLE_TYPE_FIRST_BATTLE
+ | BATTLE_TYPE_SAFARI
+ | BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_WALLY_TUTORIAL
+ | BATTLE_TYPE_BATTLE_TOWER)))
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ if (gBattleResults.poke1Species == SPECIES_NONE)
+ {
+ gBattleResults.poke1Species = gBattleMons[gActiveBank].species;
+ StringCopy(gBattleResults.pokeString1, gBattleMons[gActiveBank].nickname);
+ }
+ else
+ {
+ gBattleResults.opponentSpecies = gBattleMons[gActiveBank].species;
+ StringCopy(gBattleResults.pokeString2, gBattleMons[gActiveBank].nickname);
+ }
+ }
+ }
+ PutPokemonTodayCaughtOnAir();
+ }
+
+ BeginFastPaletteFade(3);
+ FadeOutMapMusic(5);
+ gBattleMainFunc = FreeResetData_ReturnToOvOrDoEvolutions;
+ gCB2_AfterEvolution = BattleMainCB2;
+ }
+ else
+ {
+ if (gBattleExecBuffer == 0)
+ gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
+ }
+}
+
+static void FreeResetData_ReturnToOvOrDoEvolutions(void)
+{
+ if (!gPaletteFade.active)
+ {
+ ResetSpriteData();
+ if (gLeveledUpInBattle == 0 || gBattleOutcome != BATTLE_WON)
+ {
+ gBattleMainFunc = ReturnFromBattleToOverworld;
+ return;
+ }
+ else
+ {
+ gBattleMainFunc = TryEvolvePokemon;
+ }
+ }
+}
+
+void TryEvolvePokemon(void)
+{
+ s32 i;
+
+ while (gLeveledUpInBattle != 0)
+ {
+ for (i = 0; i < 6; i++)
+ {
+ if (gLeveledUpInBattle & gBitTable[i])
+ {
+ u16 species;
+ u8 levelUpBits = gLeveledUpInBattle;
+
+ levelUpBits &= ~(gBitTable[i]);
+ gLeveledUpInBattle = levelUpBits;
+
+ species = GetEvolutionTargetSpecies(&gPlayerParty[i], 0, levelUpBits);
+ if (species != SPECIES_NONE)
+ {
+ gBattleMainFunc = WaitForEvoSceneToFinish;
+ EvolutionScene(&gPlayerParty[i], species, 0x81, i);
+ return;
+ }
+ }
+ }
+ }
+
+ gBattleMainFunc = ReturnFromBattleToOverworld;
+}
+
+static void WaitForEvoSceneToFinish(void)
+{
+ if (gMain.callback2 == BattleMainCB2)
+ gBattleMainFunc = TryEvolvePokemon;
+}
+
+static void ReturnFromBattleToOverworld(void)
+{
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ {
+ RandomlyGivePartyPokerus(gPlayerParty);
+ PartySpreadPokerus(gPlayerParty);
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK && gReceivedRemoteLinkPlayers != 0)
+ return;
+
+ gSpecialVar_Result = gBattleOutcome;
+ gMain.inBattle = 0;
+ gMain.callback1 = gPreBattleCallback1;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
+ {
+ UpdateRoamerHPStatus(&gEnemyParty[0]);
+ if (gBattleOutcome == BATTLE_WON || gBattleOutcome == BATTLE_CAUGHT)
+ SetRoamerInactive();
+ }
+
+ m4aSongNumStop(0x5A);
+ SetMainCallback2(gMain.savedCallback);
+}
+
+void RunBattleScriptCommands_PopCallbacksStack(void)
+{
+ if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC)
+ {
+ if (B_FUNCTION_STACK->size != 0)
+ B_FUNCTION_STACK->size--;
+ gBattleMainFunc = B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size];
+ }
+ else
+ {
+ if (gBattleExecBuffer == 0)
+ gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
+ }
+}
+
+void RunBattleScriptCommands(void)
+{
+ if (gBattleExecBuffer == 0)
+ gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
+}
+
+void HandleAction_UseMove(void)
+{
+ u8 side;
+ u8 var = 4;
+
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+
+ if (ewram160A6 & gBitTable[gBankAttacker])
+ {
+ gCurrentActionFuncId = ACTION_FINISHED;
+ return;
+ }
+
+ gCritMultiplier = 1;
+ eDmgMultiplier = 1;
+ ewram160E7 = 0;
+ gBattleMoveFlags = 0;
+ gMultiHitCounter = 0;
+ gBattleCommunication[6] = 0;
+ gCurrMovePos = gUnknown_02024BE5 = ewram1608Carr(gBankAttacker);
+
+ // choose move
+ if (gProtectStructs[gBankAttacker].onlyStruggle)
+ {
+ gProtectStructs[gBankAttacker].onlyStruggle = 0;
+ gCurrentMove = gChosenMove = MOVE_STRUGGLE;
+ gHitMarker |= HITMARKER_NO_PPDEDUCT;
+ ewram16010arr(gBankAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0);
+ }
+ else if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE)
+ {
+ gCurrentMove = gChosenMove = gLockedMoves[gBankAttacker];
+ }
+ // encore forces you to use the same move
+ else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE
+ && gDisableStructs[gBankAttacker].encoredMove == gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
+ {
+ gCurrentMove = gChosenMove = gDisableStructs[gBankAttacker].encoredMove;
+ gCurrMovePos = gUnknown_02024BE5 = gDisableStructs[gBankAttacker].encoredMovePos;
+ ewram16010arr(gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
+ }
+ // check if the encored move wasn't overwritten
+ else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE
+ && gDisableStructs[gBankAttacker].encoredMove != gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
+ {
+ gCurrMovePos = gUnknown_02024BE5 = gDisableStructs[gBankAttacker].encoredMovePos;
+ gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ gDisableStructs[gBankAttacker].encoredMove = MOVE_NONE;
+ gDisableStructs[gBankAttacker].encoredMovePos = 0;
+ gDisableStructs[gBankAttacker].encoreTimer1 = 0;
+ ewram16010arr(gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
+ }
+ else if (gBattleMons[gBankAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBankAttacker])
+ {
+ gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ ewram16010arr(gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
+ }
+ else
+ {
+ gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ }
+
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ gBattleResults.lastUsedMove = gCurrentMove;
+ else
+ gBattleResults.opponentMove = gCurrentMove;
+
+ // choose target
+ side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
+ if (gSideTimers[side].followmeTimer != 0
+ && gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED
+ && GetBankSide(gBankAttacker) != GetBankSide(gSideTimers[side].followmeTarget)
+ && gBattleMons[gSideTimers[side].followmeTarget].hp != 0)
+ {
+ gBankTarget = gSideTimers[side].followmeTarget;
+ }
+ else if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ && gSideTimers[side].followmeTimer == 0
+ && (gBattleMoves[gCurrentMove].power != 0
+ || gBattleMoves[gCurrentMove].target != MOVE_TARGET_x10)
+ && gBattleMons[ewram16010arr(gBankAttacker)].ability != ABILITY_LIGHTNING_ROD
+ && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
+ {
+ side = GetBankSide(gBankAttacker);
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (side != GetBankSide(gActiveBank)
+ && ewram16010arr(gBankAttacker) != gActiveBank
+ && gBattleMons[gActiveBank].ability == ABILITY_LIGHTNING_ROD
+ && BankGetTurnOrder(gActiveBank) < var)
+ {
+ var = BankGetTurnOrder(gActiveBank);
+ }
+ }
+ if (var == 4)
+ {
+ if (gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
+ {
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ {
+ if (Random() & 1)
+ gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ else
+ gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ }
+ else
+ {
+ if (Random() & 1)
+ gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ else
+ gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ }
+ }
+ else
+ {
+ gBankTarget = ewram16010arr(gBankAttacker);
+ }
+
+ if (gAbsentBankFlags & gBitTable[gBankTarget])
+ {
+ if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ {
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ }
+ else
+ {
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE);
+ if (gAbsentBankFlags & gBitTable[gBankTarget])
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ }
+ }
+ }
+ else
+ {
+ gActiveBank = gBanksByTurnOrder[var];
+ RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability);
+ gSpecialStatuses[gActiveBank].lightningRodRedirected = 1;
+ gBankTarget = gActiveBank;
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
+ && gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
+ {
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ {
+ if (Random() & 1)
+ gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ else
+ gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ }
+ else
+ {
+ if (Random() & 1)
+ gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ else
+ gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ }
+
+ if (gAbsentBankFlags & gBitTable[gBankTarget]
+ && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ {
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ }
+ }
+ else
+ {
+ gBankTarget = ewram16010arr(gBankAttacker);
+ if (gAbsentBankFlags & gBitTable[gBankTarget])
+ {
+ if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ {
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ }
+ else
+ {
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE);
+ if (gAbsentBankFlags & gBitTable[gBankTarget])
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ }
+ }
+ }
+
+ gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+
+void HandleAction_Switch(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gActionSelectionCursor[gBankAttacker] = 0;
+ gMoveSelectionCursor[gBankAttacker] = 0;
+
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, ewram16064arr(gBankAttacker))
+
+ ewram16003 = gBankAttacker;
+ gBattlescriptCurrInstr = BattleScript_ActionSwitch;
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+
+ if (gBattleResults.unk2 < 255)
+ gBattleResults.unk2++;
+}
+
+#ifdef NONMATCHING
+void HandleAction_UseItem(void)
+{
+ gBankAttacker = gBankTarget = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gDisableStructs[gBankAttacker].furyCutterCounter = 0;
+ gLastUsedItem = gBattleBufferB[gBankAttacker][1] | (gBattleBufferB[gBankAttacker][2] << 8);
+
+ if (gLastUsedItem <= ITEM_PREMIER_BALL) // is ball
+ {
+ gBattlescriptCurrInstr = gBattlescriptsForBallThrow[gLastUsedItem];
+ }
+ else if (gLastUsedItem == ITEM_POKE_DOLL || gLastUsedItem == ITEM_FLUFFY_TAIL)
+ {
+ gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0];
+ }
+ else if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ {
+ gBattlescriptCurrInstr = gBattlescriptsForUsingItem[0];
+ }
+ else
+ {
+ ewram16003 = gBankAttacker;
+
+ switch (ewram160D8(gBankAttacker))
+ {
+ case AI_ITEM_FULL_RESTORE:
+ case AI_ITEM_HEAL_HP:
+ break;
+ case AI_ITEM_CURE_CONDITION:
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ if (ewram160DA(gBankAttacker) & 1)
+ {
+ if (ewram160DA(gBankAttacker) & 0x3E)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ }
+ else
+ {
+ while (!(ewram160DA(gBankAttacker) & 1))
+ {
+ ewram160DA(gBankAttacker) /= 2;
+ gBattleCommunication[MULTISTRING_CHOOSER]++;
+ }
+ }
+ break;
+ case AI_ITEM_X_STAT:
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ if (ewram160DA(gBankAttacker) & 0x80)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ }
+ else
+ {
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK)
+ PREPARE_STRING_BUFFER(gBattleTextBuff2, 0xD2)
+
+ while (!(ewram160DA(gBankAttacker) & 1))
+ {
+ ewram160DA(gBankAttacker) /= 2;
+ gBattleTextBuff1[2]++;
+ }
+
+ ewram160A4 = gBattleTextBuff1[2] + 14;
+ ewram160A5 = 0;
+ }
+ break;
+ case AI_ITEM_GUARD_SPECS:
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ break;
+ }
+
+ gBattlescriptCurrInstr = gBattlescriptsForUsingItem[ewram160D8(gBankAttacker)];
+ }
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+#else
+__attribute__((naked))
+void HandleAction_UseItem(void)
+{
+ 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\
+ ldr r4, _08014804 @ =gBankAttacker\n\
+ ldr r2, _08014808 @ =gBankTarget\n\
+ ldr r1, _0801480C @ =gBanksByTurnOrder\n\
+ ldr r0, _08014810 @ =gCurrentTurnActionNumber\n\
+ ldrb r0, [r0]\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2]\n\
+ strb r0, [r4]\n\
+ ldr r0, _08014814 @ =gBattle_BG0_X\n\
+ movs r2, 0\n\
+ strh r2, [r0]\n\
+ ldr r0, _08014818 @ =gBattle_BG0_Y\n\
+ strh r2, [r0]\n\
+ ldr r3, _0801481C @ =gDisableStructs\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ strb r2, [r0, 0x10]\n\
+ ldr r5, _08014820 @ =gLastUsedItem\n\
+ ldr r2, _08014824 @ =gBattleBufferB\n\
+ ldrb r1, [r4]\n\
+ lsls r1, 9\n\
+ adds r0, r2, 0x1\n\
+ adds r0, r1, r0\n\
+ ldrb r3, [r0]\n\
+ adds r2, 0x2\n\
+ adds r1, r2\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 8\n\
+ orrs r3, r0\n\
+ strh r3, [r5]\n\
+ cmp r3, 0xC\n\
+ bhi _08014830\n\
+ ldr r2, _08014828 @ =gBattlescriptCurrInstr\n\
+ ldr r1, _0801482C @ =gBattlescriptsForBallThrow\n\
+ ldrh r0, [r5]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ str r0, [r2]\n\
+ b _08014A8C\n\
+ .align 2, 0\n\
+_08014804: .4byte gBankAttacker\n\
+_08014808: .4byte gBankTarget\n\
+_0801480C: .4byte gBanksByTurnOrder\n\
+_08014810: .4byte gCurrentTurnActionNumber\n\
+_08014814: .4byte gBattle_BG0_X\n\
+_08014818: .4byte gBattle_BG0_Y\n\
+_0801481C: .4byte gDisableStructs\n\
+_08014820: .4byte gLastUsedItem\n\
+_08014824: .4byte gBattleBufferB\n\
+_08014828: .4byte gBattlescriptCurrInstr\n\
+_0801482C: .4byte gBattlescriptsForBallThrow\n\
+_08014830:\n\
+ adds r0, r3, 0\n\
+ subs r0, 0x50\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0801484C\n\
+ ldr r0, _08014844 @ =gBattlescriptCurrInstr\n\
+ ldr r1, _08014848 @ =gBattlescriptsForRunningByItem\n\
+ b _0801485C\n\
+ .align 2, 0\n\
+_08014844: .4byte gBattlescriptCurrInstr\n\
+_08014848: .4byte gBattlescriptsForRunningByItem\n\
+_0801484C:\n\
+ ldrb r0, [r4]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0801486C\n\
+ ldr r0, _08014864 @ =gBattlescriptCurrInstr\n\
+ ldr r1, _08014868 @ =gBattlescriptsForUsingItem\n\
+_0801485C:\n\
+ ldr r1, [r1]\n\
+ str r1, [r0]\n\
+ b _08014A8C\n\
+ .align 2, 0\n\
+_08014864: .4byte gBattlescriptCurrInstr\n\
+_08014868: .4byte gBattlescriptsForUsingItem\n\
+_0801486C:\n\
+ ldr r2, _080148A0 @ =gSharedMem\n\
+ ldrb r0, [r4]\n\
+ ldr r3, _080148A4 @ =0x00016003\n\
+ adds r1, r2, r3\n\
+ strb r0, [r1]\n\
+ lsls r0, 24\n\
+ lsrs r0, 25\n\
+ ldr r1, _080148A8 @ =0x000160d8\n\
+ adds r0, r1\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ subs r0, 0x1\n\
+ mov r8, r4\n\
+ ldr r3, _080148AC @ =gBattlescriptCurrInstr\n\
+ mov r9, r3\n\
+ ldr r1, _080148B0 @ =gBattlescriptsForUsingItem\n\
+ mov r10, r1\n\
+ adds r7, r2, 0\n\
+ cmp r0, 0x4\n\
+ bls _08014896\n\
+ b _08014A74\n\
+_08014896:\n\
+ lsls r0, 2\n\
+ ldr r1, _080148B4 @ =_080148B8\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_080148A0: .4byte gSharedMem\n\
+_080148A4: .4byte 0x00016003\n\
+_080148A8: .4byte 0x000160d8\n\
+_080148AC: .4byte gBattlescriptCurrInstr\n\
+_080148B0: .4byte gBattlescriptsForUsingItem\n\
+_080148B4: .4byte _080148B8\n\
+ .align 2, 0\n\
+_080148B8:\n\
+ .4byte _08014A74\n\
+ .4byte _08014A74\n\
+ .4byte _080148CC\n\
+ .4byte _08014958\n\
+ .4byte _08014A30\n\
+_080148CC:\n\
+ ldr r2, _08014904 @ =gBattleCommunication\n\
+ movs r0, 0\n\
+ strb r0, [r2, 0x5]\n\
+ ldr r1, _08014908 @ =gBankAttacker\n\
+ ldrb r0, [r1]\n\
+ lsrs r0, 1\n\
+ ldr r6, _0801490C @ =0x000160da\n\
+ adds r0, r6\n\
+ adds r0, r7\n\
+ ldrb r3, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r3\n\
+ mov r8, r1\n\
+ cmp r0, 0\n\
+ beq _08014918\n\
+ movs r0, 0x3E\n\
+ ands r0, r3\n\
+ ldr r3, _08014910 @ =gBattlescriptCurrInstr\n\
+ mov r9, r3\n\
+ ldr r1, _08014914 @ =gBattlescriptsForUsingItem\n\
+ mov r10, r1\n\
+ cmp r0, 0\n\
+ bne _080148FC\n\
+ b _08014A74\n\
+_080148FC:\n\
+ movs r0, 0x5\n\
+ strb r0, [r2, 0x5]\n\
+ b _08014A74\n\
+ .align 2, 0\n\
+_08014904: .4byte gBattleCommunication\n\
+_08014908: .4byte gBankAttacker\n\
+_0801490C: .4byte 0x000160da\n\
+_08014910: .4byte gBattlescriptCurrInstr\n\
+_08014914: .4byte gBattlescriptsForUsingItem\n\
+_08014918:\n\
+ ldr r3, _08014950 @ =gBattlescriptCurrInstr\n\
+ mov r9, r3\n\
+ ldr r0, _08014954 @ =gBattlescriptsForUsingItem\n\
+ mov r10, r0\n\
+ adds r5, r7, 0\n\
+ mov r4, r8\n\
+ adds r3, r6, 0\n\
+_08014926:\n\
+ ldrb r0, [r4]\n\
+ lsrs r0, 1\n\
+ adds r0, r3\n\
+ adds r0, r5\n\
+ ldrb r1, [r0]\n\
+ lsrs r1, 1\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r2, 0x5]\n\
+ adds r0, 0x1\n\
+ strb r0, [r2, 0x5]\n\
+ ldrb r0, [r4]\n\
+ lsrs r0, 1\n\
+ adds r0, r3\n\
+ adds r0, r5\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08014926\n\
+ b _08014A74\n\
+ .align 2, 0\n\
+_08014950: .4byte gBattlescriptCurrInstr\n\
+_08014954: .4byte gBattlescriptsForUsingItem\n\
+_08014958:\n\
+ ldr r3, _0801498C @ =gBattleCommunication\n\
+ movs r0, 0x4\n\
+ strb r0, [r3, 0x5]\n\
+ ldr r2, _08014990 @ =gBankAttacker\n\
+ ldrb r0, [r2]\n\
+ lsrs r0, 1\n\
+ ldr r1, _08014994 @ =0x000160da\n\
+ mov r12, r1\n\
+ add r0, r12\n\
+ adds r6, r0, r7\n\
+ ldrb r1, [r6]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ mov r8, r2\n\
+ cmp r5, 0\n\
+ beq _080149A0\n\
+ movs r0, 0x5\n\
+ strb r0, [r3, 0x5]\n\
+ ldr r2, _08014998 @ =gBattlescriptCurrInstr\n\
+ mov r9, r2\n\
+ ldr r3, _0801499C @ =gBattlescriptsForUsingItem\n\
+ mov r10, r3\n\
+ b _08014A74\n\
+ .align 2, 0\n\
+_0801498C: .4byte gBattleCommunication\n\
+_08014990: .4byte gBankAttacker\n\
+_08014994: .4byte 0x000160da\n\
+_08014998: .4byte gBattlescriptCurrInstr\n\
+_0801499C: .4byte gBattlescriptsForUsingItem\n\
+_080149A0:\n\
+ ldr r3, _08014A18 @ =gBattleTextBuff1\n\
+ movs r4, 0xFD\n\
+ strb r4, [r3]\n\
+ movs r0, 0x5\n\
+ strb r0, [r3, 0x1]\n\
+ movs r2, 0x1\n\
+ strb r2, [r3, 0x2]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r3, 0x3]\n\
+ ldr r1, _08014A1C @ =gBattleTextBuff2\n\
+ strb r4, [r1]\n\
+ strb r5, [r1, 0x1]\n\
+ movs r0, 0xD2\n\
+ strb r0, [r1, 0x2]\n\
+ strb r5, [r1, 0x3]\n\
+ subs r0, 0xD3\n\
+ strb r0, [r1, 0x4]\n\
+ ldrb r0, [r6]\n\
+ ands r2, r0\n\
+ ldr r0, _08014A20 @ =gBattlescriptCurrInstr\n\
+ mov r9, r0\n\
+ ldr r1, _08014A24 @ =gBattlescriptsForUsingItem\n\
+ mov r10, r1\n\
+ adds r6, r3, 0\n\
+ cmp r2, 0\n\
+ bne _08014A02\n\
+ adds r3, r7, 0\n\
+ mov r5, r8\n\
+ mov r4, r12\n\
+ adds r2, r6, 0\n\
+_080149DC:\n\
+ ldrb r0, [r5]\n\
+ lsrs r0, 1\n\
+ adds r0, r4\n\
+ adds r0, r3\n\
+ ldrb r1, [r0]\n\
+ lsrs r1, 1\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r2, 0x2]\n\
+ adds r0, 0x1\n\
+ strb r0, [r2, 0x2]\n\
+ ldrb r0, [r5]\n\
+ lsrs r0, 1\n\
+ adds r0, r4\n\
+ adds r0, r3\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080149DC\n\
+_08014A02:\n\
+ ldrb r0, [r6, 0x2]\n\
+ adds r0, 0xE\n\
+ ldr r2, _08014A28 @ =0x000160a4\n\
+ adds r1, r7, r2\n\
+ movs r2, 0\n\
+ strb r0, [r1]\n\
+ ldr r3, _08014A2C @ =0x000160a5\n\
+ adds r0, r7, r3\n\
+ strb r2, [r0]\n\
+ b _08014A74\n\
+ .align 2, 0\n\
+_08014A18: .4byte gBattleTextBuff1\n\
+_08014A1C: .4byte gBattleTextBuff2\n\
+_08014A20: .4byte gBattlescriptCurrInstr\n\
+_08014A24: .4byte gBattlescriptsForUsingItem\n\
+_08014A28: .4byte 0x000160a4\n\
+_08014A2C: .4byte 0x000160a5\n\
+_08014A30:\n\
+ ldr r0, _08014A50 @ =gBattleTypeFlags\n\
+ ldrh r0, [r0]\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _08014A64\n\
+ ldr r1, _08014A54 @ =gBattleCommunication\n\
+ movs r0, 0x2\n\
+ strb r0, [r1, 0x5]\n\
+ ldr r0, _08014A58 @ =gBankAttacker\n\
+ mov r8, r0\n\
+ ldr r1, _08014A5C @ =gBattlescriptCurrInstr\n\
+ mov r9, r1\n\
+ ldr r2, _08014A60 @ =gBattlescriptsForUsingItem\n\
+ mov r10, r2\n\
+ b _08014A74\n\
+ .align 2, 0\n\
+_08014A50: .4byte gBattleTypeFlags\n\
+_08014A54: .4byte gBattleCommunication\n\
+_08014A58: .4byte gBankAttacker\n\
+_08014A5C: .4byte gBattlescriptCurrInstr\n\
+_08014A60: .4byte gBattlescriptsForUsingItem\n\
+_08014A64:\n\
+ ldr r0, _08014AA0 @ =gBattleCommunication\n\
+ strb r1, [r0, 0x5]\n\
+ ldr r3, _08014AA4 @ =gBankAttacker\n\
+ mov r8, r3\n\
+ ldr r0, _08014AA8 @ =gBattlescriptCurrInstr\n\
+ mov r9, r0\n\
+ ldr r1, _08014AAC @ =gBattlescriptsForUsingItem\n\
+ mov r10, r1\n\
+_08014A74:\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ lsrs r0, 1\n\
+ ldr r3, _08014AB0 @ =0x000160d8\n\
+ adds r0, r3\n\
+ adds r0, r7\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ add r0, r10\n\
+ ldr r0, [r0]\n\
+ mov r1, r9\n\
+ str r0, [r1]\n\
+_08014A8C:\n\
+ movs r0, 0xA\n\
+ ldr r2, _08014AB4 @ =gCurrentActionFuncId\n\
+ strb r0, [r2]\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\
+_08014AA0: .4byte gBattleCommunication\n\
+_08014AA4: .4byte gBankAttacker\n\
+_08014AA8: .4byte gBattlescriptCurrInstr\n\
+_08014AAC: .4byte gBattlescriptsForUsingItem\n\
+_08014AB0: .4byte 0x000160d8\n\
+_08014AB4: .4byte gCurrentActionFuncId\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+bool8 TryRunFromBattle(u8 bank)
+{
+ bool8 effect = FALSE;
+ u8 holdEffect;
+ u8 speedVar;
+
+ if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[bank].holdEffect;
+ else
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item);
+
+ gStringBank = bank;
+
+ if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
+ {
+ gLastUsedItem = gBattleMons[bank].item ;
+ gProtectStructs[bank].fleeFlag = 1;
+ effect++;
+ }
+ else if (gBattleMons[bank].ability == ABILITY_RUN_AWAY)
+ {
+ gLastUsedAbility = ABILITY_RUN_AWAY;
+ gProtectStructs[bank].fleeFlag = 2;
+ effect++;
+ }
+ else
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ if (gBattleMons[bank].speed < gBattleMons[bank ^ BIT_SIDE].speed)
+ {
+ speedVar = (gBattleMons[bank].speed * 128) / (gBattleMons[bank ^ BIT_SIDE].speed) + (ewram16078 * 30);
+ if (speedVar > (Random() & 0xFF))
+ effect++;
+ }
+ else // same speed or faster
+ {
+ effect++;
+ }
+ }
+
+ ewram16078++;
+ }
+
+ if (effect)
+ {
+ gCurrentTurnActionNumber = gNoOfAllBanks;
+ gBattleOutcome = BATTLE_RAN;
+ }
+
+ return effect;
+}
+
+void HandleAction_Run(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gCurrentTurnActionNumber = gNoOfAllBanks;
+
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ if (gActionForBanks[gActiveBank] == ACTION_RUN)
+ gBattleOutcome |= BATTLE_LOST;
+ }
+ else
+ {
+ if (gActionForBanks[gActiveBank] == ACTION_RUN)
+ gBattleOutcome |= BATTLE_WON;
+ }
+ }
+
+ gBattleOutcome |= OUTCOME_LINK_BATTLE_RUN;
+ }
+ else
+ {
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ {
+ if (!TryRunFromBattle(gBankAttacker)) // failed to run away
+ {
+ gBattleMons[gBankAttacker].status2 &= ~STATUS2_DESTINY_BOND;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 3;
+ gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ }
+ }
+ else
+ {
+ if (gBattleMons[gBankAttacker].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ }
+ else
+ {
+ gCurrentTurnActionNumber = gNoOfAllBanks;
+ gBattleOutcome = BATTLE_POKE_FLED;
+ }
+ }
+ }
+}
+
+void HandleAction_WatchesCarefully(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0];
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+
+void HandleAction_SafariZoneBallThrow(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gNumSafariBalls--;
+ gLastUsedItem = ITEM_SAFARI_BALL;
+ gBattlescriptCurrInstr = gBattlescriptsForBallThrow[ITEM_SAFARI_BALL];
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+
+void HandleAction_ThrowPokeblock(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBankAttacker][1] - 1;
+ gLastUsedItem = gBattleBufferB[gBankAttacker][2];
+
+ if (ewram16087 < 3)
+ ewram16087++;
+ if (ewram16088 > 1)
+ {
+ if (ewram16088 < gUnknown_081FA70C[ewram16087][gBattleCommunication[MULTISTRING_CHOOSER]])
+ ewram16088 = 1;
+ else
+ ewram16088 -= gUnknown_081FA70C[ewram16087][gBattleCommunication[MULTISTRING_CHOOSER]];
+ }
+
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[2];
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+
+void HandleAction_GoNear(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+
+ ewram16089 += gUnknown_081FA71B[ewram16086];
+ if (ewram16089 > 20)
+ ewram16089 = 20;
+
+ ewram16088 += gUnknown_081FA71F[ewram16086];
+ if (ewram16088 > 20)
+ ewram16088 = 20;
+
+ if (ewram16086 < 3)
+ {
+ ewram16086++;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[1];
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+
+void HandleAction_SafriZoneRun(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ PlaySE(SE_NIGERU);
+ gCurrentTurnActionNumber = gNoOfAllBanks;
+ gBattleOutcome = BATTLE_RAN;
+}
+
+void HandleAction_Action9(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker])
+
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[3];
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ gActionsByTurnOrder[1] = ACTION_FINISHED;
+}
+
+void HandleAction_Action11(void)
+{
+ if (!HandleFaintedMonActions())
+ {
+ ewram16059 = 0;
+ gCurrentActionFuncId = ACTION_FINISHED;
+ }
+}
+
+void HandleAction_NothingIsFainted(void)
+{
+ gCurrentTurnActionNumber++;
+ gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
+ gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED
+ | 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);
+}
+
+void HandleAction_ActionFinished(void)
+{
+ gCurrentTurnActionNumber++;
+ gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
+ SpecialStatusesClear();
+ gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED
+ | 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);
+
+ gBattleMoveDamage = 0;
+ ewram16002 = 0;
+ ewram160A1 = 0;
+ gMoveHitWith[gBankAttacker] = 0;
+ gUnknown_02024C44[gBankAttacker] = 0;
+ eDynamicMoveType = 0;
+ gDynamicBasePower = 0;
+ ewram1600C = 0;
+ gBattleCommunication[3] = 0;
+ gBattleCommunication[4] = 0;
+ eMultihitMoveEffect = 0;
+ ewram17130 = 0;
}
diff --git a/src/battle/battle_3.c b/src/battle/battle_3.c
index cfa188fa4..92e0404cc 100644
--- a/src/battle/battle_3.c
+++ b/src/battle/battle_3.c
@@ -33,7 +33,7 @@ extern u8 gNoOfAllBanks;
extern u32 gStatuses3[4];
extern u8 gBankAttacker;
extern u8 gBankTarget;
-extern u8 gTurnOrder[4];
+extern u8 gBanksByTurnOrder[4];
extern u16 gSideAffecting[2];
extern u16 gBattleWeather;
extern void (*gBattleMainFunc)(void);
@@ -87,8 +87,6 @@ u8 weather_get_current(void);
void b_push_move_exec(u8* BS_ptr);
void RecordAbilityBattle(u8 bank, u8 ability);
void RecordItemBattle(u8 bank, u8 holdEffect);
-void sub_8013F54(void);
-void sub_8013FBC(void);
s8 GetPokeFlavourRelation(u32 pid, u8 flavor);
extern u8 BattleScript_MoveSelectionDisabledMove[];
@@ -372,14 +370,14 @@ u8 UpdateTurnCounters(void)
case 0:
for (i = 0; i < gNoOfAllBanks; i++)
{
- gTurnOrder[i] = i;
+ gBanksByTurnOrder[i] = i;
}
for (i = 0; i < gNoOfAllBanks - 1; i++)
{
s32 j;
for (j = i + 1; j < gNoOfAllBanks; j++)
{
- if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 0))
+ if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 0))
SwapTurnOrder(i, j);
}
}
@@ -496,7 +494,7 @@ u8 UpdateTurnCounters(void)
case 5:
while (BATTLE_STRUCT->turnSideTracker < gNoOfAllBanks)
{
- gActiveBank = gTurnOrder[BATTLE_STRUCT->turnSideTracker];
+ gActiveBank = gBanksByTurnOrder[BATTLE_STRUCT->turnSideTracker];
if (gWishFutureKnock.wishCounter[gActiveBank] && --gWishFutureKnock.wishCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp)
{
gBankTarget = gActiveBank;
@@ -606,7 +604,7 @@ u8 TurnBasedEffects(void)
gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20);
while (BATTLE_STRUCT->turnEffectsBank < gNoOfAllBanks && BATTLE_STRUCT->turnEffectsTracker <= TURNBASED_MAX_CASE)
{
- gActiveBank = gBankAttacker = gTurnOrder[BATTLE_STRUCT->turnEffectsBank];
+ gActiveBank = gBankAttacker = gBanksByTurnOrder[BATTLE_STRUCT->turnEffectsBank];
if (gAbsentBankFlags & gBitTable[gActiveBank])
{
BATTLE_STRUCT->turnEffectsBank++;
@@ -948,7 +946,7 @@ bool8 sub_80170DC(void) // handle future sight and perish song
case 1: // perish song
while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks)
{
- gActiveBank = gBankAttacker = gTurnOrder[BATTLE_STRUCT->sub80170DC_Bank];
+ gActiveBank = gBankAttacker = gBanksByTurnOrder[BATTLE_STRUCT->sub80170DC_Bank];
if (gAbsentBankFlags & gBitTable[gActiveBank])
BATTLE_STRUCT->sub80170DC_Bank++;
else
@@ -984,9 +982,9 @@ bool8 sub_80170DC(void) // handle future sight and perish song
return 0;
}
-#define sub_80173A4_MAX_CASE 7
+#define HandleFaintedMonActions_MAX_CASE 7
-bool8 sub_80173A4(void)
+bool8 HandleFaintedMonActions(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
return 0;
@@ -1053,7 +1051,7 @@ bool8 sub_80173A4(void)
case 7:
break;
}
- } while (BATTLE_STRUCT->sub80173A4_Tracker != sub_80173A4_MAX_CASE);
+ } while (BATTLE_STRUCT->sub80173A4_Tracker != HandleFaintedMonActions_MAX_CASE);
return 0;
}
@@ -2255,7 +2253,7 @@ void b_call_bc_move_exec(u8* BS_ptr)
{
gBattlescriptCurrInstr = BS_ptr;
B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc;
- gBattleMainFunc = sub_8013F54;
+ gBattleMainFunc = RunBattleScriptCommands_PopCallbacksStack;
gCurrentActionFuncId = 0;
}
@@ -2264,7 +2262,7 @@ void b_push_move_exec(u8* BS_ptr)
b_movescr_stack_push_cursor();
gBattlescriptCurrInstr = BS_ptr;
B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc;
- gBattleMainFunc = sub_8013FBC;
+ gBattleMainFunc = RunBattleScriptCommands;
}
enum
diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c
index d9789f76d..3b1092e45 100644
--- a/src/battle/battle_4.c
+++ b/src/battle/battle_4.c
@@ -35,8 +35,8 @@ extern u8 gActiveBank;
extern u32 gBattleExecBuffer;
extern u8 gNoOfAllBanks;
extern u16 gBattlePartyID[4];
-extern u8 gTurnOrder[4];
-extern u8 gUnknown_02024A76[4];
+extern u8 gBanksByTurnOrder[4];
+extern u8 gActionsByTurnOrder[4];
extern u16 gCurrentMove;
extern u8 gLastUsedAbility;
extern u16 gBattleWeather;
@@ -45,7 +45,7 @@ extern u8 gEffectBank;
extern u8 gAbsentBankFlags;
extern u8 gMultiHitCounter;
extern u16 gLastUsedMove[4];
-extern u16 gLockedMove[4];
+extern u16 gLockedMoves[4];
extern u16 gChosenMovesByBanks[4];
extern u16 gSideAffecting[2];
extern u16 gPauseCounterBattle;
@@ -145,10 +145,9 @@ bool32 IsHMMove2(u16 move);
void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0);
void nullsub_6(void);
void ReshowBattleScreenAfterMenu(void);
-void sub_800F808(void);
+void BattleMainCB2(void);
void AddMoney(u32* moneySaveblock, u32 to_give);
void sub_80156DC(void); //set sentpokes value
-bool8 sub_8014AB8(u8 bank); //can run from battle
u8 CountAliveMons(u8 caseID);
void sub_803E1B0(struct Pokemon*, u16 item, u8 partyID, u8 r3, u8 sp);
u8 CanRunFromBattle(void);
@@ -1074,11 +1073,11 @@ static void atk00_attackcanceler(void)
}
for (i = 0; i < gNoOfAllBanks; i++)
{
- if ((gProtectStructs[gTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED)
+ if ((gProtectStructs[gBanksByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED)
{
- PressurePPLose(gBankAttacker, gTurnOrder[i], MOVE_SNATCH);
- gProtectStructs[gTurnOrder[i]].stealMove = 0;
- BATTLE_STRUCT->scriptingActive = gTurnOrder[i];
+ PressurePPLose(gBankAttacker, gBanksByTurnOrder[i], MOVE_SNATCH);
+ gProtectStructs[gBanksByTurnOrder[i]].stealMove = 0;
+ BATTLE_STRUCT->scriptingActive = gBanksByTurnOrder[i];
b_movescr_stack_push_cursor();
gBattlescriptCurrInstr = BattleScript_SnatchedMove;
return;
@@ -2253,7 +2252,7 @@ u8 BankGetTurnOrder(u8 bank)
int i;
for (i = 0; i < gNoOfAllBanks; i++)
{
- if (gTurnOrder[i] == bank)
+ if (gBanksByTurnOrder[i] == bank)
break;
}
return i;
@@ -2527,7 +2526,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
if (gBattleMons[gEffectBank].status2 & STATUS2_UPROAR)
{gBattlescriptCurrInstr++; return;}
gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMove[gEffectBank] = gCurrentMove;
+ gLockedMoves[gEffectBank] = gCurrentMove;
gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4;
b_movescr_stack_push(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
@@ -2551,7 +2550,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
break;
case 12: //charging move
gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMove[gEffectBank] = gCurrentMove;
+ gLockedMoves[gEffectBank] = gCurrentMove;
gProtectStructs[gEffectBank].chargingTurn = 1;
gBattlescriptCurrInstr++;
break;
@@ -2619,7 +2618,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
case 29: //recharge
gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE;
gDisableStructs[gEffectBank].rechargeCounter = 2;
- gLockedMove[gEffectBank] = gCurrentMove;
+ gLockedMoves[gEffectBank] = gCurrentMove;
gBattlescriptCurrInstr++;
break;
case 30: //rage
@@ -2711,7 +2710,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
if (!(gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE))
{
gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMove[gEffectBank] = gCurrentMove;
+ gLockedMoves[gEffectBank] = gCurrentMove;
gBattleMons[gEffectBank].status2 |= (((Random() & 1) + 2) << 0xA);
}
else
@@ -3909,7 +3908,7 @@ _0801ED7C:\n\
lsls r0, 5\n\
orrs r1, r0\n\
str r1, [r2]\n\
- ldr r1, _0801EDC8 @ =gLockedMove\n\
+ ldr r1, _0801EDC8 @ =gLockedMoves\n\
ldrb r0, [r3]\n\
lsls r0, 1\n\
adds r0, r1\n\
@@ -3941,7 +3940,7 @@ _0801ED7C:\n\
ldr r0, [r0]\n\
bl _0801F5F8\n\
.align 2, 0\n\
-_0801EDC8: .4byte gLockedMove\n\
+_0801EDC8: .4byte gLockedMoves\n\
_0801EDCC: .4byte gCurrentMove\n\
_0801EDD0: .4byte gBattlescriptCurrInstr\n\
_0801EDD4: .4byte gMoveEffectBS_Ptrs\n\
@@ -4035,7 +4034,7 @@ _0801EE84:\n\
lsls r1, 5\n\
orrs r0, r1\n\
str r0, [r2]\n\
- ldr r1, _0801EEC0 @ =gLockedMove\n\
+ ldr r1, _0801EEC0 @ =gLockedMoves\n\
mov r2, r8\n\
ldrb r0, [r2]\n\
lsls r0, 1\n\
@@ -4053,7 +4052,7 @@ _0801EE84:\n\
strb r0, [r1, 0x1]\n\
b _0801F5DC\n\
.align 2, 0\n\
-_0801EEC0: .4byte gLockedMove\n\
+_0801EEC0: .4byte gLockedMoves\n\
_0801EEC4: .4byte gCurrentMove\n\
_0801EEC8: .4byte gProtectStructs\n\
_0801EECC:\n\
@@ -4365,7 +4364,7 @@ _0801F13C:\n\
adds r0, r2\n\
movs r1, 0x2\n\
strb r1, [r0, 0x19]\n\
- ldr r1, _0801F17C @ =gLockedMove\n\
+ ldr r1, _0801F17C @ =gLockedMoves\n\
ldrb r0, [r3]\n\
lsls r0, 1\n\
adds r0, r1\n\
@@ -4375,7 +4374,7 @@ _0801F13C:\n\
b _0801F5DC\n\
.align 2, 0\n\
_0801F178: .4byte gDisableStructs\n\
-_0801F17C: .4byte gLockedMove\n\
+_0801F17C: .4byte gLockedMoves\n\
_0801F180: .4byte gCurrentMove\n\
_0801F184:\n\
ldr r0, _0801F1A0 @ =gBankAttacker\n\
@@ -4764,7 +4763,7 @@ _0801F4C4:\n\
lsls r0, 5\n\
orrs r1, r0\n\
str r1, [r2]\n\
- ldr r1, _0801F4F8 @ =gLockedMove\n\
+ ldr r1, _0801F4F8 @ =gLockedMoves\n\
ldrb r0, [r3]\n\
lsls r0, 1\n\
adds r0, r1\n\
@@ -4787,7 +4786,7 @@ _0801F4F2:\n\
str r0, [r2]\n\
b _0801F5FA\n\
.align 2, 0\n\
-_0801F4F8: .4byte gLockedMove\n\
+_0801F4F8: .4byte gLockedMoves\n\
_0801F4FC: .4byte gCurrentMove\n\
_0801F500:\n\
mov r5, r8\n\
@@ -10660,8 +10659,8 @@ static void atk52_switchineffects(void)
for (i = 0; i < gNoOfAllBanks; i++)
{
- if (gTurnOrder[i] == gActiveBank)
- gUnknown_02024A76[i] = 0xC;
+ if (gBanksByTurnOrder[i] == gActiveBank)
+ gActionsByTurnOrder[i] = 0xC;
}
for (i = 0; i < gNoOfAllBanks; i++)
@@ -10838,7 +10837,7 @@ static void atk5A_yesnoboxlearnmove(void)
}
break;
case 3:
- if (!gPaletteFade.active && gMain.callback2 == sub_800F808)
+ if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2)
{
u8 move_pos = sub_809FA30();
if (move_pos == 4)
@@ -11404,7 +11403,7 @@ static void atk68_cancelallactions(void)
int i;
for (i = 0; i < gNoOfAllBanks; i++)
{
- gUnknown_02024A76[i] = 0xC;
+ gActionsByTurnOrder[i] = 0xC;
}
gBattlescriptCurrInstr++;
}
@@ -11943,7 +11942,7 @@ static void atk71_buffermovetolearn(void)
static void atk72_jumpifplayerran(void)
{
- if (sub_8014AB8(gBank1))
+ if (TryRunFromBattle(gBank1))
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
@@ -13251,7 +13250,7 @@ static void atk8A_normalisebuffs(void) //haze
static void atk8B_setbide(void)
{
gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMove[gBankAttacker] = gCurrentMove;
+ gLockedMoves[gBankAttacker] = gCurrentMove;
gTakenDmg[gBankAttacker] = 0;
gBattleMons[gBankAttacker].status2 |= (STATUS2_BIDE - 0x100); //2 turns
gBattlescriptCurrInstr++;
@@ -15075,7 +15074,7 @@ static void atkB3_rolloutdamagecalculation(void)
gDisableStructs[gBankAttacker].rolloutTimer1 = 5;
gDisableStructs[gBankAttacker].rolloutTimer2 = 5;
gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMove[gBankAttacker] = gCurrentMove;
+ gLockedMoves[gBankAttacker] = gCurrentMove;
}
if (--gDisableStructs[gBankAttacker].rolloutTimer1 == 0)
gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS);
@@ -15252,8 +15251,8 @@ static void atkBA_jumpifnopursuitswitchdmg(void)
int i;
for (i = 0; i < gNoOfAllBanks; i++)
{
- if (gTurnOrder[i] == gBankTarget)
- gUnknown_02024A76[i] = 11;
+ if (gBanksByTurnOrder[i] == gBankTarget)
+ gActionsByTurnOrder[i] = 11;
}
gCurrentMove = MOVE_PURSUIT;
gBattlescriptCurrInstr += 5;
@@ -17014,7 +17013,7 @@ static void atkEC_pursuitrelated(void)
gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]) && gActionForBanks[gActiveBank] == 0 && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT)
{
- gUnknown_02024A76[gActiveBank] = 11;
+ gActionsByTurnOrder[gActiveBank] = 11;
gCurrentMove = MOVE_PURSUIT;
gBattlescriptCurrInstr += 5;
BATTLE_STRUCT->animTurn = 1;
@@ -17230,7 +17229,7 @@ static void atkF2_displaydexinfo(void)
}
break;
case 2:
- if (!gPaletteFade.active && gMain.callback2 == sub_800F808 && !gTasks[gBattleCommunication[1]].isActive)
+ if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2 && !gTasks[gBattleCommunication[1]].isActive)
{
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(0x06008000));
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000));
@@ -17394,12 +17393,12 @@ static void atkF3_trygivecaughtmonnick(void)
if (!gPaletteFade.active)
{
GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick);
- DoNamingScreen(2, BATTLE_STRUCT->caughtNick, GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), sub_800F808);
+ DoNamingScreen(2, BATTLE_STRUCT->caughtNick, GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), BattleMainCB2);
gBattleCommunication[0]++;
}
break;
case 3:
- if (gMain.callback2 == sub_800F808 && !gPaletteFade.active )
+ if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active )
{
SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick);
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c
index 35d8f33c8..54181bc21 100644
--- a/src/battle/battle_controller_linkopponent.c
+++ b/src/battle/battle_controller_linkopponent.c
@@ -48,8 +48,8 @@ extern u8 gUnknown_02024E68[];
extern struct SpriteTemplate gUnknown_02024E8C;
extern u8 gAnimMoveTurn;
extern struct Window gUnknown_03004210;
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG0_X;
extern u8 gUnknown_0300434C[];
extern u32 gBattleExecBuffer;
extern MainCallback gPreBattleCallback1;
@@ -1410,8 +1410,8 @@ void sub_8039B64(void)
void LinkOpponentHandlePrintString(void)
{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
gBattleBankFunc[gActiveBank] = sub_8037C2C;
diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c
index adc3c1c85..2c78d4a82 100644
--- a/src/battle/battle_controller_linkpartner.c
+++ b/src/battle/battle_controller_linkpartner.c
@@ -48,8 +48,8 @@ extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
extern u8 gAnimMoveTurn;
extern struct Window gUnknown_03004210;
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG0_X;
extern MainCallback gPreBattleCallback1;
extern void (*gBattleBankFunc[])(void);
extern u8 gHealthboxIDs[];
@@ -1355,8 +1355,8 @@ void sub_811FF30(void)
void LinkPartnerHandlePrintString(void)
{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
gBattleBankFunc[gActiveBank] = sub_811DFA0;
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index 477b600ac..ab7b6944b 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -50,8 +50,8 @@ extern u8 gAnimMoveTurn;
extern u8 gAnimScriptActive;
extern void (*gAnimScriptCallback)(void);
extern struct Window gUnknown_03004210;
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG0_X;
extern u8 gDisplayedStringBattle[];
extern u8 gBankTarget;
extern u8 gAbsentBankFlags;
@@ -1404,8 +1404,8 @@ void sub_8035238(void)
void OpponentHandlePrintString(void)
{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
gBattleBankFunc[gActiveBank] = sub_80331D0;
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index 62a38311a..f992e3e51 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -35,8 +35,8 @@ struct MovePpInfo
#define SUB_803037C_TILE_DATA_OFFSET 444
#endif
-extern u16 gUnknown_030042A4;
-extern u16 gUnknown_030042A0;
+extern u16 gBattle_BG0_X;
+extern u16 gBattle_BG0_Y;
extern struct Window gUnknown_03004210;
@@ -72,7 +72,7 @@ extern u16 gBattle_BG1_Y;
extern u16 gUnknown_030041B8;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG2_X;
-extern u16 gUnknown_030042A4;
+extern u16 gBattle_BG0_X;
extern u16 gBattle_BG1_X;
extern u8 gUnknown_03004344;
extern u8 gUnknown_0300434C[];
@@ -148,8 +148,8 @@ extern u8 gAbsentBankFlags;
extern u8 gUnknown_03004344;
extern u8 gNoOfAllBanks;
extern u16 gBattlePartyID[];
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG0_X;
extern struct Window gUnknown_03004210;
extern const u8 BattleText_SwitchWhich[];
extern u8 gUnknown_03004348;
@@ -679,8 +679,8 @@ void sub_802C68C(void)
{
DestroyMenuCursor();
PlaySE(SE_SELECT);
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 320;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 320;
Emitcmd33(1, 10, 0xFFFF);
PlayerBufferExecCompleted();
}
@@ -1495,7 +1495,7 @@ void sub_802DF30(void)
void sub_802DF88(void)
{
- if (gMain.callback2 == sub_800F808 && !gPaletteFade.active)
+ if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
if (gUnknown_0202E8F4 == 1)
Emitcmd34(1, gUnknown_0202E8F5, gUnknown_02038470);
@@ -1519,7 +1519,7 @@ void sub_802E004(void)
void sub_802E03C(void)
{
- if (gMain.callback2 == sub_800F808 && !gPaletteFade.active)
+ if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
Emitcmd35(1, gSpecialVar_ItemId);
PlayerBufferExecCompleted();
@@ -1695,8 +1695,8 @@ void b_link_standby_message(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
sub_8002EB0(&gUnknown_03004210, BattleText_LinkStandby, 0x90, 2, 15);
}
}
@@ -2559,8 +2559,8 @@ void sub_8030190(void)
void PlayerHandlePrintString(void)
{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
gBattleBankFunc[gActiveBank] = sub_802DF18;
@@ -2578,8 +2578,8 @@ void PlayerHandlecmd18(void)
{
int r4;
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 160;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 160;
FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18);
FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38);
@@ -2612,8 +2612,8 @@ void PlayerHandlecmd20(void)
void sub_80304A8(void)
{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 320;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 320;
sub_802E1B0();
gUnknown_03004344 = 0xFF;
sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
index 37c58f951..0a629ba4d 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle/battle_controller_safari.c
@@ -23,8 +23,8 @@ extern u8 gActiveBank;
extern const u8 BattleText_MenuOptionsSafari[];
extern void *gBattleBankFunc[];
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG0_X;
extern u8 gBattleBufferA[][0x200];
extern bool8 gDoingBattleAnim;
extern u8 gObjectBankIDs[];
@@ -313,7 +313,7 @@ void sub_812B724(void)
void sub_812B758(void)
{
- if (gMain.callback2 == sub_800F808 && !gPaletteFade.active)
+ if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
Emitcmd35(1, gSpecialVar_ItemId);
SafariBufferExecCompleted();
@@ -450,8 +450,8 @@ void SafariHandleMoveAnimation(void)
void SafariHandlePrintString(void)
{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
gBattleBankFunc[gActiveBank] = sub_812B694;
@@ -469,8 +469,8 @@ void SafariHandlecmd18(void)
{
int i;
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 160;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 160;
gUnknown_03004210.paletteNum = 0;
FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
index be40f968c..bd2b4a45b 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle/battle_controller_wally.c
@@ -53,8 +53,8 @@ extern u8 gUnknown_02024E68[];
extern struct SpriteTemplate gUnknown_02024E8C;
extern u8 gAnimMoveTurn;
extern struct Window gUnknown_03004210;
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG0_X;
extern u8 gUnknown_0300434C[];
extern const u8 BattleText_WallyMenu[];
extern const u8 BattleText_MenuOptions[];
@@ -363,7 +363,7 @@ void sub_81374C4(void)
void sub_81374FC(void)
{
- if (gMain.callback2 == sub_800F808
+ if (gMain.callback2 == BattleMainCB2
&& !gPaletteFade.active)
{
Emitcmd35(1, gSpecialVar_ItemId);
@@ -1240,8 +1240,8 @@ void WallyHandlePrintString(void)
{
u16 *ptr;
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
ptr = (u16 *)&gBattleBufferA[gActiveBank][2];
if (*ptr == 2)
DestroyMenuCursor();
@@ -1262,8 +1262,8 @@ void WallyHandlecmd18(void)
{
s32 i;
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 160;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 160;
gUnknown_03004210.paletteNum = 0;
FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c
index a7646e78b..6a6d7a137 100644
--- a/src/battle/reshow_battle_screen.c
+++ b/src/battle/reshow_battle_screen.c
@@ -13,12 +13,12 @@ extern struct SpriteTemplate gUnknown_02024E8C;
extern struct Window gUnknown_03004210;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG2_X;
-extern u16 gUnknown_030042A4;
+extern u16 gBattle_BG0_X;
extern u16 gBattle_BG1_X;
extern u16 gUnknown_030041B0;
extern u16 gBattle_BG1_Y;
extern u16 gUnknown_030041B8;
-extern u16 gUnknown_030042A0;
+extern u16 gBattle_BG0_Y;
extern u8 gReservedSpritePaletteCount;
extern u8 gActionSelectionCursor[4];
extern u8 gBankInMenu;
@@ -81,8 +81,8 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
SetUpWindowConfig(&gWindowConfig_81E6C58);
ResetPaletteFade();
InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
@@ -190,7 +190,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
sub_807B06C();
BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1);
gPaletteFade.bufferTransferDisabled = 0;
- SetMainCallback2(sub_800F808);
+ SetMainCallback2(BattleMainCB2);
break;
}
gReshowState++;
diff --git a/src/contest.c b/src/contest.c
index 365f92538..c32719648 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -60,8 +60,8 @@ extern u16 gBattle_WIN0V;
extern u16 gBattle_WIN1V;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG2_X;
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG0_X;
extern u16 gBattle_BG1_X;
extern u16 gBattle_WIN0H;
extern u32 gUnknown_03005D28; // saved RNG value
@@ -324,8 +324,8 @@ void ResetContestGpuRegs(void)
REG_WINOUT = 0x3F3F;
REG_DISPCNT |= 0x7F00;
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
@@ -620,8 +620,8 @@ void ContestMainCallback2(void)
void ContestVBlankCallback(void)
{
- REG_BG0HOFS = gUnknown_030042A4;
- REG_BG0VOFS = gUnknown_030042A0;
+ REG_BG0HOFS = gBattle_BG0_X;
+ REG_BG0VOFS = gBattle_BG0_Y;
REG_BG1HOFS = gBattle_BG1_X;
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
@@ -640,7 +640,7 @@ void ContestVBlankCallback(void)
void sub_80ABB70(u8 taskId)
{
- gUnknown_030042A0 = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
sub_80B0D7C();
DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18204, 0x400);
@@ -684,7 +684,7 @@ void sub_80ABCDC(u8 taskId)
u8 i;
u8 sp8[32];
- gUnknown_030042A0 = 0xA0;
+ gBattle_BG0_Y = 0xA0;
gBattle_BG2_Y = 0xA0;
FillWindowRect_DefaultPalette(
&gUnknown_03004210,
@@ -772,7 +772,7 @@ void sub_80ABEA0(u8 taskId)
sub_80AF138();
StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle);
sub_8003460(&gMenuWindow, gStringVar4, 776, 1, 15);
- gUnknown_030042A0 = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
gTasks[taskId].func = sub_80ABC70;
break;
@@ -846,7 +846,7 @@ void sub_80AC15C(u8 taskId)
void sub_80AC188(u8 taskId)
{
sub_80AF138();
- gUnknown_030042A0 = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
sub_80AFFE0(FALSE);
DmaCopy32Defvars(3, gPlttBufferFaded, shared18000.unk18604, 0x400);
@@ -1804,7 +1804,7 @@ void sub_80ADDA4(u8 taskId)
{
s32 i;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
for (i = 0; i < 4; i++)
gUnknown_02038680[i] = sContestantStatus[i].unk4;
@@ -2950,7 +2950,7 @@ bool8 sub_80AF828(s32 a, s32 b, struct UnknownContestStruct6 *c)
void sub_80AF860(void)
{
- gUnknown_030042A0 = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
sub_80AF138();
sub_8003460(&gMenuWindow, gUnknownText_LinkStandbyAndWinner, 776, 1, 15);
diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index bb80de6fe..49fe6864b 100644
--- a/src/debug/matsuda_debug_menu.c
+++ b/src/debug/matsuda_debug_menu.c
@@ -29,8 +29,8 @@ extern u8 gContestPlayerMonIndex;
extern u16 gSpecialVar_ContestCategory;
extern u16 gSpecialVar_ContestRank;
-extern u16 gUnknown_030042A4;
-extern u16 gUnknown_030042A0;
+extern u16 gBattle_BG0_X;
+extern u16 gBattle_BG0_Y;
extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
@@ -457,8 +457,8 @@ static void sub_80A9F50(void)
REG_BLDY = 0;
REG_BG0HOFS = 0;
REG_BG0VOFS = 0;
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
@@ -505,8 +505,8 @@ static void sub_80AA064(void)
static void sub_80AA090(void)
{
- REG_BG0HOFS = gUnknown_030042A4;
- REG_BG0VOFS = gUnknown_030042A0;
+ REG_BG0HOFS = gBattle_BG0_X;
+ REG_BG0VOFS = gBattle_BG0_Y;
REG_BG1HOFS = gBattle_BG1_X;
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
diff --git a/src/field/tv.c b/src/field/tv.c
index d7a75a709..e88e3c72b 100644
--- a/src/field/tv.c
+++ b/src/field/tv.c
@@ -811,7 +811,7 @@ u8 sub_80BDEAC(u8 *a0)
return lang;
}
-void sub_80BDEC8(void)
+void PutPokemonTodayCaughtOnAir(void)
{
u8 i;
u16 total;
diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c
index f307f5979..4ee601360 100644
--- a/src/scene/evolution_scene.c
+++ b/src/scene/evolution_scene.c
@@ -65,8 +65,8 @@ void nullsub_6(void);
bool32 IsHMMove2(u16 move);
extern struct Window gUnknown_03004210;
-extern u16 gUnknown_030042A4;
-extern u16 gUnknown_030042A0;
+extern u16 gBattle_BG0_X;
+extern u16 gBattle_BG0_Y;
extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
@@ -200,8 +200,8 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
SetUpWindowConfig(&gWindowConfig_81E6C58);
ResetPaletteFade();
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
@@ -308,8 +308,8 @@ static void CB2_EvolutionSceneLoadGraphics(void)
REG_WINOUT = 0;
SetUpWindowConfig(&gWindowConfig_81E6C58);
ResetPaletteFade();
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
@@ -362,8 +362,8 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
@@ -3923,8 +3923,8 @@ static void EvoDummyFunc(void)
static void VBlankCB_EvolutionScene(void)
{
REG_BG0CNT = BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x256 | BGCNT_AFF512x512 | BGCNT_PRIORITY(3); // 0x9803
- REG_BG0HOFS = gUnknown_030042A4;
- REG_BG0VOFS = gUnknown_030042A0;
+ REG_BG0HOFS = gBattle_BG0_X;
+ REG_BG0VOFS = gBattle_BG0_Y;
REG_BG1HOFS = gBattle_BG1_X;
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
@@ -3939,8 +3939,8 @@ static void VBlankCB_EvolutionScene(void)
static void VBlankCB_TradeEvolutionScene(void)
{
- REG_BG0HOFS = gUnknown_030042A4;
- REG_BG0VOFS = gUnknown_030042A0;
+ REG_BG0HOFS = gBattle_BG0_X;
+ REG_BG0VOFS = gBattle_BG0_Y;
REG_BG1HOFS = gBattle_BG1_X;
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
diff --git a/src/unknown_task.c b/src/unknown_task.c
index 62245502a..2c71bfb08 100644
--- a/src/unknown_task.c
+++ b/src/unknown_task.c
@@ -12,8 +12,8 @@ extern u16 gBattle_BG1_Y;
extern u16 gUnknown_030041B8;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG2_X;
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG0_X;
extern u16 gBattle_BG1_X;
extern u8 gUnknown_0202FFA4;
@@ -120,10 +120,10 @@ static void task00_for_dp12(u8 taskId)
switch (gTasks[taskId].data[6])
{
case 0x0:
- value = gUnknown_030042A4;
+ value = gBattle_BG0_X;
break;
case 0x2:
- value = gUnknown_030042A0;
+ value = gBattle_BG0_Y;
break;
case 0x4:
value = gBattle_BG1_X;