summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKurausukun <lord.uber1@gmail.com>2021-03-19 14:34:58 -0400
committerKurausukun <lord.uber1@gmail.com>2021-03-19 14:34:58 -0400
commitc94e5e9ab0b2b65c8c6275f84043807b2743d6f2 (patch)
treeb188427bb1942695f32e14ee3fe137855d638c8c
parent0643255c85d0ebd5212e731c9fad3b43d0d99a10 (diff)
parented16a7409ae9c808a110975dec1930f9f949a6d6 (diff)
Merge remote-tracking branch 'upstream/master' into port_matchings
-rw-r--r--common_syms/battle_anim_special.txt6
-rw-r--r--common_syms/battle_controller_pokedude.txt2
-rw-r--r--common_syms/battle_main.txt2
-rw-r--r--common_syms/main.txt6
-rw-r--r--data/battle_anim_scripts.s22
-rw-r--r--include/battle.h136
-rw-r--r--include/battle_anim.h42
-rw-r--r--include/battle_controllers.h43
-rw-r--r--include/battle_gfx_sfx_util.h12
-rw-r--r--include/battle_interface.h2
-rw-r--r--include/battle_main.h34
-rw-r--r--include/battle_message.h6
-rw-r--r--include/battle_util.h2
-rw-r--r--include/constants/pokemon.h5
-rw-r--r--include/data.h12
-rw-r--r--include/field_camera.h2
-rw-r--r--include/gba/defines.h1
-rw-r--r--include/global.h10
-rw-r--r--include/link.h4
-rw-r--r--include/load_save.h1
-rw-r--r--include/party_menu.h6
-rw-r--r--include/pokeball.h2
-rw-r--r--include/pokemon.h12
-rw-r--r--include/quest_log.h2
-rw-r--r--include/reshow_battle_screen.h2
-rw-r--r--include/strings.h4
-rw-r--r--src/battle_anim.c32
-rw-r--r--src/battle_anim_effects_2.c24
-rw-r--r--src/battle_anim_effects_3.c14
-rw-r--r--src/battle_anim_mons.c138
-rw-r--r--src/battle_anim_special.c528
-rw-r--r--src/battle_anim_utility_funcs.c36
-rw-r--r--src/battle_bg.c6
-rw-r--r--src/battle_controller_link_opponent.c200
-rw-r--r--src/battle_controller_link_partner.c160
-rw-r--r--src/battle_controller_oak_old_man.c382
-rw-r--r--src/battle_controller_opponent.c206
-rw-r--r--src/battle_controller_player.c276
-rw-r--r--src/battle_controller_pokedude.c1427
-rw-r--r--src/battle_controller_safari.c12
-rw-r--r--src/battle_controllers.c18
-rw-r--r--src/battle_gfx_sfx_util.c48
-rw-r--r--src/battle_interface.c16
-rw-r--r--src/battle_intro.c28
-rw-r--r--src/battle_main.c362
-rw-r--r--src/battle_message.c11
-rw-r--r--src/battle_script_commands.c44
-rw-r--r--src/battle_setup.c26
-rw-r--r--src/battle_tower.c5
-rw-r--r--src/battle_transition.c260
-rw-r--r--src/battle_util.c2
-rw-r--r--src/battle_util2.c16
-rw-r--r--src/bug.c2
-rw-r--r--src/cable_club.c20
-rw-r--r--src/dark.c14
-rw-r--r--src/data.c12
-rw-r--r--src/data/party_menu.h2
-rw-r--r--src/daycare.c12
-rw-r--r--src/dodrio_berry_picking.c2
-rw-r--r--src/dodrio_berry_picking_2.c2
-rw-r--r--src/easy_chat.c2
-rw-r--r--src/fame_checker.c2
-rw-r--r--src/field_camera.c6
-rw-r--r--src/field_fadetransition.c4
-rw-r--r--src/fighting.c8
-rw-r--r--src/fire.c4
-rw-r--r--src/ghost.c18
-rw-r--r--src/ice.c18
-rw-r--r--src/item_menu.c2
-rw-r--r--src/item_use.c4
-rw-r--r--src/link.c6
-rw-r--r--src/load_save.c2
-rw-r--r--src/main.c26
-rw-r--r--src/mystery_gift_menu.c2
-rw-r--r--src/party_menu.c164
-rw-r--r--src/pokeball.c10
-rw-r--r--src/pokemon.c665
-rw-r--r--src/pokemon_jump_2.c2
-rw-r--r--src/pokemon_summary_screen.c20
-rw-r--r--src/psychic.c4
-rw-r--r--src/quest_log_events.c2
-rw-r--r--src/quest_log_player.c2
-rw-r--r--src/reshow_battle_screen.c36
-rw-r--r--src/roamer.c6
-rw-r--r--src/rock.c14
-rw-r--r--src/save.c40
-rw-r--r--src/string_util.c4
-rw-r--r--src/strings.c4
-rw-r--r--src/teachy_tv.c4
-rw-r--r--src/trade.c6
-rw-r--r--src/trade_scene.c16
-rw-r--r--src/trainer_card.c4
-rw-r--r--src/union_room.c20
-rw-r--r--src/union_room_battle.c4
-rw-r--r--src/union_room_chat.c6
-rw-r--r--src/water.c8
96 files changed, 2982 insertions, 2884 deletions
diff --git a/common_syms/battle_anim_special.txt b/common_syms/battle_anim_special.txt
index 7e68496a0..5e2e8b3ff 100644
--- a/common_syms/battle_anim_special.txt
+++ b/common_syms/battle_anim_special.txt
@@ -1,3 +1,3 @@
-sUnknown_3005424
-sUnknown_3005428
-sUnknown_300542C
+gMonShrinkDuration
+gMonShrinkDelta
+gMonShrinkDistance
diff --git a/common_syms/battle_controller_pokedude.txt b/common_syms/battle_controller_pokedude.txt
index 4986343f1..c96cab771 100644
--- a/common_syms/battle_controller_pokedude.txt
+++ b/common_syms/battle_controller_pokedude.txt
@@ -1 +1 @@
-gUnknown_3005EE0
+gPokedudeBattlerStates
diff --git a/common_syms/battle_main.txt b/common_syms/battle_main.txt
index 36f7596e2..f6f02c48d 100644
--- a/common_syms/battle_main.txt
+++ b/common_syms/battle_main.txt
@@ -6,4 +6,4 @@ gBattlerControllerFuncs
gHealthboxSpriteIds
gMultiUsePlayerCursor
gNumberOfMovesToChoose
-gUnknown_3004FFC
+gBattleControllerData
diff --git a/common_syms/main.txt b/common_syms/main.txt
index af834cad8..b1f274b58 100644
--- a/common_syms/main.txt
+++ b/common_syms/main.txt
@@ -4,9 +4,9 @@ gMain
gKeyRepeatContinueDelay
gSoftResetDisabled
gIntrTable
-gUnknown_3003578
+sVcountAfterSound
gLinkVSyncDisabled
IntrMain_Buffer
-gUnknown_3003D80
-gUnknown_3003D84
+sVcountAtIntr
+sVcountBeforeSound
gPcmDmaCounter
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 8884e9853..b285a148a 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -10557,7 +10557,7 @@ General_SubstituteAppear:: @ 81D5C04
end
General_BaitThrow:: @ 81D5C0C
- createvisualtask sub_80F1C8C, 2, 0
+ createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 0
createvisualtask AnimTask_LoadBaitGfx, 2,
delay 0
waitplaysewithpan SE_M_JUMP_KICK, 192, 22
@@ -10898,7 +10898,7 @@ General_WishHeal:: @ 81D6250
end
General_MonScared:: @ 81D628A
- createvisualtask sub_80F1C8C, 2, 1
+ createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 1
waitforvisualfinish
loadspritegfx ANIM_TAG_SWEAT_BEAD
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 10, 26336
@@ -10915,7 +10915,7 @@ General_MonScared:: @ 81D628A
end
General_GhostGetOut:: @ 81D6301
- createvisualtask sub_80F1C8C, 2, 1
+ createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 1
waitforvisualfinish
fadetobg 2
waitbgfadeout
@@ -10950,7 +10950,7 @@ General_SilphScoped:: @ 81D637B
end
General_SafariRockThrow:: @ 81D6394
- createvisualtask sub_80F1C8C, 2, 0
+ createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 0
waitforvisualfinish
loadspritegfx ANIM_TAG_ROCKS
loadspritegfx ANIM_TAG_IMPACT
@@ -10970,14 +10970,14 @@ General_SafariRockThrow:: @ 81D6394
end
General_SafariReaction:: @ 81D63DC
- createvisualtask sub_80F1CE4, 2,
+ createvisualtask AnimTask_SafariGetReaction, 2,
waitforvisualfinish
- jumpargeq 7, 0, gUnknown_81D63FD
- jumpargeq 7, 1, gUnknown_81D6425
- jumpargeq 7, 2, gUnknown_81D644E
+ jumpargeq 7, 0, SafariReaction_WatchingCarefully
+ jumpargeq 7, 1, SafariReaction_Angry
+ jumpargeq 7, 2, SafariReaction_Eating
end
-gUnknown_81D63FD:: @ 81D63FD
+SafariReaction_WatchingCarefully:: @ 81D63FD
playsewithpan SE_M_TAKE_DOWN, 63
createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 96, 0, 2
waitforvisualfinish
@@ -10985,7 +10985,7 @@ gUnknown_81D63FD:: @ 81D63FD
createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, -96, 0, 2
end
-gUnknown_81D6425:: @ 81D6425
+SafariReaction_Angry:: @ 81D6425
loadspritegfx ANIM_TAG_ANGER
createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -20
playsewithpan SE_M_SWAGGER2, 63
@@ -10995,7 +10995,7 @@ gUnknown_81D6425:: @ 81D6425
playsewithpan SE_M_SWAGGER2, 63
end
-gUnknown_81D644E:: @ 81D644E
+SafariReaction_Eating:: @ 81D644E
playsewithpan SE_M_TAKE_DOWN, 63
createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 8, 136, 0, 2
waitforvisualfinish
diff --git a/include/battle.h b/include/battle.h
index 43f4c5115..1a10b7c1c 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -196,14 +196,13 @@ struct ProtectStruct
u32 flag_x20 : 1; // 0x20
u32 flag_x40 : 1; // 0x40
u32 flag_x80 : 1; // 0x80
- /* field_3 */
u32 field3 : 8;
- /* field_4 */ u32 physicalDmg;
- /* field_8 */ u32 specialDmg;
- /* field_C */ u8 physicalBattlerId;
- /* field_D */ u8 specialBattlerId;
- /* field_E */ u16 fieldE;
+ u32 physicalDmg;
+ u32 specialDmg;
+ u8 physicalBattlerId;
+ u8 specialBattlerId;
+ u16 fieldE;
};
extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT];
@@ -357,19 +356,28 @@ struct BattleResults
extern struct BattleResults gBattleResults;
+struct LinkPartnerHeader
+{
+ u8 versionSignatureLo;
+ u8 versionSignatureHi;
+ u8 vsScreenHealthFlagsLo;
+ u8 vsScreenHealthFlagsHi;
+ struct BattleEnigmaBerry battleEnigmaBerry;
+};
+
struct BattleStruct
{
u8 turnEffectsTracker;
u8 turnEffectsBattlerId;
- u8 filler2;
+ u8 filler2; // unused
u8 turnCountersTracker;
u8 wrappedMove[MAX_BATTLERS_COUNT * 2]; // Leftover from Ruby's ewram access.
u8 moveTarget[MAX_BATTLERS_COUNT];
u8 expGetterMonId;
- u8 field_11;
+ u8 field_11; // unused
u8 wildVictorySong;
u8 dynamicMoveType;
- u8 wrappedBy[4];
+ u8 wrappedBy[MAX_BATTLERS_COUNT];
u16 assistPossibleMoves[PARTY_SIZE * MAX_MON_MOVES]; // 6 mons, each of them knowing 4 moves
u8 focusPunchBattlerId;
u8 battlerPreventingSwitchout;
@@ -378,17 +386,17 @@ struct BattleStruct
u8 switchInAbilitiesCounter;
u8 faintedActionsState;
u8 faintedActionsBattlerId;
- u8 field_4F;
+ // balign 2
u16 expValue;
- u8 field_52;
+ u8 scriptPartyIdx; // for printing the nickname
u8 sentInPokes;
bool8 selectionScriptFinished[MAX_BATTLERS_COUNT];
- u8 field_58[4];
+ u8 battlerPartyIndexes[MAX_BATTLERS_COUNT];
u8 monToSwitchIntoId[MAX_BATTLERS_COUNT];
- u8 field_60[4][3];
+ u8 battlerPartyOrders[MAX_BATTLERS_COUNT][3];
u8 runTries;
- u8 caughtMonNick[11];
- u8 field_78;
+ u8 caughtMonNick[POKEMON_NAME_LENGTH + 1];
+ u8 field_78; // unused
u8 safariGoNearCounter;
u8 safariPkblThrowCounter;
u8 safariEscapeFactor;
@@ -398,21 +406,18 @@ struct BattleStruct
u8 formToChangeInto;
u8 chosenMovePositions[MAX_BATTLERS_COUNT];
u8 stateIdAfterSelScript[MAX_BATTLERS_COUNT];
- u8 field_88;
- u8 field_89;
- u8 field_8A;
- u8 field_8B;
- u8 field_8C;
- u8 field_8D;
+ u8 field_88; // unused
+ u8 field_89; // unused
+ u8 field_8A; // unused
+ u8 playerPartyIdx;
+ u8 field_8C; // unused
+ u8 field_8D; // unused
u8 stringMoveType;
u8 expGetterBattlerId;
- u8 field_90;
- u8 field_91;
+ u8 field_90; // unused
+ u8 absentBattlerFlags;
u8 AI_monToSwitchIntoId[2];
- u8 field_94;
- u8 field_95;
- u8 field_96;
- u8 field_97;
+ u8 simulatedInputState[4]; // used by Oak/Old Man/Pokedude controllers
u8 lastTakenMove[MAX_BATTLERS_COUNT * 2 * 2]; // ask gamefreak why they declared it that way
u16 hpOnSwitchout[2];
u8 abilityPreventingSwitchout;
@@ -440,13 +445,12 @@ struct BattleStruct
u8 wishPerishSongState;
u8 wishPerishSongBattlerId;
u8 field_182;
- u8 field_183;
- u8 field_184;
- u8 field_185;
- u8 field_186;
- u8 field_187;
- struct BattleEnigmaBerry battleEnigmaBerry;
- u8 field_1A4[0x5C]; // currently unknown
+ // align 4
+ union {
+ struct LinkPartnerHeader linkPartnerHeader;
+ struct MultiBattlePokemonTx multiBattleMons[3];
+ } multiBuffer;
+ u8 padding_1E4[0x1C];
}; // size == 0x200 bytes
extern struct BattleStruct *gBattleStruct;
@@ -508,14 +512,12 @@ struct BattleScripting
enum
{
- BACK_PIC_BRENDAN,
- BACK_PIC_MAY,
BACK_PIC_RED,
BACK_PIC_LEAF,
BACK_PIC_RS_BRENDAN,
BACK_PIC_RS_MAY,
- BACK_PIC_WALLY,
- BACK_PIC_STEVEN
+ BACK_PIC_POKEDUDE,
+ BACK_PIC_OLDMAN
};
struct BattleSpriteInfo
@@ -538,7 +540,7 @@ struct BattleAnimationInfo
u8 field_6;
u8 field_7;
u8 ballThrowCaseId;
- u8 field_9_x1 : 1;
+ u8 healthboxSlideInStarted : 1;
u8 field_9_x2 : 1;
u8 field_9_x1C : 3;
u8 field_9_x20 : 1;
@@ -553,28 +555,24 @@ struct BattleAnimationInfo
struct BattleHealthboxInfo
{
- u8 partyStatusSummaryShown : 1;
- u8 healthboxIsBouncing : 1;
- u8 battlerIsBouncing : 1;
+ u8 partyStatusSummaryShown : 1; // x1
+ u8 healthboxIsBouncing : 1; // x2
+ u8 battlerIsBouncing : 1; // x4
u8 ballAnimActive : 1; // 0x8
u8 statusAnimActive : 1; // x10
u8 animFromTableActive : 1; // x20
- u8 specialAnimActive : 1; //x40
- u8 flag_x80 : 1;
- u8 field_1_x1 : 1;
- u8 field_1_x1E : 5;
- u8 field_1_x40 : 1;
- u8 field_1_x80 : 1;
+ u8 specialAnimActive : 1; // x40
+ u8 triedShinyMonAnim : 1; // x80
+ u8 finishedShinyMonAnim : 1; // x1
+ u8 opponentDrawPartyStatusSummaryDelay : 5; // x2
u8 healthboxBounceSpriteId;
u8 battlerBounceSpriteId;
u8 animationState;
- u8 field_5;
+ u8 partyStatusDelayTimer;
u8 matrixNum;
u8 shadowSpriteId;
- u8 field_8;
- u8 field_9;
- u8 field_A;
- u8 field_B;
+ u8 soundTimer;
+ u8 introEndDelay;
};
struct BattleBarInfo
@@ -608,13 +606,22 @@ extern u8 *gLinkBattleRecvBuffer;
struct MonSpritesGfx
{
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
- void* sprites[4];
- struct SpriteTemplate templates[4];
- struct SpriteFrameImage field_74[4][4];
- u8 field_F4[0x80];
+ void* sprites[MAX_BATTLERS_COUNT];
+ struct SpriteTemplate templates[MAX_BATTLERS_COUNT];
+ struct SpriteFrameImage images[MAX_BATTLERS_COUNT][4];
+ u8 field_F4[0x80]; // unused
u8 *barFontGfx;
- void *field_178;
- u16 *field_17C;
+ void *field_178; // freed but never allocated
+ u16 *multiUseBuffer;
+};
+
+struct PokedudeBattlerState
+{
+ u8 action_idx;
+ u8 move_idx;
+ u8 timer;
+ u8 msg_idx;
+ u8 saved_bg0y;
};
extern u16 gBattle_BG0_X;
@@ -662,9 +669,9 @@ extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
extern void (*gPreBattleCallback1)(void);
extern bool8 gDoingBattleAnim;
-extern u8 *gUnknown_3005EE0[MAX_BATTLERS_COUNT];
-extern u8 *gUnknown_2022BB8;
-extern u8 *gUnknown_2022BBC;
+extern struct PokedudeBattlerState *gPokedudeBattlerStates[MAX_BATTLERS_COUNT];
+extern u8 *gBattleAnimMons_BgTilesBuffer;
+extern u8 *gBattleAnimMons_BgTilemapBuffer;
extern void (*gBattleMainFunc)(void);
extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
extern u32 gUnknown_2022B54;
@@ -690,7 +697,7 @@ extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT];
extern u8 gCurrentActionFuncId;
extern u8 gCurrMovePos;
extern u8 gChosenMovePos;
-extern u8 gUnknown_3004FFC[MAX_BATTLERS_COUNT];
+extern u8 gBattleControllerData[MAX_BATTLERS_COUNT];
extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT];
extern u16 gDynamicBasePower;
extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT];
@@ -710,8 +717,7 @@ extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT];
extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT];
extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT];
extern u8 gBattleTerrain;
-extern struct UnknownPokemonStruct4 gMultiPartnerParty[3];
-extern u16 *gUnknown_2022BC0;
+extern struct MultiBattlePokemonTx gMultiPartnerParty[3];
extern u16 gRandomTurnNumber;
#endif // GUARD_BATTLE_H
diff --git a/include/battle_anim.h b/include/battle_anim.h
index ba56389c7..f1878d222 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -36,6 +36,15 @@ struct BattleAnimBackground
#define ANIM_ARGS_COUNT 8
+// Linear Translation
+#define sTransl_Speed data[0]
+#define sTransl_Duration data[0] // for Fast
+#define sTransl_InitX data[1]
+#define sTransl_DestX data[2]
+#define sTransl_InitY data[3]
+#define sTransl_DestY data[4]
+#define sTransl_ArcAmpl data[5]
+
extern void (*gAnimScriptCallback)(void);
extern bool8 gAnimScriptActive;
extern u8 gAnimVisualTaskCount;
@@ -129,7 +138,7 @@ extern const struct OamData gOamData_AffineDouble_ObjBlend_32x64;
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
void MoveBattlerSpriteToBG(u8 battlerId, u8);
-void sub_8073128(u8);
+void ResetBattleAnimBg(u8);
void ClearBattleAnimationVars(void);
void DoMoveAnim(u16 move);
void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim);
@@ -149,7 +158,7 @@ void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
s32 GetAnimBgAttribute(u8 bgId, u8 attributeId);
void HandleIntroSlide(u8 terrain);
void sub_80BC41C(u8 taskId);
-void sub_80BCEF4(s32 bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset);
+void CopyBattlerSpriteToBg(s32 bgId, u8 x, u8 y, u8 battlerPosition, u8 palno, u8 *tilesDest, u16 *tilemapDest, u16 tilesOffset);
// battle_anim_effects_1.c
extern const union AnimCmd *const gMusicNotesAnimTable[];
@@ -306,12 +315,12 @@ void AnimKnockOffStrike(struct Sprite *);
void AnimRecycle(struct Sprite *);
// battle_anim_special.c
-void sub_80F1720(u8 battler, struct Pokemon *mon);
+void TryShinyAnimation(u8 battler, struct Pokemon *mon);
u8 ItemIdToBallId(u16 itemId);
-u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
+u8 LaunchBallStarsTask(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId);
u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
-void sub_80EEFC8(u8 *, u8 *, u8 battlerId);
-void sub_80EF0E0(u8 batterId);
+void DoLoadHealthboxPalsForLevelUp(u8 *, u8 *, u8 battlerId);
+void DoFreeHealthboxPalsForLevelUp(u8 batterId);
enum
{
@@ -382,24 +391,24 @@ u8 GetBattlerPosition(u8 battlerId);
u8 GetBattlerAtPosition(u8 position);
bool8 IsBattlerSpritePresent(u8 battlerId);
bool8 IsDoubleBattle(void);
-void sub_80752A0(struct BattleAnimBgData *animBgData);
-void sub_80752C8(struct BattleAnimBgData *animBgData, u32 arg1);
-void sub_8075300(struct BattleAnimBgData *animBgData, u8 unused);
-void sub_8075358(u32 bgId);
+void GetBattleAnimBg1Data(struct BattleAnimBgData *animBgData);
+void GetBattleAnimBgData(struct BattleAnimBgData *animBgData, u32 bgId);
+void GetBattleAnimBgDataByPriorityRank(struct BattleAnimBgData *animBgData, u8 unused);
+void InitBattleAnimBg(u32 bgId);
void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset);
void InitAnimBgTilemapBuffer(u32 bgId, const void *src);
void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src);
u8 GetBattleBgPaletteNum(void);
-void sub_8075458(bool8 arg0);
+void ToggleBg3Mode(bool8 arg0);
void StartSpriteLinearTranslationFromCurrentPos(struct Sprite *sprite);
void InitSpriteDataForLinearTranslation(struct Sprite *sprite);
void InitAnimLinearTranslation(struct Sprite *sprite);
void StartAnimLinearTranslation(struct Sprite *sprite);
-void sub_80755B8(struct Sprite *sprite);
+void PlayerThrowBall_StartAnimLinearTranslation(struct Sprite *sprite);
bool8 AnimTranslateLinear(struct Sprite *sprite);
-void sub_807563C(struct Sprite *sprite);
-void sub_8075678(struct Sprite *sprite);
-void sub_80756A4(struct Sprite *sprite);
+void RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite);
+void BattleAnim_InitLinearTranslationWithDuration(struct Sprite *sprite);
+void BattleAnim_InitAndRunLinearTranslationWithDuration(struct Sprite *sprite);
void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite);
bool8 AnimFastTranslateLinear(struct Sprite *sprite);
void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite);
@@ -436,6 +445,9 @@ void AnimTask_GetFrustrationPowerLevel(u8 taskId);
void sub_80767F0(void);
u8 GetBattlerSpriteSubpriority(u8 battlerId);
u8 GetBattlerSpriteBGPriority(u8 battlerId);
+
+// Returns 2 if player left or opp right
+// Returns 1 if player right or opp left
u8 GetBattlerSpriteBGPriorityRank(u8 battlerId);
u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10);
void DestroySpriteAndFreeResources_(struct Sprite *sprite);
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 412856353..7dacb1343 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -184,8 +184,8 @@ extern struct UnusedControllerStruct gUnknown_2022870;
// general functions
void HandleLinkBattleSetup(void);
void SetUpBattleVars(void);
-void sub_800D30C(void);
-void sub_800DD28(void);
+void InitBtlControllers(void);
+void TryReceiveLinkBattleData(void);
void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data);
// emitters
@@ -222,7 +222,7 @@ void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId);
void BtlController_EmitFaintingCry(u8 bufferId);
void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId);
void BtlController_EmitIntroTrainerBallThrow(u8 bufferId);
-void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus *hpAndStatus, u8 arg2);
+void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus *hpAndStatus, u8 param);
void BtlController_EmitHidePartyStatusSummary(u8 bufferId);
void BtlController_EmitEndBounceEffect(u8 bufferId);
void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
@@ -232,17 +232,17 @@ void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
void BtlController_EmitCmd55(u8 bufferId, u8 arg1);
// player controller
-void nullsub_13(void);
+void PlayerDummy(void);
void SetControllerToPlayer(void);
void PlayerHandleGetRawMonData(void);
-void sub_80335F8(struct Sprite *sprite);
+void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite);
void SetCB2ToReshowScreenAfterMenu(void);
void SetCB2ToReshowScreenAfterMenu2(void);
-void c3_0802FDF4(u8 taskId);
+void Task_PlayerController_RestoreBgmAfterCry(u8 taskId);
void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
void ActionSelectionDestroyCursorAt(u8 cursorPos);
void InitMoveSelectionsVarsAndStrings(void);
-void sub_802F6A8(void);
+void SetBattleEndCallbacks(void);
void MoveSelectionCreateCursorAt(u8 cursorPos, u8 arg1);
void MoveSelectionDestroyCursorAt(u8 cursorPos);
void HandleInputChooseMove(void);
@@ -260,14 +260,27 @@ void InitPokedudePartyAndOpponent(void);
// oak and old man controller
void SetControllerToOakOrOldMan(void);
-bool8 sub_80EB2E0(u8);
-void sub_80EB2F4(u8);
-void sub_80E8570(void);
-void sub_80E85C0(void);
-void sub_80E8598(void);
-void sub_80E7988(void);
-void sub_80EB30C(void);
-void sub_80EB524(void);
+
+// These flags are set to signal that the indicated message
+// was already emitted
+
+// Inflicting damage is key
+#define FIRST_BATTLE_MSG_FLAG_INFLICT_DMG 0x1
+// Lowering stats is advantageous
+#define FIRST_BATTLE_MSG_FLAG_STAT_CHG 0x2
+// Keep an eye on your HP
+#define FIRST_BATTLE_MSG_FLAG_HP_RESTORE 0x4
+//
+#define FIRST_BATTLE_MSG_FLAG_PARTY_MENU 0x8
+
+bool8 BtlCtrl_OakOldMan_TestState2Flag(u8 mask);
+void BtlCtrl_OakOldMan_SetState2Flag(u8 mask);
+void PrintOakText_InflictingDamageIsKey(void);
+void PrintOakText_HowDisappointing(void);
+void PrintOakText_OakNoRunningFromATrainer(void);
+void OakOldManHandleInputChooseMove(void);
+void BtlCtrl_DrawVoiceoverMessageFrame(void);
+void BtlCtrl_RemoveVoiceoverMessageFrame(void);
// link opponent controller
void SetControllerToLinkOpponent(void);
diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h
index 667686af8..4c5f230d7 100644
--- a/include/battle_gfx_sfx_util.h
+++ b/include/battle_gfx_sfx_util.h
@@ -3,19 +3,19 @@
void AllocateBattleSpritesData(void);
void FreeBattleSpritesData(void);
-void sub_8033E3C(struct Sprite *sprite);
-void sub_8033EEC(struct Sprite *sprite);
+void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite);
+void SpriteCB_TrainerSlideIn(struct Sprite *sprite);
void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status);
bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId, u16 argument);
void InitAndLaunchSpecialAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId);
bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
-bool8 mplay_80342A4(u8 battlerId);
+bool8 IsBattleSEPlaying(u8 battlerId);
void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
void DecompressGhostFrontPic(struct Pokemon *unused, u8 battlerId);
void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
void DecompressTrainerBackPalette(u16 a1, u8 a2);
-void nullsub_16(u8 a1);
+void BattleGfxSfxDummy3(u8 a1);
void FreeTrainerFrontPicPaletteAndTile(u16 frontPicId);
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
void LoadBattleBarGfx(u8 arg0);
@@ -31,12 +31,12 @@ void ClearBehindSubstituteBit(u8 battlerId);
void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId);
void BattleStopLowHpSound(void);
void HandleBattleLowHpMusicChange(void);
-void sub_8035450(u8 affineMode);
+void SetBattlerSpriteAffineMode(u8 affineMode);
void LoadAndCreateEnemyShadowSprites(void);
void SpriteCB_SetInvisible(struct Sprite *sprite);
void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species);
void HideBattlerShadowSprite(u8 battlerId);
-void sub_80357C8(void);
+void BattleInterfaceSetWindowPals(void);
void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute);
void AllocateMonSpritesGfx(void);
void FreeMonSpritesGfx(void);
diff --git a/include/battle_interface.h b/include/battle_interface.h
index 8878b9fb9..3415836a8 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -73,7 +73,7 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority);
void InitBattlerHealthboxCoords(u8 battlerId);
void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
void SwapHpBarsWithHpText(void);
-u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart);
+u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 isSwitchingMons, bool8 isBattleStart);
void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId);
u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
u8 GetHPBarLevel(s16 hp, s16 maxhp);
diff --git a/include/battle_main.h b/include/battle_main.h
index fe585f0e6..0410e62c2 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -9,7 +9,7 @@ struct TrainerMoney
u8 value;
};
-struct UnknownPokemonStruct4
+struct MultiBattlePokemonTx
{
/*0x00*/ u16 species;
/*0x02*/ u16 heldItem;
@@ -45,9 +45,9 @@ struct UnknownPokemonStruct4
#define BOUNCE_MON 0x0
#define BOUNCE_HEALTHBOX 0x1
-extern const struct SpriteTemplate gUnknown_824EFF0;
-extern const struct OamData gOamData_824F010;
-extern const struct OamData gOamData_824F018;
+extern const struct SpriteTemplate gUnknownDebugSprite;
+extern const struct OamData gOamData_BattlerOpponent;
+extern const struct OamData gOamData_BattlerPlayer;
extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1];
extern const u8 gStatusConditionString_PoisonJpn[8];
extern const u8 gStatusConditionString_SleepJpn[8];
@@ -66,29 +66,29 @@ void CB2_InitBattle(void);
void BattleMainCB2(void);
void FreeRestoreBattleData(void);
void VBlankCB_Battle(void);
-void nullsub_9(struct Sprite *sprite);
-void sub_801182C(struct Sprite *sprite);
-void sub_8011A1C(void);
+void SpriteCB_VsLetterDummy(struct Sprite *sprite);
+void SpriteCB_VsLetterInit(struct Sprite *sprite);
+void CB2_InitEndLinkBattle(void);
u32 GetBattleBgAttribute(u8 arrayId, u8 caseId);
-void SpriteCB_WildMon(struct Sprite *sprite);
+void SpriteCB_EnemyMon(struct Sprite *sprite);
void SpriteCallbackDummy2(struct Sprite *sprite);
void SpriteCB_FaintOpponentMon(struct Sprite *sprite);
-void sub_8012044(struct Sprite *sprite);
-void sub_8012098(struct Sprite *sprite);
-void sub_80120C4(struct Sprite *sprite);
-void sub_8012100(struct Sprite *sprite);
-void sub_8012110(struct Sprite *sprite);
+void SpriteCb_ShowAsMoveTarget(struct Sprite *sprite);
+void SpriteCb_HideAsMoveTarget(struct Sprite *sprite);
+void SpriteCB_AllyMon(struct Sprite *sprite);
+void SpriteCB_SetToDummy3(struct Sprite *sprite);
+void SpriteCB_FaintSlideAnim(struct Sprite *sprite);
void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude);
void EndBounceEffect(u8 battler, u8 which);
-void sub_8012354(struct Sprite *sprite);
-void sub_801236C(struct Sprite *sprite);
-void nullsub_12(void);
+void SpriteCB_PlayerThrowInit(struct Sprite *sprite);
+void UpdatePlayerPosInThrowAnim(struct Sprite *sprite);
+void BattleDummy(void);
void BeginBattleIntro(void);
void SwitchInClearSetData(void);
void FaintClearSetData(void);
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(void);
-void sub_8013F6C(u8 battler);
+void UpdatePartyOwnerOnSwitch_NonMulti(u8 battler);
void SwapTurnOrder(u8 id1, u8 id2);
u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void);
diff --git a/include/battle_message.h b/include/battle_message.h
index 5a16a4250..04c5b1839 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -199,7 +199,7 @@ struct BattleMsgData
u16 lastItem;
u8 lastAbility;
u8 scrActive;
- u8 unk1605E;
+ u8 bakScriptPartyIdx;
u8 hpScale;
u8 itemEffectBattler;
u8 moveType;
@@ -213,8 +213,8 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst);
void BattleHandleAddTextPrinter(const u8* text, u8 arg1);
void SetPpNumbersPaletteInMoveSelection(void);
u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp);
-void BattlePutTextOnWindow(const u8* text, u8 arg1);
-bool8 sub_80D89B0(u16);
+void BattlePutTextOnWindow(const u8* text, u8 windowId_flags);
+bool8 BattleStringShouldBeColored(u16);
extern struct BattleMsgData *gBattleMsgDataPtr;
diff --git a/include/battle_util.h b/include/battle_util.h
index 797f0ef52..d3bd76a01 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -64,7 +64,7 @@ bool8 WasUnableToUseMove(u8 battler);
void PrepareStringBattle(u16 stringId, u8 battler);
void ResetSentPokesToOpponentValue(void);
void sub_8017434(u8 battler);
-void sub_80174B8(u8 battler);
+void UpdateSentPokesToOpponentValue(u8 battler);
void BattleScriptPush(const u8 *bsPtr);
void BattleScriptPushCursor(void);
void BattleScriptPop(void);
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index 0371f874f..8a32ef7d1 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -213,4 +213,9 @@
#define UNOWN_FORM_COUNT 28
#define BOX_NAME_LENGTH 8
+#define EVO_MODE_NORMAL 0
+#define EVO_MODE_TRADE 1
+#define EVO_MODE_ITEM_USE 2
+#define EVO_MODE_ITEM_CHECK 3 // If an Everstone is being held, still want to show that the stone *could* be used on that Pokémon to evolve
+
#endif // GUARD_CONSTANTS_POKEMON_H
diff --git a/include/data.h b/include/data.h
index 19da0034f..55eda56a4 100644
--- a/include/data.h
+++ b/include/data.h
@@ -48,12 +48,12 @@ extern const u8 *const gBattleAnims_Special[];
extern const struct OamData gUnknown_824F010;
extern const struct OamData gUnknown_824F018;
extern const union AnimCmd *const gSpriteAnimTable_82349BC[];
-extern const union AffineAnimCmd *const gSpriteAffineAnimTable_82348C8[];
-extern const union AffineAnimCmd *const gSpriteAffineAnimTable_8234944[];
-extern const struct SpriteFrameImage gUnknown_8234698[];
-extern const struct SpriteFrameImage gUnknown_82346B8[];
-extern const struct SpriteFrameImage gUnknown_82346D8[];
-extern const struct SpriteFrameImage gUnknown_82346F8[];
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_BattlerPlayer[];
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_BattlerOpponent[];
+extern const struct SpriteFrameImage gSpriteImages_BattlerPlayerLeft[];
+extern const struct SpriteFrameImage gSpriteImages_BattlerOpponentLeft[];
+extern const struct SpriteFrameImage gSpriteImages_BattlerPlayerRight[];
+extern const struct SpriteFrameImage gSpriteImages_BattlerOpponentRight[];
extern const struct SpriteFrameImage gTrainerBackPicTable_Red[];
extern const struct SpriteFrameImage gTrainerBackPicTable_Leaf[];
extern const struct SpriteFrameImage gTrainerBackPicTable_Pokedude[];
diff --git a/include/field_camera.h b/include/field_camera.h
index a3275eb9d..025b85132 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -26,7 +26,7 @@ extern bool8 gBikeCameraAheadPanback;
void DrawWholeMapView(void);
void CurrentMapDrawMetatileAt(int x, int y);
-void sub_805A658(s16 *x, s16 *y);
+void FieldCameraGetPixelOffsetAtGround(s16 *x, s16 *y);
void SetCameraPanningCallback(void (*cb)(void));
void SetCameraPanning(s16 x, s16 y);
void UpdateCameraPanning(void);
diff --git a/include/gba/defines.h b/include/gba/defines.h
index 28f804dff..02d687ade 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -92,6 +92,7 @@
#define RGB_CYAN RGB(0, 31, 31)
#define RGB_WHITEALPHA (RGB_WHITE | 0x8000)
+// Some functions are strictly inline asm
#define NAKED __attribute__((naked))
#define UNUSED __attribute__((unused))
diff --git a/include/global.h b/include/global.h
index dbe913595..04adc82cb 100644
--- a/include/global.h
+++ b/include/global.h
@@ -16,7 +16,7 @@
#define asm_comment(x) asm volatile("@ -- " x " -- ")
#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided")
-#if defined (__APPLE__) || defined (__CYGWIN__)
+#if defined (__APPLE__) || defined (__CYGWIN__) || defined(__CLION_IDE__)
// Get the IDE to stfu
// We define it this way to fool preproc.
@@ -31,9 +31,7 @@
#define __(x) (x)
#endif // __APPLE__
-#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
-// GF's lingo
-#define NELEMS ARRAY_COUNT
+#define NELEMS(array) (sizeof(array) / sizeof((array)[0]))
#define SWAP(a, b, temp) \
{ \
@@ -293,7 +291,7 @@ struct SaveBlock2
/*0xB10*/ struct BerryPickingResults berryPick;
/*0xB20*/ u8 filler_B20[0x400];
/*0xF20*/ u32 encryptionKey;
-};
+}; // size: 0xF24
extern struct SaveBlock2 *gSaveBlock2Ptr;
@@ -826,7 +824,7 @@ struct SaveBlock1
/*0x3D24*/ u8 filler3D24[0x10];
/*0x3D34*/ u32 towerChallengeId;
/*0x3D38*/ struct TrainerTower trainerTower[NUM_TOWER_CHALLENGE_TYPES];
-};
+}; // size: 0x3D68
struct MapPosition
{
diff --git a/include/link.h b/include/link.h
index 6329c197b..b4749164b 100644
--- a/include/link.h
+++ b/include/link.h
@@ -251,14 +251,14 @@ void sub_800E0E8(void);
bool8 sub_800A520(void);
bool8 sub_8010500(void);
void sub_800DFB4(u8, u8);
-void PrepareSendLinkCmd2FFE_or_RfuCmd6600(void);
+void SetLinkStandbyCallback(void);
void SetWirelessCommType1(void);
void sub_8009734(void);
void sub_800A620(void);
void LinkRfu_DestroyIdleTask(void);
u8 sub_800ABAC(void);
u8 sub_800ABBC(void);
-void Link_TryStartSend5FFF(void);
+void SetCloseLinkCallback(void);
void OpenLink(void);
bool8 IsLinkMaster(void);
void CheckShouldAdvanceLinkState(void);
diff --git a/include/load_save.h b/include/load_save.h
index 23c1429ed..95de991a8 100644
--- a/include/load_save.h
+++ b/include/load_save.h
@@ -6,6 +6,7 @@
extern bool32 gFlashMemoryPresent;
extern struct SaveBlock1 gSaveBlock1;
extern struct SaveBlock2 gSaveBlock2;
+extern struct PokemonStorage gPokemonStorage;
void ClearSav2(void);
void ClearSav1(void);
diff --git a/include/party_menu.h b/include/party_menu.h
index a1b85e059..69f25e319 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -72,9 +72,9 @@ void ChooseMonForTradingBoard(u8 menuType, MainCallback callback);
void ChooseMonForMoveTutor(void);
void ChooseMonForWirelessMinigame(void);
void OpenPartyMenuInTutorialBattle(u8 partyAction);
-void OpenPartyMenuInBattle(void);
-void ChooseMonForInBattleItem(void);
-void sub_81279E0(void);
+void Pokedude_OpenPartyMenuInBattle(void);
+void Pokedude_ChooseMonForInBattleItem(void);
+void EnterPartyFromItemMenuInBattle(void);
void BufferBattlePartyCurrentOrder(void);
void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId);
void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2);
diff --git a/include/pokeball.h b/include/pokeball.h
index 1c2241246..9ba5656af 100644
--- a/include/pokeball.h
+++ b/include/pokeball.h
@@ -33,7 +33,7 @@ void sub_8076918(u8 bank);
void DoHitAnimHealthboxEffect(u8 bank);
void LoadBallGfx(u8 ballId);
void FreeBallGfx(u8 ballId);
-void sub_804BD94(u8 battler);
+void StartHealthboxSlideIn(u8 battler);
void DestroySpriteAndFreeResources2(struct Sprite *sprite);
#endif // GUARD_POKEBALL_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 6a9b657ea..6027b9b5a 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -327,7 +327,7 @@ extern const u32 gExperienceTables[][MAX_LEVEL + 1];
extern const u16 *const gLevelUpLearnsets[];
extern const u8 gFacilityClassToPicIndex[];
extern const u8 gFacilityClassToTrainerClass[];
-extern const struct SpriteTemplate gUnknown_825DEF0[];
+extern const struct SpriteTemplate gSpriteTemplates_Battlers[];
extern const u8 gPPUpGetMask[];
void ZeroBoxMonData(struct BoxPokemon *boxMon);
@@ -342,7 +342,7 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level);
void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality);
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread);
void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src);
-void sub_803E23C(struct Pokemon *mon, struct BattleTowerPokemon *dest);
+void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerPokemon *dest);
void CalculateMonStats(struct Pokemon *mon);
void BoxMonToMon(struct BoxPokemon *src, struct Pokemon *dest);
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon);
@@ -407,7 +407,7 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum);
u16 SpeciesToNationalPokedexNum(u16 species);
u16 HoennToNationalOrder(u16 hoennNum);
u16 SpeciesToCryId(u16 species);
-void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4);
+void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, bool8 isFrontPic);
void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
bool8 GetPlayerFlankId(void);
bool16 GetLinkTrainerFlankId(u8 linkPlayerId);
@@ -446,10 +446,10 @@ bool8 IsMonShiny(struct Pokemon *mon);
u8 *GetTrainerPartnerName(void);
u8 GetPlayerPartyHighestLevel(void);
u16 FacilityClassToPicIndex(u16 facilityClass);
-bool8 sub_804455C(u8 caseId, u8 battlerId);
+bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId);
void SetDeoxysStats(void);
-u16 sub_80447AC(void);
-u16 sub_80447F0(void);
+u16 GetUnionRoomTrainerPic(void);
+u16 GetUnionRoomTrainerClass(void);
void CreateEventLegalEnemyMon(void);
void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality);
bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 bank);
diff --git a/include/quest_log.h b/include/quest_log.h
index 9c50f5f6e..ffe5c2cea 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -49,7 +49,7 @@ void QuestLog_CutRecording(void);
u8 sub_8112CAC(void);
void ResetDeferredLinkEvent(void);
void FinishRecordingQuestLogScene(void);
-void sub_81139BC(void);
+void QuestLogEvents_HandleEndTrainerBattle(void);
void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx);
void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value);
void SetQuestLogRecordAndPlaybackPointers(void *oldSave);
diff --git a/include/reshow_battle_screen.h b/include/reshow_battle_screen.h
index cc20eed96..5587d50e5 100644
--- a/include/reshow_battle_screen.h
+++ b/include/reshow_battle_screen.h
@@ -3,7 +3,7 @@
#include "global.h"
-void nullsub_44(void);
+void ReshowBattleScreenDummy(void);
void ReshowBattleScreenAfterMenu(void);
#endif // GUARD_RESHOW_BATTLE_SCREEN_H
diff --git a/include/strings.h b/include/strings.h
index 28dcec66b..b4783c3c4 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -338,12 +338,12 @@ extern const u8 gText_SwitchedPkmnItem[];
extern const u8 gText_BagFullCouldNotRemoveItem[];
extern const u8 gText_PkmnCantParticipate[];
extern const u8 gText_CancelParticipation[];
-extern const u8 gUnknown_8417494[];
+extern const u8 gText_OakThisIsListOfPokemon[];
extern const u8 gMenuText_Confirm[];
extern const u8 gText_MaleSymbol[];
extern const u8 gText_FemaleSymbol[];
extern const u8 gText_Slash[];
-extern const u8 gUnknown_8417457[];
+extern const u8 gText_OakImportantToGetToKnowPokemonThroughly[];
extern const u8 gText_PkmnNotHolding[];
extern const u8 gText_PCMailboxFull[];
extern const u8 gText_MailSentToPC[];
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 41f44a42c..0b011b0f3 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -2259,7 +2259,7 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2)
RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(8)), 0x2000, DMA3_32BIT);
RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(28)), 0x1000, DMA3_32BIT);
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
CpuFill16(toBG_2, animBg.bgTiles, 0x1000);
CpuFill16(toBG_2, animBg.bgTilemap, 0x800);
@@ -2278,13 +2278,14 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2)
LoadPalette(&gPlttBufferUnfaded[0x100 + battlerId * 16], animBg.paletteId * 16, 0x20);
CpuCopy32(&gPlttBufferUnfaded[0x100 + battlerId * 16], (void*)(BG_PLTT + animBg.paletteId * 32), 0x20);
- sub_80BCEF4(1, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles, animBg.bgTilemap, animBg.tilesOffset);
+ CopyBattlerSpriteToBg(1, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles,
+ animBg.bgTilemap, animBg.tilesOffset);
}
else
{
RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(12)), 0x2000, DMA3_32BIT);
RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(30)), 0x1000, DMA3_32BIT);
- sub_80752C8(&animBg, 2);
+ GetBattleAnimBgData(&animBg, 2);
CpuFill16(0, animBg.bgTiles + 0x1000, 0x1000);
CpuFill16(0, animBg.bgTilemap + 0x400, 0x800);
SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
@@ -2302,7 +2303,8 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2)
LoadPalette(&gPlttBufferUnfaded[0x100 + battlerId * 16], 0x90, 0x20);
CpuCopy32(&gPlttBufferUnfaded[0x100 + battlerId * 16], (void*)(BG_PLTT + 0x120), 0x20);
- sub_80BCEF4(2, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles + 0x1000, animBg.bgTilemap + 0x400, animBg.tilesOffset);
+ CopyBattlerSpriteToBg(2, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles + 0x1000,
+ animBg.bgTilemap + 0x400, animBg.tilesOffset);
}
}
@@ -2326,20 +2328,20 @@ void sub_80730C0(u16 a, u16 *b, s32 c, u8 d)
}
}
-void sub_8073128(bool8 to_BG2)
+void ResetBattleAnimBg(bool8 to_BG2)
{
struct BattleAnimBgData animBg;
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
if (!to_BG2)
{
- sub_8075358(1);
+ InitBattleAnimBg(1);
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
}
else
{
- sub_8075358(2);
+ InitBattleAnimBg(2);
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
}
@@ -2353,7 +2355,7 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
spriteId = gTasks[taskId].data[0];
palIndex = gTasks[taskId].data[6];
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
x = gTasks[taskId].data[1] - (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x);
y = gTasks[taskId].data[2] - (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y);
@@ -2429,13 +2431,13 @@ static void sub_807331C(u8 taskId)
if (sMonAnimTaskIdArray[0] != 0xFF)
{
- sub_8073128(toBG_2);
+ ResetBattleAnimBg(toBG_2);
DestroyTask(sMonAnimTaskIdArray[0]);
sMonAnimTaskIdArray[0] = 0xFF;
}
if (gTasks[taskId].data[0] > 1)
{
- sub_8073128(toBG_2 ^ 1);
+ ResetBattleAnimBg(toBG_2 ^ 1);
DestroyTask(sMonAnimTaskIdArray[1]);
sMonAnimTaskIdArray[1] = 0xFF;
}
@@ -2541,10 +2543,10 @@ static void sub_8073558(u8 taskId)
toBG_2 = TRUE;
if (IsBattlerSpriteVisible(battlerId))
- sub_8073128(toBG_2);
+ ResetBattleAnimBg(toBG_2);
if (gTasks[taskId].data[0] > 1 && IsBattlerSpriteVisible(battlerId ^ BIT_FLANK))
- sub_8073128(toBG_2 ^ 1);
+ ResetBattleAnimBg(toBG_2 ^ 1);
DestroyTask(taskId);
}
@@ -3303,9 +3305,9 @@ static void ScriptCmd_doublebattle_2D(void)
gSprites[spriteId].oam.priority = 3;
if (priority == 1)
- sub_8073128(FALSE);
+ ResetBattleAnimBg(FALSE);
else
- sub_8073128(TRUE);
+ ResetBattleAnimBg(TRUE);
}
}
}
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c
index ac4e9db30..dcffedb0e 100644
--- a/src/battle_anim_effects_2.c
+++ b/src/battle_anim_effects_2.c
@@ -1738,7 +1738,7 @@ void AnimCoinThrow(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = r6;
sprite->data[4] = r7;
- sprite->callback = sub_80756A4;
+ sprite->callback = BattleAnim_InitAndRunLinearTranslationWithDuration;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -2992,12 +2992,12 @@ void AnimTask_LoadMusicNotesPals(u8 taskId)
for (i = 1; i < 3; i++)
paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i);
- gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
- LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->field_17C);
+ gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000);
+ LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->multiUseBuffer);
for (i = 0; i < 3; i++)
- LoadPalette(&gMonSpritesGfxPtr->field_17C[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32);
+ LoadPalette(&gMonSpritesGfxPtr->multiUseBuffer[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32);
- FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C);
+ FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
DestroyAnimVisualTask(taskId);
}
@@ -3232,7 +3232,7 @@ void AnimTask_HeartsBackground(u8 taskId)
gBattle_BG1_Y = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimBg_AttractTilemap);
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBg_AttractGfx, animBg.tilesOffset);
LoadCompressedPalette(gBattleAnimBg_AttractPal, animBg.paletteId * 16, 32);
@@ -3282,8 +3282,8 @@ static void HeartsBackground_Step(u8 taskId)
}
break;
case 3:
- sub_80752A0(&animBg);
- sub_8075358(animBg.bgId);
+ GetBattleAnimBg1Data(&animBg);
+ InitBattleAnimBg(animBg.bgId);
gTasks[taskId].data[12]++;
break;
case 4:
@@ -3313,7 +3313,7 @@ void AnimTask_ScaryFace(u8 taskId)
gBattle_BG1_Y = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
if (IsContest())
LZDecompressVram(gBattleAnimBgTilemap_ScaryFaceContest, animBg.bgTilemap);
@@ -3370,9 +3370,9 @@ static void ScaryFace_Step(u8 taskId)
}
break;
case 3:
- sub_80752A0(&animBg);
- sub_8075358(1);
- sub_8075358(2);
+ GetBattleAnimBg1Data(&animBg);
+ InitBattleAnimBg(1);
+ InitBattleAnimBg(2);
gTasks[taskId].data[12]++;
// fall through
case 4:
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index 52fc64870..ab12c02b4 100644
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -2216,7 +2216,7 @@ void AnimTask_TransformMon(u8 taskId)
break;
case 2:
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10]);
- sub_8075300(&animBg, gBattleAnimAttacker);
+ GetBattleAnimBgDataByPriorityRank(&animBg, gBattleAnimAttacker);
if (IsContest())
position = 0;
else
@@ -2287,7 +2287,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnim_MorningSunTilemap);
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnim_MorningSunGfx, animBg.tilesOffset);
LoadCompressedPalette(gBattleAnim_MorningSunPal, animBg.paletteId * 16, 32);
@@ -2348,8 +2348,8 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
}
break;
case 4:
- sub_80752A0(&animBg);
- sub_8075358(animBg.bgId);
+ GetBattleAnimBg1Data(&animBg);
+ InitBattleAnimBg(animBg.bgId);
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
@@ -2467,7 +2467,7 @@ void AnimTask_DoomDesireLightBeam(u8 taskId)
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnim_MorningSunTilemap);
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnim_MorningSunGfx, animBg.tilesOffset);
LoadCompressedPalette(gBattleAnim_MorningSunPal, animBg.paletteId * 16, 32);
@@ -2540,8 +2540,8 @@ void AnimTask_DoomDesireLightBeam(u8 taskId)
gTasks[taskId].data[0] = 1;
break;
case 5:
- sub_80752A0(&animBg);
- sub_8075358(animBg.bgId);
+ GetBattleAnimBg1Data(&animBg);
+ InitBattleAnimBg(animBg.bgId);
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
index ee5d4017d..46f62a03c 100644
--- a/src/battle_anim_mons.c
+++ b/src/battle_anim_mons.c
@@ -19,9 +19,9 @@
#define IS_DOUBLE_BATTLE() (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3);
-static void sub_8075658(struct Sprite *sprite);
-static void sub_80757E8(struct Sprite *sprite);
-static bool8 sub_80758DC(void);
+static void PlayerThrowBall_RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite);
+static void SpriteCB_RunAnimFastLinearTranslation(struct Sprite *sprite);
+static bool8 Dummy_ReturnFalse(void);
static void AnimThrowProjectile_Step(struct Sprite *sprite);
static void sub_80760D0(u8 taskId);
static void AnimTask_BlendMonInAndOutSetup(struct Task *task);
@@ -695,10 +695,10 @@ void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset)
void InitAnimArcTranslation(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->sTransl_InitX = sprite->pos1.x;
+ sprite->sTransl_InitY = sprite->pos1.y;
InitAnimLinearTranslation(sprite);
- sprite->data[6] = 0x8000 / sprite->data[0];
+ sprite->data[6] = 0x8000 / sprite->sTransl_Speed;
sprite->data[7] = 0;
}
@@ -707,7 +707,7 @@ bool8 TranslateAnimHorizontalArc(struct Sprite *sprite)
if (AnimTranslateLinear(sprite))
return TRUE;
sprite->data[7] += sprite->data[6];
- sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
+ sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->sTransl_ArcAmpl);
return FALSE;
}
@@ -716,7 +716,7 @@ bool8 TranslateAnimVerticalArc(struct Sprite *sprite)
if (AnimTranslateLinear(sprite))
return TRUE;
sprite->data[7] += sprite->data[6];
- sprite->pos2.x += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
+ sprite->pos2.x += Sin((u8)(sprite->data[7] >> 8), sprite->sTransl_ArcAmpl);
return FALSE;
}
@@ -801,26 +801,26 @@ bool8 IsDoubleBattle(void)
return IS_DOUBLE_BATTLE();
}
-void sub_80752A0(struct BattleAnimBgData *animBgData)
+void GetBattleAnimBg1Data(struct BattleAnimBgData *animBgData)
{
- animBgData->bgTiles = gUnknown_2022BB8;
- animBgData->bgTilemap = (u16 *)gUnknown_2022BBC;
+ animBgData->bgTiles = gBattleAnimMons_BgTilesBuffer;
+ animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer;
animBgData->paletteId = 8;
animBgData->bgId = 1;
animBgData->tilesOffset = 0x200;
animBgData->unused = 0;
}
-void sub_80752C8(struct BattleAnimBgData *animBgData, u32 arg1)
+void GetBattleAnimBgData(struct BattleAnimBgData *animBgData, u32 bgId)
{
- if (arg1 == 1)
+ if (bgId == 1)
{
- sub_80752A0(animBgData);
+ GetBattleAnimBg1Data(animBgData);
}
else
{
- animBgData->bgTiles = gUnknown_2022BB8;
- animBgData->bgTilemap = (u16 *)gUnknown_2022BBC;
+ animBgData->bgTiles = gBattleAnimMons_BgTilesBuffer;
+ animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer;
animBgData->paletteId = 9;
animBgData->bgId = 2;
animBgData->tilesOffset = 0x300;
@@ -828,10 +828,10 @@ void sub_80752C8(struct BattleAnimBgData *animBgData, u32 arg1)
}
}
-void sub_8075300(struct BattleAnimBgData *animBgData, u8 unused)
+void GetBattleAnimBgDataByPriorityRank(struct BattleAnimBgData *animBgData, u8 unused)
{
- animBgData->bgTiles = gUnknown_2022BB8;
- animBgData->bgTilemap = (u16 *)gUnknown_2022BBC;
+ animBgData->bgTiles = gBattleAnimMons_BgTilesBuffer;
+ animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer;
if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
{
animBgData->paletteId = 8;
@@ -848,11 +848,11 @@ void sub_8075300(struct BattleAnimBgData *animBgData, u8 unused)
}
}
-void sub_8075358(u32 bgId)
+void InitBattleAnimBg(u32 bgId)
{
struct BattleAnimBgData animBgData;
- sub_80752C8(&animBgData, bgId);
+ GetBattleAnimBgData(&animBgData, bgId);
CpuFill32(0, animBgData.bgTiles, 0x2000);
LoadBgTiles(bgId, animBgData.bgTiles, 0x2000, animBgData.tilesOffset);
FillBgTilemapBufferRect(bgId, 0, 0, 0, 32, 64, 17);
@@ -861,9 +861,9 @@ void sub_8075358(u32 bgId)
void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset)
{
- CpuFill32(0, gUnknown_2022BB8, 0x2000);
- LZDecompressWram(src, gUnknown_2022BB8);
- LoadBgTiles(bgId, gUnknown_2022BB8, 0x2000, tilesOffset);
+ CpuFill32(0, gBattleAnimMons_BgTilesBuffer, 0x2000);
+ LZDecompressWram(src, gBattleAnimMons_BgTilesBuffer);
+ LoadBgTiles(bgId, gBattleAnimMons_BgTilesBuffer, 0x2000, tilesOffset);
}
void InitAnimBgTilemapBuffer(u32 bgId, const void *src)
@@ -883,7 +883,7 @@ u8 GetBattleBgPaletteNum(void)
return 2;
}
-void sub_8075458(bool8 arg0)
+void ToggleBg3Mode(bool8 arg0)
{
if (!arg0)
{
@@ -919,15 +919,15 @@ void InitSpriteDataForLinearTranslation(struct Sprite *sprite)
void InitAnimLinearTranslation(struct Sprite *sprite)
{
- s32 x = sprite->data[2] - sprite->data[1];
- s32 y = sprite->data[4] - sprite->data[3];
+ s32 x = sprite->sTransl_DestX - sprite->sTransl_InitX;
+ s32 y = sprite->sTransl_DestY - sprite->sTransl_InitY;
bool8 movingLeft = x < 0;
bool8 movingUp = y < 0;
u16 xDelta = abs(x) << 8;
u16 yDelta = abs(y) << 8;
- xDelta = xDelta / sprite->data[0];
- yDelta = yDelta / sprite->data[0];
+ xDelta = xDelta / sprite->sTransl_Speed;
+ yDelta = yDelta / sprite->sTransl_Speed;
if (movingLeft)
xDelta |= 1;
@@ -947,19 +947,19 @@ void InitAnimLinearTranslation(struct Sprite *sprite)
void StartAnimLinearTranslation(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->sTransl_InitX = sprite->pos1.x;
+ sprite->sTransl_InitY = sprite->pos1.y;
InitAnimLinearTranslation(sprite);
- sprite->callback = sub_807563C;
+ sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6;
sprite->callback(sprite);
}
-void sub_80755B8(struct Sprite *sprite)
+void PlayerThrowBall_StartAnimLinearTranslation(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->sTransl_InitX = sprite->pos1.x;
+ sprite->sTransl_InitY = sprite->pos1.y;
InitAnimLinearTranslation(sprite);
- sprite->callback = sub_8075658;
+ sprite->callback = PlayerThrowBall_RunLinearTranslation_ThenceSetCBtoStoredInData6;
sprite->callback(sprite);
}
@@ -990,47 +990,47 @@ bool8 AnimTranslateLinear(struct Sprite *sprite)
return FALSE;
}
-void sub_807563C(struct Sprite *sprite)
+void RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite)
{
if (AnimTranslateLinear(sprite))
SetCallbackToStoredInData6(sprite);
}
-static void sub_8075658(struct Sprite *sprite)
+static void PlayerThrowBall_RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite)
{
- sub_801236C(sprite);
+ UpdatePlayerPosInThrowAnim(sprite);
if (AnimTranslateLinear(sprite))
SetCallbackToStoredInData6(sprite);
}
-void sub_8075678(struct Sprite *sprite)
+void BattleAnim_InitLinearTranslationWithDuration(struct Sprite *sprite)
{
- s32 v1 = abs(sprite->data[2] - sprite->data[1]) << 8;
+ s32 v1 = abs(sprite->sTransl_DestX - sprite->sTransl_InitX) << 8;
- sprite->data[0] = v1 / sprite->data[0];
+ sprite->sTransl_Speed = v1 / sprite->sTransl_Duration;
InitAnimLinearTranslation(sprite);
}
-void sub_80756A4(struct Sprite *sprite)
+void BattleAnim_InitAndRunLinearTranslationWithDuration(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
- sub_8075678(sprite);
- sprite->callback = sub_807563C;
+ sprite->sTransl_InitX = sprite->pos1.x;
+ sprite->sTransl_InitY = sprite->pos1.y;
+ BattleAnim_InitLinearTranslationWithDuration(sprite);
+ sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6;
sprite->callback(sprite);
}
static void InitAnimFastLinearTranslation(struct Sprite *sprite)
{
- s32 xDiff = sprite->data[2] - sprite->data[1];
- s32 yDiff = sprite->data[4] - sprite->data[3];
+ s32 xDiff = sprite->sTransl_DestX - sprite->sTransl_InitX;
+ s32 yDiff = sprite->sTransl_DestY - sprite->sTransl_InitY;
bool8 xSign = xDiff < 0;
bool8 ySign = yDiff < 0;
u16 x2 = abs(xDiff) << 4;
u16 y2 = abs(yDiff) << 4;
- x2 /= sprite->data[0];
- y2 /= sprite->data[0];
+ x2 /= sprite->sTransl_Duration;
+ y2 /= sprite->sTransl_Duration;
if (xSign)
x2 |= 1;
else
@@ -1047,10 +1047,10 @@ static void InitAnimFastLinearTranslation(struct Sprite *sprite)
void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->sTransl_InitX = sprite->pos1.x;
+ sprite->sTransl_InitY = sprite->pos1.y;
InitAnimFastLinearTranslation(sprite);
- sprite->callback = sub_80757E8;
+ sprite->callback = SpriteCB_RunAnimFastLinearTranslation;
sprite->callback(sprite);
}
@@ -1080,7 +1080,7 @@ bool8 AnimFastTranslateLinear(struct Sprite *sprite)
return FALSE;
}
-static void sub_80757E8(struct Sprite *sprite)
+static void SpriteCB_RunAnimFastLinearTranslation(struct Sprite *sprite)
{
if (AnimFastTranslateLinear(sprite))
SetCallbackToStoredInData6(sprite);
@@ -1099,7 +1099,7 @@ void sub_8075830(struct Sprite *sprite)
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
InitAnimFastLinearTranslationWithSpeed(sprite);
- sprite->callback = sub_80757E8;
+ sprite->callback = SpriteCB_RunAnimFastLinearTranslation;
sprite->callback(sprite);
}
@@ -1112,7 +1112,7 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation)
src.xScale = xScale;
src.yScale = yScale;
src.rotation = rotation;
- if (sub_80758DC())
+ if (Dummy_ReturnFalse())
src.xScale = -src.xScale;
i = gSprites[spriteId].oam.matrixNum;
ObjAffineSet(&src, &matrix, 1, 2);
@@ -1122,7 +1122,7 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation)
gOamMatrices[i].d = matrix.d;
}
-static bool8 sub_80758DC(void)
+static bool8 Dummy_ReturnFalse(void)
{
return FALSE;
}
@@ -1177,7 +1177,7 @@ void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 x
src.xScale = xScale;
src.yScale = yScale;
src.rotation = rotation;
- if (sub_80758DC())
+ if (Dummy_ReturnFalse())
src.xScale = -src.xScale;
i = sprite->oam.matrixNum;
ObjAffineSet(&src, &matrix, 1, 2);
@@ -1869,20 +1869,20 @@ u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
u16 sheet = LoadSpriteSheet(&gUnknown_83AE084[a3]);
u16 palette = AllocSpritePalette(gUnknown_83AE054[a3].paletteTag);
- if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->field_17C == NULL)
- gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
+ if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->multiUseBuffer == NULL)
+ gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000);
if (!isBackpic)
{
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
- if (a10 == 1 || sub_804455C(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
+ if (a10 == 1 || ShouldIgnoreDeoxysForm(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->field_17C,
+ gMonSpritesGfxPtr->multiUseBuffer,
species,
personality,
TRUE);
else
LoadSpecialPokePic(&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->field_17C,
+ gMonSpritesGfxPtr->multiUseBuffer,
species,
personality,
TRUE);
@@ -1890,21 +1890,21 @@ u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
else
{
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
- if (a10 == 1 || sub_804455C(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
+ if (a10 == 1 || ShouldIgnoreDeoxysForm(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
- gMonSpritesGfxPtr->field_17C,
+ gMonSpritesGfxPtr->multiUseBuffer,
species,
personality,
FALSE);
else
LoadSpecialPokePic(&gMonBackPicTable[species],
- gMonSpritesGfxPtr->field_17C,
+ gMonSpritesGfxPtr->multiUseBuffer,
species,
personality,
FALSE);
}
- RequestDma3Copy(gMonSpritesGfxPtr->field_17C, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1);
- FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C);
+ RequestDma3Copy(gMonSpritesGfxPtr->multiUseBuffer, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1);
+ FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
if (!isBackpic)
spriteId = CreateSprite(&gUnknown_83AE054[a3], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
else
diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c
index a919b0371..a1cf5a491 100644
--- a/src/battle_anim_special.c
+++ b/src/battle_anim_special.c
@@ -15,7 +15,6 @@
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/songs.h"
-#include "constants/pokemon.h"
// Defines
#define TAG_PARTICLES_POKEBALL 55020
@@ -31,58 +30,61 @@
#define TAG_PARTICLES_LUXURYBALL 55030
#define TAG_PARTICLES_PREMIERBALL 55031
+#define TAG_HEALTHBOX_PALS_1 55049
+#define TAG_HEALTHBOX_PALS_2 55050
+
#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
#define LOHALF(n) ((n) & 0xFFFF)
// RAM
-int sUnknown_3005424;
-u16 sUnknown_3005428;
-u16 sUnknown_300542C;
+UNUSED u32 gMonShrinkDuration;
+UNUSED u16 gMonShrinkDelta;
+UNUSED u16 gMonShrinkDistance;
// Function Declarations
-static void sub_80EEDF4(u8);
-static void sub_80EF1CC(u8);
-static void sub_80EF698(u8);
-static void sub_80EF8C0(struct Sprite *);
-static void sub_80EF7EC(u8);
-static void sub_80EF864(u8);
-static void sub_80EF8F0(struct Sprite *);
-static void sub_80F0478(struct Sprite *);
-static void sub_80EF9B4(struct Sprite *);
-static void sub_80EFA0C(struct Sprite *);
-static void sub_80EFB58(struct Sprite *);
-static void sub_80EFB9C(struct Sprite *);
-static void sub_80EFF80(struct Sprite *);
-static void sub_80EFCA0(struct Sprite *);
-static void sub_80EFCEC(struct Sprite *);
-static void sub_80EFFA4(struct Sprite *);
-static void sub_80F02B0(struct Sprite *);
-static void sub_80EFFC4(struct Sprite *);
-static void sub_80F01B8(struct Sprite *);
-static void sub_80F00A4(struct Sprite *);
-static void sub_80F018C(struct Sprite *);
-static void sub_80F05B4(u8);
-static void sub_80F0278(struct Sprite *);
-static void sub_80F0378(struct Sprite *);
-static void sub_80F04B4(struct Sprite *);
+static void AnimTask_UnusedLevelUpHealthBox_Step(u8);
+static void AnimTask_FlashHealthboxOnLevelUp_Step(u8);
+static void AnimTask_ThrowBall_WaitAnimObjComplete(u8);
+static void SpriteCB_ThrowBall_Init(struct Sprite *);
+static void AnimTask_ThrowBallSpecial_PlaySfx(u8);
+static void AnimTask_ThrowBallSpecial_ResetPlayerSprite(u8);
+static void SpriteCB_ThrowBall_ArcFlight(struct Sprite *);
+static void TrainerBallBlock(struct Sprite *);
+static void SpriteCB_ThrowBall_TenFrameDelay(struct Sprite *);
+static void SpriteCB_ThrowBall_ShrinkMon(struct Sprite *);
+static void SpriteCB_ThrowBall_InitialFall(struct Sprite *);
+static void SpriteCB_ThrowBall_Bounce(struct Sprite *);
+static void SpriteCB_ThrowBall_DelayThenBreakOut(struct Sprite *);
+static void SpriteCB_ThrowBall_InitShake(struct Sprite *);
+static void SpriteCB_ThrowBall_DoShake(struct Sprite *);
+static void SpriteCB_ThrowBall_InitClick(struct Sprite *);
+static void SpriteCB_ThrowBall_BeginBreakOut(struct Sprite *);
+static void SpriteCB_ThrowBall_DoClick(struct Sprite *);
+static void CreateStarsWhenBallClicks(struct Sprite *);
+static void SpriteCB_ThrowBall_FinishClick(struct Sprite *);
+static void BattleAnimObj_SignalEnd(struct Sprite *);
+static void LoadBallParticleGfx(u8);
+static void SpriteCB_BallCaptureSuccessStar(struct Sprite *);
+static void SpriteCB_ThrowBall_RunBreakOut(struct Sprite *);
+static void TrainerBallBlock2(struct Sprite *);
static void GhostBallDodge(struct Sprite *sprite);
-static void sub_80F0574(struct Sprite *sprite);
+static void GhostBallDodge2(struct Sprite *sprite);
static void PokeBallOpenParticleAnimation_Step1(struct Sprite *);
static void PokeBallOpenParticleAnimation_Step2(struct Sprite *);
static void DestroyBallOpenAnimationParticle(struct Sprite *);
static void FanOutBallOpenParticles_Step1(struct Sprite *);
static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *);
static void PremierBallOpenParticleAnimation_Step1(struct Sprite *);
-static void sub_80F12E0(u8);
-static void sub_80F1370(u8);
-static void sub_80F13C0(u8);
-static void sub_80F181C(u8);
-static void sub_80F1A2C(struct Sprite *);
-static void sub_80F1A80(struct Sprite *);
-static void sub_80F19E0(u8);
-static void sub_80F1BCC(struct Sprite *);
-static void sub_80F1C04(struct Sprite *);
-static void sub_80F1C30(struct Sprite *);
+static void Task_FadeMon_ToBallColor(u8);
+static void Task_FadeMon_ToNormal(u8);
+static void Task_FadeMon_ToNormal_Step(u8);
+static void AnimTask_ShinySparkles(u8);
+static void SpriteCB_ShinySparkles_1(struct Sprite *);
+static void SpriteCB_ShinySparkles_2(struct Sprite *);
+static void AnimTask_ShinySparkles_WaitSparkles(u8);
+static void SpriteCB_SafariBaitOrRock_WaitPlayerThrow(struct Sprite *);
+static void SpriteCB_SafariBaitOrRock_ArcFlight(struct Sprite *);
+static void SpriteCB_SafariBaitOrRock_Finish(struct Sprite *);
static void PokeBallOpenParticleAnimation(u8);
static void GreatBallOpenParticleAnimation(u8);
static void SafariBallOpenParticleAnimation(u8);
@@ -92,65 +94,65 @@ static void DiveBallOpenParticleAnimation(u8);
static void RepeatBallOpenParticleAnimation(u8);
static void TimerBallOpenParticleAnimation(u8);
static void PremierBallOpenParticleAnimation(u8);
-static void sub_80F1B3C(struct Sprite *);
+static void SpriteCB_SafariBaitOrRock_Init(struct Sprite *);
// Data
-struct BallCaptureSuccessStarData
+struct CaptureStar
{
s8 xOffset;
s8 yOffset;
- s8 unk2;
+ s8 amplitude;
};
-static const struct BallCaptureSuccessStarData sBallCaptureSuccessStarData[] =
+static const struct CaptureStar sCaptureStar[] =
{
{
.xOffset = 10,
.yOffset = 2,
- .unk2 = -3,
+ .amplitude = -3,
},
{
.xOffset = 15,
.yOffset = 0,
- .unk2 = -4,
+ .amplitude = -4,
},
{
.xOffset = -10,
.yOffset = 2,
- .unk2 = -4,
+ .amplitude = -4,
},
};
const struct CompressedSpriteSheet gBallParticleSpritesheets[] =
{
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_POKEBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_GREATBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_SAFARIBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_ULTRABALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_MASTERBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NETBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_DIVEBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NESTBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_REPEATBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_TIMERBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_LUXURYBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_PREMIERBALL},
+ [BALL_POKE] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_POKEBALL},
+ [BALL_GREAT] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_GREATBALL},
+ [BALL_SAFARI] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_SAFARIBALL},
+ [BALL_ULTRA] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_ULTRABALL},
+ [BALL_MASTER] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_MASTERBALL},
+ [BALL_NET] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NETBALL},
+ [BALL_DIVE] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_DIVEBALL},
+ [BALL_NEST] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NESTBALL},
+ [BALL_REPEAT] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_REPEATBALL},
+ [BALL_TIMER] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_TIMERBALL},
+ [BALL_LUXURY] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_LUXURYBALL},
+ [BALL_PREMIER] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_PREMIERBALL},
};
const struct CompressedSpritePalette gBallParticlePalettes[] =
{
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_POKEBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_GREATBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_SAFARIBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_ULTRABALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_MASTERBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NETBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_DIVEBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NESTBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_REPEATBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_TIMERBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_LUXURYBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_PREMIERBALL},
+ [BALL_POKE] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_POKEBALL},
+ [BALL_GREAT] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_GREATBALL},
+ [BALL_SAFARI] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_SAFARIBALL},
+ [BALL_ULTRA] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_ULTRABALL},
+ [BALL_MASTER] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_MASTERBALL},
+ [BALL_NET] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NETBALL},
+ [BALL_DIVE] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_DIVEBALL},
+ [BALL_NEST] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NESTBALL},
+ [BALL_REPEAT] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_REPEATBALL},
+ [BALL_TIMER] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_TIMERBALL},
+ [BALL_LUXURY] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_LUXURYBALL},
+ [BALL_PREMIER] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_PREMIERBALL},
};
static const union AnimCmd sAnim_RegularBall[] =
@@ -207,39 +209,39 @@ static const union AnimCmd *const sAnims_BallParticles[] =
static const u8 sBallParticleAnimNums[] =
{
- [BALL_POKE] = 0,
- [BALL_GREAT] = 0,
- [BALL_SAFARI] = 0,
- [BALL_ULTRA] = 5,
- [BALL_MASTER] = 1,
- [BALL_NET] = 2,
- [BALL_DIVE] = 2,
- [BALL_NEST] = 3,
- [BALL_REPEAT] = 5,
- [BALL_TIMER] = 5,
- [BALL_LUXURY] = 4,
+ [BALL_POKE] = 0,
+ [BALL_GREAT] = 0,
+ [BALL_SAFARI] = 0,
+ [BALL_ULTRA] = 5,
+ [BALL_MASTER] = 1,
+ [BALL_NET] = 2,
+ [BALL_DIVE] = 2,
+ [BALL_NEST] = 3,
+ [BALL_REPEAT] = 5,
+ [BALL_TIMER] = 5,
+ [BALL_LUXURY] = 4,
[BALL_PREMIER] = 4,
};
static const TaskFunc sBallParticleAnimationFuncs[] =
{
- PokeBallOpenParticleAnimation,
- GreatBallOpenParticleAnimation,
- SafariBallOpenParticleAnimation,
- UltraBallOpenParticleAnimation,
- MasterBallOpenParticleAnimation,
- SafariBallOpenParticleAnimation,
- DiveBallOpenParticleAnimation,
- UltraBallOpenParticleAnimation,
- RepeatBallOpenParticleAnimation,
- TimerBallOpenParticleAnimation,
- GreatBallOpenParticleAnimation,
- PremierBallOpenParticleAnimation,
+ [BALL_POKE] = PokeBallOpenParticleAnimation,
+ [BALL_GREAT] = GreatBallOpenParticleAnimation,
+ [BALL_SAFARI] = SafariBallOpenParticleAnimation,
+ [BALL_ULTRA] = UltraBallOpenParticleAnimation,
+ [BALL_MASTER] = MasterBallOpenParticleAnimation,
+ [BALL_NET] = SafariBallOpenParticleAnimation,
+ [BALL_DIVE] = DiveBallOpenParticleAnimation,
+ [BALL_NEST] = UltraBallOpenParticleAnimation,
+ [BALL_REPEAT] = RepeatBallOpenParticleAnimation,
+ [BALL_TIMER] = TimerBallOpenParticleAnimation,
+ [BALL_LUXURY] = GreatBallOpenParticleAnimation,
+ [BALL_PREMIER] = PremierBallOpenParticleAnimation,
};
static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
{
- {
+ [BALL_POKE] = {
.tileTag = TAG_PARTICLES_POKEBALL,
.paletteTag = TAG_PARTICLES_POKEBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -248,7 +250,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_GREAT] = {
.tileTag = TAG_PARTICLES_GREATBALL,
.paletteTag = TAG_PARTICLES_GREATBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -257,7 +259,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_SAFARI] = {
.tileTag = TAG_PARTICLES_SAFARIBALL,
.paletteTag = TAG_PARTICLES_SAFARIBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -266,7 +268,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_ULTRA] = {
.tileTag = TAG_PARTICLES_ULTRABALL,
.paletteTag = TAG_PARTICLES_ULTRABALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -275,7 +277,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_MASTER] = {
.tileTag = TAG_PARTICLES_MASTERBALL,
.paletteTag = TAG_PARTICLES_MASTERBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -284,7 +286,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_NET] = {
.tileTag = TAG_PARTICLES_NETBALL,
.paletteTag = TAG_PARTICLES_NETBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -293,7 +295,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_DIVE] = {
.tileTag = TAG_PARTICLES_DIVEBALL,
.paletteTag = TAG_PARTICLES_DIVEBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -302,7 +304,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_NEST] = {
.tileTag = TAG_PARTICLES_NESTBALL,
.paletteTag = TAG_PARTICLES_NESTBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -311,7 +313,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_REPEAT] = {
.tileTag = TAG_PARTICLES_REPEATBALL,
.paletteTag = TAG_PARTICLES_REPEATBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -320,7 +322,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_TIMER] = {
.tileTag = TAG_PARTICLES_TIMERBALL,
.paletteTag = TAG_PARTICLES_TIMERBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -329,7 +331,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_LUXURY] = {
.tileTag = TAG_PARTICLES_LUXURYBALL,
.paletteTag = TAG_PARTICLES_LUXURYBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -338,7 +340,7 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_PREMIER] = {
.tileTag = TAG_PARTICLES_PREMIERBALL,
.paletteTag = TAG_PARTICLES_PREMIERBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
@@ -351,17 +353,17 @@ static const struct SpriteTemplate sBallParticlesSpriteTemplates[] =
static const u16 sBallOpenFadeColors[] =
{
- [BALL_POKE] = RGB(31, 22, 30),
- [BALL_GREAT] = RGB(16, 23, 30),
- [BALL_SAFARI] = RGB(23, 30, 20),
- [BALL_ULTRA] = RGB(31, 31, 15),
- [BALL_MASTER] = RGB(23, 20, 28),
- [BALL_NET] = RGB(21, 31, 25),
- [BALL_DIVE] = RGB(12, 25, 30),
- [BALL_NEST] = RGB(30, 27, 10),
- [BALL_REPEAT] = RGB(31, 24, 16),
- [BALL_TIMER] = RGB(29, 30, 30),
- [BALL_LUXURY] = RGB(31, 17, 10),
+ [BALL_POKE] = RGB(31, 22, 30),
+ [BALL_GREAT] = RGB(16, 23, 30),
+ [BALL_SAFARI] = RGB(23, 30, 20),
+ [BALL_ULTRA] = RGB(31, 31, 15),
+ [BALL_MASTER] = RGB(23, 20, 28),
+ [BALL_NET] = RGB(21, 31, 25),
+ [BALL_DIVE] = RGB(12, 25, 30),
+ [BALL_NEST] = RGB(30, 27, 10),
+ [BALL_REPEAT] = RGB(31, 24, 16),
+ [BALL_TIMER] = RGB(29, 30, 30),
+ [BALL_LUXURY] = RGB(31, 17, 10),
[BALL_PREMIER] = RGB(31, 9, 10),
// Unused
@@ -383,18 +385,18 @@ const struct SpriteTemplate gSafariBaitSpriteTemplate =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80F1B3C,
+ .callback = SpriteCB_SafariBaitOrRock_Init,
};
-static const union AnimCmd sUnknown_840C204[] =
+static const union AnimCmd sSpriteAnim_SafariRock_0[] =
{
ANIMCMD_FRAME(64, 1),
ANIMCMD_END,
};
-static const union AnimCmd *const sSpriteAnimTable_840C20C[] =
+static const union AnimCmd *const sSpriteAnimTable_SafariRock[] =
{
- sUnknown_840C204,
+ sSpriteAnim_SafariRock_0,
};
const struct SpriteTemplate gSafariRockTemplate =
@@ -402,16 +404,16 @@ const struct SpriteTemplate gSafariRockTemplate =
.tileTag = ANIM_TAG_ROCKS,
.paletteTag = ANIM_TAG_ROCKS,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = sSpriteAnimTable_840C20C,
+ .anims = sSpriteAnimTable_SafariRock,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80F1B3C,
+ .callback = SpriteCB_SafariBaitOrRock_Init,
};
// Functions
-void sub_80EEC0C(u8 taskId)
+UNUSED void AnimTask_UnusedLevelUpHealthBox(u8 taskId)
{
- struct BattleAnimBgData unknownStruct;
+ struct BattleAnimBgData animBgData;
u8 healthBoxSpriteId;
u8 battler;
u8 spriteId1, spriteId2, spriteId3, spriteId4;
@@ -442,19 +444,19 @@ void sub_80EEC0C(u8 taskId)
gSprites[spriteId4].oam.objMode = ST_OAM_OBJ_WINDOW;
gSprites[spriteId3].callback = SpriteCallbackDummy;
gSprites[spriteId4].callback = SpriteCallbackDummy;
- sub_80752A0(&unknownStruct);
- AnimLoadCompressedBgTilemap(unknownStruct.bgId, gUnknown_D2EC24_Tilemap);
- AnimLoadCompressedBgGfx(unknownStruct.bgId, gUnknown_D2EC24_Gfx, unknownStruct.tilesOffset);
- LoadCompressedPalette(gCureBubblesPal, unknownStruct.paletteId << 4, 32);
+ GetBattleAnimBg1Data(&animBgData);
+ AnimLoadCompressedBgTilemap(animBgData.bgId, gUnknown_D2EC24_Tilemap);
+ AnimLoadCompressedBgGfx(animBgData.bgId, gUnknown_D2EC24_Gfx, animBgData.tilesOffset);
+ LoadCompressedPalette(gCureBubblesPal, animBgData.paletteId << 4, 32);
gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32;
gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32;
gTasks[taskId].data[1] = 640;
gTasks[taskId].data[0] = spriteId3;
gTasks[taskId].data[2] = spriteId4;
- gTasks[taskId].func = sub_80EEDF4;
+ gTasks[taskId].func = AnimTask_UnusedLevelUpHealthBox_Step;
}
-static void sub_80EEDF4(u8 taskId)
+static void AnimTask_UnusedLevelUpHealthBox_Step(u8 taskId)
{
u8 spriteId1, spriteId2;
u8 battler;
@@ -488,7 +490,7 @@ static void sub_80EEDF4(u8 taskId)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
if (gTasks[taskId].data[12] == 0)
{
- sub_8073128(0);
+ ResetBattleAnimBg(0);
gBattle_WIN0H = 0;
gBattle_WIN0V = 0;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
@@ -514,7 +516,7 @@ static void sub_80EEDF4(u8 taskId)
}
}
-void sub_80EEFC8(u8 *paletteId1, u8 *paletteId2, u8 battler)
+void DoLoadHealthboxPalsForLevelUp(u8 *paletteId1, u8 *paletteId2, u8 battler)
{
u8 healthBoxSpriteId;
u8 spriteId1, spriteId2;
@@ -523,8 +525,8 @@ void sub_80EEFC8(u8 *paletteId1, u8 *paletteId2, u8 battler)
healthBoxSpriteId = gHealthboxSpriteIds[battler];
spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
spriteId2 = gSprites[healthBoxSpriteId].data[5];
- *paletteId1 = AllocSpritePalette(0xD709);
- *paletteId2 = AllocSpritePalette(0xD70A);
+ *paletteId1 = AllocSpritePalette(TAG_HEALTHBOX_PALS_1);
+ *paletteId2 = AllocSpritePalette(TAG_HEALTHBOX_PALS_2);
offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100;
offset2 = (gSprites[spriteId2].oam.paletteNum * 16) + 0x100;
LoadPalette(&gPlttBufferUnfaded[offset1], *paletteId1 * 16 + 0x100, 0x20);
@@ -538,11 +540,11 @@ void AnimTask_LoadHealthboxPalsForLevelUp(u8 taskId)
{
u8 paletteId1, paletteId2;
- sub_80EEFC8(&paletteId1, &paletteId2, gBattleAnimAttacker);
+ DoLoadHealthboxPalsForLevelUp(&paletteId1, &paletteId2, gBattleAnimAttacker);
DestroyAnimVisualTask(taskId);
}
-void sub_80EF0E0(u8 battler)
+void DoFreeHealthboxPalsForLevelUp(u8 battler)
{
u8 healthBoxSpriteId;
u8 spriteId1, spriteId2;
@@ -551,10 +553,10 @@ void sub_80EF0E0(u8 battler)
healthBoxSpriteId = gHealthboxSpriteIds[battler];
spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
spriteId2 = gSprites[healthBoxSpriteId].data[5];
- FreeSpritePaletteByTag(0xD709);
- FreeSpritePaletteByTag(0xD70A);
- paletteId1 = IndexOfSpritePaletteTag(0xD6FF);
- paletteId2 = IndexOfSpritePaletteTag(0xD704);
+ FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_1);
+ FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_2);
+ paletteId1 = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PAL);
+ paletteId2 = IndexOfSpritePaletteTag(TAG_HEALTHBAR_PAL);
gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1;
gSprites[spriteId1].oam.paletteNum = paletteId1;
gSprites[spriteId2].oam.paletteNum = paletteId2;
@@ -562,7 +564,7 @@ void sub_80EF0E0(u8 battler)
void AnimTask_FreeHealthboxPalsForLevelUp(u8 taskId)
{
- sub_80EF0E0(gBattleAnimAttacker);
+ DoFreeHealthboxPalsForLevelUp(gBattleAnimAttacker);
DestroyAnimVisualTask(taskId);
}
@@ -570,10 +572,10 @@ void AnimTask_FlashHealthboxOnLevelUp(u8 taskId)
{
gTasks[taskId].data[10] = gBattleAnimArgs[0];
gTasks[taskId].data[11] = gBattleAnimArgs[1];
- gTasks[taskId].func = sub_80EF1CC;
+ gTasks[taskId].func = AnimTask_FlashHealthboxOnLevelUp_Step;
}
-static void sub_80EF1CC(u8 taskId)
+static void AnimTask_FlashHealthboxOnLevelUp_Step(u8 taskId)
{
u8 paletteNum;
int paletteOffset, colorOffset;
@@ -582,7 +584,7 @@ static void sub_80EF1CC(u8 taskId)
if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11])
{
gTasks[taskId].data[0] = 0;
- paletteNum = IndexOfSpritePaletteTag(0xD709);
+ paletteNum = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PALS_1);
colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2;
switch (gTasks[taskId].data[1])
{
@@ -748,13 +750,13 @@ void AnimTask_ThrowBall(u8 taskId)
gSprites[spriteId].data[0] = 34;
gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) - 16;
- gSprites[spriteId].callback = sub_80EF8C0;
+ gSprites[spriteId].callback = SpriteCB_ThrowBall_Init;
gBattleSpritesDataPtr->animationData->field_9_x2 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible;
gTasks[taskId].data[0] = spriteId;
- gTasks[taskId].func = sub_80EF698;
+ gTasks[taskId].func = AnimTask_ThrowBall_WaitAnimObjComplete;
}
-static void sub_80EF698(u8 taskId)
+static void AnimTask_ThrowBall_WaitAnimObjComplete(u8 taskId)
{
u8 spriteId = gTasks[taskId].data[0];
@@ -789,23 +791,23 @@ void AnimTask_ThrowBallSpecial(u8 taskId)
gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) - 16;
gSprites[spriteId].callback = SpriteCallbackDummy;
- gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = sub_8012354;
+ gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = SpriteCB_PlayerThrowInit;
gTasks[taskId].data[0] = spriteId;
- gTasks[taskId].func = sub_80EF7EC;
+ gTasks[taskId].func = AnimTask_ThrowBallSpecial_PlaySfx;
}
-static void sub_80EF7EC(u8 taskId)
+static void AnimTask_ThrowBallSpecial_PlaySfx(u8 taskId)
{
if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animCmdIndex == 1)
{
PlaySE12WithPanning(SE_BALL_THROW, 0);
- gSprites[gTasks[taskId].data[0]].callback = sub_80EF8C0;
- CreateTask(sub_80EF864, 10);
- gTasks[taskId].func = sub_80EF698;
+ gSprites[gTasks[taskId].data[0]].callback = SpriteCB_ThrowBall_Init;
+ CreateTask(AnimTask_ThrowBallSpecial_ResetPlayerSprite, 10);
+ gTasks[taskId].func = AnimTask_ThrowBall_WaitAnimObjComplete;
}
}
-static void sub_80EF864(u8 taskId)
+static void AnimTask_ThrowBallSpecial_ResetPlayerSprite(u8 taskId)
{
if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animEnded)
{
@@ -814,21 +816,21 @@ static void sub_80EF864(u8 taskId)
}
}
-static void sub_80EF8C0(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_Init(struct Sprite *sprite)
{
- u16 temp = sprite->data[1];
- u16 temp2 = sprite->data[2];
+ u16 destX = sprite->data[1];
+ u16 destY = sprite->data[2];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = temp;
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = temp2;
- sprite->data[5] = -40;
+ sprite->sTransl_InitX = sprite->pos1.x;
+ sprite->sTransl_DestX = destX;
+ sprite->sTransl_InitY = sprite->pos1.y;
+ sprite->sTransl_DestY = destY;
+ sprite->sTransl_ArcAmpl = -40;
InitAnimArcTranslation(sprite);
- sprite->callback = sub_80EF8F0;
+ sprite->callback = SpriteCB_ThrowBall_ArcFlight;
}
-static void sub_80EF8F0(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_ArcFlight(struct Sprite *sprite)
{
int i;
u8 ballId;
@@ -837,7 +839,7 @@ static void sub_80EF8F0(struct Sprite *sprite)
{
if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK)
{
- sprite->callback = sub_80F0478;
+ sprite->callback = TrainerBallBlock;
}
else if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_GHOST_DODGE)
{
@@ -855,7 +857,7 @@ static void sub_80EF8F0(struct Sprite *sprite)
sprite->data[i] = 0;
sprite->data[5] = 0;
- sprite->callback = sub_80EF9B4;
+ sprite->callback = SpriteCB_ThrowBall_TenFrameDelay;
ballId = ItemIdToBallId(gLastUsedItem);
switch (ballId)
@@ -869,17 +871,17 @@ static void sub_80EF8F0(struct Sprite *sprite)
}
}
-static void sub_80EF9B4(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_TenFrameDelay(struct Sprite *sprite)
{
if (++sprite->data[5] == 10)
{
sprite->data[5] = CreateTask(TaskDummy, 50);
- sprite->callback = sub_80EFA0C;
+ sprite->callback = SpriteCB_ThrowBall_ShrinkMon;
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0;
}
}
-static void sub_80EFA0C(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_ShrinkMon(struct Sprite *sprite)
{
u8 spriteId;
u8 taskId;
@@ -894,10 +896,10 @@ static void sub_80EFA0C(struct Sprite *sprite)
case 0:
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
gTasks[taskId].data[10] = 256;
- sUnknown_3005424 = 28;
- sUnknown_300542C = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y);
- sUnknown_3005428 = (u32)(sUnknown_300542C * 256) / 28;
- gTasks[taskId].data[2] = sUnknown_3005428;
+ gMonShrinkDuration = 28;
+ gMonShrinkDistance = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y);
+ gMonShrinkDelta = (gMonShrinkDistance * 256) / gMonShrinkDuration;
+ gTasks[taskId].data[2] = gMonShrinkDelta;
gTasks[taskId].data[0]++;
break;
case 1:
@@ -919,13 +921,13 @@ static void sub_80EFA0C(struct Sprite *sprite)
DestroyTask(taskId);
StartSpriteAnim(sprite, 2);
sprite->data[5] = 0;
- sprite->callback = sub_80EFB58;
+ sprite->callback = SpriteCB_ThrowBall_InitialFall;
}
break;
}
}
-static void sub_80EFB58(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_InitialFall(struct Sprite *sprite)
{
int angle;
@@ -937,11 +939,11 @@ static void sub_80EFB58(struct Sprite *sprite)
angle = 0;
sprite->pos1.y += Cos(angle, 40);
sprite->pos2.y = -Cos(angle, sprite->data[4]);
- sprite->callback = sub_80EFB9C;
+ sprite->callback = SpriteCB_ThrowBall_Bounce;
}
}
-static void sub_80EFB9C(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_Bounce(struct Sprite *sprite)
{
bool8 lastBounce;
int bounceCount;
@@ -998,18 +1000,18 @@ static void sub_80EFB9C(struct Sprite *sprite)
if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_NO_SHAKES)
{
sprite->data[5] = 0;
- sprite->callback = sub_80EFF80;
+ sprite->callback = SpriteCB_ThrowBall_DelayThenBreakOut;
}
else
{
- sprite->callback = sub_80EFCA0;
+ sprite->callback = SpriteCB_ThrowBall_InitShake;
sprite->data[4] = 1;
sprite->data[5] = 0;
}
}
}
-static void sub_80EFCA0(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_InitShake(struct Sprite *sprite)
{
if (++sprite->data[3] == 31)
{
@@ -1017,12 +1019,12 @@ static void sub_80EFCA0(struct Sprite *sprite)
sprite->affineAnimPaused = TRUE;
StartSpriteAffineAnim(sprite, 1);
gBattleSpritesDataPtr->animationData->field_C = 0;
- sprite->callback = sub_80EFCEC;
+ sprite->callback = SpriteCB_ThrowBall_DoShake;
PlaySE(SE_BALL);
}
}
-static void sub_80EFCEC(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_DoShake(struct Sprite *sprite)
{
s8 state;
u16 var0;
@@ -1132,13 +1134,13 @@ static void sub_80EFCEC(struct Sprite *sprite)
if (state == gBattleSpritesDataPtr->animationData->ballThrowCaseId)
{
sprite->affineAnimPaused = TRUE;
- sprite->callback = sub_80EFF80;
+ sprite->callback = SpriteCB_ThrowBall_DelayThenBreakOut;
}
else
{
if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_3_SHAKES_SUCCESS && state == 3)
{
- sprite->callback = sub_80EFFA4;
+ sprite->callback = SpriteCB_ThrowBall_InitClick;
sprite->affineAnimPaused = TRUE;
}
else
@@ -1166,25 +1168,25 @@ static void sub_80EFCEC(struct Sprite *sprite)
}
}
-static void sub_80EFF80(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_DelayThenBreakOut(struct Sprite *sprite)
{
if (++sprite->data[5] == 31)
{
sprite->data[5] = 0;
- sprite->callback = sub_80F02B0;
+ sprite->callback = SpriteCB_ThrowBall_BeginBreakOut;
}
}
-static void sub_80EFFA4(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_InitClick(struct Sprite *sprite)
{
sprite->animPaused = TRUE;
- sprite->callback = sub_80EFFC4;
+ sprite->callback = SpriteCB_ThrowBall_DoClick;
sprite->data[3] = 0;
sprite->data[4] = 0;
sprite->data[5] = 0;
}
-static void sub_80EFFC4(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_DoClick(struct Sprite *sprite)
{
u8 *battler = &gBattleAnimTarget;
@@ -1193,7 +1195,7 @@ static void sub_80EFFC4(struct Sprite *sprite)
{
PlaySE(SE_BALL_CLICK);
BlendPalettes(0x10000 << sprite->oam.paletteNum, 6, RGB_BLACK);
- sub_80F01B8(sprite);
+ CreateStarsWhenBallClicks(sprite);
}
else if (sprite->data[4] == 60)
{
@@ -1211,11 +1213,11 @@ static void sub_80EFFC4(struct Sprite *sprite)
FreeOamMatrix(gSprites[gBattlerSpriteIds[*battler]].oam.matrixNum);
DestroySprite(&gSprites[gBattlerSpriteIds[*battler]]);
sprite->data[0] = 0;
- sprite->callback = sub_80F00A4;
+ sprite->callback = SpriteCB_ThrowBall_FinishClick;
}
}
-static void sub_80F00A4(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_FinishClick(struct Sprite *sprite)
{
u8 paletteIndex;
@@ -1251,13 +1253,13 @@ static void sub_80F00A4(struct Sprite *sprite)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
sprite->data[0] = 0;
- sprite->callback = sub_80F018C;
+ sprite->callback = BattleAnimObj_SignalEnd;
}
break;
}
}
-static void sub_80F018C(struct Sprite *sprite)
+static void BattleAnimObj_SignalEnd(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
@@ -1270,7 +1272,7 @@ static void sub_80F018C(struct Sprite *sprite)
}
}
-static void sub_80F01B8(struct Sprite *sprite)
+static void CreateStarsWhenBallClicks(struct Sprite *sprite)
{
u32 i;
u8 subpriority;
@@ -1285,37 +1287,37 @@ static void sub_80F01B8(struct Sprite *sprite)
sprite->subpriority = 1;
}
- sub_80F05B4(4);
+ LoadBallParticleGfx(BALL_MASTER);
for (i = 0; i < 3; i++)
{
- u8 spriteId = CreateSprite(&sBallParticlesSpriteTemplates[4], sprite->pos1.x, sprite->pos1.y, subpriority);
+ u8 spriteId = CreateSprite(&sBallParticlesSpriteTemplates[BALL_MASTER], sprite->pos1.x, sprite->pos1.y, subpriority);
if (spriteId != MAX_SPRITES)
{
- gSprites[spriteId].data[0] = 24;
- gSprites[spriteId].data[2] = sprite->pos1.x + sBallCaptureSuccessStarData[i].xOffset;
- gSprites[spriteId].data[4] = sprite->pos1.y + sBallCaptureSuccessStarData[i].yOffset;
- gSprites[spriteId].data[5] = sBallCaptureSuccessStarData[i].unk2;
+ gSprites[spriteId].sTransl_Speed = 24;
+ gSprites[spriteId].sTransl_DestX = sprite->pos1.x + sCaptureStar[i].xOffset;
+ gSprites[spriteId].sTransl_DestY = sprite->pos1.y + sCaptureStar[i].yOffset;
+ gSprites[spriteId].sTransl_ArcAmpl = sCaptureStar[i].amplitude;
InitAnimArcTranslation(&gSprites[spriteId]);
- gSprites[spriteId].callback = sub_80F0278;
- StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[4]);
+ gSprites[spriteId].callback = SpriteCB_BallCaptureSuccessStar;
+ StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[BALL_MASTER]);
}
}
}
-static void sub_80F0278(struct Sprite *sprite)
+static void SpriteCB_BallCaptureSuccessStar(struct Sprite *sprite)
{
sprite->invisible = !sprite->invisible;
if (TranslateAnimHorizontalArc(sprite))
DestroySprite(sprite);
}
-static void sub_80F02B0(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_BeginBreakOut(struct Sprite *sprite)
{
u8 ballId;
StartSpriteAnim(sprite, 1);
StartSpriteAffineAnim(sprite, 0);
- sprite->callback = sub_80F0378;
+ sprite->callback = SpriteCB_ThrowBall_RunBreakOut;
ballId = ItemIdToBallId(gLastUsedItem);
switch (ballId)
{
@@ -1331,7 +1333,7 @@ static void sub_80F02B0(struct Sprite *sprite)
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0x1000;
}
-static void sub_80F0378(struct Sprite *sprite)
+static void SpriteCB_ThrowBall_RunBreakOut(struct Sprite *sprite)
{
bool32 next = FALSE;
@@ -1354,13 +1356,13 @@ static void sub_80F0378(struct Sprite *sprite)
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0;
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->field_9_x2;
sprite->data[0] = 0;
- sprite->callback = sub_80F018C;
+ sprite->callback = BattleAnimObj_SignalEnd;
gDoingBattleAnim = FALSE;
UpdateOamPriorityInAllHealthboxes(1);
}
}
-static void sub_80F0478(struct Sprite *sprite)
+static void TrainerBallBlock(struct Sprite *sprite)
{
int i;
@@ -1370,10 +1372,10 @@ static void sub_80F0478(struct Sprite *sprite)
for (i = 0; i < 6; i++)
sprite->data[i] = 0;
- sprite->callback = sub_80F04B4;
+ sprite->callback = TrainerBallBlock2;
}
-static void sub_80F04B4(struct Sprite *sprite)
+static void TrainerBallBlock2(struct Sprite *sprite)
{
s16 var0 = sprite->data[0] + 0x800;
s16 var1 = sprite->data[1] + 0x680;
@@ -1386,7 +1388,7 @@ static void sub_80F04B4(struct Sprite *sprite)
|| sprite->pos1.x + sprite->pos2.x < -8)
{
sprite->data[0] = 0;
- sprite->callback = sub_80F018C;
+ sprite->callback = BattleAnimObj_SignalEnd;
gDoingBattleAnim = FALSE;
UpdateOamPriorityInAllHealthboxes(1);
}
@@ -1405,10 +1407,10 @@ static void GhostBallDodge(struct Sprite *sprite)
sprite->data[5] = 0x20;
InitAnimArcTranslation(sprite);
TranslateAnimVerticalArc(sprite);
- sprite->callback = sub_80F0574;
+ sprite->callback = GhostBallDodge2;
}
-static void sub_80F0574(struct Sprite *sprite)
+static void GhostBallDodge2(struct Sprite *sprite)
{
if (!TranslateAnimVerticalArc(sprite))
{
@@ -1417,15 +1419,13 @@ static void sub_80F0574(struct Sprite *sprite)
}
sprite->data[0] = 0;
- sprite->callback = sub_80F018C;
+ sprite->callback = BattleAnimObj_SignalEnd;
gDoingBattleAnim = FALSE;
UpdateOamPriorityInAllHealthboxes(1);
}
-static void sub_80F05B4(u8 ballId)
+static void LoadBallParticleGfx(u8 ballId)
{
- u8 taskId;
-
if (GetSpriteTileStartByTag(gBallParticleSpritesheets[ballId].tag) == 0xFFFF)
{
LoadCompressedSpriteSheetUsingHeap(&gBallParticleSpritesheets[ballId]);
@@ -1437,7 +1437,7 @@ u8 LaunchBallStarsTask(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId)
{
u8 taskId;
- sub_80F05B4(ballId);
+ LoadBallParticleGfx(ballId);
taskId = CreateTask(sBallParticleAnimationFuncs[ballId], 5);
gTasks[taskId].data[1] = x;
gTasks[taskId].data[2] = y;
@@ -1448,7 +1448,7 @@ u8 LaunchBallStarsTask(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId)
return taskId;
}
-void sub_80F0674(void)
+static void IncrementBattleParticleCounter(void)
{
if (gMain.inBattle)
gBattleSpritesDataPtr->animationData->field_A++;
@@ -1473,7 +1473,7 @@ static void PokeBallOpenParticleAnimation(u8 taskId)
spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
- sub_80F0674();
+ IncrementBattleParticleCounter();
StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
@@ -1532,7 +1532,7 @@ static void TimerBallOpenParticleAnimation(u8 taskId)
spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
- sub_80F0674();
+ IncrementBattleParticleCounter();
StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
@@ -1566,7 +1566,7 @@ static void DiveBallOpenParticleAnimation(u8 taskId)
spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
- sub_80F0674();
+ IncrementBattleParticleCounter();
StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
@@ -1601,7 +1601,7 @@ static void SafariBallOpenParticleAnimation(u8 taskId)
spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
- sub_80F0674();
+ IncrementBattleParticleCounter();
StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
@@ -1636,7 +1636,7 @@ static void UltraBallOpenParticleAnimation(u8 taskId)
spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
- sub_80F0674();
+ IncrementBattleParticleCounter();
StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
@@ -1677,7 +1677,7 @@ static void GreatBallOpenParticleAnimation(u8 taskId)
spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
- sub_80F0674();
+ IncrementBattleParticleCounter();
StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
@@ -1727,7 +1727,7 @@ static void RepeatBallOpenParticleAnimation(u8 taskId)
spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
- sub_80F0674();
+ IncrementBattleParticleCounter();
StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
@@ -1771,7 +1771,7 @@ static void MasterBallOpenParticleAnimation(u8 taskId)
spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
- sub_80F0674();
+ IncrementBattleParticleCounter();
StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
@@ -1815,7 +1815,7 @@ static void PremierBallOpenParticleAnimation(u8 taskId)
spriteId = CreateSprite(&sBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
- sub_80F0674();
+ IncrementBattleParticleCounter();
StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
@@ -1875,7 +1875,7 @@ u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 battler, u32 selectedPalettes, u8
{
u8 taskId;
- taskId = CreateTask(sub_80F12E0, 5);
+ taskId = CreateTask(Task_FadeMon_ToBallColor, 5);
gTasks[taskId].data[15] = ballId;
gTasks[taskId].data[3] = battler;
gTasks[taskId].data[10] = selectedPalettes;
@@ -1891,14 +1891,14 @@ u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 battler, u32 selectedPalettes, u8
BlendPalette(battler * 16 + 0x100, 16, 16, sBallOpenFadeColors[ballId]);
gTasks[taskId].data[0] = 16;
gTasks[taskId].data[1] = -1;
- gTasks[taskId].func = sub_80F1370;
+ gTasks[taskId].func = Task_FadeMon_ToNormal;
}
BeginNormalPaletteFade(selectedPalettes, 0, 0, 16, RGB_WHITE);
return taskId;
}
-static void sub_80F12E0(u8 taskId)
+static void Task_FadeMon_ToBallColor(u8 taskId)
{
u8 ballId = gTasks[taskId].data[15];
@@ -1916,17 +1916,17 @@ static void sub_80F12E0(u8 taskId)
}
}
-static void sub_80F1370(u8 taskId)
+static void Task_FadeMon_ToNormal(u8 taskId)
{
if (!gPaletteFade.active)
{
u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16);
BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB_WHITE);
- gTasks[taskId].func = sub_80F13C0;
+ gTasks[taskId].func = Task_FadeMon_ToNormal_Step;
}
}
-static void sub_80F13C0(u8 taskId)
+static void Task_FadeMon_ToNormal_Step(u8 taskId)
{
u8 ballId = gTasks[taskId].data[15];
@@ -2046,7 +2046,7 @@ void AnimTask_TargetToEffectBattler(u8 taskId)
DestroyAnimVisualTask(taskId);
}
-void sub_80F1720(u8 battler, struct Pokemon *mon)
+void TryShinyAnimation(u8 battler, struct Pokemon *mon)
{
bool32 isShiny;
u32 otId, personality;
@@ -2054,7 +2054,7 @@ void sub_80F1720(u8 battler, struct Pokemon *mon)
u8 taskId1, taskId2;
isShiny = FALSE;
- gBattleSpritesDataPtr->healthBoxesData[battler].flag_x80 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = TRUE;
otId = GetMonData(mon, MON_DATA_OT_ID);
personality = GetMonData(mon, MON_DATA_PERSONALITY);
@@ -2072,8 +2072,8 @@ void sub_80F1720(u8 battler, struct Pokemon *mon)
LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]);
}
- taskId1 = CreateTask(sub_80F181C, 10);
- taskId2 = CreateTask(sub_80F181C, 10);
+ taskId1 = CreateTask(AnimTask_ShinySparkles, 10);
+ taskId2 = CreateTask(AnimTask_ShinySparkles, 10);
gTasks[taskId1].data[0] = battler;
gTasks[taskId2].data[0] = battler;
gTasks[taskId1].data[1] = 0;
@@ -2082,10 +2082,10 @@ void sub_80F1720(u8 battler, struct Pokemon *mon)
}
}
- gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = 1;
}
-static void sub_80F181C(u8 taskId)
+static void AnimTask_ShinySparkles(u8 taskId)
{
u8 battler;
u8 x, y;
@@ -2128,11 +2128,11 @@ static void sub_80F181C(u8 taskId)
if (gTasks[taskId].data[1] == FALSE)
{
- gSprites[spriteId].callback = sub_80F1A2C;
+ gSprites[spriteId].callback = SpriteCB_ShinySparkles_1;
}
else
{
- gSprites[spriteId].callback = sub_80F1A80;
+ gSprites[spriteId].callback = SpriteCB_ShinySparkles_2;
gSprites[spriteId].pos2.x = -32;
gSprites[spriteId].pos2.y = 32;
gSprites[spriteId].invisible = TRUE;
@@ -2153,10 +2153,10 @@ static void sub_80F181C(u8 taskId)
gTasks[taskId].data[12]++;
if (gTasks[taskId].data[11] == 5)
- gTasks[taskId].func = sub_80F19E0;
+ gTasks[taskId].func = AnimTask_ShinySparkles_WaitSparkles;
}
-static void sub_80F19E0(u8 taskId)
+static void AnimTask_ShinySparkles_WaitSparkles(u8 taskId)
{
u8 battler;
@@ -2165,14 +2165,14 @@ static void sub_80F19E0(u8 taskId)
if (gTasks[taskId].data[1] == TRUE)
{
battler = gTasks[taskId].data[0];
- gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = 1;
}
DestroyTask(taskId);
}
}
-static void sub_80F1A2C(struct Sprite *sprite)
+static void SpriteCB_ShinySparkles_1(struct Sprite *sprite)
{
sprite->pos2.x = Sin(sprite->data[1], 24);
sprite->pos2.y = Cos(sprite->data[1], 24);
@@ -2185,7 +2185,7 @@ static void sub_80F1A2C(struct Sprite *sprite)
}
}
-static void sub_80F1A80(struct Sprite *sprite)
+static void SpriteCB_ShinySparkles_2(struct Sprite *sprite)
{
if (sprite->data[1] < 4)
{
@@ -2207,7 +2207,7 @@ static void sub_80F1A80(struct Sprite *sprite)
void AnimTask_LoadBaitGfx(u8 taskId)
{
- u8 paletteIndex;
+ UNUSED u8 paletteIndex;
LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_SAFARI_BAIT - ANIM_SPRITES_START]);
LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_SAFARI_BAIT - ANIM_SPRITES_START]);
@@ -2222,35 +2222,35 @@ void AnimTask_FreeBaitGfx(u8 taskId)
DestroyAnimVisualTask(taskId);
}
-static void sub_80F1B3C(struct Sprite *sprite)
+static void SpriteCB_SafariBaitOrRock_Init(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, 0);
- sprite->data[0] = 30;
- sprite->data[2] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_X) + gBattleAnimArgs[2];
- sprite->data[4] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_Y) + gBattleAnimArgs[3];
- sprite->data[5] = -32;
+ sprite->sTransl_Speed = 30;
+ sprite->sTransl_DestX = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_X) + gBattleAnimArgs[2];
+ sprite->sTransl_DestY = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_Y) + gBattleAnimArgs[3];
+ sprite->sTransl_ArcAmpl = -32;
InitAnimArcTranslation(sprite);
- gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = sub_8012354;
- sprite->callback = sub_80F1BCC;
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = SpriteCB_PlayerThrowInit;
+ sprite->callback = SpriteCB_SafariBaitOrRock_WaitPlayerThrow;
}
-static void sub_80F1BCC(struct Sprite *sprite)
+static void SpriteCB_SafariBaitOrRock_WaitPlayerThrow(struct Sprite *sprite)
{
if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animCmdIndex == 1)
- sprite->callback = sub_80F1C04;
+ sprite->callback = SpriteCB_SafariBaitOrRock_ArcFlight;
}
-static void sub_80F1C04(struct Sprite *sprite)
+static void SpriteCB_SafariBaitOrRock_ArcFlight(struct Sprite *sprite)
{
if (TranslateAnimHorizontalArc(sprite))
{
sprite->data[0] = 0;
sprite->invisible = TRUE;
- sprite->callback = sub_80F1C30;
+ sprite->callback = SpriteCB_SafariBaitOrRock_Finish;
}
}
-static void sub_80F1C30(struct Sprite *sprite)
+static void SpriteCB_SafariBaitOrRock_Finish(struct Sprite *sprite)
{
if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animEnded)
{
@@ -2262,7 +2262,7 @@ static void sub_80F1C30(struct Sprite *sprite)
}
}
-void sub_80F1C8C(u8 taskId)
+void AnimTask_SafariOrGhost_DecideAnimSides(u8 taskId)
{
switch (gBattleAnimArgs[0])
{
@@ -2279,7 +2279,7 @@ void sub_80F1C8C(u8 taskId)
DestroyAnimVisualTask(taskId);
}
-void sub_80F1CE4(u8 taskId)
+void AnimTask_SafariGetReaction(u8 taskId)
{
if (gBattleCommunication[MULTISTRING_CHOOSER] > 2)
gBattleAnimArgs[7] = 0;
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c
index e8042df92..ae2a4a407 100644
--- a/src/battle_anim_utility_funcs.c
+++ b/src/battle_anim_utility_funcs.c
@@ -33,9 +33,9 @@ static void sub_80BC19C(u8 taskId);
static EWRAM_DATA struct AnimStatsChangeData *sAnimStatsChangeData = NULL;
-static const u16 gUnknown_83E7CC8[] = { RGB(31, 31, 31) };
-const u8 gUnknown_83E7CCA[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT };
-const u8 gUnknown_83E7CCE[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT };
+static const u16 sRgbWhite[] = { RGB(31, 31, 31) };
+const u8 gBattleAnimRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT };
+const u8 gBattleIntroRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT };
// gBattleAnimArgs[0] is a bitfield.
// Bits 0-10 result in the following palettes being selected:
@@ -331,12 +331,12 @@ void AnimTask_SetUpCurseBackground(u8 taskId)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
newSpriteId = sub_8076E34(gBattleAnimAttacker, spriteId, species);
- sub_80752A0(&animBgData);
+ GetBattleAnimBg1Data(&animBgData);
AnimLoadCompressedBgTilemap(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_tilemap);
if (IsContest())
sub_80730C0(animBgData.paletteId, animBgData.bgTilemap, 0, 0);
AnimLoadCompressedBgGfx(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_sheet, animBgData.tilesOffset);
- LoadPalette(gUnknown_83E7CC8, animBgData.paletteId * 16 + 1, 2);
+ LoadPalette(sRgbWhite, animBgData.paletteId * 16 + 1, 2);
gBattle_BG1_X = -gSprites[spriteId].pos1.x + 32;
gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
gTasks[taskId].data[0] = newSpriteId;
@@ -358,7 +358,7 @@ static void sub_80BAF38(u8 taskId)
gBattle_BG1_Y += 64;
if (++gTasks[taskId].data[11] == 4)
{
- sub_8073128(0);
+ ResetBattleAnimBg(0);
gBattle_WIN0H = 0;
gBattle_WIN0V = 0;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR
@@ -377,8 +377,8 @@ static void sub_80BAF38(u8 taskId)
sprite = &gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)]; // unused
sprite = &gSprites[gTasks[taskId].data[0]];
DestroySprite(sprite);
- sub_80752A0(&animBgData);
- sub_8075358(animBgData.bgId);
+ GetBattleAnimBg1Data(&animBgData);
+ InitBattleAnimBg(animBgData.bgId);
if (gTasks[taskId].data[6] == 1)
++gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority;
gBattle_BG1_Y = 0;
@@ -452,7 +452,7 @@ static void sub_80BB2A0(u8 taskId)
battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2];
newSpriteId = sub_8076E34(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species);
}
- sub_80752A0(&animBgData);
+ GetBattleAnimBg1Data(&animBgData);
if (sAnimStatsChangeData->data[0] == 0)
AnimLoadCompressedBgTilemap(animBgData.bgId, gBattleStatMask1_Tilemap);
else
@@ -548,7 +548,7 @@ static void sub_80BB4B8(u8 taskId)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
if (gTasks[taskId].data[12] == 0)
{
- sub_8073128(0);
+ ResetBattleAnimBg(0);
++gTasks[taskId].data[15];
}
}
@@ -663,7 +663,7 @@ void AnimTask_StartSlidingBg(u8 taskId)
{
u8 newTaskId;
- sub_8075458(0);
+ ToggleBg3Mode(0);
newTaskId = CreateTask(sub_80BB8A4, 5);
if (gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
@@ -689,7 +689,7 @@ static void sub_80BB8A4(u8 taskId)
{
gBattle_BG3_X = 0;
gBattle_BG3_Y = 0;
- sub_8075458(1);
+ ToggleBg3Mode(1);
DestroyTask(taskId);
}
}
@@ -755,7 +755,7 @@ void sub_80BBA20(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5,
spriteId = sub_8076E34(battler1, gBattlerSpriteIds[battler1], species);
if (arg4)
newSpriteId = sub_8076E34(battler2, gBattlerSpriteIds[battler2], species);
- sub_80752A0(&animBgData);
+ GetBattleAnimBg1Data(&animBgData);
AnimLoadCompressedBgTilemap(animBgData.bgId, tilemap);
if (IsContest())
sub_80730C0(animBgData.paletteId, animBgData.bgTilemap, 0, 0);
@@ -805,7 +805,7 @@ static void sub_80BBC2C(u8 taskId)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
if (gTasks[taskId].data[12] == 0)
{
- sub_8073128(0);
+ ResetBattleAnimBg(0);
gBattle_WIN0H = 0;
gBattle_WIN0V = 0;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR
@@ -839,13 +839,13 @@ void AnimTask_GetBattleTerrain(u8 taskId)
void AnimTask_AllocBackupPalBuffer(u8 taskId)
{
- gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
+ gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000);
DestroyAnimVisualTask(taskId);
}
void AnimTask_FreeBackupPalBuffer(u8 taskId)
{
- FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C);
+ FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
DestroyAnimVisualTask(taskId);
}
@@ -863,7 +863,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId)
paletteIndex = gBattleAnimAttacker + 16;
else if (gBattleAnimArgs[0] == 2)
paletteIndex = gBattleAnimTarget + 16;
- memcpy(&gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], &gPlttBufferUnfaded[paletteIndex * 16], 32);
+ memcpy(&gMonSpritesGfxPtr->multiUseBuffer[gBattleAnimArgs[1] * 16], &gPlttBufferUnfaded[paletteIndex * 16], 32);
DestroyAnimVisualTask(taskId);
}
@@ -881,7 +881,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId)
paletteIndex = gBattleAnimAttacker + 16;
else if (gBattleAnimArgs[0] == 2)
paletteIndex = gBattleAnimTarget + 16;
- memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], 32);
+ memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gMonSpritesGfxPtr->multiUseBuffer[gBattleAnimArgs[1] * 16], 32);
DestroyAnimVisualTask(taskId);
}
diff --git a/src/battle_bg.c b/src/battle_bg.c
index e66180c4d..32d3e017a 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -85,7 +85,7 @@ static const struct SpriteTemplate sVsLetter_V_SpriteTemplate = {
.oam = &gOamData_82482A0,
.anims = gDummySpriteAnimTable,
.affineAnims = gAffineAnimTable_82482E0,
- .callback = nullsub_9
+ .callback = SpriteCB_VsLetterDummy
};
static const struct SpriteTemplate sVsLetter_S_SpriteTemplate = {
@@ -94,7 +94,7 @@ static const struct SpriteTemplate sVsLetter_S_SpriteTemplate = {
.oam = &gOamData_82482A8,
.anims = gDummySpriteAnimTable,
.affineAnims = gAffineAnimTable_82482E0,
- .callback = nullsub_9
+ .callback = SpriteCB_VsLetterDummy
};
static const struct CompressedSpriteSheet sVsLettersSpriteSheet = {
@@ -584,7 +584,7 @@ UNUSED void CreateUnknownDebugSprite(void)
u8 spriteId;
ResetSpriteData();
- spriteId = CreateSprite(&gUnknown_824EFF0, 0, 0, 0);
+ spriteId = CreateSprite(&gUnknownDebugSprite, 0, 0, 0);
gSprites[spriteId].invisible = TRUE;
SetMainCallback2(CB2_unused);
}
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index f3966e832..62e17df32 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -79,11 +79,11 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst);
static void SetLinkOpponentMonData(u8 monId);
static void DoSwitchOutAnimation(void);
static void LinkOpponentDoMoveAnimation(void);
-static void sub_803AEDC(void);
-static void sub_803C550(u8 battlerId, bool8 dontClearSubstituteBit);
-static void sub_803D564(u8 taskId);
-static void sub_803D648(struct Sprite *sprite);
-static void sub_803D790(void);
+static void SwitchIn_HandleSoundAndEnd(void);
+static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
+static void Task_StartSendOutAnim(u8 taskId);
+static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite);
+static void EndDrawPartyStatusSummary(void);
static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
@@ -147,7 +147,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
};
-static void nullsub_19(void)
+static void LinkOpponentDummy(void)
{
}
@@ -173,7 +173,7 @@ static void CompleteOnBattlerSpriteCallbackDummy(void)
LinkOpponentBufferExecCompleted();
}
-static void sub_803A70C(void)
+static void FreeTrainerSpriteAfterSlide(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
@@ -185,16 +185,16 @@ static void sub_803A70C(void)
}
}
-static void sub_803A79C(void)
+static void Intro_DelayAndEnd(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
LinkOpponentBufferExecCompleted();
}
}
-static void sub_803A7E4(void)
+static void Intro_WaitForShinyAnimAndHealthbox(void)
{
bool8 var = FALSE;
@@ -214,15 +214,15 @@ static void sub_803A7E4(void)
{
if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
- || !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
+ || !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
return;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
}
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
@@ -233,63 +233,63 @@ static void sub_803A7E4(void)
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
- gBattlerControllerFuncs[gActiveBattler] = sub_803A79C;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
}
}
-static void sub_803A9CC(void)
+static void Intro_TryShinyAnimShowHealthbox(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
- sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80)
- sub_80F1720(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
+ TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim)
+ TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (gBattleTypeFlags & BATTLE_TYPE_MULTI && GetBattlerPosition(gActiveBattler) == 3)
{
- if (++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 1)
+ if (++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 1)
return;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
}
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK],
&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler ^ BIT_FLANK);
+ StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
SetBattlerShadowSpriteCallback(gActiveBattler ^ BIT_FLANK, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], MON_DATA_SPECIES));
}
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
- gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattlerControllerFuncs[gActiveBattler] = sub_803A7E4;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 0;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForShinyAnimAndHealthbox;
}
}
-static void sub_803AC14(void)
+static void TryShinyAnimAfterMonAnim(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE
&& gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
{
- sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
- else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
LinkOpponentBufferExecCompleted();
}
}
@@ -306,7 +306,7 @@ static void CompleteOnHealthbarDone(void)
LinkOpponentBufferExecCompleted();
}
-static void sub_803AD20(void)
+static void HideHealthboxAfterMonFaint(void)
{
if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse)
{
@@ -315,7 +315,7 @@ static void sub_803AD20(void)
}
}
-static void sub_803AD64(void)
+static void FreeMonSpriteAfterSwitchOutAnim(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
@@ -352,17 +352,17 @@ static void DoHitAnimBlinkSpriteEffect(void)
}
}
-static void sub_803AE6C(void)
+static void SwitchIn_ShowSubstitute(void)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattlerControllerFuncs[gActiveBattler] = sub_803AEDC;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_HandleSoundAndEnd;
}
}
-static void sub_803AEDC(void)
+static void SwitchIn_HandleSoundAndEnd(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive && !IsCryPlayingOrClearCrySongs())
{
@@ -371,35 +371,35 @@ static void sub_803AEDC(void)
}
}
-static void sub_803AF28(void)
+static void SwitchIn_ShowHealthbox(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
CopyBattleSpriteInvisibility(gActiveBattler);
- gBattlerControllerFuncs[gActiveBattler] = sub_803AE6C;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_ShowSubstitute;
}
}
-static void sub_803AFFC(void)
+static void SwitchIn_TryShinyAnim(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
- sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
+ TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy
+ if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
- gBattlerControllerFuncs[gActiveBattler] = sub_803AF28;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_ShowHealthbox;
}
}
@@ -1029,38 +1029,38 @@ static void LinkOpponentHandleLoadMonSprite(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
- gBattlerControllerFuncs[gActiveBattler] = sub_803AC14;
+ gBattlerControllerFuncs[gActiveBattler] = TryShinyAnimAfterMonAnim;
}
static void LinkOpponentHandleSwitchInAnim(void)
{
gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
- sub_803C550(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
- gBattlerControllerFuncs[gActiveBattler] = sub_803AFFC;
+ StartSendOutAnim(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_TryShinyAnim;
}
-static void sub_803C550(u8 battlerId, bool8 dontClearSubstituteBit)
+static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
{
u16 species;
ClearTemporarySpeciesSpriteData(battlerId, dontClearSubstituteBit);
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
- gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C);
+ gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
GetBattlerSpriteSubpriority(battlerId));
- gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
+ gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
+ gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
}
static void LinkOpponentHandleReturnMonToBall(void)
@@ -1095,7 +1095,7 @@ static void DoSwitchOutAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_OPPONENT_MON);
- gBattlerControllerFuncs[gActiveBattler] = sub_803AD64;
+ gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterSwitchOutAnim;
}
break;
}
@@ -1135,7 +1135,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
xPos = 176;
if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
{
- trainerPicId = sub_80447AC();
+ trainerPicId = GetUnionRoomTrainerPic();
}
else if ((gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_RUBY
|| (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_SAPPHIRE
@@ -1167,7 +1167,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
}
@@ -1184,7 +1184,7 @@ static void LinkOpponentHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
- gBattlerControllerFuncs[gActiveBattler] = sub_803A70C;
+ gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
}
static void LinkOpponentHandleFaintAnimation(void)
@@ -1202,7 +1202,7 @@ static void LinkOpponentHandleFaintAnimation(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_TARGET);
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon;
- gBattlerControllerFuncs[gActiveBattler] = sub_803AD20;
+ gBattlerControllerFuncs[gActiveBattler] = HideHealthboxAfterMonFaint;
}
}
}
@@ -1229,7 +1229,7 @@ static void LinkOpponentHandlePause(void)
static void LinkOpponentHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
@@ -1271,7 +1271,7 @@ static void LinkOpponentDoMoveAnimation(void)
case 1:
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- sub_8035450(0);
+ SetBattlerSpriteAffineMode(0);
DoMoveAnim(move);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
@@ -1280,7 +1280,7 @@ static void LinkOpponentDoMoveAnimation(void)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- sub_8035450(1);
+ SetBattlerSpriteAffineMode(1);
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
@@ -1309,7 +1309,7 @@ static void LinkOpponentHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- if (sub_80D89B0(*stringId))
+ if (BattleStringShouldBeColored(*stringId))
BattlePutTextOnWindow(gDisplayedStringBattle, 0x40);
else
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
@@ -1380,7 +1380,7 @@ static void LinkOpponentHandleExpUpdate(void)
static void LinkOpponentHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 battlerId;
@@ -1393,7 +1393,7 @@ static void LinkOpponentHandleStatusIconUpdate(void)
static void LinkOpponentHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
@@ -1532,16 +1532,16 @@ static void LinkOpponentHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
- StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_803D648);
- taskId = CreateTask(sub_803D564, 5);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
+ taskId = CreateTask(Task_StartSendOutAnim, 5);
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
- gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_19;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 1;
+ gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDummy;
}
-static void sub_803D564(u8 taskId)
+static void Task_StartSendOutAnim(u8 taskId)
{
u8 savedActiveBank = gActiveBattler;
@@ -1549,23 +1549,23 @@ static void sub_803D564(u8 taskId)
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_803C550(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
}
else
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_803C550(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler = BATTLE_PARTNER(gActiveBattler);
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_803C550(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler = BATTLE_PARTNER(gActiveBattler);
}
- gBattlerControllerFuncs[gActiveBattler] = sub_803A9CC;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_TryShinyAnimShowHealthbox;
gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
-static void sub_803D648(struct Sprite *sprite)
+static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite)
{
FreeTrainerFrontPicPaletteAndTile(sprite->oam.affineParam);
sprite->oam.tileNum = sprite->data[5];
@@ -1585,29 +1585,29 @@ static void LinkOpponentHandleDrawPartyStatusSummary(void)
if (gBattleBufferA[gActiveBattler][2])
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E < 2)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2)
{
- ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E;
+ ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay;
return;
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay = 0;
}
}
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
if (gBattleBufferA[gActiveBattler][2])
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
- gBattlerControllerFuncs[gActiveBattler] = sub_803D790;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0x5D;
+ gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
}
}
-static void sub_803D790(void)
+static void EndDrawPartyStatusSummary(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 0x5C)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
LinkOpponentBufferExecCompleted();
}
}
@@ -1636,7 +1636,7 @@ static void LinkOpponentHandleSpriteInvisibility(void)
static void LinkOpponentHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 animationId = gBattleBufferA[gActiveBattler][1];
u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
@@ -1667,7 +1667,7 @@ static void LinkOpponentHandleCmd55(void)
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
LinkOpponentBufferExecCompleted();
- gBattlerControllerFuncs[gActiveBattler] = sub_802F6A8;
+ gBattlerControllerFuncs[gActiveBattler] = SetBattleEndCallbacks;
}
static void LinkOpponentCmdEnd(void)
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 2d95a756f..bb06e6f9a 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -73,14 +73,14 @@ static void LinkPartnerCmdEnd(void);
static void LinkPartnerBufferRunCommand(void);
static void LinkPartnerBufferExecCompleted(void);
-static void sub_80D481C(void);
+static void SwitchIn_WaitAndEnd(void);
static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst);
static void SetLinkPartnerMonData(u8 monId);
-static void sub_80D5F40(u8 battlerId, bool8 dontClearSubstituteBit);
+static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
static void DoSwitchOutAnimation(void);
static void LinkPartnerDoMoveAnimation(void);
-static void sub_80D6ED0(u8 taskId);
-static void sub_80D70A0(void);
+static void Task_StartSendOutAnim(u8 taskId);
+static void EndDrawPartyStatusSummary(void);
static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
@@ -143,7 +143,7 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
LinkPartnerCmdEnd
};
-static void nullsub_77(void)
+static void LinkPartnerDummy(void)
{
}
@@ -169,27 +169,27 @@ static void CompleteOnBattlerSpriteCallbackDummy(void)
LinkPartnerBufferExecCompleted();
}
-static void sub_80D42A8(void)
+static void FreeTrainerSpriteAfterSlide(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- nullsub_16(0);
+ BattleGfxSfxDummy3(0);
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
LinkPartnerBufferExecCompleted();
}
}
-static void sub_80D4310(void)
+static void Intro_DelayAndEnd(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
LinkPartnerBufferExecCompleted();
}
}
-static void sub_80D4358(void)
+static void Intro_WaitForHealthbox(void)
{
bool32 var = FALSE;
@@ -207,41 +207,41 @@ static void sub_80D4358(void)
var = FALSE;
if (var)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
- gBattlerControllerFuncs[gActiveBattler] = sub_80D4310;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
}
}
-static void sub_80D443C(void)
+static void Intro_ShowHealthbox(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
- if (++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 != 1)
+ if (++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay != 1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK],
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler ^ BIT_FLANK);
+ StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
- gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattlerControllerFuncs[gActiveBattler] = sub_80D4358;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 0;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForHealthbox;
}
}
}
-static void sub_80D4590(void)
+static void WaitForMonAnimAfterLoad(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
LinkPartnerBufferExecCompleted();
@@ -263,7 +263,7 @@ static void CompleteOnHealthbarDone(void)
}
}
-static void sub_80D4640(void)
+static void FreeMonSpriteAfterFaintAnim(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
{
@@ -274,7 +274,7 @@ static void sub_80D4640(void)
}
}
-static void sub_80D46A8(void)
+static void FreeMonSpriteAfterSwitchOutAnim(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
@@ -310,51 +310,51 @@ static void DoHitAnimBlinkSpriteEffect(void)
}
}
-static void sub_80D47AC(void)
+static void SwitchIn_ShowSubstitute(void)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattlerControllerFuncs[gActiveBattler] = sub_80D481C;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_WaitAndEnd;
}
}
-static void sub_80D481C(void)
+static void SwitchIn_WaitAndEnd(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
LinkPartnerBufferExecCompleted();
}
-static void sub_80D484C(void)
+static void SwitchIn_ShowHealthbox(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
- CreateTask(c3_0802FDF4, 10);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
+ CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
CopyBattleSpriteInvisibility(gActiveBattler);
- gBattlerControllerFuncs[gActiveBattler] = sub_80D47AC;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_ShowSubstitute;
}
}
-static void sub_80D4944(void)
+static void SwitchIn_TryShinyAnim(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
- sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy
+ TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]);
- gBattlerControllerFuncs[gActiveBattler] = sub_80D484C;
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_ShowHealthbox;
}
}
@@ -985,7 +985,7 @@ static void LinkPartnerHandleLoadMonSprite(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
- gBattlerControllerFuncs[gActiveBattler] = sub_80D4590;
+ gBattlerControllerFuncs[gActiveBattler] = WaitForMonAnimAfterLoad;
}
static void LinkPartnerHandleSwitchInAnim(void)
@@ -993,31 +993,31 @@ static void LinkPartnerHandleSwitchInAnim(void)
ClearTemporarySpeciesSpriteData(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- sub_80D5F40(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
- gBattlerControllerFuncs[gActiveBattler] = sub_80D4944;
+ StartSendOutAnim(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_TryShinyAnim;
}
-static void sub_80D5F40(u8 battlerId, bool8 dontClearSubstituteBit)
+static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
{
u16 species;
ClearTemporarySpeciesSpriteData(battlerId, dontClearSubstituteBit);
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
- gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C);
+ gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
GetBattlerSpriteSubpriority(battlerId));
- gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
+ gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
+ gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void LinkPartnerHandleReturnMonToBall(void)
@@ -1050,7 +1050,7 @@ static void DoSwitchOutAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON);
- gBattlerControllerFuncs[gActiveBattler] = sub_80D46A8;
+ gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterSwitchOutAnim;
}
break;
}
@@ -1077,7 +1077,7 @@ static void LinkPartnerHandleDrawTrainerPic(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
}
@@ -1094,7 +1094,7 @@ static void LinkPartnerHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
- gBattlerControllerFuncs[gActiveBattler] = sub_80D42A8;
+ gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
}
static void LinkPartnerHandleFaintAnimation(void)
@@ -1114,8 +1114,8 @@ static void LinkPartnerHandleFaintAnimation(void)
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8012110;
- gBattlerControllerFuncs[gActiveBattler] = sub_80D4640;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintSlideAnim;
+ gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterFaintAnim;
}
}
}
@@ -1142,7 +1142,7 @@ static void LinkPartnerHandlePause(void)
static void LinkPartnerHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
@@ -1184,7 +1184,7 @@ static void LinkPartnerDoMoveAnimation(void)
case 1:
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- sub_8035450(0);
+ SetBattlerSpriteAffineMode(0);
DoMoveAnim(move);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
@@ -1193,7 +1193,7 @@ static void LinkPartnerDoMoveAnimation(void)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- sub_8035450(1);
+ SetBattlerSpriteAffineMode(1);
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
@@ -1222,7 +1222,7 @@ static void LinkPartnerHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- if (sub_80D89B0(*stringId))
+ if (BattleStringShouldBeColored(*stringId))
BattlePutTextOnWindow(gDisplayedStringBattle, 0x40);
else
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
@@ -1293,7 +1293,7 @@ static void LinkPartnerHandleExpUpdate(void)
static void LinkPartnerHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 battlerId;
@@ -1306,7 +1306,7 @@ static void LinkPartnerHandleStatusIconUpdate(void)
static void LinkPartnerHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
@@ -1448,7 +1448,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
- StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80335F8);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F9);
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
@@ -1459,15 +1459,15 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 0;
LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, 0x100 + paletteNum * 16, 32);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
- taskId = CreateTask(sub_80D6ED0, 5);
+ taskId = CreateTask(Task_StartSendOutAnim, 5);
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
- gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_77;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 1;
+ gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDummy;
}
-static void sub_80D6ED0(u8 taskId)
+static void Task_StartSendOutAnim(u8 taskId)
{
if (gTasks[taskId].data[1] < 24)
{
@@ -1481,19 +1481,19 @@ static void sub_80D6ED0(u8 taskId)
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_80D5F40(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
}
else
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_80D5F40(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK;
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- sub_80D5F40(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK;
}
- gBattlerControllerFuncs[gActiveBattler] = sub_80D443C;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_ShowHealthbox;
gActiveBattler = savedActiveBattler;
DestroyTask(taskId);
}
@@ -1507,22 +1507,22 @@ static void LinkPartnerHandleDrawPartyStatusSummary(void)
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE;
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
- if (gBattleBufferA[gActiveBattler][2])
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
+ if (gBattleBufferA[gActiveBattler][2]) // Skip delay on battle start
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 93;
- gBattlerControllerFuncs[gActiveBattler] = sub_80D70A0;
+ gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
}
}
-static void sub_80D70A0(void)
+static void EndDrawPartyStatusSummary(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 92)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
LinkPartnerBufferExecCompleted();
}
}
@@ -1551,7 +1551,7 @@ static void LinkPartnerHandleSpriteInvisibility(void)
static void LinkPartnerHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 animationId = gBattleBufferA[gActiveBattler][1];
u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
@@ -1579,7 +1579,7 @@ static void LinkPartnerHandleCmd55(void)
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
LinkPartnerBufferExecCompleted();
- gBattlerControllerFuncs[gActiveBattler] = sub_802F6A8;
+ gBattlerControllerFuncs[gActiveBattler] = SetBattleEndCallbacks;
}
static void LinkPartnerCmdEnd(void)
diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c
index d6833942a..9b31e2711 100644
--- a/src/battle_controller_oak_old_man.c
+++ b/src/battle_controller_oak_old_man.c
@@ -15,6 +15,7 @@
#include "battle_interface.h"
#include "battle_message.h"
#include "reshow_battle_screen.h"
+#include "battle_string_ids.h"
#include "constants/songs.h"
#include "constants/items.h"
@@ -80,21 +81,21 @@ static void OakOldManBufferRunCommand(void);
static void OakOldManBufferExecCompleted(void);
static void WaitForMonSelection(void);
static void CompleteWhenChoseItem(void);
-static void sub_80E8704(void);
-static void sub_80E7CD8(void);
-static void sub_80E835C(void);
+static void PrintOakText_KeepAnEyeOnHP(void);
+static void Intro_WaitForShinyAnimAndHealthbox(void);
+static void PrintOakText_ForPetesSake(void);
static void Task_LaunchLvlUpAnim(u8 taskId);
static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId);
static void CompleteOnInactiveTextPrinter2(void);
static void Task_PrepareToGiveExpWithExpBar(u8 taskId);
-static void sub_80E804C(u8 taskId);
+static void Task_GiveExpWithExpBar(u8 taskId);
static void Task_UpdateLvlInHealthbox(u8 taskId);
-static void sub_80E85D4(const u8 *text, u8 a1);
+static void PrintOakTextWithMainBgDarkened(const u8 *text, u8 delay);
static u32 CopyOakOldManMonData(u8 monId, u8 *dst);
static void SetOakOldManMonData(u8 monId);
static void OakOldManDoMoveAnimation(void);
static void HandleInputChooseAction(void);
-static void sub_80EB0A8(u8 taskId);
+static void Task_StartSendOutAnim(u8 taskId);
static void (*const sOakOldManBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
@@ -157,17 +158,17 @@ static void (*const sOakOldManBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
OakOldManCmdEnd,
};
-static void nullsub_81(void)
+static void OakOldManDummy(void)
{
}
void SetControllerToOakOrOldMan(void)
{
gBattlerControllerFuncs[gActiveBattler] = OakOldManBufferRunCommand;
- gBattleStruct->field_94 = 0;
- gBattleStruct->field_95 = 0;
- gBattleStruct->field_96 = 0;
- gBattleStruct->field_97 = 0;
+ gBattleStruct->simulatedInputState[0] = 0;
+ gBattleStruct->simulatedInputState[1] = 0;
+ gBattleStruct->simulatedInputState[2] = 0;
+ gBattleStruct->simulatedInputState[3] = 0;
}
static void OakOldManBufferRunCommand(void)
@@ -183,6 +184,7 @@ static void OakOldManBufferRunCommand(void)
static void HandleInputChooseAction(void)
{
+ // Like player, but specifically for Rival in Oak's Lab
u16 itemId = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1);
@@ -274,27 +276,30 @@ static void HandleInputChooseAction(void)
}
}
-static void sub_80E7844(void)
+static void SimulateInputChooseAction(void)
{
- switch (gBattleStruct->field_94)
+ // Old Man
+ switch (gBattleStruct->simulatedInputState[0])
{
case 0:
- gBattleStruct->field_96 = 64;
- ++gBattleStruct->field_94;
+ gBattleStruct->simulatedInputState[2] = 64;
+ ++gBattleStruct->simulatedInputState[0];
// fall through
case 1:
- if (--gBattleStruct->field_96 == 0)
+ if (--gBattleStruct->simulatedInputState[2] == 0)
{
+ // Move cursor to BAG
PlaySE(SE_SELECT);
ActionSelectionDestroyCursorAt(0);
ActionSelectionCreateCursorAt(1, 0);
- gBattleStruct->field_96 = 64;
- ++gBattleStruct->field_94;
+ gBattleStruct->simulatedInputState[2] = 64;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 2:
- if (--gBattleStruct->field_96 == 0)
+ if (--gBattleStruct->simulatedInputState[2] == 0)
{
+ // Open bag
PlaySE(SE_SELECT);
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
OakOldManBufferExecCompleted();
@@ -315,7 +320,7 @@ static void CompleteOnInactiveTextPrinter(void)
OakOldManBufferExecCompleted();
}
-static void sub_80E7930(void)
+static void OakOldManSetBattleEndCallbacks(void)
{
if (!gPaletteFade.active)
{
@@ -331,7 +336,7 @@ static void CompleteOnSpecialAnimDone(void)
OakOldManBufferExecCompleted();
}
-void sub_80E7988(void)
+void OakOldManHandleInputChooseMove(void)
{
HandleInputChooseMove();
if (!(gBattleControllerExecFlags & gBitTable[gActiveBattler]))
@@ -345,8 +350,8 @@ static void OpenPartyMenuToChooseMon(void)
u8 caseId;
gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection;
- caseId = gTasks[gUnknown_3004FFC[gActiveBattler]].data[0];
- DestroyTask(gUnknown_3004FFC[gActiveBattler]);
+ caseId = gTasks[gBattleControllerData[gActiveBattler]].data[0];
+ DestroyTask(gBattleControllerData[gActiveBattler]);
FreeAllWindowBuffers();
OpenPartyMenuInTutorialBattle(caseId);
}
@@ -369,7 +374,7 @@ static void OpenBagAndChooseItem(void)
if (!gPaletteFade.active)
{
gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem;
- nullsub_44();
+ ReshowBattleScreenDummy();
FreeAllWindowBuffers();
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
CB2_BagMenuFromBattle();
@@ -382,12 +387,12 @@ static void CompleteWhenChoseItem(void)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
- if (!sub_80EB2E0(4)
+ if (!BtlCtrl_OakOldMan_TestState2Flag(FIRST_BATTLE_MSG_FLAG_HP_RESTORE)
&& gSpecialVar_ItemId == ITEM_POTION
&& gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
{
- sub_80EB2F4(4);
- gBattlerControllerFuncs[gActiveBattler] = sub_80E8704;
+ BtlCtrl_OakOldMan_SetState2Flag(FIRST_BATTLE_MSG_FLAG_HP_RESTORE);
+ gBattlerControllerFuncs[gActiveBattler] = PrintOakText_KeepAnEyeOnHP;
}
else
{
@@ -397,55 +402,55 @@ static void CompleteWhenChoseItem(void)
}
}
-static void sub_80E7B4C(void)
+static void Intro_TryShinyAnimShowHealthbox(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
- sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80
+ TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
- sub_80F1720(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
+ TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK],
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler ^ BIT_FLANK);
+ StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
- gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattlerControllerFuncs[gActiveBattler] = sub_80E7CD8;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 0;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForShinyAnimAndHealthbox;
}
}
-static void sub_80E7CD8(void)
+static void Intro_WaitForShinyAnimAndHealthbox(void)
{
bool32 r4 = FALSE;
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
r4 = TRUE;
if (r4
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
- {
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
- CreateTask(c3_0802FDF4, 10);
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
+ {
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
+ CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- gBattlerControllerFuncs[gActiveBattler] = sub_80E835C;
+ gBattlerControllerFuncs[gActiveBattler] = PrintOakText_ForPetesSake;
}
}
@@ -515,10 +520,10 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId)
expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp;
SetBattleBarStruct(battlerId, gHealthboxSpriteIds[battlerId], expToNextLvl, exp, -gainedExp);
PlaySE(SE_EXP);
- gTasks[taskId].func = sub_80E804C;
+ gTasks[taskId].func = Task_GiveExpWithExpBar;
}
-static void sub_80E804C(u8 taskId)
+static void Task_GiveExpWithExpBar(u8 taskId)
{
if (gTasks[taskId].tExpTask_frames < 13)
{
@@ -588,7 +593,7 @@ static void Task_UpdateLvlInHealthbox(u8 taskId)
{
u8 monIndex = gTasks[taskId].tExpTask_monId;
- GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value.
+ GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value.
if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])
UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL);
else
@@ -608,7 +613,7 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
DestroyTask(taskId);
}
-static void sub_80E82F4(void)
+static void FreeMonSpriteAfterFaintAnim(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
{
@@ -619,46 +624,46 @@ static void sub_80E82F4(void)
}
}
-static void sub_80E835C(void)
+static void PrintOakText_ForPetesSake(void)
{
u32 mask;
-
- switch (gBattleStruct->field_94)
+
+ switch (gBattleStruct->simulatedInputState[0])
{
case 0:
if (!gPaletteFade.active)
{
- sub_80EEFC8(&gBattleStruct->field_95, &gBattleStruct->field_97, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT));
+ DoLoadHealthboxPalsForLevelUp(&gBattleStruct->simulatedInputState[1], &gBattleStruct->simulatedInputState[3], GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT));
BeginNormalPaletteFade(0xFFFFFF7E,
- 4,
- 0,
- 8,
+ 4,
+ 0,
+ 8,
RGB_BLACK);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 1:
if (!gPaletteFade.active)
{
- sub_80EB30C();
- ++gBattleStruct->field_94;
+ BtlCtrl_DrawVoiceoverMessageFrame();
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 2:
BattleStringExpandPlaceholdersToDisplayedString(gText_ForPetesSake);
BattlePutTextOnWindow(gDisplayedStringBattle, 24);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
break;
case 3:
if (!IsTextPrinterActive(24))
{
- mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16;
+ mask = (gBitTable[gBattleStruct->simulatedInputState[1]] | gBitTable[gBattleStruct->simulatedInputState[3]]) << 16;
BeginNormalPaletteFade(mask,
4,
8,
0,
RGB_BLACK);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 4:
@@ -666,19 +671,19 @@ static void sub_80E835C(void)
{
BattleStringExpandPlaceholdersToDisplayedString(gText_TheTrainerThat);
BattlePutTextOnWindow(gDisplayedStringBattle, 24);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 5:
if (!IsTextPrinterActive(24))
{
- mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16;
+ mask = (gBitTable[gBattleStruct->simulatedInputState[1]] | gBitTable[gBattleStruct->simulatedInputState[3]]) << 16;
BeginNormalPaletteFade(mask,
4,
0,
8,
RGB_BLACK);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 6:
@@ -686,7 +691,7 @@ static void sub_80E835C(void)
{
BattleStringExpandPlaceholdersToDisplayedString(gText_TryBattling);
BattlePutTextOnWindow(gDisplayedStringBattle, 24);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 7:
@@ -697,79 +702,80 @@ static void sub_80E835C(void)
8,
0,
RGB_BLACK);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 8:
if (!gPaletteFade.active)
{
- sub_80EF0E0(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT));
- sub_80EB524();
- gBattleStruct->field_94 = 0;
+ DoFreeHealthboxPalsForLevelUp(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT));
+ BtlCtrl_RemoveVoiceoverMessageFrame();
+ gBattleStruct->simulatedInputState[0] = 0;
OakOldManBufferExecCompleted();
}
break;
}
}
-void sub_80E8570(void)
+void PrintOakText_InflictingDamageIsKey(void)
{
- sub_80E85D4(gText_InflictingDamageIsKey, 1);
+ PrintOakTextWithMainBgDarkened(gText_InflictingDamageIsKey, 1);
}
-static void sub_80E8584(void)
+static void PrintOakText_LoweringStats(void)
{
- sub_80E85D4(gText_LoweringStats, 64);
+ PrintOakTextWithMainBgDarkened(gText_LoweringStats, 64);
}
-void sub_80E8598(void)
+void PrintOakText_OakNoRunningFromATrainer(void)
{
- sub_80E85D4(gText_OakNoRunningFromATrainer, 1);
+ PrintOakTextWithMainBgDarkened(gText_OakNoRunningFromATrainer, 1);
}
-static void sub_80E85AC(void)
+static void PrintOakText_WinEarnsPrizeMoney(void)
{
- sub_80E85D4(gText_WinEarnsPrizeMoney, 64);
+ PrintOakTextWithMainBgDarkened(gText_WinEarnsPrizeMoney, 64);
}
-void sub_80E85C0(void)
+void PrintOakText_HowDisappointing(void)
{
- sub_80E85D4(gText_HowDissapointing, 64);
+ PrintOakTextWithMainBgDarkened(gText_HowDissapointing, 64);
}
-static void sub_80E85D4(const u8 *text, u8 a2)
+static void PrintOakTextWithMainBgDarkened(const u8 *text, u8 delay)
{
- switch (gBattleStruct->field_94)
+ // If delay is 0, it's treated as 256.
+ switch (gBattleStruct->simulatedInputState[0])
{
case 0:
if (!IsTextPrinterActive(0))
{
- gBattleStruct->field_97 = a2;
- ++gBattleStruct->field_94;
+ gBattleStruct->simulatedInputState[3] = delay;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 1:
- if (--gBattleStruct->field_97 == 0)
+ if (--gBattleStruct->simulatedInputState[3] == 0)
{
BeginNormalPaletteFade(0xFFFFFF7E,
- 4,
- 0,
- 8,
+ 4,
+ 0,
+ 8,
RGB_BLACK);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 2:
if (!gPaletteFade.active)
{
- sub_80EB30C();
- ++gBattleStruct->field_94;
+ BtlCtrl_DrawVoiceoverMessageFrame();
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 3:
BattleStringExpandPlaceholdersToDisplayedString(text);
BattlePutTextOnWindow(gDisplayedStringBattle, 24);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
break;
case 4:
if (!IsTextPrinterActive(24))
@@ -779,76 +785,76 @@ static void sub_80E85D4(const u8 *text, u8 a2)
8,
0,
RGB_BLACK);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 5:
if (!gPaletteFade.active)
{
- sub_80EB524();
+ BtlCtrl_RemoveVoiceoverMessageFrame();
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
OakOldManBufferExecCompleted();
else
OpponentBufferExecCompleted();
gBattleCommunication[MSG_DISPLAY] = 0;
- gBattleStruct->field_94 = 0;
+ gBattleStruct->simulatedInputState[0] = 0;
}
break;
}
}
-static void sub_80E8704(void)
+static void PrintOakText_KeepAnEyeOnHP(void)
{
u32 mask;
- switch (gBattleStruct->field_94)
+ switch (gBattleStruct->simulatedInputState[0])
{
case 0:
if (!gPaletteFade.active)
{
- sub_80EEFC8(&gBattleStruct->field_95, &gBattleStruct->field_97, gActiveBattler);
+ DoLoadHealthboxPalsForLevelUp(&gBattleStruct->simulatedInputState[1], &gBattleStruct->simulatedInputState[3], gActiveBattler);
BeginNormalPaletteFade(0xFFFFFF7E,
- 4,
- 0,
- 8,
+ 4,
+ 0,
+ 8,
RGB_BLACK);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 1:
if (!gPaletteFade.active)
{
- mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16;
+ mask = (gBitTable[gBattleStruct->simulatedInputState[1]] | gBitTable[gBattleStruct->simulatedInputState[3]]) << 16;
BeginNormalPaletteFade(mask,
4,
8,
0,
RGB_BLACK);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 2:
if (!gPaletteFade.active)
{
- sub_80EB30C();
- ++gBattleStruct->field_94;
+ BtlCtrl_DrawVoiceoverMessageFrame();
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 3:
BattleStringExpandPlaceholdersToDisplayedString(gText_KeepAnEyeOnHP);
BattlePutTextOnWindow(gDisplayedStringBattle, 24);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
break;
case 4:
if (!IsTextPrinterActive(24))
{
- mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16;
+ mask = (gBitTable[gBattleStruct->simulatedInputState[1]] | gBitTable[gBattleStruct->simulatedInputState[3]]) << 16;
BeginNormalPaletteFade(mask,
4,
0,
8,
RGB_BLACK);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 5:
@@ -859,16 +865,16 @@ static void sub_80E8704(void)
8,
0,
RGB_BLACK);
- ++gBattleStruct->field_94;
+ ++gBattleStruct->simulatedInputState[0];
}
break;
case 6:
if (!gPaletteFade.active)
{
- sub_80EB524();
+ BtlCtrl_RemoveVoiceoverMessageFrame();
BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
OakOldManBufferExecCompleted();
- gBattleStruct->field_94 = 0;
+ gBattleStruct->simulatedInputState[0] = 0;
}
break;
}
@@ -915,7 +921,7 @@ static void DoHitAnimBlinkSpriteEffect(void)
}
}
-static void sub_80E89C4(void)
+static void DoSwitchOutAnimation(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
@@ -1554,7 +1560,7 @@ static void OakOldManHandleReturnMonToBall(void)
if (gBattleBufferA[gActiveBattler][1] == 0)
{
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON);
- gBattlerControllerFuncs[gActiveBattler] = sub_80E89C4;
+ gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
}
else
{
@@ -1569,26 +1575,26 @@ static void OakOldManHandleDrawTrainerPic(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
{
- DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler);
- SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
+ DecompressTrainerBackPalette(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, gActiveBattler);
+ SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
80,
- (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
+ (8 - gTrainerBackPicCoords[BACK_PIC_RED + gSaveBlock2Ptr->playerGender].size) * 4 + 80,
30);
}
else
{
- DecompressTrainerBackPalette(5, gActiveBattler);
- SetMultiuseSpriteTemplateToTrainerBack(5, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
- 80,
- (8 - gTrainerBackPicCoords[5].size) * 4 + 80,
+ DecompressTrainerBackPalette(BACK_PIC_OLDMAN, gActiveBattler);
+ SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_OLDMAN, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
+ 80,
+ (8 - gTrainerBackPicCoords[BACK_PIC_OLDMAN].size) * 4 + 80,
30);
}
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
}
@@ -1596,26 +1602,26 @@ static void OakOldManHandleTrainerSlide(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
{
- DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler);
- SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
+ DecompressTrainerBackPalette(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, gActiveBattler);
+ SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
80,
- (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
+ (8 - gTrainerBackPicCoords[BACK_PIC_RED + gSaveBlock2Ptr->playerGender].size) * 4 + 80,
30);
}
else
{
- DecompressTrainerBackPalette(5, gActiveBattler);
- SetMultiuseSpriteTemplateToTrainerBack(5, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
- 80,
- (8 - gTrainerBackPicCoords[5].size) * 4 + 80,
+ DecompressTrainerBackPalette(BACK_PIC_OLDMAN, gActiveBattler);
+ SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_OLDMAN, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
+ 80,
+ (8 - gTrainerBackPicCoords[BACK_PIC_OLDMAN].size) * 4 + 80,
30);
}
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy2;
}
@@ -1641,8 +1647,8 @@ static void OakOldManHandleFaintAnimation(void)
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8012110;
- gBattlerControllerFuncs[gActiveBattler] = sub_80E82F4;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintSlideAnim;
+ gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterFaintAnim;
}
}
}
@@ -1711,7 +1717,7 @@ static void OakOldManDoMoveAnimation(void)
case 1:
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- sub_8035450(0);
+ SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
DoMoveAnim(move);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
@@ -1720,7 +1726,7 @@ static void OakOldManDoMoveAnimation(void)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- sub_8035450(1);
+ SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
@@ -1752,30 +1758,30 @@ static void OakOldManHandlePrintString(void)
else
{
BufferStringBattle(*stringId);
- if (sub_80D89B0(*stringId))
- BattlePutTextOnWindow(gDisplayedStringBattle, 64);
+ if (BattleStringShouldBeColored(*stringId))
+ BattlePutTextOnWindow(gDisplayedStringBattle, 0x40);
else
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
{
switch (*stringId)
{
- case 216:
- if (!sub_80EB2E0(2))
+ case STRINGID_PKMNSSTATCHANGED4:
+ if (!BtlCtrl_OakOldMan_TestState2Flag(FIRST_BATTLE_MSG_FLAG_STAT_CHG))
{
- sub_80EB2F4(2);
- gBattlerControllerFuncs[gActiveBattler] = sub_80E8584;
+ BtlCtrl_OakOldMan_SetState2Flag(FIRST_BATTLE_MSG_FLAG_STAT_CHG);
+ gBattlerControllerFuncs[gActiveBattler] = PrintOakText_LoweringStats;
return;
}
break;
- case 30:
- gBattlerControllerFuncs[gActiveBattler] = sub_80E85AC;
+ case STRINGID_PLAYERGOTMONEY:
+ gBattlerControllerFuncs[gActiveBattler] = PrintOakText_WinEarnsPrizeMoney;
return;
- case 383:
- gBattlerControllerFuncs[gActiveBattler] = sub_80E85C0;
+ case STRINGID_TRAINER1WINTEXT:
+ gBattlerControllerFuncs[gActiveBattler] = PrintOakText_HowDisappointing;
return;
- case 227:
- gBattlerControllerFuncs[gActiveBattler] = sub_80E8598;
+ case STRINGID_DONTLEAVEBIRCH:
+ gBattlerControllerFuncs[gActiveBattler] = PrintOakText_OakNoRunningFromATrainer;
return;
}
}
@@ -1791,7 +1797,7 @@ static void OakOldManHandlePrintSelectionString(void)
OakOldManBufferExecCompleted();
}
-static void sub_80EA690(void)
+static void HandleChooseActionAfterDma3(void)
{
if (!IsDma3ManagerBusyWithBgCopy())
{
@@ -1800,7 +1806,7 @@ static void sub_80EA690(void)
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseAction;
else
- gBattlerControllerFuncs[gActiveBattler] = sub_80E7844;
+ gBattlerControllerFuncs[gActiveBattler] = SimulateInputChooseAction;
}
}
@@ -1808,7 +1814,7 @@ static void OakOldManHandleChooseAction(void)
{
s32 i;
- gBattlerControllerFuncs[gActiveBattler] = sub_80EA690;
+ gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
BattlePutTextOnWindow(gText_EmptyString3, 0);
BattlePutTextOnWindow(gText_BattleMenu, 2);
for (i = 0; i < MAX_MON_MOVES; ++i)
@@ -1826,13 +1832,13 @@ static void OakOldManHandleUnknownYesNoBox(void)
OakOldManBufferExecCompleted();
}
-static void sub_80EA798(void)
+static void OakHandleChooseMove_WaitDma3(void)
{
if (!IsDma3ManagerBusyWithBgCopy())
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 320;
- gBattlerControllerFuncs[gActiveBattler] = sub_80E7988;
+ gBattlerControllerFuncs[gActiveBattler] = OakOldManHandleInputChooseMove;
}
}
@@ -1841,19 +1847,19 @@ static void OakOldManHandleChooseMove(void)
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
{
InitMoveSelectionsVarsAndStrings();
- gBattlerControllerFuncs[gActiveBattler] = sub_80EA798;
+ gBattlerControllerFuncs[gActiveBattler] = OakHandleChooseMove_WaitDma3;
}
else
{
- switch (gBattleStruct->field_95)
+ switch (gBattleStruct->simulatedInputState[1])
{
case 0:
InitMoveSelectionsVarsAndStrings();
- ++gBattleStruct->field_95;
- gBattleStruct->field_97 = 80;
+ ++gBattleStruct->simulatedInputState[1];
+ gBattleStruct->simulatedInputState[3] = 80;
// fall through
case 1:
- if (--gBattleStruct->field_97 == 0)
+ if (--gBattleStruct->simulatedInputState[3] == 0)
{
PlaySE(SE_SELECT);
BtlController_EmitTwoReturnValues(1, 10, 0x100);
@@ -1879,10 +1885,10 @@ static void OakOldManHandleChoosePokemon(void)
{
s32 i;
- gUnknown_3004FFC[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
- gTasks[gUnknown_3004FFC[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
+ gBattleControllerData[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
+ gTasks[gBattleControllerData[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
*(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4;
- *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2];
+ *(&gBattleStruct->playerPartyIdx) = gBattleBufferA[gActiveBattler][2];
*(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3];
for (i = 0; i < 3; ++i)
gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][4 + i];
@@ -1906,13 +1912,13 @@ static void OakOldManHandleHealthBarUpdate(void)
{
u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
-
+
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal);
}
else
{
u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
-
+
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT);
}
@@ -1939,7 +1945,7 @@ static void OakOldManHandleExpUpdate(void)
gTasks[taskId].tExpTask_monId = monId;
gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
gTasks[taskId].tExpTask_battler = gActiveBattler;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_81;
+ gBattlerControllerFuncs[gActiveBattler] = OakOldManDummy;
}
}
@@ -2078,17 +2084,17 @@ static void OakOldManHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
- StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80335F8);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
- LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32);
+ LoadCompressedPalette(gTrainerBackPicPaletteTable[BACK_PIC_RED + gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
- taskId = CreateTask(sub_80EB0A8, 5);
+ taskId = CreateTask(Task_StartSendOutAnim, 5);
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
- gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_13;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 1;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerDummy;
}
else
{
@@ -2098,30 +2104,30 @@ static void OakOldManHandleIntroTrainerBallThrow(void)
}
}
-static void sub_80EAF34(u8 battlerId)
+static void StartSendOutAnim(u8 battlerId)
{
u16 species;
gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies = SPECIES_NONE;
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
- gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C);
+ gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
GetBattlerSpriteSubpriority(battlerId));
- gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
+ gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
+ gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
-static void sub_80EB0A8(u8 taskId)
+static void Task_StartSendOutAnim(u8 taskId)
{
if (gTasks[taskId].data[1] < 31)
{
@@ -2133,8 +2139,8 @@ static void sub_80EB0A8(u8 taskId)
gActiveBattler = gTasks[taskId].data[0];
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_80EAF34(gActiveBattler);
- gBattlerControllerFuncs[gActiveBattler] = sub_80E7B4C;
+ StartSendOutAnim(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = Intro_TryShinyAnimShowHealthbox;
gActiveBattler = savedActiveBattler;
DestroyTask(taskId);
}
@@ -2213,24 +2219,24 @@ static void OakOldManHandleCmd55(void)
BeginFastPaletteFade(3);
OakOldManBufferExecCompleted();
if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER) && gBattleTypeFlags & BATTLE_TYPE_LINK)
- gBattlerControllerFuncs[gActiveBattler] = sub_80E7930;
+ gBattlerControllerFuncs[gActiveBattler] = OakOldManSetBattleEndCallbacks;
}
static void OakOldManCmdEnd(void)
{
}
-bool8 sub_80EB2E0(u8 a1)
+bool8 BtlCtrl_OakOldMan_TestState2Flag(u8 mask)
{
- return gBattleStruct->field_96 & a1;
+ return gBattleStruct->simulatedInputState[2] & mask;
}
-void sub_80EB2F4(u8 a1)
+void BtlCtrl_OakOldMan_SetState2Flag(u8 mask)
{
- gBattleStruct->field_96 |= a1;
+ gBattleStruct->simulatedInputState[2] |= mask;
}
-void sub_80EB30C(void)
+void BtlCtrl_DrawVoiceoverMessageFrame(void)
{
u32 width = 0x1A;
u32 pal = 7;
@@ -2263,7 +2269,7 @@ void sub_80EB30C(void)
FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x34), 0x1D, 0x13, 1, 1, pal);
}
-void sub_80EB524(void)
+void BtlCtrl_RemoveVoiceoverMessageFrame(void)
{
u32 pal = 0;
u32 width = 0x1A;
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 29cde44df..7d34dd3d3 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -83,11 +83,11 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst);
static void SetOpponentMonData(u8 monId);
static void DoSwitchOutAnimation(void);
static void OpponentDoMoveAnimation(void);
-static void sub_80362E8(void);
-static void sub_8037A28(u8 battlerId, bool8 dontClearSubstituteBit);
-static void sub_8038DC4(u8 taskId);
-static void sub_8038D90(struct Sprite *sprite);
-static void sub_8038FBC(void);
+static void SwitchIn_HandleSoundAndEnd(void);
+static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
+static void Task_StartSendOutAnim(u8 taskId);
+static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite);
+static void EndDrawPartyStatusSummary(void);
static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
@@ -153,7 +153,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
// not used
static const u8 gUnknown_8250B18[] = { 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20 };
-static void nullsub_17(void)
+static void OpponentDummy(void)
{
}
@@ -185,7 +185,7 @@ static void CompleteOnBattlerSpriteCallbackDummy2(void)
OpponentBufferExecCompleted();
}
-static void sub_8035B58(void)
+static void FreeTrainerSpriteAfterSlide(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
@@ -197,16 +197,16 @@ static void sub_8035B58(void)
}
}
-static void sub_8035BE8(void)
+static void Intro_DelayAndEnd(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
OpponentBufferExecCompleted();
}
}
-static void sub_8035C30(void)
+static void Intro_WaitForShinyAnimAndHealthbox(void)
{
bool8 var = FALSE;
@@ -222,68 +222,68 @@ static void sub_8035C30(void)
}
if (IsCryPlayingOrClearCrySongs())
var = FALSE;
- if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
+ if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
m4aMPlayContinue(&gMPlayInfo_BGM);
else
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
- gBattlerControllerFuncs[gActiveBattler] = sub_8035BE8;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
}
}
-static void sub_8035DF0(void)
+static void Intro_TryShinyAnimShowHealthbox(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
- sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
- sub_80F1720(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
+ TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK],
&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler ^ BIT_FLANK);
+ StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
SetBattlerShadowSpriteCallback(gActiveBattler ^ BIT_FLANK, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], MON_DATA_SPECIES));
}
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
- gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattlerControllerFuncs[gActiveBattler] = sub_8035C30;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = FALSE;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForShinyAnimAndHealthbox;
}
}
-static void sub_8035FE8(void)
+static void TryShinyAnimAfterMonAnim(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE
&& gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
{
- sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
- else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
OpponentBufferExecCompleted();
}
}
@@ -300,10 +300,10 @@ static void CompleteOnHealthbarDone(void)
}
else
{
- if (!sub_80EB2E0(1) && (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE))
+ if (!BtlCtrl_OakOldMan_TestState2Flag(1) && (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE))
{
- sub_80EB2F4(1);
- gBattlerControllerFuncs[gActiveBattler] = sub_80E8570;
+ BtlCtrl_OakOldMan_SetState2Flag(1);
+ gBattlerControllerFuncs[gActiveBattler] = PrintOakText_InflictingDamageIsKey;
}
else
{
@@ -312,7 +312,7 @@ static void CompleteOnHealthbarDone(void)
}
}
-static void sub_803612C(void)
+static void HideHealthboxAfterMonFaint(void)
{
if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse)
{
@@ -321,7 +321,7 @@ static void sub_803612C(void)
}
}
-static void sub_8036170(void)
+static void FreeMonSpriteAfterSwitchOutAnim(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
@@ -358,17 +358,17 @@ static void DoHitAnimBlinkSpriteEffect(void)
}
}
-static void sub_8036278(void)
+static void SwitchIn_ShowSubstitute(void)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattlerControllerFuncs[gActiveBattler] = sub_80362E8;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_HandleSoundAndEnd;
}
}
-static void sub_80362E8(void)
+static void SwitchIn_HandleSoundAndEnd(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive && !IsCryPlayingOrClearCrySongs())
{
@@ -377,33 +377,33 @@ static void sub_80362E8(void)
}
}
-static void sub_8036334(void)
+static void SwitchIn_ShowHealthbox(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
CopyBattleSpriteInvisibility(gActiveBattler);
- gBattlerControllerFuncs[gActiveBattler] = sub_8036278;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_ShowSubstitute;
}
}
-static void sub_8036408(void)
+static void SwitchIn_TryShinyAnim(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
- sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
- gBattlerControllerFuncs[gActiveBattler] = sub_8036334;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_ShowHealthbox;
}
}
@@ -1025,8 +1025,8 @@ static void OpponentHandleLoadMonSprite(void)
{
DecompressGhostFrontPic(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
y = GetGhostSpriteDefault_Y(gActiveBattler);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 1;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 1;
}
else
{
@@ -1045,25 +1045,25 @@ static void OpponentHandleLoadMonSprite(void)
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
if (!(gBattleTypeFlags & BATTLE_TYPE_GHOST))
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
- gBattlerControllerFuncs[gActiveBattler] = sub_8035FE8;
+ gBattlerControllerFuncs[gActiveBattler] = TryShinyAnimAfterMonAnim;
}
static void OpponentHandleSwitchInAnim(void)
{
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
- sub_8037A28(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
- gBattlerControllerFuncs[gActiveBattler] = sub_8036408;
+ StartSendOutAnim(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_TryShinyAnim;
}
-static void sub_8037A28(u8 battlerId, bool8 dontClearSubstituteBit)
+static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
{
u16 species;
ClearTemporarySpeciesSpriteData(battlerId, dontClearSubstituteBit);
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
- gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C);
+ gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
@@ -1072,12 +1072,12 @@ static void sub_8037A28(u8 battlerId, bool8 dontClearSubstituteBit)
GetBattlerSpriteSubpriority(battlerId));
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
- gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
+ gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
+ gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
}
static void OpponentHandleReturnMonToBall(void)
@@ -1111,7 +1111,7 @@ static void DoSwitchOutAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_OPPONENT_MON);
- gBattlerControllerFuncs[gActiveBattler] = sub_8036170;
+ gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterSwitchOutAnim;
}
break;
}
@@ -1143,7 +1143,7 @@ static void OpponentHandleDrawTrainerPic(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
}
@@ -1174,7 +1174,7 @@ static void OpponentHandleTrainerSlide(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy2;
}
@@ -1186,7 +1186,7 @@ static void OpponentHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
- gBattlerControllerFuncs[gActiveBattler] = sub_8035B58;
+ gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
}
static void OpponentHandleFaintAnimation(void)
@@ -1204,7 +1204,7 @@ static void OpponentHandleFaintAnimation(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_TARGET);
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon;
- gBattlerControllerFuncs[gActiveBattler] = sub_803612C;
+ gBattlerControllerFuncs[gActiveBattler] = HideHealthboxAfterMonFaint;
}
}
}
@@ -1231,7 +1231,7 @@ static void OpponentHandlePause(void)
static void OpponentHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
@@ -1273,7 +1273,7 @@ static void OpponentDoMoveAnimation(void)
case 1:
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- sub_8035450(0);
+ SetBattlerSpriteAffineMode(0);
DoMoveAnim(move);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
@@ -1282,7 +1282,7 @@ static void OpponentDoMoveAnimation(void)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- sub_8035450(1);
+ SetBattlerSpriteAffineMode(1);
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
@@ -1311,7 +1311,7 @@ static void OpponentHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- if (sub_80D89B0(*stringId))
+ if (BattleStringShouldBeColored(*stringId))
BattlePutTextOnWindow(gDisplayedStringBattle, 0x40);
else
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
@@ -1320,10 +1320,10 @@ static void OpponentHandlePrintString(void)
switch (*stringId)
{
case 0x17F:
- gBattlerControllerFuncs[gActiveBattler] = sub_80E85C0;
+ gBattlerControllerFuncs[gActiveBattler] = PrintOakText_HowDisappointing;
return;
case 0xE3:
- gBattlerControllerFuncs[gActiveBattler] = sub_80E8598;
+ gBattlerControllerFuncs[gActiveBattler] = PrintOakText_OakNoRunningFromATrainer;
return;
}
}
@@ -1479,7 +1479,7 @@ static void OpponentHandleExpUpdate(void)
static void OpponentHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 battlerId;
@@ -1492,7 +1492,7 @@ static void OpponentHandleStatusIconUpdate(void)
static void OpponentHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
@@ -1632,16 +1632,16 @@ static void OpponentHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
- StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_8038D90);
- taskId = CreateTask(sub_8038DC4, 5);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
+ taskId = CreateTask(Task_StartSendOutAnim, 5);
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
- gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_17;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = TRUE;
+ gBattlerControllerFuncs[gActiveBattler] = OpponentDummy;
}
-static void sub_8038D90(struct Sprite *sprite)
+static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite)
{
FreeTrainerFrontPicPaletteAndTile(sprite->oam.affineParam);
sprite->oam.tileNum = sprite->data[5];
@@ -1649,7 +1649,7 @@ static void sub_8038D90(struct Sprite *sprite)
DestroySprite(sprite);
}
-static void sub_8038DC4(u8 taskId)
+static void Task_StartSendOutAnim(u8 taskId)
{
u8 savedActiveBattler = gActiveBattler;
@@ -1657,18 +1657,18 @@ static void sub_8038DC4(u8 taskId)
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_8037A28(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
}
else
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_8037A28(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK;
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_8037A28(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK;
}
- gBattlerControllerFuncs[gActiveBattler] = sub_8035DF0;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_TryShinyAnimShowHealthbox;
gActiveBattler = savedActiveBattler;
DestroyTask(taskId);
}
@@ -1684,32 +1684,32 @@ static void OpponentHandleDrawPartyStatusSummary(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
if (gBattleBufferA[gActiveBattler][2])
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E <= 1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2)
{
- ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E;
+ ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay;
return;
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay = 0;
}
}
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler,
(struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4],
gBattleBufferA[gActiveBattler][1],
gBattleBufferA[gActiveBattler][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
if (gBattleBufferA[gActiveBattler][2])
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
- gBattlerControllerFuncs[gActiveBattler] = sub_8038FBC;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0x5D;
+ gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
}
}
-static void sub_8038FBC(void)
+static void EndDrawPartyStatusSummary(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 0x5C)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
OpponentBufferExecCompleted();
}
}
@@ -1738,7 +1738,7 @@ static void OpponentHandleSpriteInvisibility(void)
static void OpponentHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 animationId = gBattleBufferA[gActiveBattler][1];
u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index db51f6e05..a162981ec 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -98,13 +98,13 @@ static u32 CopyPlayerMonData(u8 monId, u8 *dst);
static void SetPlayerMonData(u8 monId);
static void DoSwitchOutAnimation(void);
static void PlayerDoMoveAnimation(void);
-static void task05_08033660(u8 taskId);
-static void sub_8033AC8(void);
-static void sub_802FCAC(void);
-static void sub_80300F4(u8 taskId);
-static void sub_80303A8(u8 taskId);
-static void sub_8031FF4(u8 battlerId, bool8 dontClearSubstituteBit);
-static void sub_8033830(void);
+static void Task_StartSendOutAnim(u8 taskId);
+static void PreviewDeterminativeMoveTargets(void);
+static void SwitchIn_HandleSoundAndEnd(void);
+static void Task_GiveExpWithExpBar(u8 taskId);
+static void Task_CreateLevelUpVerticalStripes(u8 taskId);
+static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
+static void EndDrawPartyStatusSummary(void);
static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
@@ -172,7 +172,7 @@ static const u8 sTargetIdentities[] = { B_POSITION_PLAYER_LEFT, B_POSITION_PLAYE
// not used
static const u8 gUnknown_8250984[] = { 0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58 };
-void nullsub_13(void)
+void PlayerDummy(void)
{
}
@@ -308,7 +308,7 @@ static void HandleInputChooseAction(void)
}
}
-static void sub_802E640(void)
+UNUSED static void UnusedEndBounceEffect(void)
{
EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX);
EndBounceEffect(gActiveBattler, BOUNCE_MON);
@@ -336,7 +336,7 @@ static void HandleInputChooseTarget(void)
if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
- gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012098;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX);
PlayerBufferExecCompleted();
@@ -344,7 +344,7 @@ static void HandleInputChooseTarget(void)
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012098;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove;
DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1);
DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1);
@@ -353,7 +353,7 @@ static void HandleInputChooseTarget(void)
else if (JOY_NEW(DPAD_LEFT | DPAD_UP))
{
PlaySE(SE_SELECT);
- gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012098;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
do
{
@@ -388,12 +388,12 @@ static void HandleInputChooseTarget(void)
i = 0;
}
while (i == 0);
- gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012044;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_ShowAsMoveTarget;
}
else if (JOY_NEW(DPAD_RIGHT | DPAD_DOWN))
{
PlaySE(SE_SELECT);
- gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012098;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
do
{
@@ -428,7 +428,7 @@ static void HandleInputChooseTarget(void)
i = 0;
}
while (i == 0);
- gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012044;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_ShowAsMoveTarget;
}
}
@@ -437,7 +437,7 @@ void HandleInputChooseMove(void)
bool32 canSelectTarget = FALSE;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]);
- sub_8033AC8();
+ PreviewDeterminativeMoveTargets();
if (JOY_NEW(A_BUTTON))
{
u8 moveTarget;
@@ -495,7 +495,7 @@ void HandleInputChooseMove(void)
gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
else
gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
- gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8012044;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_ShowAsMoveTarget;
}
}
else if (JOY_NEW(B_BUTTON))
@@ -577,7 +577,7 @@ void HandleInputChooseMove(void)
}
// not used
-static u32 sub_802EDDC(void)
+static u32 HandleMoveInputUnused(void)
{
u32 var = 0;
@@ -704,7 +704,7 @@ static void HandleMoveSwitching(void)
}
}
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
- gBattlerControllerFuncs[gActiveBattler] = sub_80E7988;
+ gBattlerControllerFuncs[gActiveBattler] = OakOldManHandleInputChooseMove;
else
gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove;
gMoveSelectionCursor[gActiveBattler] = gMultiUsePlayerCursor;
@@ -719,7 +719,7 @@ static void HandleMoveSwitching(void)
MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor);
MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
- gBattlerControllerFuncs[gActiveBattler] = sub_80E7988;
+ gBattlerControllerFuncs[gActiveBattler] = OakOldManHandleInputChooseMove;
else
gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove;
MoveSelectionDisplayPpString();
@@ -792,7 +792,7 @@ static void HandleMoveSwitching(void)
}
}
-static void sub_802F610(void)
+static void SetLinkBattleEndCallbacks(void)
{
if (gWirelessCommType == 0)
{
@@ -801,7 +801,7 @@ static void sub_802F610(void)
m4aSongNumStop(SE_LOW_HEALTH);
gMain.inBattle = 0;
gMain.callback1 = gPreBattleCallback1;
- SetMainCallback2(sub_8011A1C);
+ SetMainCallback2(CB2_InitEndLinkBattle);
FreeAllWindowBuffers();
}
}
@@ -810,22 +810,22 @@ static void sub_802F610(void)
m4aSongNumStop(SE_LOW_HEALTH);
gMain.inBattle = 0;
gMain.callback1 = gPreBattleCallback1;
- SetMainCallback2(sub_8011A1C);
+ SetMainCallback2(CB2_InitEndLinkBattle);
FreeAllWindowBuffers();
}
}
-void sub_802F6A8(void)
+void SetBattleEndCallbacks(void)
{
if (!gPaletteFade.active)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
if (gWirelessCommType == 0)
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
else
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
- gBattlerControllerFuncs[gActiveBattler] = sub_802F610;
+ SetLinkStandbyCallback();
+ gBattlerControllerFuncs[gActiveBattler] = SetLinkBattleEndCallbacks;
}
else
{
@@ -849,27 +849,27 @@ static void CompleteOnBattlerSpriteCallbackDummy2(void)
PlayerBufferExecCompleted();
}
-static void sub_802F7A0(void)
+static void FreeTrainerSpriteAfterSlide(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- nullsub_16(gSaveBlock2Ptr->playerGender);
+ BattleGfxSfxDummy3(gSaveBlock2Ptr->playerGender);
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
PlayerBufferExecCompleted();
}
}
-static void sub_802F810(void)
+static void Intro_DelayAndEnd(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
PlayerBufferExecCompleted();
}
}
-static void sub_802F858(void)
+static void Intro_WaitForShinyAnimAndHealthbox(void)
{
bool8 var = FALSE;
@@ -885,16 +885,16 @@ static void sub_802F858(void)
var = TRUE;
}
if (IsCryPlayingOrClearCrySongs())
- var = FALSE;
- if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
- {
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ var = FALSE;
+ if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
+ {
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
m4aMPlayContinue(&gMPlayInfo_BGM);
else
@@ -902,55 +902,55 @@ static void sub_802F858(void)
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
if (IsDoubleBattle())
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], gActiveBattler ^ BIT_FLANK);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
- gBattlerControllerFuncs[gActiveBattler] = sub_802F810;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
}
}
-static void sub_802FA58(void)
+static void Intro_TryShinyAnimShowHealthbox(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
- sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80)
- sub_80F1720(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
+ TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim)
+ TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK],
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler ^ BIT_FLANK);
+ StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
- gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattlerControllerFuncs[gActiveBattler] = sub_802F858;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 0;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForShinyAnimAndHealthbox;
}
}
-static void sub_802FBF4(void)
+static void SwitchIn_CleanShinyAnimShowSubstitute(void)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattlerControllerFuncs[gActiveBattler] = sub_802FCAC;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_HandleSoundAndEnd;
}
}
-static void sub_802FCAC(void)
+static void SwitchIn_HandleSoundAndEnd(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive
&& !IsCryPlayingOrClearCrySongs())
@@ -961,26 +961,26 @@ static void sub_802FCAC(void)
}
}
-static void sub_802FD18(void)
+static void SwitchIn_TryShinyAnimShowHealthbox(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
- sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy
+ TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
&& !(gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive))
{
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
CopyBattleSpriteInvisibility(gActiveBattler);
- gBattlerControllerFuncs[gActiveBattler] = sub_802FBF4;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_CleanShinyAnimShowSubstitute;
}
}
-void c3_0802FDF4(u8 taskId)
+void Task_PlayerController_RestoreBgmAfterCry(u8 taskId)
{
if (!IsCryPlayingOrClearCrySongs())
{
@@ -1078,10 +1078,10 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId)
expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp;
SetBattleBarStruct(battlerId, gHealthboxSpriteIds[battlerId], expToNextLvl, exp, -gainedExp);
PlaySE(SE_EXP);
- gTasks[taskId].func = sub_80300F4;
+ gTasks[taskId].func = Task_GiveExpWithExpBar;
}
-static void sub_80300F4(u8 taskId)
+static void Task_GiveExpWithExpBar(u8 taskId)
{
if (gTasks[taskId].tExpTask_frames < 13)
{
@@ -1167,7 +1167,7 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
if (IsBattlerSpriteVisible((u8)battlerId) == TRUE)
{
- gTasks[taskId].func = sub_80303A8;
+ gTasks[taskId].func = Task_CreateLevelUpVerticalStripes;
gTasks[taskId].data[15] = 0;
}
else
@@ -1177,12 +1177,12 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
}
}
-static void sub_80303A8(u8 taskId)
+static void Task_CreateLevelUpVerticalStripes(u8 taskId)
{
s16 *data = gTasks[taskId].data;
u8 battlerId = tExpTask_battler;
- u16 v5 = GetBattlerSpriteBGPriorityRank(battlerId);
- bool32 v6 = ((v5 ^ BIT_SIDE)) != B_SIDE_PLAYER;
+ u16 bgPriorityRank = GetBattlerSpriteBGPriorityRank(battlerId);
+ bool32 isOnBg2 = ((bgPriorityRank ^ 1)) != 0;
struct Sprite *sprite = &gSprites[gBattlerSpriteIds[battlerId]];
switch (data[15])
@@ -1190,7 +1190,7 @@ static void sub_80303A8(u8 taskId)
case 0:
if (!IsTextPrinterActive(0))
{
- if (!v6)
+ if (!isOnBg2)
{
data[14] = gBattle_BG1_X;
data[13] = gBattle_BG1_Y;
@@ -1210,7 +1210,7 @@ static void sub_80303A8(u8 taskId)
case 1:
{
u32 battlerIdAlt = battlerId;
- bool32 v6Alt = v6;
+ bool32 v6Alt = isOnBg2;
MoveBattlerSpriteToBG(battlerIdAlt, v6Alt);
}
@@ -1235,14 +1235,14 @@ static void sub_80303A8(u8 taskId)
}
break;
case 5:
- sub_8073128(v6);
+ ResetBattleAnimBg(isOnBg2);
++data[15];
break;
case 4:
++data[15];
break;
case 6:
- if (!v6)
+ if (!isOnBg2)
{
gBattle_BG1_X = data[14];
gBattle_BG1_Y = data[13];
@@ -1258,7 +1258,7 @@ static void sub_80303A8(u8 taskId)
}
}
-static void sub_8030538(void)
+static void FreeMonSpriteAfterFaintAnim(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
{
@@ -1269,7 +1269,7 @@ static void sub_8030538(void)
}
}
-static void sub_80305A0(void)
+static void FreeMonSpriteAfterSwitchOutAnim(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
@@ -1293,8 +1293,8 @@ static void OpenPartyMenuToChooseMon(void)
u8 caseId;
gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection;
- caseId = gTasks[gUnknown_3004FFC[gActiveBattler]].data[0];
- DestroyTask(gUnknown_3004FFC[gActiveBattler]);
+ caseId = gTasks[gBattleControllerData[gActiveBattler]].data[0];
+ DestroyTask(gBattleControllerData[gActiveBattler]);
FreeAllWindowBuffers();
OpenPartyMenuInTutorialBattle(caseId);
}
@@ -1319,7 +1319,7 @@ static void OpenBagAndChooseItem(void)
if (!gPaletteFade.active)
{
gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem;
- nullsub_44();
+ ReshowBattleScreenDummy();
FreeAllWindowBuffers();
CB2_BagMenuFromBattle();
}
@@ -2090,31 +2090,31 @@ static void PlayerHandleSwitchInAnim(void)
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
gActionSelectionCursor[gActiveBattler] = 0;
gMoveSelectionCursor[gActiveBattler] = 0;
- sub_8031FF4(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
- gBattlerControllerFuncs[gActiveBattler] = sub_802FD18;
+ StartSendOutAnim(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_TryShinyAnimShowHealthbox;
}
-static void sub_8031FF4(u8 battlerId, bool8 dontClearSubstituteBit)
+static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
{
u16 species;
ClearTemporarySpeciesSpriteData(battlerId, dontClearSubstituteBit);
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
- gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C);
+ gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
GetBattlerSpriteSubpriority(battlerId));
- gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
+ gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
+ gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void PlayerHandleReturnMonToBall(void)
@@ -2147,7 +2147,7 @@ static void DoSwitchOutAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON);
- gBattlerControllerFuncs[gActiveBattler] = sub_80305A0;
+ gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterSwitchOutAnim;
}
break;
}
@@ -2175,13 +2175,13 @@ static void PlayerHandleDrawTrainerPic(void)
if ((gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_RUBY
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_SAPPHIRE
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_EMERALD)
- trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + 2;
+ trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + BACK_PIC_RS_BRENDAN;
else
- trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + 0;
+ trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + BACK_PIC_RED;
}
else
{
- trainerPicId = gSaveBlock2Ptr->playerGender + 0;
+ trainerPicId = gSaveBlock2Ptr->playerGender + BACK_PIC_RED;
}
DecompressTrainerBackPalette(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
@@ -2192,7 +2192,7 @@ static void PlayerHandleDrawTrainerPic(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
}
@@ -2215,14 +2215,14 @@ static void PlayerHandleTrainerSlide(void)
}
DecompressTrainerBackPalette(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
- 80,
- (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80,
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
+ 80,
+ (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80,
30);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy2;
}
@@ -2235,7 +2235,7 @@ static void PlayerHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
- gBattlerControllerFuncs[gActiveBattler] = sub_802F7A0;
+ gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
}
static void PlayerHandleFaintAnimation(void)
@@ -2255,8 +2255,8 @@ static void PlayerHandleFaintAnimation(void)
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8012110;
- gBattlerControllerFuncs[gActiveBattler] = sub_8030538;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintSlideAnim;
+ gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterFaintAnim;
}
}
}
@@ -2296,7 +2296,7 @@ static void PlayerHandlePause(void)
static void PlayerHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
@@ -2338,7 +2338,7 @@ static void PlayerDoMoveAnimation(void)
case 1:
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- sub_8035450(0);
+ SetBattlerSpriteAffineMode(0);
DoMoveAnim(move);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
@@ -2347,7 +2347,7 @@ static void PlayerDoMoveAnimation(void)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- sub_8035450(1);
+ SetBattlerSpriteAffineMode(1);
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
@@ -2376,8 +2376,8 @@ static void PlayerHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- if (sub_80D89B0(*stringId))
- BattlePutTextOnWindow(gDisplayedStringBattle, 64);
+ if (BattleStringShouldBeColored(*stringId))
+ BattlePutTextOnWindow(gDisplayedStringBattle, 0x40);
else
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
@@ -2460,10 +2460,10 @@ static void PlayerHandleChoosePokemon(void)
{
s32 i;
- gUnknown_3004FFC[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
- gTasks[gUnknown_3004FFC[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
+ gBattleControllerData[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
+ gTasks[gBattleControllerData[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
*(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4;
- *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2];
+ *(&gBattleStruct->playerPartyIdx) = gBattleBufferA[gActiveBattler][2];
*(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3];
for (i = 0; i < 3; ++i)
gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][4 + i];
@@ -2489,13 +2489,13 @@ static void PlayerHandleHealthBarUpdate(void)
{
u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
-
+
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal);
}
else
{
u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
-
+
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT);
}
@@ -2522,13 +2522,13 @@ static void PlayerHandleExpUpdate(void)
gTasks[taskId].tExpTask_monId = monId;
gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
gTasks[taskId].tExpTask_battler = gActiveBattler;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_13;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerDummy;
}
}
static void PlayerHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 battlerId;
@@ -2541,7 +2541,7 @@ static void PlayerHandleStatusIconUpdate(void)
static void PlayerHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
@@ -2707,22 +2707,22 @@ static void PlayerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80755B8;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = PlayerThrowBall_StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
- StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80335F8);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
- taskId = CreateTask(task05_08033660, 5);
+ taskId = CreateTask(Task_StartSendOutAnim, 5);
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
- gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_13;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 1;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerDummy;
}
-void sub_80335F8(struct Sprite *sprite)
+void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite)
{
u8 battlerId = sprite->data[5];
@@ -2733,7 +2733,7 @@ void sub_80335F8(struct Sprite *sprite)
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], 0);
}
-static void task05_08033660(u8 taskId)
+static void Task_StartSendOutAnim(u8 taskId)
{
if (gTasks[taskId].data[1] < 31)
{
@@ -2747,19 +2747,19 @@ static void task05_08033660(u8 taskId)
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_8031FF4(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
}
else
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_8031FF4(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK;
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- sub_8031FF4(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK;
}
- gBattlerControllerFuncs[gActiveBattler] = sub_802FA58;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_TryShinyAnimShowHealthbox;
gActiveBattler = savedActiveBattler;
DestroyTask(taskId);
}
@@ -2775,18 +2775,18 @@ static void PlayerHandleDrawPartyStatusSummary(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
if (gBattleBufferA[gActiveBattler][2] != 0)
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
- gBattlerControllerFuncs[gActiveBattler] = sub_8033830;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 93;
+ gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
}
}
-static void sub_8033830(void)
+static void EndDrawPartyStatusSummary(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 0x5C)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
PlayerBufferExecCompleted();
}
}
@@ -2817,7 +2817,7 @@ static void PlayerHandleSpriteInvisibility(void)
static void PlayerHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 animationId = gBattleBufferA[gActiveBattler][1];
u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
@@ -2871,14 +2871,14 @@ static void PlayerHandleCmd55(void)
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
PlayerBufferExecCompleted();
- gBattlerControllerFuncs[gActiveBattler] = sub_802F6A8;
+ gBattlerControllerFuncs[gActiveBattler] = SetBattleEndCallbacks;
}
static void PlayerCmdEnd(void)
{
}
-static void sub_8033AC8(void)
+static void PreviewDeterminativeMoveTargets(void)
{
u32 bitMask = 0;
u8 startY = 0;
diff --git a/src/battle_controller_pokedude.c b/src/battle_controller_pokedude.c
index e6af71b6c..0949463c3 100644
--- a/src/battle_controller_pokedude.c
+++ b/src/battle_controller_pokedude.c
@@ -15,18 +15,19 @@
#include "battle_controllers.h"
#include "battle_interface.h"
#include "battle_message.h"
+#include "battle_string_ids.h"
#include "reshow_battle_screen.h"
#include "teachy_tv.h"
#include "constants/songs.h"
#include "constants/moves.h"
#include "constants/pokemon.h"
-struct Unk_84790E8
+struct PokedudeTextScriptHeader
{
- u8 unk_0;
- u8 unk_1;
- u16 unk_2;
- void (*unk_4)(void);
+ u8 btlcmd;
+ u8 side;
+ u16 stringid;
+ void (*callback)(void);
};
struct PokedudeBattlePartyInfo
@@ -97,471 +98,107 @@ static void PokedudeHandleResetActionMoveSelection(void);
static void PokedudeHandleCmd55(void);
static void PokedudeCmdEnd(void);
-static void sub_8159BA8(void);
-static void sub_8159D04(void);
+static void PokedudeAction_PrintVoiceoverMessage(void);
+static void PokedudeAction_PrintMessageWithHealthboxPals(void);
static void PokedudeBufferExecCompleted(void);
-static void sub_8159824(void);
+static void PokedudeSimulateInputChooseAction(void);
static void PokedudeBufferRunCommand(void);
-static bool8 sub_8159AB8(void);
-static void sub_8159998(void);
+static bool8 HandlePokedudeVoiceoverEtc(void);
+static void PokedudeSimulateInputChooseMove(void);
static void WaitForMonSelection(void);
static void CompleteWhenChoseItem(void);
-static void sub_81567B0(void);
+static void Intro_WaitForShinyAnimAndHealthbox(void);
static void Task_LaunchLvlUpAnim(u8 taskId);
static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId);
static void CompleteOnInactiveTextPrinter2(void);
static void Task_PrepareToGiveExpWithExpBar(u8 taskId);
-static void sub_8156B24(u8 taskId);
+static void Task_GiveExpWithExpBar(u8 taskId);
static void Task_UpdateLvlInHealthbox(u8 taskId);
static u32 CopyPokedudeMonData(u8 monId, u8 *dst);
static void SetPokedudeMonData(u8 monId);
-static void sub_8159478(u8 battlerId);
+static void StartSendOutAnim(u8 battlerId);
static void PokedudeDoMoveAnimation(void);
-static void sub_81595EC(u8 taskId);
+static void Task_StartSendOutAnim(u8 taskId);
static const u8 *GetPokedudeText(void);
-u8 *gUnknown_3005EE0[MAX_BATTLERS_COUNT];
-
static void (*const sPokedudeBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
-{
- PokedudeHandleGetMonData,
- PokedudeHandleGetRawMonData,
- PokedudeHandleSetMonData,
- PokedudeHandleSetRawMonData,
- PokedudeHandleLoadMonSprite,
- PokedudeHandleSwitchInAnim,
- PokedudeHandleReturnMonToBall,
- PokedudeHandleDrawTrainerPic,
- PokedudeHandleTrainerSlide,
- PokedudeHandleTrainerSlideBack,
- PokedudeHandleFaintAnimation,
- PokedudeHandlePaletteFade,
- PokedudeHandleSuccessBallThrowAnim,
- PokedudeHandleBallThrowAnim,
- PokedudeHandlePause,
- PokedudeHandleMoveAnimation,
- PokedudeHandlePrintString,
- PokedudeHandlePrintSelectionString,
- PokedudeHandleChooseAction,
- PokedudeHandleUnknownYesNoBox,
- PokedudeHandleChooseMove,
- PokedudeHandleChooseItem,
- PokedudeHandleChoosePokemon,
- PokedudeHandleCmd23,
- PokedudeHandleHealthBarUpdate,
- PokedudeHandleExpUpdate,
- PokedudeHandleStatusIconUpdate,
- PokedudeHandleStatusAnimation,
- PokedudeHandleStatusXor,
- PokedudeHandleDataTransfer,
- PokedudeHandleDMA3Transfer,
- PokedudeHandlePlayBGM,
- PokedudeHandleCmd32,
- PokedudeHandleTwoReturnValues,
- PokedudeHandleChosenMonReturnValue,
- PokedudeHandleOneReturnValue,
- PokedudeHandleOneReturnValue_Duplicate,
- PokedudeHandleCmd37,
- PokedudeHandleCmd38,
- PokedudeHandleCmd39,
- PokedudeHandleCmd40,
- PokedudeHandleHitAnimation,
- PokedudeHandleCmd42,
- PokedudeHandlePlaySE,
- PokedudeHandlePlayFanfare,
- PokedudeHandleFaintingCry,
- PokedudeHandleIntroSlide,
- PokedudeHandleIntroTrainerBallThrow,
- PokedudeHandleDrawPartyStatusSummary,
- PokedudeHandleHidePartyStatusSummary,
- PokedudeHandleEndBounceEffect,
- PokedudeHandleSpriteInvisibility,
- PokedudeHandleBattleAnimation,
- PokedudeHandleLinkStandbyMsg,
- PokedudeHandleResetActionMoveSelection,
- PokedudeHandleCmd55,
- PokedudeCmdEnd,
-};
+ {
+ PokedudeHandleGetMonData,
+ PokedudeHandleGetRawMonData,
+ PokedudeHandleSetMonData,
+ PokedudeHandleSetRawMonData,
+ PokedudeHandleLoadMonSprite,
+ PokedudeHandleSwitchInAnim,
+ PokedudeHandleReturnMonToBall,
+ PokedudeHandleDrawTrainerPic,
+ PokedudeHandleTrainerSlide,
+ PokedudeHandleTrainerSlideBack,
+ PokedudeHandleFaintAnimation,
+ PokedudeHandlePaletteFade,
+ PokedudeHandleSuccessBallThrowAnim,
+ PokedudeHandleBallThrowAnim,
+ PokedudeHandlePause,
+ PokedudeHandleMoveAnimation,
+ PokedudeHandlePrintString,
+ PokedudeHandlePrintSelectionString,
+ PokedudeHandleChooseAction,
+ PokedudeHandleUnknownYesNoBox,
+ PokedudeHandleChooseMove,
+ PokedudeHandleChooseItem,
+ PokedudeHandleChoosePokemon,
+ PokedudeHandleCmd23,
+ PokedudeHandleHealthBarUpdate,
+ PokedudeHandleExpUpdate,
+ PokedudeHandleStatusIconUpdate,
+ PokedudeHandleStatusAnimation,
+ PokedudeHandleStatusXor,
+ PokedudeHandleDataTransfer,
+ PokedudeHandleDMA3Transfer,
+ PokedudeHandlePlayBGM,
+ PokedudeHandleCmd32,
+ PokedudeHandleTwoReturnValues,
+ PokedudeHandleChosenMonReturnValue,
+ PokedudeHandleOneReturnValue,
+ PokedudeHandleOneReturnValue_Duplicate,
+ PokedudeHandleCmd37,
+ PokedudeHandleCmd38,
+ PokedudeHandleCmd39,
+ PokedudeHandleCmd40,
+ PokedudeHandleHitAnimation,
+ PokedudeHandleCmd42,
+ PokedudeHandlePlaySE,
+ PokedudeHandlePlayFanfare,
+ PokedudeHandleFaintingCry,
+ PokedudeHandleIntroSlide,
+ PokedudeHandleIntroTrainerBallThrow,
+ PokedudeHandleDrawPartyStatusSummary,
+ PokedudeHandleHidePartyStatusSummary,
+ PokedudeHandleEndBounceEffect,
+ PokedudeHandleSpriteInvisibility,
+ PokedudeHandleBattleAnimation,
+ PokedudeHandleLinkStandbyMsg,
+ PokedudeHandleResetActionMoveSelection,
+ PokedudeHandleCmd55,
+ PokedudeCmdEnd,
+ };
// not used
static const u8 gUnknown_8479000[] = { 0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58 };
-static const u8 gUnknown_8479008[][8] =
-{
- { 0, 0, 0, 0, 64, 0, 0, 0 },
- { 4, 4, 0, 0, 0, 0, 0, 0 },
-};
-
-static const u8 gUnknown_8479018[][8] =
-{
- { 0, 0, 0, 0, 64, 0, 0, 0 },
- { 1, 0, 0, 0, 64, 0, 0, 0 },
- { 0, 0, 0, 0, 64, 0, 0, 0 },
-};
-
-static const u8 gUnknown_8479030[][8] =
-{
- { 0, 0, 0, 0, 64, 0, 0, 0 },
- { 2, 0, 0, 0, 64, 0, 0, 0 },
- { 0, 0, 0, 0, 64, 0, 0, 0 },
-};
+#define pdHealthboxPal1 simulatedInputState[0]
+#define pdHealthboxPal2 simulatedInputState[1]
+#define pdScriptNum simulatedInputState[2]
+#define pdMessageNo simulatedInputState[3]
-static const u8 gUnknown_8479048[][8] =
-{
- { 0, 0, 0, 0, 64, 0, 0, 0 },
- { 0, 0, 0, 0, 64, 0, 0, 0 },
- { 1, 0, 0, 0, 64, 0, 0, 0 },
-};
-
-static const u8 (*const gUnknown_8479060[])[8] =
-{
- [TTVSCR_BATTLE] = gUnknown_8479008,
- [TTVSCR_STATUS] = gUnknown_8479018,
- [TTVSCR_MATCHUPS] = gUnknown_8479030,
- [TTVSCR_CATCHING] = gUnknown_8479048,
-};
-
-static const u8 gUnknown_8479070[][8] =
-{
- { 2, 2, 0, 0, 64, 0, 0, 0 },
- { 255, 255, 0, 0, 0, 0, 0, 0 },
-};
-
-static const u8 gUnknown_8479080[][8] =
-{
- { 2, 2, 0, 0, 64, 0, 0, 0 },
- { 2, 0, 0, 0, 64, 0, 0, 0 },
- { 2, 0, 0, 0, 64, 0, 0, 0 },
- { 255, 255, 0, 0, 0, 0, 0, 0 },
-};
-
-static const u8 gUnknown_84790A0[][8] =
-{
- { 2, 0, 0, 0, 64, 0, 0, 0 },
- { 0, 0, 0, 0, 64, 0, 0, 0 },
- { 0, 0, 0, 0, 64, 0, 0, 0 },
- { 255, 255, 0, 0, 0, 0, 0, 0 },
-};
-
-static const u8 gUnknown_84790C0[][8] =
-{
- { 0, 2, 0, 0, 64, 0, 0, 0 },
- { 2, 2, 0, 0, 64, 0, 0, 0 },
- { 255, 255, 0, 0, 0, 0, 0, 0 },
-};
-
-static const u8 (*const gUnknown_84790D8[])[8] =
-{
- [TTVSCR_BATTLE] = gUnknown_8479070,
- [TTVSCR_STATUS] = gUnknown_8479080,
- [TTVSCR_MATCHUPS] = gUnknown_84790A0,
- [TTVSCR_CATCHING] = gUnknown_84790C0,
-};
-
-static const struct Unk_84790E8 gUnknown_84790E8[] =
-{
- {
- .unk_0 = 18,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 16,
- .unk_1 = 1,
- .unk_2 = 4,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 18,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 16,
- .unk_1 = 0,
- .unk_2 = 13,
- .unk_4 = sub_8159BA8,
- },
-};
-
-static const struct Unk_84790E8 gUnknown_8479108[] =
-{
- {
- .unk_0 = 18,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = NULL,
- },
- {
- .unk_0 = 18,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159D04,
- },
- {
- .unk_0 = 21,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 16,
- .unk_1 = 1,
- .unk_2 = 4,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 16,
- .unk_1 = 0,
- .unk_2 = 13,
- .unk_4 = sub_8159BA8,
- },
-};
-
-static const struct Unk_84790E8 gUnknown_8479130[] =
-{
- {
- .unk_0 = 16,
- .unk_1 = 1,
- .unk_2 = 4,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 18,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 22,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 16,
- .unk_1 = 1,
- .unk_2 = 4,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 18,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 20,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 16,
- .unk_1 = 0,
- .unk_2 = 13,
- .unk_4 = sub_8159BA8,
- },
-};
-
-static const struct Unk_84790E8 gUnknown_8479168[] =
-{
- {
- .unk_0 = 18,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 18,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = NULL,
- },
- {
- .unk_0 = 18,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 16,
- .unk_1 = 1,
- .unk_2 = 107,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 21,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159BA8,
- },
- {
- .unk_0 = 55,
- .unk_1 = 0,
- .unk_2 = 0,
- .unk_4 = sub_8159BA8,
- },
-};
-
-static const struct Unk_84790E8 *const gUnknown_8479198[] =
-{
- [TTVSCR_BATTLE] = gUnknown_84790E8,
- [TTVSCR_STATUS] = gUnknown_8479108,
- [TTVSCR_MATCHUPS] = gUnknown_8479130,
- [TTVSCR_CATCHING] = gUnknown_8479168,
-};
-
-static const u8 *const sPokedudeTexts_Battle[] =
-{
- Pokedude_Text_SpeedierBattlerGoesFirst,
- Pokedude_Text_MyRattataFasterThanPidgey,
- Pokedude_Text_BattlersTakeTurnsAttacking,
- Pokedude_Text_MyRattataWonGetsEXP,
-};
-
-static const u8 *const sPokedudeTexts_Status[] =
-{
- Pokedude_Text_UhOhRattataPoisoned,
- Pokedude_Text_UhOhRattataPoisoned,
- Pokedude_Text_HealStatusRightAway,
- Pokedude_Text_UsingItemTakesTurn,
- Pokedude_Text_YayWeManagedToWin,
-};
-
-static const u8 *const sPokedudeTexts_TypeMatchup[] =
-{
- Pokedude_Text_WaterNotVeryEffectiveAgainstGrass,
- Pokedude_Text_GrassEffectiveAgainstWater,
- Pokedude_Text_LetsTryShiftingMons,
- Pokedude_Text_ShiftingUsesTurn,
- Pokedude_Text_ButterfreeDoubleResistsGrass,
- Pokedude_Text_ButterfreeGoodAgainstOddish,
- Pokedude_Text_YeahWeWon,
-};
-
-static const u8 *const sPokedudeTexts_Catching[] =
-{
- Pokedude_Text_WeakenMonBeforeCatching,
- Pokedude_Text_WeakenMonBeforeCatching,
- Pokedude_Text_BestIfTargetStatused,
- Pokedude_Text_CantDoubleUpOnStatus,
- Pokedude_Text_LetMeThrowBall,
- Pokedude_Text_PickBestKindOfBall,
-};
-
-static const struct PokedudeBattlePartyInfo sParties_Battle[] =
-{
- {
- .side = B_SIDE_PLAYER,
- .level = 15,
- .species = SPECIES_RATTATA,
- .moves = { MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_HYPER_FANG, MOVE_QUICK_ATTACK },
- .nature = NATURE_LONELY,
- .gender = MALE,
- },
- {
- .side = B_SIDE_OPPONENT,
- .level = 18,
- .species = SPECIES_PIDGEY,
- .moves = { MOVE_TACKLE, MOVE_SAND_ATTACK, MOVE_GUST, MOVE_QUICK_ATTACK },
- .nature = NATURE_NAUGHTY,
- .gender = MALE,
- },
- {0xFF}
-};
-
-static const struct PokedudeBattlePartyInfo sParties_Status[] =
-{
- {
- .side = B_SIDE_PLAYER,
- .level = 15,
- .species = SPECIES_RATTATA,
- .moves = { MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_HYPER_FANG, MOVE_QUICK_ATTACK },
- .nature = NATURE_LONELY,
- .gender = MALE,
- },
- {
- .side = B_SIDE_OPPONENT,
- .level = 14,
- .species = SPECIES_ODDISH,
- .moves = { MOVE_ABSORB, MOVE_SWEET_SCENT, MOVE_POISON_POWDER },
- .nature = NATURE_RASH,
- .gender = MALE,
- },
- {0xFF}
-};
-
-static const struct PokedudeBattlePartyInfo sParties_Matchups[] =
-{
- {
- .side = B_SIDE_PLAYER,
- .level = 15,
- .species = SPECIES_POLIWAG,
- .moves = { MOVE_WATER_GUN, MOVE_HYPNOSIS, MOVE_BUBBLE },
- .nature = NATURE_RASH,
- .gender = MALE,
- },
- {
- .side = B_SIDE_PLAYER,
- .level = 15,
- .species = SPECIES_BUTTERFREE,
- .moves = { MOVE_CONFUSION, MOVE_POISON_POWDER, MOVE_STUN_SPORE, MOVE_SLEEP_POWDER },
- .nature = NATURE_RASH,
- .gender = MALE,
- },
- {
- .side = B_SIDE_OPPONENT,
- .level = 14,
- .species = SPECIES_ODDISH,
- .moves = { MOVE_ABSORB, MOVE_SWEET_SCENT, MOVE_POISON_POWDER },
- .nature = NATURE_RASH,
- .gender = MALE,
- },
- {0xFF}
-};
-
-static const struct PokedudeBattlePartyInfo sParties_Catching[] =
-{
- {
- .side = B_SIDE_PLAYER,
- .level = 15,
- .species = SPECIES_BUTTERFREE,
- .moves = { MOVE_CONFUSION, MOVE_POISON_POWDER, MOVE_SLEEP_POWDER, MOVE_STUN_SPORE },
- .nature = NATURE_RASH,
- .gender = MALE,
- },
- {
- .side = B_SIDE_OPPONENT,
- .level = 11,
- .species = SPECIES_JIGGLYPUFF,
- .moves = { MOVE_SING, MOVE_DEFENSE_CURL, MOVE_POUND },
- .nature = NATURE_CAREFUL,
- .gender = MALE,
- },
- {0xFF}
-};
-
-
-static const struct PokedudeBattlePartyInfo *const sPokedudeBattlePartyPointers[] =
-{
- [TTVSCR_BATTLE] = sParties_Battle,
- [TTVSCR_STATUS] = sParties_Status,
- [TTVSCR_MATCHUPS] = sParties_Matchups,
- [TTVSCR_CATCHING] = sParties_Catching,
-};
-
-static void nullsub_99(void)
+static void PokedudeDummy(void)
{
}
void SetControllerToPokedude(void)
{
gBattlerControllerFuncs[gActiveBattler] = PokedudeBufferRunCommand;
- *(&gBattleStruct->field_96) = gSpecialVar_0x8004;
- gBattleStruct->field_97 = 0;
+ *(&gBattleStruct->pdScriptNum) = gSpecialVar_0x8004;
+ gBattleStruct->pdMessageNo = 0;
}
static void PokedudeBufferRunCommand(void)
@@ -570,7 +207,7 @@ static void PokedudeBufferRunCommand(void)
{
if (gBattleBufferA[gActiveBattler][0] < NELEMS(sPokedudeBufferCommands))
{
- if (!sub_8159AB8())
+ if (!HandlePokedudeVoiceoverEtc())
sPokedudeBufferCommands[gBattleBufferA[gActiveBattler][0]]();
}
else
@@ -580,9 +217,9 @@ static void PokedudeBufferRunCommand(void)
}
}
-static void sub_8156140(void)
+static void HandleInputChooseAction(void)
{
- sub_8159824();
+ PokedudeSimulateInputChooseAction();
}
static void CompleteOnBattlerSpriteCallbackDummy(void)
@@ -591,21 +228,21 @@ static void CompleteOnBattlerSpriteCallbackDummy(void)
PokedudeBufferExecCompleted();
}
-static void sub_8156184(void)
+static void CompleteOnBattlerSpritePosX_0(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE
- && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
{
- sub_80F1720(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
- else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
PokedudeBufferExecCompleted();
}
}
@@ -617,7 +254,7 @@ static void CompleteOnInactiveTextPrinter(void)
PokedudeBufferExecCompleted();
}
-static void sub_8156254(void)
+static void Pokedude_SetBattleEndCallbacks(void)
{
if (!gPaletteFade.active)
{
@@ -627,47 +264,47 @@ static void sub_8156254(void)
}
}
-static void sub_8156294(void)
+static void SwitchIn_HandleSoundAndEnd(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- CreateTask(c3_0802FDF4, 10);
+ CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PokedudeBufferExecCompleted();
}
}
-static void sub_81562F0(void)
+static void SwitchIn_CleanShinyAnimShowSubstitute(void)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattlerControllerFuncs[gActiveBattler] = sub_8156294;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_HandleSoundAndEnd;
}
}
-static void sub_81563A8(void)
+static void SwitchIn_TryShinyAnimShowHealthbox(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
- sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (gSprites[gUnknown_3004FFC[gActiveBattler]].callback == SpriteCallbackDummy
- && !(gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive))
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
+ && !(gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive))
{
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
CopyBattleSpriteInvisibility(gActiveBattler);
- gBattlerControllerFuncs[gActiveBattler] = sub_81562F0;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_CleanShinyAnimShowSubstitute;
}
}
@@ -677,18 +314,18 @@ static void CompleteOnSpecialAnimDone(void)
PokedudeBufferExecCompleted();
}
-static void sub_815649C(void)
+static void Intro_DelayAndEnd(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 255)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 255)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
PokedudeBufferExecCompleted();
}
}
-static void sub_81564E4(void)
+static void PokedudeHandleInputChooseMove(void)
{
- sub_8159998();
+ PokedudeSimulateInputChooseMove();
}
static void OpenPartyMenuToChooseMon(void)
@@ -696,9 +333,9 @@ static void OpenPartyMenuToChooseMon(void)
if (!gPaletteFade.active)
{
gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection;
- DestroyTask(gUnknown_3004FFC[gActiveBattler]);
+ DestroyTask(gBattleControllerData[gActiveBattler]);
FreeAllWindowBuffers();
- OpenPartyMenuInBattle();
+ Pokedude_OpenPartyMenuInBattle();
}
}
@@ -721,7 +358,7 @@ static void OpenBagAndChooseItem(void)
if (!gPaletteFade.active)
{
gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem;
- nullsub_44();
+ ReshowBattleScreenDummy();
FreeAllWindowBuffers();
switch (gSpecialVar_0x8004)
{
@@ -746,55 +383,55 @@ static void CompleteWhenChoseItem(void)
}
}
-static void sub_8156624(void)
+static void Intro_TryShinyAnimShowHealthbox(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
- sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
- sub_80F1720(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
+ TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK],
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler ^ BIT_FLANK);
+ StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]],
HEALTHBOX_ALL);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
- gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattlerControllerFuncs[gActiveBattler] = sub_81567B0;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 0;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForShinyAnimAndHealthbox;
}
}
-static void sub_81567B0(void)
+static void Intro_WaitForShinyAnimAndHealthbox(void)
{
bool32 r4 = FALSE;
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
r4 = TRUE;
if (r4
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
- {
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
- CreateTask(c3_0802FDF4, 10);
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
+ {
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
+ CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- gBattlerControllerFuncs[gActiveBattler] = sub_815649C;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
}
}
@@ -829,7 +466,7 @@ static void Task_GiveExpToMon(u8 taskId)
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
gActiveBattler = savedActiveBattler;
if (IsDoubleBattle() == TRUE
- && ((u16)monId == gBattlerPartyIndexes[battlerId] || (u16)monId == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]))
+ && ((u16)monId == gBattlerPartyIndexes[battlerId] || (u16)monId == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]))
gTasks[taskId].func = Task_LaunchLvlUpAnim;
else
gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter;
@@ -864,10 +501,10 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId)
expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp;
SetBattleBarStruct(battlerId, gHealthboxSpriteIds[battlerId], expToNextLvl, exp, -gainedExp);
PlaySE(SE_EXP);
- gTasks[taskId].func = sub_8156B24;
+ gTasks[taskId].func = Task_GiveExpWithExpBar;
}
-static void sub_8156B24(u8 taskId)
+static void Task_GiveExpWithExpBar(u8 taskId)
{
if (gTasks[taskId].tExpTask_frames < 13)
{
@@ -937,7 +574,7 @@ static void Task_UpdateLvlInHealthbox(u8 taskId)
{
u8 monIndex = gTasks[taskId].tExpTask_monId;
- GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value.
+ GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value.
if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])
UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL);
else
@@ -957,7 +594,7 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
DestroyTask(taskId);
}
-static void sub_8156DCC(void)
+static void FreeMonSpriteAfterFaintAnim(void)
{
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
@@ -1020,7 +657,7 @@ static void DoHitAnimBlinkSpriteEffect(void)
}
}
-static void sub_8156F7C(void)
+static void DoSwitchOutAnimation(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
@@ -1448,42 +1085,42 @@ static void SetPokedudeMonData(u8 monId)
switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
- {
- u8 iv;
+ {
+ u8 iv;
- SetMonData(mon, MON_DATA_SPECIES, &battlePokemon->species);
- SetMonData(mon, MON_DATA_HELD_ITEM, &battlePokemon->item);
- for (i = 0; i < MAX_MON_MOVES; ++i)
- {
- SetMonData(mon, MON_DATA_MOVE1 + i, &battlePokemon->moves[i]);
- SetMonData(mon, MON_DATA_PP1 + i, &battlePokemon->pp[i]);
- }
- SetMonData(mon, MON_DATA_PP_BONUSES, &battlePokemon->ppBonuses);
- SetMonData(mon, MON_DATA_FRIENDSHIP, &battlePokemon->friendship);
- SetMonData(mon, MON_DATA_EXP, &battlePokemon->experience);
- iv = battlePokemon->hpIV;
- SetMonData(mon, MON_DATA_HP_IV, &iv);
- iv = battlePokemon->attackIV;
- SetMonData(mon, MON_DATA_ATK_IV, &iv);
- iv = battlePokemon->defenseIV;
- SetMonData(mon, MON_DATA_DEF_IV, &iv);
- iv = battlePokemon->speedIV;
- SetMonData(mon, MON_DATA_SPEED_IV, &iv);
- iv = battlePokemon->spAttackIV;
- SetMonData(mon, MON_DATA_SPATK_IV, &iv);
- iv = battlePokemon->spDefenseIV;
- SetMonData(mon, MON_DATA_SPDEF_IV, &iv);
- SetMonData(mon, MON_DATA_PERSONALITY, &battlePokemon->personality);
- SetMonData(mon, MON_DATA_STATUS, &battlePokemon->status1);
- SetMonData(mon, MON_DATA_LEVEL, &battlePokemon->level);
- SetMonData(mon, MON_DATA_HP, &battlePokemon->hp);
- SetMonData(mon, MON_DATA_MAX_HP, &battlePokemon->maxHP);
- SetMonData(mon, MON_DATA_ATK, &battlePokemon->attack);
- SetMonData(mon, MON_DATA_DEF, &battlePokemon->defense);
- SetMonData(mon, MON_DATA_SPEED, &battlePokemon->speed);
- SetMonData(mon, MON_DATA_SPATK, &battlePokemon->spAttack);
- SetMonData(mon, MON_DATA_SPDEF, &battlePokemon->spDefense);
+ SetMonData(mon, MON_DATA_SPECIES, &battlePokemon->species);
+ SetMonData(mon, MON_DATA_HELD_ITEM, &battlePokemon->item);
+ for (i = 0; i < MAX_MON_MOVES; ++i)
+ {
+ SetMonData(mon, MON_DATA_MOVE1 + i, &battlePokemon->moves[i]);
+ SetMonData(mon, MON_DATA_PP1 + i, &battlePokemon->pp[i]);
}
+ SetMonData(mon, MON_DATA_PP_BONUSES, &battlePokemon->ppBonuses);
+ SetMonData(mon, MON_DATA_FRIENDSHIP, &battlePokemon->friendship);
+ SetMonData(mon, MON_DATA_EXP, &battlePokemon->experience);
+ iv = battlePokemon->hpIV;
+ SetMonData(mon, MON_DATA_HP_IV, &iv);
+ iv = battlePokemon->attackIV;
+ SetMonData(mon, MON_DATA_ATK_IV, &iv);
+ iv = battlePokemon->defenseIV;
+ SetMonData(mon, MON_DATA_DEF_IV, &iv);
+ iv = battlePokemon->speedIV;
+ SetMonData(mon, MON_DATA_SPEED_IV, &iv);
+ iv = battlePokemon->spAttackIV;
+ SetMonData(mon, MON_DATA_SPATK_IV, &iv);
+ iv = battlePokemon->spDefenseIV;
+ SetMonData(mon, MON_DATA_SPDEF_IV, &iv);
+ SetMonData(mon, MON_DATA_PERSONALITY, &battlePokemon->personality);
+ SetMonData(mon, MON_DATA_STATUS, &battlePokemon->status1);
+ SetMonData(mon, MON_DATA_LEVEL, &battlePokemon->level);
+ SetMonData(mon, MON_DATA_HP, &battlePokemon->hp);
+ SetMonData(mon, MON_DATA_MAX_HP, &battlePokemon->maxHP);
+ SetMonData(mon, MON_DATA_ATK, &battlePokemon->attack);
+ SetMonData(mon, MON_DATA_DEF, &battlePokemon->defense);
+ SetMonData(mon, MON_DATA_SPEED, &battlePokemon->speed);
+ SetMonData(mon, MON_DATA_SPATK, &battlePokemon->spAttack);
+ SetMonData(mon, MON_DATA_SPDEF, &battlePokemon->spDefense);
+ }
break;
case REQUEST_SPECIES_BATTLE:
SetMonData(mon, MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
@@ -1679,7 +1316,7 @@ static void PokedudeHandleLoadMonSprite(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
- gBattlerControllerFuncs[gActiveBattler] = sub_8156184;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpritePosX_0;
PokedudeBufferExecCompleted();
}
@@ -1690,8 +1327,8 @@ static void PokedudeHandleSwitchInAnim(void)
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
gActionSelectionCursor[gActiveBattler] = 0;
gMoveSelectionCursor[gActiveBattler] = 0;
- sub_8159478(gActiveBattler);
- gBattlerControllerFuncs[gActiveBattler] = sub_81563A8;
+ StartSendOutAnim(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_TryShinyAnimShowHealthbox;
}
static void PokedudeHandleReturnMonToBall(void)
@@ -1699,7 +1336,7 @@ static void PokedudeHandleReturnMonToBall(void)
if (gBattleBufferA[gActiveBattler][1] == 0)
{
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON);
- gBattlerControllerFuncs[gActiveBattler] = sub_8156F7C;
+ gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
}
else
{
@@ -1714,16 +1351,16 @@ static void PokedudeHandleDrawTrainerPic(void)
{
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
- DecompressTrainerBackPalette(4, gActiveBattler);
- SetMultiuseSpriteTemplateToTrainerBack(4, GetBattlerPosition(gActiveBattler));
+ DecompressTrainerBackPalette(BACK_PIC_POKEDUDE, gActiveBattler);
+ SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
- 80,
- (8 - gTrainerBackPicCoords[4].size) * 4 + 80,
- 30);
+ 80,
+ (8 - gTrainerBackPicCoords[BACK_PIC_POKEDUDE].size) * 4 + 80,
+ 30);
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
}
else
{
@@ -1740,23 +1377,23 @@ static void PokedudeHandleDrawTrainerPic(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[tranerPicid].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = tranerPicid;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
}
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
}
static void PokedudeHandleTrainerSlide(void)
{
- DecompressTrainerBackPalette(4, gActiveBattler);
- SetMultiuseSpriteTemplateToTrainerBack(4, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
- 80,
- (8 - gTrainerBackPicCoords[4].size) * 4 + 80,
+ DecompressTrainerBackPalette(BACK_PIC_POKEDUDE, gActiveBattler);
+ SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
+ 80,
+ (8 - gTrainerBackPicCoords[BACK_PIC_POKEDUDE].size) * 4 + 80,
30);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy2;
}
@@ -1784,14 +1421,14 @@ static void PokedudeHandleFaintAnimation(void)
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8012110;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintSlideAnim;
}
else
{
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_TARGET);
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon;
}
- gBattlerControllerFuncs[gActiveBattler] = sub_8156DCC;
+ gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterFaintAnim;
}
}
}
@@ -1860,7 +1497,7 @@ static void PokedudeDoMoveAnimation(void)
case 1:
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- sub_8035450(0);
+ SetBattlerSpriteAffineMode(0);
DoMoveAnim(move);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
@@ -1869,7 +1506,7 @@ static void PokedudeDoMoveAnimation(void)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- sub_8035450(1);
+ SetBattlerSpriteAffineMode(1);
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
@@ -1895,8 +1532,8 @@ static void PokedudeHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- if (sub_80D89B0(*stringId))
- BattlePutTextOnWindow(gDisplayedStringBattle, 64);
+ if (BattleStringShouldBeColored(*stringId))
+ BattlePutTextOnWindow(gDisplayedStringBattle, 0x40);
else
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
@@ -1910,13 +1547,13 @@ static void PokedudeHandlePrintSelectionString(void)
PokedudeBufferExecCompleted();
}
-static void sub_8158B20(void)
+static void HandleChooseActionAfterDma3(void)
{
if (!IsDma3ManagerBusyWithBgCopy())
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 160;
- gBattlerControllerFuncs[gActiveBattler] = sub_8156140;
+ gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseAction;
}
}
@@ -1926,7 +1563,7 @@ static void PokedudeHandleChooseAction(void)
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
- gBattlerControllerFuncs[gActiveBattler] = sub_8158B20;
+ gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
BattlePutTextOnWindow(gText_EmptyString3, 0);
BattlePutTextOnWindow(gText_BattleMenu, 2);
for (i = 0; i < MAX_MON_MOVES; ++i)
@@ -1937,7 +1574,7 @@ static void PokedudeHandleChooseAction(void)
}
else
{
- gBattlerControllerFuncs[gActiveBattler] = sub_8156140;
+ gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseAction;
}
}
@@ -1946,13 +1583,13 @@ static void PokedudeHandleUnknownYesNoBox(void)
PokedudeBufferExecCompleted();
}
-static void sub_8158C04(void)
+static void PokedudeHandleChooseMoveAfterDma3(void)
{
if (!IsDma3ManagerBusyWithBgCopy())
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 320;
- gBattlerControllerFuncs[gActiveBattler] = sub_81564E4;
+ gBattlerControllerFuncs[gActiveBattler] = PokedudeHandleInputChooseMove;
}
}
@@ -1961,11 +1598,11 @@ static void PokedudeHandleChooseMove(void)
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
InitMoveSelectionsVarsAndStrings();
- gBattlerControllerFuncs[gActiveBattler] = sub_8158C04;
+ gBattlerControllerFuncs[gActiveBattler] = PokedudeHandleChooseMoveAfterDma3;
}
else
{
- gBattlerControllerFuncs[gActiveBattler] = sub_81564E4;
+ gBattlerControllerFuncs[gActiveBattler] = PokedudeHandleInputChooseMove;
}
}
@@ -1984,10 +1621,10 @@ static void PokedudeHandleChoosePokemon(void)
{
s32 i;
- gUnknown_3004FFC[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
- gTasks[gUnknown_3004FFC[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
+ gBattleControllerData[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
+ gTasks[gBattleControllerData[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
*(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4;
- *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2];
+ *(&gBattleStruct->playerPartyIdx) = gBattleBufferA[gActiveBattler][2];
*(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3];
for (i = 0; i < 3; ++i)
gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][4 + i];
@@ -2016,13 +1653,13 @@ static void PokedudeHandleHealthBarUpdate(void)
{
u32 maxHP = GetMonData(mon, MON_DATA_MAX_HP);
u32 curHP = GetMonData(mon, MON_DATA_HP);
-
+
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal);
}
else
{
u32 maxHP = GetMonData(mon, MON_DATA_MAX_HP);
-
+
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT);
}
@@ -2049,13 +1686,13 @@ static void PokedudeHandleExpUpdate(void)
gTasks[taskId].tExpTask_monId = monId;
gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
gTasks[taskId].tExpTask_battler = gActiveBattler;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_99;
+ gBattlerControllerFuncs[gActiveBattler] = PokedudeDummy;
}
}
static void PokedudeHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 battlerId;
struct Pokemon *mon;
@@ -2073,7 +1710,7 @@ static void PokedudeHandleStatusIconUpdate(void)
static void PokedudeHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
@@ -2219,43 +1856,43 @@ static void PokedudeHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
- StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80335F8);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
- LoadCompressedPalette(gTrainerBackPicPaletteTable[4].data, 0x100 + paletteNum * 16, 32);
+ LoadCompressedPalette(gTrainerBackPicPaletteTable[BACK_PIC_POKEDUDE].data, 0x100 + paletteNum * 16, 32);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
- taskId = CreateTask(sub_81595EC, 5);
+ taskId = CreateTask(Task_StartSendOutAnim, 5);
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
- gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_99;
+ gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 1;
+ gBattlerControllerFuncs[gActiveBattler] = PokedudeDummy;
}
-static void sub_8159478(u8 battlerId)
+static void StartSendOutAnim(u8 battlerId)
{
u16 species;
gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies = SPECIES_NONE;
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
- gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C);
+ gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
GetBattlerSpriteSubpriority(battlerId));
- gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
+ gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
+ gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
-static void sub_81595EC(u8 taskId)
+static void Task_StartSendOutAnim(u8 taskId)
{
if (gTasks[taskId].data[1] < 31)
{
@@ -2267,8 +1904,8 @@ static void sub_81595EC(u8 taskId)
gActiveBattler = gTasks[taskId].data[0];
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_8159478(gActiveBattler);
- gBattlerControllerFuncs[gActiveBattler] = sub_8156624;
+ StartSendOutAnim(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = Intro_TryShinyAnimShowHealthbox;
gActiveBattler = savedActiveBattler;
DestroyTask(taskId);
}
@@ -2277,7 +1914,7 @@ static void sub_81595EC(u8 taskId)
static void PokedudeHandleDrawPartyStatusSummary(void)
{
if (gBattleBufferA[gActiveBattler][1] != 0
- && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
+ && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
PokedudeBufferExecCompleted();
}
@@ -2344,31 +1981,467 @@ static void PokedudeHandleCmd55(void)
{
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
- BeginFastPaletteFade(3);
+ BeginFastPaletteFade(FAST_FADE_OUT_TO_BLACK);
PokedudeBufferExecCompleted();
if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER) && gBattleTypeFlags & BATTLE_TYPE_LINK)
- gBattlerControllerFuncs[gActiveBattler] = sub_8156254;
+ gBattlerControllerFuncs[gActiveBattler] = Pokedude_SetBattleEndCallbacks;
}
static void PokedudeCmdEnd(void)
{
}
-static void sub_8159824(void)
+// Script handlers
+
+struct PokedudeInputScript
+{
+ // 0-3 for selection, 4 to repeat action, 255 to repeat move
+ u8 cursorPos[MAX_BATTLERS_COUNT];
+ u8 delay[MAX_BATTLERS_COUNT];
+};
+
+static const struct PokedudeInputScript sInputScripts_ChooseAction_Battle[] =
+{
+ {
+ .cursorPos = {0, 0},
+ .delay = {64, 0}
+ },
+ {
+ .cursorPos = {4, 4},
+ .delay = {0, 0}
+ },
+};
+
+static const struct PokedudeInputScript sInputScripts_ChooseAction_Status[] =
+{
+ {
+ .cursorPos = {0, 0},
+ .delay = {64, 0}
+ },
+ {
+ .cursorPos = {1, 0},
+ .delay = {64, 0}
+ },
+ {
+ .cursorPos = {0, 0},
+ .delay = {64, 0}
+ },
+};
+
+static const struct PokedudeInputScript sInputScripts_ChooseAction_Matchups[] =
+{
+ {
+ .cursorPos = {0, 0},
+ .delay = {64, 0}
+ },
+ {
+ .cursorPos = {2, 0},
+ .delay = {64, 0}
+ },
+ {
+ .cursorPos = {0, 0},
+ .delay = {64, 0}
+ },
+};
+
+static const struct PokedudeInputScript sInputScripts_ChooseAction_Catching[] =
+{
+ {
+ .cursorPos = {0, 0},
+ .delay = {64, 0}
+ },
+ {
+ .cursorPos = {0, 0},
+ .delay = {64, 0}
+ },
+ {
+ .cursorPos = {1, 0},
+ .delay = {64, 0}
+ },
+};
+
+static const struct PokedudeInputScript *const sInputScripts_ChooseAction[] =
+{
+ [TTVSCR_BATTLE] = sInputScripts_ChooseAction_Battle,
+ [TTVSCR_STATUS] = sInputScripts_ChooseAction_Status,
+ [TTVSCR_MATCHUPS] = sInputScripts_ChooseAction_Matchups,
+ [TTVSCR_CATCHING] = sInputScripts_ChooseAction_Catching,
+};
+
+static const struct PokedudeInputScript sInputScripts_ChooseMove_Battle[] =
{
- const u8 (*r7)[8] = gUnknown_8479060[gBattleStruct->field_96];
-
+ {
+ .cursorPos = { 2, 2},
+ .delay = { 64, 0}
+ },
+ {
+ .cursorPos = {255, 255},
+ .delay = { 0, 0}
+ },
+};
+
+static const struct PokedudeInputScript sInputScripts_ChooseMove_Status[] =
+{
+ {
+ .cursorPos = { 2, 2},
+ .delay = { 64, 0}
+ },
+ {
+ .cursorPos = { 2, 0},
+ .delay = { 64, 0}
+ },
+ {
+ .cursorPos = { 2, 0},
+ .delay = { 64, 0}
+ },
+ {
+ .cursorPos = {255, 255},
+ .delay = { 0, 0}
+ },
+};
+
+static const struct PokedudeInputScript sInputScripts_ChooseMove_Matchups[] =
+{
+ {
+ .cursorPos = { 2, 0},
+ .delay = { 64, 0}
+ },
+ {
+ .cursorPos = { 0, 0},
+ .delay = { 64, 0}
+ },
+ {
+ .cursorPos = { 0, 0},
+ .delay = { 64, 0}
+ },
+ {
+ .cursorPos = {255, 255},
+ .delay = { 0, 0}
+ },
+};
+
+static const struct PokedudeInputScript sInputScripts_ChooseMove_Catching[] =
+{
+ {
+ .cursorPos = { 0, 2},
+ .delay = { 64, 0}
+ },
+ {
+ .cursorPos = { 2, 2},
+ .delay = { 64, 0}
+ },
+ {
+ .cursorPos = {255, 255},
+ .delay = { 0, 0}
+ },
+};
+
+static const struct PokedudeInputScript *const sInputScripts_ChooseMove[] =
+{
+ [TTVSCR_BATTLE] = sInputScripts_ChooseMove_Battle,
+ [TTVSCR_STATUS] = sInputScripts_ChooseMove_Status,
+ [TTVSCR_MATCHUPS] = sInputScripts_ChooseMove_Matchups,
+ [TTVSCR_CATCHING] = sInputScripts_ChooseMove_Catching,
+};
+
+static const struct PokedudeTextScriptHeader sPokedudeTextScripts_Battle[] =
+{
+ {
+ .btlcmd = CONTROLLER_CHOOSEACTION,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_PRINTSTRING,
+ .side = B_SIDE_OPPONENT,
+ .stringid = STRINGID_USEDMOVE,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_CHOOSEACTION,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_PRINTSTRING,
+ .side = B_SIDE_PLAYER,
+ .stringid = STRINGID_PKMNGAINEDEXP,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+};
+
+static const struct PokedudeTextScriptHeader sPokedudeTextScripts_Status[] =
+{
+ {
+ .btlcmd = CONTROLLER_CHOOSEACTION,
+ .side = B_SIDE_PLAYER,
+ .callback = NULL,
+ },
+ {
+ .btlcmd = CONTROLLER_CHOOSEACTION,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintMessageWithHealthboxPals,
+ },
+ {
+ .btlcmd = CONTROLLER_OPENBAG,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_PRINTSTRING,
+ .side = B_SIDE_OPPONENT,
+ .stringid = STRINGID_USEDMOVE,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_PRINTSTRING,
+ .side = B_SIDE_PLAYER,
+ .stringid = STRINGID_PKMNGAINEDEXP,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+};
+
+static const struct PokedudeTextScriptHeader sPokedudeTextScripts_Matchups[] =
+{
+ {
+ .btlcmd = CONTROLLER_PRINTSTRING,
+ .side = B_SIDE_OPPONENT,
+ .stringid = STRINGID_USEDMOVE,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_CHOOSEACTION,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_CHOOSEPOKEMON,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_PRINTSTRING,
+ .side = B_SIDE_OPPONENT,
+ .stringid = STRINGID_USEDMOVE,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_CHOOSEACTION,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_CHOOSEMOVE,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_PRINTSTRING,
+ .side = B_SIDE_PLAYER,
+ .stringid = STRINGID_PKMNGAINEDEXP,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+};
+
+static const struct PokedudeTextScriptHeader sPokedudeTextScripts_Catching[] =
+{
+ {
+ .btlcmd = CONTROLLER_CHOOSEACTION,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_CHOOSEACTION,
+ .side = B_SIDE_PLAYER,
+ .callback = NULL,
+ },
+ {
+ .btlcmd = CONTROLLER_CHOOSEACTION,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_PRINTSTRING,
+ .side = B_SIDE_OPPONENT,
+ .stringid = STRINGID_PKMNFASTASLEEP,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_OPENBAG,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+ {
+ .btlcmd = CONTROLLER_55,
+ .side = B_SIDE_PLAYER,
+ .callback = PokedudeAction_PrintVoiceoverMessage,
+ },
+};
+
+static const struct PokedudeTextScriptHeader *const sPokedudeTextScripts[] =
+{
+ [TTVSCR_BATTLE] = sPokedudeTextScripts_Battle,
+ [TTVSCR_STATUS] = sPokedudeTextScripts_Status,
+ [TTVSCR_MATCHUPS] = sPokedudeTextScripts_Matchups,
+ [TTVSCR_CATCHING] = sPokedudeTextScripts_Catching,
+};
+
+static const u8 *const sPokedudeTexts_Battle[] =
+{
+ Pokedude_Text_SpeedierBattlerGoesFirst,
+ Pokedude_Text_MyRattataFasterThanPidgey,
+ Pokedude_Text_BattlersTakeTurnsAttacking,
+ Pokedude_Text_MyRattataWonGetsEXP,
+};
+
+static const u8 *const sPokedudeTexts_Status[] =
+{
+ Pokedude_Text_UhOhRattataPoisoned,
+ Pokedude_Text_UhOhRattataPoisoned,
+ Pokedude_Text_HealStatusRightAway,
+ Pokedude_Text_UsingItemTakesTurn,
+ Pokedude_Text_YayWeManagedToWin,
+};
+
+static const u8 *const sPokedudeTexts_TypeMatchup[] =
+{
+ Pokedude_Text_WaterNotVeryEffectiveAgainstGrass,
+ Pokedude_Text_GrassEffectiveAgainstWater,
+ Pokedude_Text_LetsTryShiftingMons,
+ Pokedude_Text_ShiftingUsesTurn,
+ Pokedude_Text_ButterfreeDoubleResistsGrass,
+ Pokedude_Text_ButterfreeGoodAgainstOddish,
+ Pokedude_Text_YeahWeWon,
+};
+
+static const u8 *const sPokedudeTexts_Catching[] =
+{
+ Pokedude_Text_WeakenMonBeforeCatching,
+ Pokedude_Text_WeakenMonBeforeCatching,
+ Pokedude_Text_BestIfTargetStatused,
+ Pokedude_Text_CantDoubleUpOnStatus,
+ Pokedude_Text_LetMeThrowBall,
+ Pokedude_Text_PickBestKindOfBall,
+};
+
+static const struct PokedudeBattlePartyInfo sParties_Battle[] =
+{
+ {
+ .side = B_SIDE_PLAYER,
+ .level = 15,
+ .species = SPECIES_RATTATA,
+ .moves = { MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_HYPER_FANG, MOVE_QUICK_ATTACK },
+ .nature = NATURE_LONELY,
+ .gender = MALE,
+ },
+ {
+ .side = B_SIDE_OPPONENT,
+ .level = 18,
+ .species = SPECIES_PIDGEY,
+ .moves = { MOVE_TACKLE, MOVE_SAND_ATTACK, MOVE_GUST, MOVE_QUICK_ATTACK },
+ .nature = NATURE_NAUGHTY,
+ .gender = MALE,
+ },
+ {0xFF}
+};
+
+static const struct PokedudeBattlePartyInfo sParties_Status[] =
+{
+ {
+ .side = B_SIDE_PLAYER,
+ .level = 15,
+ .species = SPECIES_RATTATA,
+ .moves = { MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_HYPER_FANG, MOVE_QUICK_ATTACK },
+ .nature = NATURE_LONELY,
+ .gender = MALE,
+ },
+ {
+ .side = B_SIDE_OPPONENT,
+ .level = 14,
+ .species = SPECIES_ODDISH,
+ .moves = { MOVE_ABSORB, MOVE_SWEET_SCENT, MOVE_POISON_POWDER },
+ .nature = NATURE_RASH,
+ .gender = MALE,
+ },
+ {0xFF}
+};
+
+static const struct PokedudeBattlePartyInfo sParties_Matchups[] =
+{
+ {
+ .side = B_SIDE_PLAYER,
+ .level = 15,
+ .species = SPECIES_POLIWAG,
+ .moves = { MOVE_WATER_GUN, MOVE_HYPNOSIS, MOVE_BUBBLE },
+ .nature = NATURE_RASH,
+ .gender = MALE,
+ },
+ {
+ .side = B_SIDE_PLAYER,
+ .level = 15,
+ .species = SPECIES_BUTTERFREE,
+ .moves = { MOVE_CONFUSION, MOVE_POISON_POWDER, MOVE_STUN_SPORE, MOVE_SLEEP_POWDER },
+ .nature = NATURE_RASH,
+ .gender = MALE,
+ },
+ {
+ .side = B_SIDE_OPPONENT,
+ .level = 14,
+ .species = SPECIES_ODDISH,
+ .moves = { MOVE_ABSORB, MOVE_SWEET_SCENT, MOVE_POISON_POWDER },
+ .nature = NATURE_RASH,
+ .gender = MALE,
+ },
+ {0xFF}
+};
+
+static const struct PokedudeBattlePartyInfo sParties_Catching[] =
+{
+ {
+ .side = B_SIDE_PLAYER,
+ .level = 15,
+ .species = SPECIES_BUTTERFREE,
+ .moves = { MOVE_CONFUSION, MOVE_POISON_POWDER, MOVE_SLEEP_POWDER, MOVE_STUN_SPORE },
+ .nature = NATURE_RASH,
+ .gender = MALE,
+ },
+ {
+ .side = B_SIDE_OPPONENT,
+ .level = 11,
+ .species = SPECIES_JIGGLYPUFF,
+ .moves = { MOVE_SING, MOVE_DEFENSE_CURL, MOVE_POUND },
+ .nature = NATURE_CAREFUL,
+ .gender = MALE,
+ },
+ {0xFF}
+};
+
+
+static const struct PokedudeBattlePartyInfo *const sPokedudeBattlePartyPointers[] =
+{
+ [TTVSCR_BATTLE] = sParties_Battle,
+ [TTVSCR_STATUS] = sParties_Status,
+ [TTVSCR_MATCHUPS] = sParties_Matchups,
+ [TTVSCR_CATCHING] = sParties_Catching,
+};
+
+struct PokedudeBattlerState *gPokedudeBattlerStates[MAX_BATTLERS_COUNT];
+
+static void PokedudeSimulateInputChooseAction(void)
+{
+ const struct PokedudeInputScript *script_p = sInputScripts_ChooseAction[gBattleStruct->pdScriptNum];
+
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1);
DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1);
}
- if (*(r7[gUnknown_3005EE0[gActiveBattler][0]] + gActiveBattler + 4) == gUnknown_3005EE0[gActiveBattler][2])
+ if (script_p[gPokedudeBattlerStates[gActiveBattler]->action_idx].delay[gActiveBattler] == gPokedudeBattlerStates[gActiveBattler]->timer)
{
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
PlaySE(SE_SELECT);
- gUnknown_3005EE0[gActiveBattler][2] = 0;
- switch (r7[gUnknown_3005EE0[gActiveBattler][0]][gActiveBattler])
+ gPokedudeBattlerStates[gActiveBattler]->timer = 0;
+ switch (script_p[gPokedudeBattlerStates[gActiveBattler]->action_idx].cursorPos[gActiveBattler])
{
case 0:
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0);
@@ -2384,169 +2457,169 @@ static void sub_8159824(void)
break;
}
PokedudeBufferExecCompleted();
- ++gUnknown_3005EE0[gActiveBattler][0];
- if (r7[gUnknown_3005EE0[gActiveBattler][0]][gActiveBattler] == 4)
- gUnknown_3005EE0[gActiveBattler][0] = 0;
+ ++gPokedudeBattlerStates[gActiveBattler]->action_idx;
+ if (script_p[gPokedudeBattlerStates[gActiveBattler]->action_idx].cursorPos[gActiveBattler] == 4)
+ gPokedudeBattlerStates[gActiveBattler]->action_idx = 0;
}
else
{
- if (gActionSelectionCursor[gActiveBattler] != r7[gUnknown_3005EE0[gActiveBattler][0]][gActiveBattler]
- && r7[gUnknown_3005EE0[gActiveBattler][0]][gActiveBattler + 4] / 2 == gUnknown_3005EE0[gActiveBattler][2])
+ if (gActionSelectionCursor[gActiveBattler] != script_p[gPokedudeBattlerStates[gActiveBattler]->action_idx].cursorPos[gActiveBattler]
+ && script_p[gPokedudeBattlerStates[gActiveBattler]->action_idx].delay[gActiveBattler] / 2 == gPokedudeBattlerStates[gActiveBattler]->timer)
{
PlaySE(SE_SELECT);
ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]);
- gActionSelectionCursor[gActiveBattler] = r7[gUnknown_3005EE0[gActiveBattler][0]][gActiveBattler];
+ gActionSelectionCursor[gActiveBattler] = script_p[gPokedudeBattlerStates[gActiveBattler]->action_idx].cursorPos[gActiveBattler];
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
- ++gUnknown_3005EE0[gActiveBattler][2];
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
}
}
-static void sub_8159998(void)
+static void PokedudeSimulateInputChooseMove(void)
{
- const u8 (*r7)[8] = gUnknown_84790D8[gBattleStruct->field_96];
+ const struct PokedudeInputScript *script_p = sInputScripts_ChooseMove[gBattleStruct->pdScriptNum];
- if (*(r7[gUnknown_3005EE0[gActiveBattler][1]] + gActiveBattler + 4) == gUnknown_3005EE0[gActiveBattler][2])
+ if (script_p[gPokedudeBattlerStates[gActiveBattler]->move_idx].delay[gActiveBattler] == gPokedudeBattlerStates[gActiveBattler]->timer)
{
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
PlaySE(SE_SELECT);
- gUnknown_3005EE0[gActiveBattler][2] = 0;
+ gPokedudeBattlerStates[gActiveBattler]->timer = 0;
BtlController_EmitTwoReturnValues(1,
B_ACTION_EXEC_SCRIPT,
- r7[gUnknown_3005EE0[gActiveBattler][1]][gActiveBattler] | ((gActiveBattler ^ BIT_SIDE) << 8));
+ script_p[gPokedudeBattlerStates[gActiveBattler]->move_idx].cursorPos[gActiveBattler] | ((gActiveBattler ^ BIT_SIDE) << 8));
PokedudeBufferExecCompleted();
- ++gUnknown_3005EE0[gActiveBattler][1];
- if (r7[gUnknown_3005EE0[gActiveBattler][1]][gActiveBattler] == 255)
- gUnknown_3005EE0[gActiveBattler][1] = 0;
+ ++gPokedudeBattlerStates[gActiveBattler]->move_idx;
+ if (script_p[gPokedudeBattlerStates[gActiveBattler]->move_idx].cursorPos[gActiveBattler] == 255)
+ gPokedudeBattlerStates[gActiveBattler]->move_idx = 0;
}
else
{
- if (r7[gUnknown_3005EE0[gActiveBattler][1]][gActiveBattler] != gMoveSelectionCursor[gActiveBattler]
- && r7[gUnknown_3005EE0[gActiveBattler][1]][gActiveBattler + 4] / 2 == gUnknown_3005EE0[gActiveBattler][2])
+ if (script_p[gPokedudeBattlerStates[gActiveBattler]->move_idx].cursorPos[gActiveBattler] != gMoveSelectionCursor[gActiveBattler]
+ && script_p[gPokedudeBattlerStates[gActiveBattler]->move_idx].delay[gActiveBattler] / 2 == gPokedudeBattlerStates[gActiveBattler]->timer)
{
PlaySE(SE_SELECT);
MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
- gMoveSelectionCursor[gActiveBattler] = r7[gUnknown_3005EE0[gActiveBattler][1]][gActiveBattler];
+ gMoveSelectionCursor[gActiveBattler] = script_p[gPokedudeBattlerStates[gActiveBattler]->move_idx].cursorPos[gActiveBattler];
MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
}
- ++gUnknown_3005EE0[gActiveBattler][2];
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
}
}
-static bool8 sub_8159AB8(void)
+static bool8 HandlePokedudeVoiceoverEtc(void)
{
- const struct Unk_84790E8 *r6 = gUnknown_8479198[gBattleStruct->field_96];
- const u16 * r12 = (const u16 *)&gBattleBufferA[gActiveBattler][2];
+ const struct PokedudeTextScriptHeader *header_p = sPokedudeTextScripts[gBattleStruct->pdScriptNum];
+ const u16 * bstringid_p = (const u16 *)&gBattleBufferA[gActiveBattler][2];
- if (gBattleBufferA[gActiveBattler][0] != r6[gBattleStruct->field_97].unk_0)
+ if (gBattleBufferA[gActiveBattler][0] != header_p[gBattleStruct->pdMessageNo].btlcmd)
return FALSE;
- if (gActiveBattler != r6[gBattleStruct->field_97].unk_1)
+ if (gActiveBattler != header_p[gBattleStruct->pdMessageNo].side)
return FALSE;
- if (gBattleBufferA[gActiveBattler][0] == 16 && r6[gBattleStruct->field_97].unk_2 != *r12)
+ if (gBattleBufferA[gActiveBattler][0] == CONTROLLER_PRINTSTRING && header_p[gBattleStruct->pdMessageNo].stringid != *bstringid_p)
return FALSE;
- if (r6[gBattleStruct->field_97].unk_4 == NULL)
+ if (header_p[gBattleStruct->pdMessageNo].callback == NULL)
{
- gBattleStruct->field_97++;
+ gBattleStruct->pdMessageNo++;
return FALSE;
}
- gBattlerControllerFuncs[gActiveBattler] = r6[gBattleStruct->field_97].unk_4;
- gUnknown_3005EE0[gActiveBattler][2] = 0;
- gUnknown_3005EE0[gActiveBattler][3] = r6[gBattleStruct->field_97].unk_2;
- gBattleStruct->field_97++;
+ gBattlerControllerFuncs[gActiveBattler] = header_p[gBattleStruct->pdMessageNo].callback;
+ gPokedudeBattlerStates[gActiveBattler]->timer = 0;
+ gPokedudeBattlerStates[gActiveBattler]->msg_idx = header_p[gBattleStruct->pdMessageNo].stringid;
+ gBattleStruct->pdMessageNo++;
return TRUE;
}
-static void sub_8159B78(void)
+static void ReturnFromPokedudeAction(void)
{
- gUnknown_3005EE0[gActiveBattler][2] = 0;
+ gPokedudeBattlerStates[gActiveBattler]->timer = 0;
gBattlerControllerFuncs[gActiveBattler] = PokedudeBufferRunCommand;
}
-static void sub_8159BA8(void)
+static void PokedudeAction_PrintVoiceoverMessage(void)
{
- switch (gUnknown_3005EE0[gActiveBattler][2])
+ switch (gPokedudeBattlerStates[gActiveBattler]->timer)
{
case 0:
if (!gPaletteFade.active)
{
BeginNormalPaletteFade(0xFFFFFF7F, 4, 0, 8, RGB_BLACK);
- ++gUnknown_3005EE0[gActiveBattler][2];
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
}
break;
case 1:
if (!gPaletteFade.active)
{
- gUnknown_3005EE0[gActiveBattler][4] = gBattle_BG0_Y;
- sub_80EB30C();
- ++gUnknown_3005EE0[gActiveBattler][2];
+ gPokedudeBattlerStates[gActiveBattler]->saved_bg0y = gBattle_BG0_Y;
+ BtlCtrl_DrawVoiceoverMessageFrame();
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
}
break;
case 2:
gBattle_BG0_Y = 0;
BattleStringExpandPlaceholdersToDisplayedString(GetPokedudeText());
BattlePutTextOnWindow(gDisplayedStringBattle, 24);
- ++gUnknown_3005EE0[gActiveBattler][2];
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
break;
case 3:
if (!IsTextPrinterActive(24) && JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFF7F, 4, 8, 0, RGB_BLACK);
- ++gUnknown_3005EE0[gActiveBattler][2];
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
}
break;
case 4:
if (!gPaletteFade.active)
{
- if (gUnknown_3005EE0[gActiveBattler][3] == 13)
+ if (gPokedudeBattlerStates[gActiveBattler]->msg_idx == STRINGID_PKMNGAINEDEXP)
{
BattleStopLowHpSound();
PlayBGM(MUS_VICTORY_WILD);
}
- gBattle_BG0_Y = gUnknown_3005EE0[gActiveBattler][4];
- sub_80EB524();
- sub_8159B78();
+ gBattle_BG0_Y = gPokedudeBattlerStates[gActiveBattler]->saved_bg0y;
+ BtlCtrl_RemoveVoiceoverMessageFrame();
+ ReturnFromPokedudeAction();
}
break;
}
}
-static void sub_8159D04(void)
+static void PokedudeAction_PrintMessageWithHealthboxPals(void)
{
- switch (gUnknown_3005EE0[gActiveBattler][2])
+ switch (gPokedudeBattlerStates[gActiveBattler]->timer)
{
case 0:
if (!gPaletteFade.active)
{
- sub_80EEFC8(&gBattleStruct->field_95,
- &gBattleStruct->field_94,
- GetBattlerAtPosition(B_POSITION_PLAYER_LEFT));
+ DoLoadHealthboxPalsForLevelUp(&gBattleStruct->pdHealthboxPal2,
+ &gBattleStruct->pdHealthboxPal1,
+ GetBattlerAtPosition(B_POSITION_PLAYER_LEFT));
BeginNormalPaletteFade(0xFFFFFF7F, 4, 0, 8, RGB_BLACK);
- ++gUnknown_3005EE0[gActiveBattler][2];
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
}
break;
case 1:
if (!gPaletteFade.active)
{
- u32 mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_94]) << 16;
+ u32 mask = (gBitTable[gBattleStruct->pdHealthboxPal2] | gBitTable[gBattleStruct->pdHealthboxPal1]) << 16;
++mask; // It's possible that this is influenced by other functions, as
- --mask; // this also striked in battle_controller_oak_old_man.c but was naturally fixed.
+ --mask; // this also striked in battle_controller_oak_old_man.c but was naturally fixed.
BeginNormalPaletteFade(mask, 4, 8, 0, RGB_BLACK);
- ++gUnknown_3005EE0[gActiveBattler][2];
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
}
break;
case 2:
if (!gPaletteFade.active)
{
- sub_80EB30C();
- ++gUnknown_3005EE0[gActiveBattler][2];
+ BtlCtrl_DrawVoiceoverMessageFrame();
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
}
break;
case 3:
BattleStringExpandPlaceholdersToDisplayedString(GetPokedudeText());
BattlePutTextOnWindow(gDisplayedStringBattle, 24);
- ++gUnknown_3005EE0[gActiveBattler][2];
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
break;
case 4:
if (!IsTextPrinterActive(24) && JOY_NEW(A_BUTTON))
@@ -2554,31 +2627,31 @@ static void sub_8159D04(void)
u32 mask;
PlaySE(SE_SELECT);
- mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_94]) << 16;
+ mask = (gBitTable[gBattleStruct->pdHealthboxPal2] | gBitTable[gBattleStruct->pdHealthboxPal1]) << 16;
++mask;
--mask;
BeginNormalPaletteFade(mask, 4, 0, 8, RGB_BLACK);
- ++gUnknown_3005EE0[gActiveBattler][2];
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
}
break;
case 5:
if (!gPaletteFade.active)
{
BeginNormalPaletteFade(0xFFFFFF7F, 4, 8, 0, RGB_BLACK);
- ++gUnknown_3005EE0[gActiveBattler][2];
+ ++gPokedudeBattlerStates[gActiveBattler]->timer;
}
break;
case 6:
if (!gPaletteFade.active)
{
- if (gUnknown_3005EE0[gActiveBattler][3] == 13)
+ if (gPokedudeBattlerStates[gActiveBattler]->msg_idx == STRINGID_PKMNGAINEDEXP)
{
BattleStopLowHpSound();
PlayBGM(MUS_VICTORY_WILD);
}
- sub_80EF0E0(GetBattlerAtPosition(B_POSITION_PLAYER_LEFT));
- sub_80EB524();
- sub_8159B78();
+ DoFreeHealthboxPalsForLevelUp(GetBattlerAtPosition(B_POSITION_PLAYER_LEFT));
+ BtlCtrl_RemoveVoiceoverMessageFrame();
+ ReturnFromPokedudeAction();
}
break;
}
@@ -2586,17 +2659,17 @@ static void sub_8159D04(void)
static const u8 *GetPokedudeText(void)
{
- switch (gBattleStruct->field_96)
+ switch (gBattleStruct->pdScriptNum)
{
case TTVSCR_BATTLE:
default:
- return sPokedudeTexts_Battle[gBattleStruct->field_97 - 1];
+ return sPokedudeTexts_Battle[gBattleStruct->pdMessageNo - 1];
case TTVSCR_STATUS:
- return sPokedudeTexts_Status[gBattleStruct->field_97 - 1];
+ return sPokedudeTexts_Status[gBattleStruct->pdMessageNo - 1];
case TTVSCR_MATCHUPS:
- return sPokedudeTexts_TypeMatchup[gBattleStruct->field_97 - 1];
+ return sPokedudeTexts_TypeMatchup[gBattleStruct->pdMessageNo - 1];
case TTVSCR_CATCHING:
- return sPokedudeTexts_Catching[gBattleStruct->field_97 - 1];
+ return sPokedudeTexts_Catching[gBattleStruct->pdMessageNo - 1];
}
}
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index b09661675..de67bf9bc 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -139,7 +139,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
};
// not used
-static void SpriteCB_Null4(struct Sprite *sprite)
+static void SafariDummy(void)
{
}
@@ -242,7 +242,7 @@ static void CompleteOnHealthboxSpriteCallbackDummy(void)
SafariBufferExecCompleted();
}
-static void sub_80DD7B0(void)
+static void Safari_SetBattleEndCallbacks(void)
{
if (!gPaletteFade.active)
{
@@ -348,7 +348,7 @@ static void SafariHandleDrawTrainerPic(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
}
@@ -408,7 +408,7 @@ static void SafariHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- if (sub_80D89B0(*stringId))
+ if (BattleStringShouldBeColored(*stringId))
BattlePutTextOnWindow(gDisplayedStringBattle, 0x40);
else
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
@@ -608,7 +608,7 @@ static void SafariHandleIntroSlide(void)
static void SafariHandleIntroTrainerBallThrow(void)
{
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_SAFARI_ALL_TEXT);
- sub_804BD94(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthboxSpriteCallbackDummy;
}
@@ -661,7 +661,7 @@ static void SafariHandleCmd55(void)
BeginFastPaletteFade(3);
SafariBufferExecCompleted();
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
- gBattlerControllerFuncs[gActiveBattler] = sub_80DD7B0;
+ gBattlerControllerFuncs[gActiveBattler] = Safari_SetBattleEndCallbacks;
}
static void SafariCmdEnd(void)
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 583a64eaa..a0495ac15 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -45,10 +45,10 @@ void SetUpBattleVars(void)
{
s32 i;
- gBattleMainFunc = nullsub_12;
+ gBattleMainFunc = BattleDummy;
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
{
- gBattlerControllerFuncs[i] = nullsub_13;
+ gBattlerControllerFuncs[i] = PlayerDummy;
gBattlerPositions[i] = 0xFF;
gActionSelectionCursor[i] = 0;
gMoveSelectionCursor[i] = 0;
@@ -62,7 +62,7 @@ void SetUpBattleVars(void)
gUnknown_2023DDC = 0;
}
-void sub_800D30C(void)
+void InitBtlControllers(void)
{
s32 i;
@@ -481,7 +481,7 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
}
}
-void sub_800DD28(void)
+void TryReceiveLinkBattleData(void)
{
u8 i;
s32 j;
@@ -748,7 +748,7 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
stringInfo->lastItem = gLastUsedItem;
stringInfo->lastAbility = gLastUsedAbility;
stringInfo->scrActive = gBattleScripting.battler;
- stringInfo->unk1605E = gBattleStruct->field_52;
+ stringInfo->bakScriptPartyIdx = gBattleStruct->scriptPartyIdx;
stringInfo->hpScale = gBattleStruct->hpScale;
stringInfo->itemEffectBattler = gPotentialItemEffectBattler;
stringInfo->moveType = gBattleMoves[gCurrentMove].type;
@@ -778,7 +778,7 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
stringInfo->lastItem = gLastUsedItem;
stringInfo->lastAbility = gLastUsedAbility;
stringInfo->scrActive = gBattleScripting.battler;
- stringInfo->unk1605E = gBattleStruct->field_52;
+ stringInfo->bakScriptPartyIdx = gBattleStruct->scriptPartyIdx;
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
stringInfo->abilities[i] = gBattleMons[i].ability;
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; ++i)
@@ -1097,13 +1097,13 @@ void BtlController_EmitIntroTrainerBallThrow(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2)
+void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 param)
{
s32 i;
sBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
- sBattleBuffersTransferData[1] = arg2 & 0x7F;
- sBattleBuffersTransferData[2] = (arg2 & 0x80) >> 7;
+ sBattleBuffersTransferData[1] = param & 0x7F;
+ sBattleBuffersTransferData[2] = (param & 0x80) >> 7;
sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); ++i)
sBattleBuffersTransferData[4 + i] = *(i + (u8 *)(hpAndStatus));
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 4340703e3..d0025de01 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -128,7 +128,7 @@ void FreeBattleSpritesData(void)
}
}
-void sub_8033E3C(struct Sprite *sprite)
+void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite)
{
u8 spriteId = sprite->data[1];
@@ -140,14 +140,14 @@ void sub_8033E3C(struct Sprite *sprite)
gSprites[spriteId].animPaused = 0;
else if (gSprites[spriteId].animEnded)
{
- gSprites[spriteId].callback = sub_8012100;
+ gSprites[spriteId].callback = SpriteCB_SetToDummy3;
StartSpriteAffineAnim(&gSprites[spriteId], 0);
sprite->callback = SpriteCallbackDummy;
}
}
// not used
-static void sub_8033EB0(struct Sprite *sprite, bool8 arg1)
+UNUSED static void UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 arg1)
{
sprite->animPaused = 1;
sprite->callback = SpriteCallbackDummy;
@@ -158,7 +158,7 @@ static void sub_8033EB0(struct Sprite *sprite, bool8 arg1)
AnimateSprite(sprite);
}
-void sub_8033EEC(struct Sprite *sprite)
+void SpriteCB_TrainerSlideIn(struct Sprite *sprite)
{
if (!(gIntroSlideFlags & 1))
{
@@ -290,21 +290,24 @@ bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn)
return FALSE;
}
-bool8 mplay_80342A4(u8 battlerId)
+bool8 IsBattleSEPlaying(u8 battlerId)
{
u8 zero = 0;
if (IsSEPlaying())
{
- ++gBattleSpritesDataPtr->healthBoxesData[battlerId].field_8;
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_8 < 30)
+ ++gBattleSpritesDataPtr->healthBoxesData[battlerId].soundTimer;
+ // UB: Uses gActiveBattler instead of battlerId.
+ // In practice, this is never a problem, as this routine
+ // is only ever passed gActiveBattler.
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].soundTimer < 30)
return TRUE;
m4aMPlayStop(&gMPlayInfo_SE1);
m4aMPlayStop(&gMPlayInfo_SE2);
}
if (zero == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[battlerId].field_8 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].soundTimer = 0;
return FALSE;
}
else
@@ -384,7 +387,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
}
otId = GetMonData(mon, MON_DATA_OT_ID);
position = GetBattlerPosition(battlerId);
- if (sub_804455C(1, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
+ if (ShouldIgnoreDeoxysForm(1, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
gMonSpritesGfxPtr->sprites[position],
species, currentPersonality);
@@ -449,7 +452,7 @@ void DecompressTrainerBackPalette(u16 index, u8 palette)
LoadCompressedPalette(gTrainerBackPicPaletteTable[index].data, (palette + 16) * 16, 0x20);
}
-void nullsub_16(u8 a1)
+void BattleGfxSfxDummy3(u8 a1)
{
}
@@ -864,7 +867,7 @@ void HandleBattleLowHpMusicChange(void)
}
}
-void sub_8035450(u8 affineMode)
+void SetBattlerSpriteAffineMode(u8 affineMode)
{
s32 i;
@@ -950,9 +953,12 @@ void HideBattlerShadowSprite(u8 battlerId)
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_SetInvisible;
}
-void sub_80357C8(void)
+// Low-level function that sets specific interface tiles' palettes,
+// overwriting any pixel with value 0.
+void BattleInterfaceSetWindowPals(void)
{
- u16 *vramPtr = (u16 *)(VRAM + 0x240);
+ // 9 tiles at 0x06000240
+ u16 *vramPtr = (u16 *)(BG_VRAM + 0x240);
s32 i;
s32 j;
@@ -970,7 +976,9 @@ void sub_80357C8(void)
*vramPtr |= 0x000F;
}
}
- vramPtr = (u16 *)(VRAM + 0x600);
+
+ // 18 tiles at 0x06000600
+ vramPtr = (u16 *)(BG_VRAM + 0x600);
for (i = 0; i < 18; ++i)
{
for (j = 0; j < 16; ++vramPtr, ++j)
@@ -1005,15 +1013,15 @@ void AllocateMonSpritesGfx(void)
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
{
gMonSpritesGfxPtr->sprites[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000);
- *(gMonSpritesGfxPtr->templates + i) = gUnknown_825DEF0[i];
+ *(gMonSpritesGfxPtr->templates + i) = gSpriteTemplates_Battlers[i];
for (j = 0; j < 4; ++j)
{
- gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites[i] + (j * 0x800);
- gMonSpritesGfxPtr->field_74[i][j].size = 0x800;
+ gMonSpritesGfxPtr->images[i][j].data = gMonSpritesGfxPtr->sprites[i] + (j * 0x800);
+ gMonSpritesGfxPtr->images[i][j].size = 0x800;
}
- gMonSpritesGfxPtr->templates[i].images = gMonSpritesGfxPtr->field_74[i];
+ gMonSpritesGfxPtr->templates[i].images = gMonSpritesGfxPtr->images[i];
}
gMonSpritesGfxPtr->barFontGfx = AllocZeroed(0x1000);
}
@@ -1022,8 +1030,8 @@ void FreeMonSpritesGfx(void)
{
if (gMonSpritesGfxPtr == NULL)
return;
- if (gMonSpritesGfxPtr->field_17C != NULL)
- FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C);
+ if (gMonSpritesGfxPtr->multiUseBuffer != NULL)
+ FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
if (gMonSpritesGfxPtr->field_178 != NULL)
FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_178);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->barFontGfx);
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 9212cae14..3744c34eb 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -1044,17 +1044,17 @@ void SwapHpBarsWithHpText(void)
#define tIsBattleStart data[10]
#define tData15 data[15]
-u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart)
+u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, bool8 isSwitchingMons, bool8 isBattleStart)
{
bool8 isOpponent;
- s8 sp14;
+ s8 nValidMons;
s16 bar_X, bar_Y, bar_pos2_X, bar_data0;
s32 i;
u8 summaryBarSpriteId;
u8 ballIconSpritesIds[PARTY_SIZE];
u8 taskId;
- if (!arg2 || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT)
+ if (!isSwitchingMons || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT)
{
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
{
@@ -1067,7 +1067,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
{
isOpponent = TRUE;
- if (!arg2 || !IsDoubleBattle())
+ if (!isSwitchingMons || !IsDoubleBattle())
bar_X = 104, bar_Y = 40;
else
bar_X = 104, bar_Y = 16;
@@ -1084,10 +1084,10 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
bar_data0 = 5;
}
- for (i = 0, sp14 = 0; i < PARTY_SIZE; i++)
+ for (i = 0, nValidMons = 0; i < PARTY_SIZE; i++)
{
if (partyInfo[i].hp != 0xFFFF)
- sp14++;
+ nValidMons++;
}
LoadCompressedSpriteSheetUsingHeap(&sStatusSummaryBarSpriteSheets[isOpponent]);
@@ -1163,7 +1163,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
}
else
{
- if (i >= sp14) // empty slot or an egg
+ if (i >= nValidMons) // empty slot or an egg
{
gSprites[ballIconSpritesIds[i]].oam.tileNum += 1;
gSprites[ballIconSpritesIds[i]].data[7] = 1;
@@ -1202,7 +1202,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
else
{
ballIconSpritesIds[5 - i] += 0;
- if (i >= sp14) // empty slot or an egg
+ if (i >= nValidMons) // empty slot or an egg
{
gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 1;
gSprites[ballIconSpritesIds[5 - i]].data[7] = 1;
diff --git a/src/battle_intro.c b/src/battle_intro.c
index 04c7072d9..9b1391fab 100644
--- a/src/battle_intro.c
+++ b/src/battle_intro.c
@@ -9,8 +9,8 @@
static EWRAM_DATA u16 sBgCnt = 0;
-extern const u8 gUnknown_83E7CCA[];
-extern const u8 gUnknown_83E7CCE[];
+extern const u8 gBattleAnimRegOffsBgCnt[];
+extern const u8 gBattleIntroRegOffsBgCnt[];
static void BattleIntroSlide1(u8 taskId);
static void BattleIntroSlide2(u8 taskId);
@@ -35,7 +35,7 @@ void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value)
{
if (bgId < 4)
{
- sBgCnt = GetGpuReg(gUnknown_83E7CCA[bgId]);
+ sBgCnt = GetGpuReg(gBattleAnimRegOffsBgCnt[bgId]);
switch (attributeId)
{
case BG_ANIM_SCREEN_SIZE:
@@ -60,7 +60,7 @@ void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value)
((struct BgCnt *)&sBgCnt)->screenBaseBlock = value;
break;
}
- SetGpuReg(gUnknown_83E7CCA[bgId], sBgCnt);
+ SetGpuReg(gBattleAnimRegOffsBgCnt[bgId], sBgCnt);
}
}
@@ -70,7 +70,7 @@ s32 GetAnimBgAttribute(u8 bgId, u8 attributeId)
if (bgId < 4)
{
- bgCnt = GetGpuReg(gUnknown_83E7CCE[bgId]);
+ bgCnt = GetGpuReg(gBattleIntroRegOffsBgCnt[bgId]);
switch (attributeId)
{
case BG_ANIM_SCREEN_SIZE:
@@ -422,9 +422,9 @@ static void BattleIntroSlideLink(u8 taskId)
{
++gTasks[taskId].data[0];
gSprites[gBattleStruct->linkBattleVsSpriteId_V].oam.objMode = ST_OAM_OBJ_WINDOW;
- gSprites[gBattleStruct->linkBattleVsSpriteId_V].callback = sub_801182C;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].callback = SpriteCB_VsLetterInit;
gSprites[gBattleStruct->linkBattleVsSpriteId_S].oam.objMode = ST_OAM_OBJ_WINDOW;
- gSprites[gBattleStruct->linkBattleVsSpriteId_S].callback = sub_801182C;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].callback = SpriteCB_VsLetterInit;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2);
}
@@ -465,18 +465,18 @@ static void BattleIntroSlideLink(u8 taskId)
}
}
-void sub_80BCEF4(s32 bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset)
+void CopyBattlerSpriteToBg(s32 bgId, u8 x, u8 y, u8 battlerPosition, u8 palno, u8 *tilesDest, u16 *tilemapDest, u16 tilesOffset)
{
s32 i, j;
u8 battler = GetBattlerAtPosition(battlerPosition);
s32 offset = tilesOffset;
- CpuCopy16(gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE);
- LoadBgTiles(bgId, arg5, 0x1000, tilesOffset);
- for (i = arg2; i < arg2 + 8; ++i)
- for (j = arg1; j < arg1 + 8; ++j)
- arg6[i * 32 + j] = offset++ | (arg4 << 12);
- LoadBgTilemap(bgId, arg6, BG_SCREEN_SIZE, 0);
+ CpuCopy16(gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], tilesDest, BG_SCREEN_SIZE);
+ LoadBgTiles(bgId, tilesDest, 0x1000, tilesOffset);
+ for (i = y; i < y + 8; ++i)
+ for (j = x; j < x + 8; ++j)
+ tilemapDest[i * 32 + j] = offset++ | (palno << 12);
+ LoadBgTilemap(bgId, tilemapDest, BG_SCREEN_SIZE, 0);
}
// not used
diff --git a/src/battle_main.c b/src/battle_main.c
index 08bf6e345..d7f43ce75 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -44,7 +44,7 @@
#include "constants/songs.h"
#include "constants/trainer_classes.h"
-static void sub_80111EC(struct Sprite *sprite);
+static void SpriteCB_UnusedDebugSprite(struct Sprite *sprite);
static void HandleAction_UseMove(void);
static void HandleAction_Switch(void);
static void HandleAction_UseItem(void);
@@ -72,18 +72,18 @@ static void CB2_HandleStartBattle(void);
static void TryCorrectShedinjaLanguage(struct Pokemon *mon);
static void BattleMainCB1(void);
static void CB2_QuitPokedudeBattle(void);
-static void sub_80111FC(struct Sprite *sprite);
-static void sub_8011B94(void);
-static void sub_8011BB0(void);
+static void SpriteCB_UnusedDebugSprite_Step(struct Sprite *sprite);
+static void CB2_EndLinkBattle(void);
+static void EndLinkBattleInSteps(void);
static void SpriteCB_MoveWildMonToRight(struct Sprite *sprite);
static void SpriteCB_WildMonShowHealthbox(struct Sprite *sprite);
-static void sub_8011E3C(struct Sprite *sprite);
+static void SpriteCB_Unused_8011E28_Step(struct Sprite *sprite);
static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite);
-static void sub_8012060(struct Sprite *sprite);
+static void SpriteCb_BlinkVisible(struct Sprite *sprite);
static void oac_poke_ally_(struct Sprite *sprite);
static void SpriteCallbackDummy3(struct Sprite *sprite);
static void SpriteCB_BounceEffect(struct Sprite *sprite);
-static void sub_8012398(struct Sprite *sprite);
+static void SpriteCB_PlayerThrowUpdate(struct Sprite *sprite);
static void BattleStartClearSetData(void);
static void BattleIntroGetMonsData(void);
static void TurnValuesCleanUp(bool8 var0);
@@ -129,10 +129,10 @@ static EWRAM_DATA u32 gUnknown_2022AE8[25] = {0};
EWRAM_DATA u32 gBattleTypeFlags = 0;
EWRAM_DATA u8 gBattleTerrain = 0;
EWRAM_DATA u32 gUnknown_2022B54 = 0;
-EWRAM_DATA struct UnknownPokemonStruct4 gMultiPartnerParty[3] = {0};
-EWRAM_DATA u8 *gUnknown_2022BB8 = NULL;
-EWRAM_DATA u8 *gUnknown_2022BBC = NULL;
-EWRAM_DATA u16 *gUnknown_2022BC0 = NULL;
+EWRAM_DATA struct MultiBattlePokemonTx gMultiPartnerParty[3] = {0};
+EWRAM_DATA u8 *gBattleAnimMons_BgTilesBuffer = NULL;
+EWRAM_DATA u8 *gBattleAnimMons_BgTilemapBuffer = NULL;
+static EWRAM_DATA u16 *sUnknownDebugSpriteDataBuffer = NULL;
EWRAM_DATA u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200] = {0};
EWRAM_DATA u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200] = {0};
EWRAM_DATA u8 gActiveBattler = 0;
@@ -224,14 +224,14 @@ void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
u8 gMultiUsePlayerCursor;
u8 gNumberOfMovesToChoose;
-u8 gUnknown_3004FFC[MAX_BATTLERS_COUNT];
+u8 gBattleControllerData[MAX_BATTLERS_COUNT];
static const struct ScanlineEffectParams sIntroScanlineParams16Bit =
{
&REG_BG3HOFS, SCANLINE_EFFECT_DMACNT_16BIT, 1
};
-const struct SpriteTemplate gUnknown_824EFF0 =
+const struct SpriteTemplate gUnknownDebugSprite =
{
.tileTag = 0,
.paletteTag = 0,
@@ -239,12 +239,12 @@ const struct SpriteTemplate gUnknown_824EFF0 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80111EC,
+ .callback = SpriteCB_UnusedDebugSprite,
};
static const u8 sText_ShedinjaJpnName[] = _("ヌケニン"); // Nukenin
-const struct OamData gOamData_824F010 =
+const struct OamData gOamData_BattlerOpponent =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_NORMAL,
@@ -259,7 +259,7 @@ const struct OamData gOamData_824F010 =
.affineParam = 0,
};
-const struct OamData gOamData_824F018 =
+const struct OamData gOamData_BattlerPlayer =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_NORMAL,
@@ -282,7 +282,7 @@ static const union AnimCmd gUnknown_824F020[] =
};
// not used
-static const union AnimCmd *const gUnknown_824F028[] =
+static const union AnimCmd *const gUnknown_824F028[] =
{
gUnknown_824F020,
};
@@ -301,7 +301,7 @@ static const union AffineAnimCmd *const gUnknown_824F044[] =
gUnknown_824F02C,
};
-static const s8 gUnknown_824F048[] = { -32, -16, -16, -32, -32, 0, 0, 0 };
+static const s8 sPlayerThrowXTranslation[] = { -32, -16, -16, -32, -32, 0, 0, 0 };
// format: attacking type, defending type, damage multiplier
// the multiplier is a (decimal) fixed-point number:
@@ -705,41 +705,50 @@ static void CB2_InitBattleInternal(void)
gBattleCommunication[MULTIUSE_STATE] = 0;
}
-static void sub_800FFEC(void)
+#define BUFFER_PARTY_VS_SCREEN_STATUS(party, flags, i) \
+ for ((i) = 0; (i) < PARTY_SIZE; (i)++) \
+ { \
+ u16 species = GetMonData(&(party)[(i)], MON_DATA_SPECIES2); \
+ u16 hp = GetMonData(&(party)[(i)], MON_DATA_HP); \
+ u32 status = GetMonData(&(party)[(i)], MON_DATA_STATUS); \
+ \
+ if (species == SPECIES_NONE) \
+ continue; \
+ \
+ /* Is healthy mon? */ \
+ if (species != SPECIES_EGG && hp != 0 && status == 0) \
+ (flags) |= 1 << (i) * 2; \
+ \
+ if (species == SPECIES_NONE) /* Redundant */ \
+ continue; \
+ \
+ /* Is Egg or statused? */ \
+ if (hp != 0 && (species == SPECIES_EGG || status != 0)) \
+ (flags) |= 2 << (i) * 2; \
+ \
+ if (species == SPECIES_NONE) /* Redundant */ \
+ continue; \
+ \
+ /* Is fainted? */ \
+ if (species != SPECIES_EGG && hp == 0) \
+ (flags) |= 3 << (i) * 2; \
+ }
+
+static void BufferPartyVsScreenHealth_AtStart(void)
{
- u16 r6 = 0;
- u16 species = SPECIES_NONE;
- u16 hp = 0;
- u32 status = 0;
+ u16 flags = 0;
s32 i;
- for (i = 0; i < PARTY_SIZE; ++i)
- {
- species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
- hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
- status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
- if (species == SPECIES_NONE)
- continue;
- if (species != SPECIES_EGG && hp != 0 && status == 0)
- r6 |= 1 << i * 2;
- if (species == SPECIES_NONE)
- continue;
- if (hp != 0 && (species == SPECIES_EGG || status != 0))
- r6 |= 2 << i * 2;
- if (species == SPECIES_NONE)
- continue;
- if (species != SPECIES_EGG && hp == 0)
- r6 |= 3 << i * 2;
- }
- gBattleStruct->field_186 = r6;
- *(&gBattleStruct->field_187) = r6 >> 8;
+ BUFFER_PARTY_VS_SCREEN_STATUS(gPlayerParty, flags, i);
+ gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsLo = flags;
+ *(&gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsHi) = flags >> 8;
}
static void SetPlayerBerryDataInBattleStruct(void)
{
s32 i;
struct BattleStruct *battleStruct = gBattleStruct;
- struct BattleEnigmaBerry *battleBerry = &battleStruct->battleEnigmaBerry;
+ struct BattleEnigmaBerry *battleBerry = &battleStruct->multiBuffer.linkPartnerHeader.battleEnigmaBerry;
if (IsEnigmaBerryValid() == TRUE)
{
@@ -859,44 +868,47 @@ static void SetAllPlayersBerryData(void)
}
}
-static void sub_8010414(u8 arg0, u8 arg1)
+static void LinkBattleComputeBattleTypeFlags(u8 numPlayers, u8 multiPlayerId)
{
- u8 var = 0;
+ u8 found = 0;
- if (gBlockRecvBuffer[0][0] == 256)
+ // If player 1 is playing the minimum version, player 1 is master.
+ if (gBlockRecvBuffer[0][0] == 0x100)
{
- if (arg1 == 0)
+ if (multiPlayerId == 0)
gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER;
else
gBattleTypeFlags |= BATTLE_TYPE_TRAINER;
- ++var;
+ ++found;
}
- if (var == 0)
+ if (found == 0)
{
+ // If multiple different versions are being used, player 1 is master.
s32 i;
- for (i = 0; i < arg0; ++i)
+ for (i = 0; i < numPlayers; ++i)
if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0])
break;
- if (i == arg0)
+ if (i == numPlayers)
{
- if (arg1 == 0)
+ if (multiPlayerId == 0)
gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER;
else
gBattleTypeFlags |= BATTLE_TYPE_TRAINER;
- ++var;
+ ++found;
}
- if (var == 0)
+ if (found == 0)
{
- for (i = 0; i < arg0; ++i)
+ // Lowest index player with the highest game version is master.
+ for (i = 0; i < numPlayers; ++i)
{
- if (gBlockRecvBuffer[i][0] == 0x201)
- if (i != arg1 && i < arg1)
+ if (gBlockRecvBuffer[i][0] == 0x201 && i != multiPlayerId)
+ if (i < multiPlayerId)
break;
- if (gBlockRecvBuffer[i][0] > 0x201 && i != arg1)
+ if (gBlockRecvBuffer[i][0] > 0x201 && i != multiPlayerId)
break;
}
- if (i == arg0)
+ if (i == numPlayers)
gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER;
else
gBattleTypeFlags |= BATTLE_TYPE_TRAINER;
@@ -924,7 +936,7 @@ static void CB2_HandleStartBattle(void)
ShowBg(1);
ShowBg(2);
ShowBg(3);
- sub_80357C8();
+ BattleInterfaceSetWindowPals();
gBattleCommunication[MULTIUSE_STATE] = 1;
}
if (gWirelessCommType)
@@ -937,11 +949,12 @@ static void CB2_HandleStartBattle(void)
{
if (IsLinkTaskFinished())
{
- *(&gBattleStruct->field_184) = 1;
- *(&gBattleStruct->field_185) = 2;
- sub_800FFEC();
+ // 0x201
+ *(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureLo) = 1;
+ *(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureHi) = 2;
+ BufferPartyVsScreenHealth_AtStart();
SetPlayerBerryDataInBattleStruct();
- SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_184, 32);
+ SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkPartnerHeader, sizeof(gBattleStruct->multiBuffer.linkPartnerHeader));
gBattleCommunication[MULTIUSE_STATE] = 2;
}
if (gWirelessCommType != 0)
@@ -961,13 +974,13 @@ static void CB2_HandleStartBattle(void)
u8 taskId;
ResetBlockReceivedFlags();
- sub_8010414(2, playerMultiplayerId);
+ LinkBattleComputeBattleTypeFlags(2, playerMultiplayerId);
SetAllPlayersBerryData();
taskId = CreateTask(InitLinkBattleVsScreen, 0);
gTasks[taskId].data[1] = 270;
gTasks[taskId].data[2] = 90;
gTasks[taskId].data[5] = 0;
- gTasks[taskId].data[3] = gBattleStruct->field_186 | (gBattleStruct->field_187 << 8);
+ gTasks[taskId].data[3] = gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsLo | (gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsHi << 8);
gTasks[taskId].data[4] = gBlockRecvBuffer[enemyMultiplayerId][1];
SetDeoxysStats();
++gBattleCommunication[MULTIUSE_STATE];
@@ -1025,7 +1038,7 @@ static void CB2_HandleStartBattle(void)
}
break;
case 15:
- sub_800D30C();
+ InitBtlControllers();
++gBattleCommunication[MULTIUSE_STATE];
gBattleCommunication[SPRITES_INIT_STATE1] = 0;
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
@@ -1056,7 +1069,7 @@ static void CB2_HandleStartBattle(void)
}
}
-static void sub_80108C4(void)
+static void PrepareOwnMultiPartnerBuffer(void)
{
s32 i, j;
u8 *nick, *cur;
@@ -1083,7 +1096,7 @@ static void sub_80108C4(void)
cur[j] = EOS;
}
}
- memcpy(&gBattleStruct->field_184, gMultiPartnerParty, sizeof(gMultiPartnerParty));
+ memcpy(gBattleStruct->multiBuffer.multiBattleMons, gMultiPartnerParty, sizeof(gMultiPartnerParty));
}
static void CB2_PreInitMultiBattle(void)
@@ -1107,8 +1120,8 @@ static void CB2_PreInitMultiBattle(void)
case 0:
if (gReceivedRemoteLinkPlayers && IsLinkTaskFinished())
{
- sub_80108C4();
- SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_184, sizeof(gMultiPartnerParty));
+ PrepareOwnMultiPartnerBuffer();
+ SendBlock(bitmask_all_link_players_but_self(), gBattleStruct->multiBuffer.multiBattleMons, sizeof(gBattleStruct->multiBuffer.multiBattleMons));
++gBattleCommunication[MULTIUSE_STATE];
}
break;
@@ -1136,9 +1149,9 @@ static void CB2_PreInitMultiBattle(void)
{
++gBattleCommunication[MULTIUSE_STATE];
if (gWirelessCommType)
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
else
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
}
break;
case 3:
@@ -1181,7 +1194,7 @@ static void CB2_HandleStartMultiBattle(void)
ShowBg(1);
ShowBg(2);
ShowBg(3);
- sub_80357C8();
+ BattleInterfaceSetWindowPals();
gBattleCommunication[MULTIUSE_STATE] = 1;
}
if (gWirelessCommType)
@@ -1192,11 +1205,12 @@ static void CB2_HandleStartMultiBattle(void)
{
if (IsLinkTaskFinished())
{
- *(&gBattleStruct->field_184) = 1;
- *(&gBattleStruct->field_185) = 2;
- sub_800FFEC();
+ // 0x201
+ *(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureLo) = 1;
+ *(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureHi) = 2;
+ BufferPartyVsScreenHealth_AtStart();
SetPlayerBerryDataInBattleStruct();
- SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_184, 32);
+ SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkPartnerHeader, sizeof(gBattleStruct->multiBuffer.linkPartnerHeader));
++gBattleCommunication[MULTIUSE_STATE];
}
if (gWirelessCommType)
@@ -1207,7 +1221,7 @@ static void CB2_HandleStartMultiBattle(void)
if ((GetBlockReceivedStatus() & 0xF) == 0xF)
{
ResetBlockReceivedFlags();
- sub_8010414(4, playerMultiplayerId);
+ LinkBattleComputeBattleTypeFlags(4, playerMultiplayerId);
SetAllPlayersBerryData();
SetDeoxysStats();
memcpy(gDecompressionBuffer, gPlayerParty, sizeof(struct Pokemon) * 3);
@@ -1383,7 +1397,7 @@ static void CB2_HandleStartMultiBattle(void)
}
break;
case 11:
- sub_800D30C();
+ InitBtlControllers();
++gBattleCommunication[MULTIUSE_STATE];
gBattleCommunication[SPRITES_INIT_STATE1] = 0;
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
@@ -1450,18 +1464,18 @@ static void CB2_QuitPokedudeBattle(void)
}
}
-static void sub_80111EC(struct Sprite *sprite)
+static void SpriteCB_UnusedDebugSprite(struct Sprite *sprite)
{
sprite->data[0] = 0;
- sprite->callback = sub_80111FC;
+ sprite->callback = SpriteCB_UnusedDebugSprite_Step;
}
-static void sub_80111FC(struct Sprite *sprite)
+static void SpriteCB_UnusedDebugSprite_Step(struct Sprite *sprite)
{
switch (sprite->data[0])
{
case 0:
- gUnknown_2022BC0 = AllocZeroed(0x1000);
+ sUnknownDebugSpriteDataBuffer = AllocZeroed(0x1000);
++sprite->data[0];
sprite->data[1] = 0;
sprite->data[2] = 0x281;
@@ -1478,8 +1492,8 @@ static void sub_80111FC(struct Sprite *sprite)
r0 = sprite->data[2] - sprite->data[3] * 32;
for (i = 0; i <= 29; i += 2)
{
- *(&gUnknown_2022BC0[r2] + i) = 0x3D;
- *(&gUnknown_2022BC0[r0] + i) = 0x3D;
+ *(&sUnknownDebugSpriteDataBuffer[r2] + i) = 0x3D;
+ *(&sUnknownDebugSpriteDataBuffer[r0] + i) = 0x3D;
}
if (++sprite->data[3] == 21)
{
@@ -1491,10 +1505,10 @@ static void sub_80111FC(struct Sprite *sprite)
case 2:
if (--sprite->data[1] == 20)
{
- if (gUnknown_2022BC0 != NULL)
+ if (sUnknownDebugSpriteDataBuffer != NULL)
{
- memset(gUnknown_2022BC0, 0, 0x1000);
- FREE_AND_SET_NULL(gUnknown_2022BC0);
+ memset(sUnknownDebugSpriteDataBuffer, 0, 0x1000);
+ FREE_AND_SET_NULL(sUnknownDebugSpriteDataBuffer);
}
SetMainCallback2(CB2_InitBattle);
}
@@ -1508,7 +1522,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
u32 personalityValue;
u8 fixedIV;
s32 i, j;
-
+
if (trainerNum == TRAINER_SECRET_BASE)
return 0;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER
@@ -1593,7 +1607,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
}
// not used
-static void sub_80116CC(void)
+UNUSED static void unused_80116CC(void)
{
if (REG_VCOUNT < 0xA0 && REG_VCOUNT >= 0x6F)
REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x512;
@@ -1601,7 +1615,7 @@ static void sub_80116CC(void)
void VBlankCB_Battle(void)
{
- // Change gRngSeed every vblank.
+ // Change gRngSeed every vblank.
Random();
SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X);
SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y);
@@ -1621,11 +1635,11 @@ void VBlankCB_Battle(void)
ScanlineEffect_InitHBlankDmaTransfer();
}
-void nullsub_9(struct Sprite *sprite)
+void SpriteCB_VsLetterDummy(struct Sprite *sprite)
{
}
-static void sub_80117BC(struct Sprite *sprite)
+static void SpriteCB_VsLetter(struct Sprite *sprite)
{
if (sprite->data[0] != 0)
sprite->pos1.x = sprite->data[1] + ((sprite->data[2] & 0xFF00) >> 8);
@@ -1641,14 +1655,14 @@ static void sub_80117BC(struct Sprite *sprite)
}
}
-void sub_801182C(struct Sprite *sprite)
+void SpriteCB_VsLetterInit(struct Sprite *sprite)
{
StartSpriteAffineAnim(sprite, 1);
- sprite->callback = sub_80117BC;
+ sprite->callback = SpriteCB_VsLetter;
PlaySE(SE_MUGSHOT);
}
-static void sub_801184C(u8 taskId)
+static void BufferPartyVsScreenHealth_AtEnd(u8 taskId)
{
struct Pokemon *party1 = NULL;
struct Pokemon *party2 = NULL;
@@ -1678,52 +1692,14 @@ static void sub_801184C(u8 taskId)
party2 = gEnemyParty;
}
r7 = 0;
- for (i = 0; i < PARTY_SIZE; ++i)
- {
- u16 species = GetMonData(&party1[i], MON_DATA_SPECIES2);
- u16 hp = GetMonData(&party1[i], MON_DATA_HP);
- u32 status = GetMonData(&party1[i], MON_DATA_STATUS);
-
- if (species == SPECIES_NONE)
- continue;
- if (species != SPECIES_EGG && hp != 0 && status == 0)
- r7 |= 1 << i * 2;
-
- if (species == SPECIES_NONE)
- continue;
- if (hp != 0 && (species == SPECIES_EGG || status != 0))
- r7 |= 2 << i * 2;
-
- if (species == SPECIES_NONE)
- continue;
- if (species != SPECIES_EGG && hp == 0)
- r7 |= 3 << i * 2;
- }
+ BUFFER_PARTY_VS_SCREEN_STATUS(party1, r7, i);
gTasks[taskId].data[3] = r7;
r7 = 0;
- for (i = 0; i < PARTY_SIZE; ++i)
- {
- u16 species = GetMonData(&party2[i], MON_DATA_SPECIES2);
- u16 hp = GetMonData(&party2[i], MON_DATA_HP);
- u32 status = GetMonData(&party2[i], MON_DATA_STATUS);
-
- if (species == SPECIES_NONE)
- continue;
- if (species != SPECIES_EGG && hp != 0 && status == 0)
- r7 |= 1 << i * 2;
- if (species == SPECIES_NONE)
- continue;
- if (hp != 0 && (species == SPECIES_EGG || status != 0))
- r7 |= 2 << i * 2;
- if (species == SPECIES_NONE)
- continue;
- if (species != SPECIES_EGG && hp == 0)
- r7 |= 3 << i * 2;
- }
+ BUFFER_PARTY_VS_SCREEN_STATUS(party2, r7, i);
gTasks[taskId].data[4] = r7;
}
-void sub_8011A1C(void)
+void CB2_InitEndLinkBattle(void)
{
s32 i;
u8 taskId;
@@ -1773,21 +1749,21 @@ void sub_8011A1C(void)
gTasks[taskId].data[1] = 270;
gTasks[taskId].data[2] = 90;
gTasks[taskId].data[5] = 1;
- sub_801184C(taskId);
- SetMainCallback2(sub_8011B94);
+ BufferPartyVsScreenHealth_AtEnd(taskId);
+ SetMainCallback2(CB2_EndLinkBattle);
gBattleCommunication[MULTIUSE_STATE] = 0;
}
-static void sub_8011B94(void)
+static void CB2_EndLinkBattle(void)
{
- sub_8011BB0();
+ EndLinkBattleInSteps();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
RunTasks();
}
-static void sub_8011BB0(void)
+static void EndLinkBattleInSteps(void)
{
s32 i;
@@ -1868,7 +1844,7 @@ static void TryCorrectShedinjaLanguage(struct Pokemon *mon)
#define sBattler data[0]
#define sSpeciesId data[2]
-void SpriteCB_WildMon(struct Sprite *sprite)
+void SpriteCB_EnemyMon(struct Sprite *sprite)
{
sprite->callback = SpriteCB_MoveWildMonToRight;
StartSpriteAnimIfDifferent(sprite, 0);
@@ -1892,7 +1868,7 @@ static void SpriteCB_WildMonShowHealthbox(struct Sprite *sprite)
{
if (sprite->animEnded)
{
- sub_804BD94(sprite->sBattler);
+ StartHealthboxSlideIn(sprite->sBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[sprite->sBattler]);
sprite->callback = SpriteCallbackDummy2;
StartSpriteAnimIfDifferent(sprite, 0);
@@ -1905,15 +1881,15 @@ void SpriteCallbackDummy2(struct Sprite *sprite)
}
// not used
-static void sub_8011E28(struct Sprite *sprite)
+UNUSED static void SpriteCB_Unused_8011E28(struct Sprite *sprite)
{
sprite->data[3] = 6;
sprite->data[4] = 1;
- sprite->callback = sub_8011E3C;
+ sprite->callback = SpriteCB_Unused_8011E28_Step;
}
// not used
-static void sub_8011E3C(struct Sprite *sprite)
+static void SpriteCB_Unused_8011E28_Step(struct Sprite *sprite)
{
--sprite->data[4];
if (sprite->data[4] == 0)
@@ -1994,14 +1970,14 @@ static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite)
}
}
-void sub_8012044(struct Sprite *sprite)
+void SpriteCb_ShowAsMoveTarget(struct Sprite *sprite)
{
sprite->data[3] = 8;
sprite->data[4] = sprite->invisible;
- sprite->callback = sub_8012060;
+ sprite->callback = SpriteCb_BlinkVisible;
}
-static void sub_8012060(struct Sprite *sprite)
+static void SpriteCb_BlinkVisible(struct Sprite *sprite)
{
--sprite->data[3];
if (sprite->data[3] == 0)
@@ -2011,14 +1987,14 @@ static void sub_8012060(struct Sprite *sprite)
}
}
-void sub_8012098(struct Sprite *sprite)
+void SpriteCb_HideAsMoveTarget(struct Sprite *sprite)
{
sprite->invisible = sprite->data[4];
sprite->data[4] = FALSE;
sprite->callback = SpriteCallbackDummy2;
}
-void sub_80120C4(struct Sprite *sprite)
+void SpriteCB_AllyMon(struct Sprite *sprite)
{
sprite->callback = oac_poke_ally_;
}
@@ -2036,7 +2012,7 @@ static void oac_poke_ally_(struct Sprite *sprite)
}
}
-void sub_8012100(struct Sprite *sprite)
+void SpriteCB_SetToDummy3(struct Sprite *sprite)
{
sprite->callback = SpriteCallbackDummy3;
}
@@ -2045,7 +2021,7 @@ static void SpriteCallbackDummy3(struct Sprite *sprite)
{
}
-void sub_8012110(struct Sprite *sprite)
+void SpriteCB_FaintSlideAnim(struct Sprite *sprite)
{
if (!(gIntroSlideFlags & 1))
{
@@ -2139,26 +2115,26 @@ static void SpriteCB_BounceEffect(struct Sprite *sprite)
sprite->sSinIndex = (sprite->sSinIndex + sprite->sDelta) & 0xFF;
}
-void sub_8012354(struct Sprite *sprite)
+void SpriteCB_PlayerThrowInit(struct Sprite *sprite)
{
StartSpriteAnim(sprite, 1);
- sprite->callback = sub_8012398;
+ sprite->callback = SpriteCB_PlayerThrowUpdate;
}
-void sub_801236C(struct Sprite *sprite)
+void UpdatePlayerPosInThrowAnim(struct Sprite *sprite)
{
if (sprite->animDelayCounter == 0)
- sprite->centerToCornerVecX = gUnknown_824F048[sprite->animCmdIndex];
+ sprite->centerToCornerVecX = sPlayerThrowXTranslation[sprite->animCmdIndex];
}
-static void sub_8012398(struct Sprite *sprite)
+static void SpriteCB_PlayerThrowUpdate(struct Sprite *sprite)
{
- sub_801236C(sprite);
+ UpdatePlayerPosInThrowAnim(sprite);
if (sprite->animEnded)
sprite->callback = SpriteCallbackDummy3;
}
-void nullsub_12(void)
+void BattleDummy(void)
{
}
@@ -2622,8 +2598,8 @@ static void BattleIntroDrawPartySummaryScreens(void)
else
{
// The struct gets set here, but nothing is ever done with it since
- // wild battles don't show the party summary.
- // Still, there's no point in having dead code.
+ // wild battles don't show the party summary.
+ // Still, there's no point in having dead code.
for (i = 0; i < PARTY_SIZE; ++i)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE
@@ -2715,7 +2691,7 @@ static void BattleIntroRecordMonsToDex(void)
}
// not used
-static void sub_80136C4(void)
+static void Unused_AutoProgressToIntro(void)
{
if (!gBattleControllerExecFlags)
gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
@@ -2758,7 +2734,7 @@ static void BattleIntroPlayerSendsOutMonAnimation(void)
}
// not used
-static void sub_80137D0(void)
+static void Unused_AutoProgressToSwitchInAnims(void)
{
if (!gBattleControllerExecFlags)
{
@@ -2832,7 +2808,7 @@ static void TryDoEventsBeforeFirstTurn(void)
}
TurnValuesCleanUp(FALSE);
SpecialStatusesClear();
- *(&gBattleStruct->field_91) = gAbsentBattlerFlags;
+ *(&gBattleStruct->absentBattlerFlags) = gAbsentBattlerFlags;
gBattleMainFunc = HandleTurnActionSelectionState;
ResetSentPokesToOpponentValue();
for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; ++i)
@@ -2919,7 +2895,7 @@ void BattleTurnPassed(void)
}
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
*(gBattleStruct->monToSwitchIntoId + i) = PARTY_SIZE;
- *(&gBattleStruct->field_91) = gAbsentBattlerFlags;
+ *(&gBattleStruct->absentBattlerFlags) = gAbsentBattlerFlags;
gBattleMainFunc = HandleTurnActionSelectionState;
gRandomTurnNumber = Random();
}
@@ -2983,13 +2959,13 @@ u8 IsRunningFromBattleImpossible(void)
return BATTLE_RUN_SUCCESS;
}
-void sub_8013F6C(u8 battler)
+void UpdatePartyOwnerOnSwitch_NonMulti(u8 battler)
{
s32 i;
u8 r4, r1;
for (i = 0; i < 3; ++i)
- gBattlePartyCurrentOrder[i] = *(battler * 3 + i + (u8 *)(gBattleStruct->field_60));
+ gBattlePartyCurrentOrder[i] = *(battler * 3 + i + (u8 *)(gBattleStruct->battlerPartyOrders));
r4 = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battler]);
r1 = GetPartyIdFromBattlePartyId(*(gBattleStruct->monToSwitchIntoId + battler));
SwitchPartyMonSlots(r4, r1);
@@ -2997,14 +2973,14 @@ void sub_8013F6C(u8 battler)
{
for (i = 0; i < 3; ++i)
{
- *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
- *(BATTLE_PARTNER(battler) * 3 + i + (u8 *)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
+ *(battler * 3 + i + (u8 *)(gBattleStruct->battlerPartyOrders)) = gBattlePartyCurrentOrder[i];
+ *(BATTLE_PARTNER(battler) * 3 + i + (u8 *)(gBattleStruct->battlerPartyOrders)) = gBattlePartyCurrentOrder[i];
}
}
else
{
for (i = 0; i < 3; ++i)
- *(battler * 3 + i + (u8 *)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
+ *(battler * 3 + i + (u8 *)(gBattleStruct->battlerPartyOrders)) = gBattlePartyCurrentOrder[i];
}
}
@@ -3034,10 +3010,10 @@ static void HandleTurnActionSelectionState(void)
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI
|| (position & BIT_FLANK) == B_FLANK_LEFT
- || gBattleStruct->field_91 & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(position))]
+ || gBattleStruct->absentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(position))]
|| gBattleCommunication[GetBattlerAtPosition(BATTLE_PARTNER(position))] == STATE_WAIT_ACTION_CONFIRMED)
{
- if (gBattleStruct->field_91 & gBitTable[gActiveBattler])
+ if (gBattleStruct->absentBattlerFlags & gBitTable[gActiveBattler])
{
gChosenActionByBattler[gActiveBattler] = B_ACTION_NOTHING_FAINTED;
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
@@ -3114,15 +3090,15 @@ static void HandleTurnActionSelectionState(void)
}
else
{
- BtlController_EmitChooseItem(0, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChooseItem(0, gBattleStruct->battlerPartyOrders[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
}
break;
case B_ACTION_SWITCH:
- *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ *(gBattleStruct->battlerPartyIndexes + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
if (gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION) || gStatuses3[gActiveBattler] & STATUS3_ROOTED)
{
- BtlController_EmitChoosePokemon(0, PARTY_ACTION_CANT_SWITCH, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(0, PARTY_ACTION_CANT_SWITCH, 6, ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
}
else if ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_SHADOW_TAG))
|| ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_ARENA_TRAP))
@@ -3131,16 +3107,16 @@ static void HandleTurnActionSelectionState(void)
|| ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0))
&& IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL)))
{
- BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | PARTY_ACTION_ABILITY_PREVENTS, 6, gLastUsedAbility, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | PARTY_ACTION_ABILITY_PREVENTS, 6, gLastUsedAbility, gBattleStruct->battlerPartyOrders[gActiveBattler]);
}
else
{
if (gActiveBattler == 2 && gChosenActionByBattler[0] == B_ACTION_SWITCH)
- BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
else if (gActiveBattler == 3 && gChosenActionByBattler[1] == B_ACTION_SWITCH)
- BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
else
- BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, 6, ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
}
MarkBattlerForControllerExec(gActiveBattler);
break;
@@ -3238,12 +3214,12 @@ static void HandleTurnActionSelectionState(void)
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = gBattleBufferB[gActiveBattler][1];
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 0) &= 0xF;
- *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
- *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBattler][3];
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 0) &= (0xF0);
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBattler][3];
+ *(gActiveBattler * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) &= 0xF;
+ *(gActiveBattler * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
+ *(gActiveBattler * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 1) = gBattleBufferB[gActiveBattler][3];
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) &= (0xF0);
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 2) = gBattleBufferB[gActiveBattler][3];
}
++gBattleCommunication[gActiveBattler];
}
@@ -3277,7 +3253,7 @@ static void HandleTurnActionSelectionState(void)
{
if (((gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_DOUBLE)) != BATTLE_TYPE_DOUBLE)
|| (position & BIT_FLANK) != B_FLANK_LEFT
- || (*(&gBattleStruct->field_91) & gBitTable[GetBattlerAtPosition(position ^ BIT_FLANK)]))
+ || (*(&gBattleStruct->absentBattlerFlags) & gBitTable[GetBattlerAtPosition(position ^ BIT_FLANK)]))
BtlController_EmitLinkStandbyMsg(0, 0);
else
BtlController_EmitLinkStandbyMsg(0, 1);
@@ -3815,7 +3791,7 @@ static void TryEvolvePokemon(void)
levelUpBits &= ~(gBitTable[i]);
gLeveledUpInBattle = levelUpBits;
- species = GetEvolutionTargetSpecies(&gPlayerParty[i], 0, levelUpBits);
+ species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_NORMAL, levelUpBits);
if (species != SPECIES_NONE)
{
gBattleMainFunc = WaitForEvoSceneToFinish;
@@ -3888,7 +3864,7 @@ static void HandleAction_UseMove(void)
u8 var = 4;
gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- if (*(&gBattleStruct->field_91) & gBitTable[gBattlerAttacker])
+ if (*(&gBattleStruct->absentBattlerFlags) & gBitTable[gBattlerAttacker])
{
gCurrentActionFuncId = B_ACTION_FINISHED;
return;
@@ -4061,7 +4037,7 @@ static void HandleAction_Switch(void)
gBattle_BG0_Y = 0;
gActionSelectionCursor[gBattlerAttacker] = 0;
gMoveSelectionCursor[gBattlerAttacker] = 0;
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, *(gBattleStruct->field_58 + gBattlerAttacker));
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, *(gBattleStruct->battlerPartyIndexes + gBattlerAttacker));
gBattleScripting.battler = gBattlerAttacker;
gBattlescriptCurrInstr = BattleScript_ActionSwitch;
gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
diff --git a/src/battle_message.c b/src/battle_message.c
index 68f75ffa1..20b7f9c75 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -1469,7 +1469,7 @@ void BufferStringBattle(u16 stringId)
gLastUsedItem = sBattleMsgDataPtr->lastItem;
gLastUsedAbility = sBattleMsgDataPtr->lastAbility;
gBattleScripting.battler = sBattleMsgDataPtr->scrActive;
- *(&gBattleStruct->field_52) = sBattleMsgDataPtr->unk1605E;
+ *(&gBattleStruct->scriptPartyIdx) = sBattleMsgDataPtr->bakScriptPartyIdx;
*(&gBattleStruct->hpScale) = sBattleMsgDataPtr->hpScale;
gPotentialItemEffectBattler = sBattleMsgDataPtr->itemEffectBattler;
*(&gBattleStruct->stringMoveType) = sBattleMsgDataPtr->moveType;
@@ -1983,7 +1983,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()];
else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
- toCpy = gTrainerClassNames[sub_80447F0()];
+ toCpy = gTrainerClassNames[GetUnionRoomTrainerClass()];
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
toCpy = gTrainerClassNames[GetBattleTowerTrainerClassNameId()];
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER)
@@ -2079,7 +2079,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
toCpy = gStringVar4;
break;
case B_TXT_26: // ?
- HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, *(&gBattleStruct->field_52))
+ HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, *(&gBattleStruct->scriptPartyIdx))
break;
case B_TXT_PC_CREATOR_NAME: // lanette pc
if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC))
@@ -2379,6 +2379,9 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = {
const u8 gUnknown_83FEC90[] = {0x04, 0x05, 0x02, 0x02};
+// windowId: Upper 2 bits are text flags
+// x40: Use NPC context-defined font
+// x80: Inhibit window clear
void BattlePutTextOnWindow(const u8 *text, u8 windowId) {
bool32 copyToVram;
struct TextPrinterTemplate printerTemplate;
@@ -2457,7 +2460,7 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) {
}
}
-bool8 sub_80D89B0(u16 stringId)
+bool8 BattleStringShouldBeColored(u16 stringId)
{
if (stringId == STRINGID_TRAINER1LOSETEXT || stringId == STRINGID_TRAINER2CLASS || stringId == STRINGID_TRAINER1WINTEXT || stringId == STRINGID_TRAINER2NAME)
return TRUE;
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 90ee8e561..35328d6c1 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -1040,11 +1040,11 @@ static void atk01_accuracycheck(void)
u16 move = T2_READ_16(gBattlescriptCurrInstr + 5);
if ((gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE
- && !sub_80EB2E0(1)
+ && !BtlCtrl_OakOldMan_TestState2Flag(1)
&& gBattleMoves[move].power != 0
&& GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
|| (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE
- && !sub_80EB2E0(2)
+ && !BtlCtrl_OakOldMan_TestState2Flag(2)
&& gBattleMoves[move].power == 0
&& GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
|| (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE))
@@ -1213,7 +1213,7 @@ static void atk04_critcalc(void)
&& !(gStatuses3[gBattlerAttacker] & STATUS3_CANT_SCORE_A_CRIT)
&& !(gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL)
&& !(Random() % sCriticalHitChance[critChance])
- && (!(gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) || sub_80EB2E0(1))
+ && (!(gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) || BtlCtrl_OakOldMan_TestState2Flag(1))
&& !(gBattleTypeFlags & BATTLE_TYPE_POKEDUDE))
gCritMultiplier = 2;
else
@@ -4146,7 +4146,7 @@ static void atk49_moveend(void)
gLastPrintedMoves[gBattlerAttacker] = gChosenMove;
}
if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker])
- && !(gBattleStruct->field_91 & gBitTable[gBattlerAttacker])
+ && !(gBattleStruct->absentBattlerFlags & gBitTable[gBattlerAttacker])
&& gBattleMoves[originallyUsedMove].effect != EFFECT_BATON_PASS)
{
if (gHitMarker & HITMARKER_OBEYS)
@@ -4184,7 +4184,7 @@ static void atk49_moveend(void)
break;
case ATK49_MIRROR_MOVE: // mirror move
if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker])
- && !(gBattleStruct->field_91 & gBitTable[gBattlerAttacker])
+ && !(gBattleStruct->absentBattlerFlags & gBitTable[gBattlerAttacker])
&& gBattleMoves[originallyUsedMove].flags & FLAG_MIRROR_MOVE_AFFECTED
&& gHitMarker & HITMARKER_OBEYS
&& gBattlerAttacker != gBattlerTarget
@@ -4491,8 +4491,8 @@ static void atk4F_jumpifcantswitch(void)
static void sub_8024398(u8 arg0)
{
- *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
- BtlController_EmitChoosePokemon(0, PARTY_ACTION_SEND_OUT, arg0, 0, gBattleStruct->field_60[gActiveBattler]);
+ *(gBattleStruct->battlerPartyIndexes + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ BtlController_EmitChoosePokemon(0, PARTY_ACTION_SEND_OUT, arg0, 0, gBattleStruct->battlerPartyOrders[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -4745,8 +4745,8 @@ static void atk50_openpartyscreen(void)
else
{
gActiveBattler = battlerId;
- *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
- BtlController_EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), 0, gBattleStruct->field_60[gActiveBattler]);
+ *(gBattleStruct->battlerPartyIndexes + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ BtlController_EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), 0, gBattleStruct->battlerPartyOrders[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 6;
if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT && gBattleResults.playerSwitchesCounter < 0xFF)
@@ -4791,7 +4791,7 @@ static void atk51_switchhandleorder(void)
break;
case 1:
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
- sub_8013F6C(gActiveBattler);
+ UpdatePartyOwnerOnSwitch_NonMulti(gActiveBattler);
break;
case 2:
gBattleCommunication[0] = gBattleBufferB[gActiveBattler][1];
@@ -4799,16 +4799,16 @@ static void atk51_switchhandleorder(void)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 0) &= 0xF;
- *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
- *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBattler][3];
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 0) &= (0xF0);
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBattler][3];
+ *(gActiveBattler * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) &= 0xF;
+ *(gActiveBattler * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
+ *(gActiveBattler * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 1) = gBattleBufferB[gActiveBattler][3];
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) &= (0xF0);
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 2) = gBattleBufferB[gActiveBattler][3];
}
else
{
- sub_8013F6C(gActiveBattler);
+ UpdatePartyOwnerOnSwitch_NonMulti(gActiveBattler);
}
PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].species)
PREPARE_MON_NICK_BUFFER(gBattleTextBuff2, gActiveBattler, gBattleBufferB[gActiveBattler][1])
@@ -4823,7 +4823,7 @@ static void atk52_switchineffects(void)
s32 i;
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- sub_80174B8(gActiveBattler);
+ UpdateSentPokesToOpponentValue(gActiveBattler);
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
gSpecialStatuses[gActiveBattler].flag40 = 0;
if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED)
@@ -6601,7 +6601,7 @@ static bool8 TryDoForceSwitchOut(void)
{
if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
{
- *(gBattleStruct->field_58 + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
+ *(gBattleStruct->battlerPartyIndexes + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
}
else
{
@@ -6612,7 +6612,7 @@ static bool8 TryDoForceSwitchOut(void)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
return FALSE;
}
- *(gBattleStruct->field_58 + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
+ *(gBattleStruct->battlerPartyIndexes + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
}
gBattlescriptCurrInstr = BattleScript_SuccessForceOut;
return TRUE;
@@ -6704,7 +6704,7 @@ static void atk8F_forcerandomswitch(void)
}
*(gBattleStruct->monToSwitchIntoId + gBattlerTarget) = i;
if (!IsMultiBattle())
- sub_8013F6C(gBattlerTarget);
+ UpdatePartyOwnerOnSwitch_NonMulti(gBattlerTarget);
SwitchPartyOrderLinkMulti(gBattlerTarget, i, 0);
SwitchPartyOrderLinkMulti(gBattlerTarget ^ 2, i, 1);
}
@@ -8742,7 +8742,7 @@ static void atkE2_switchoutabilities(void)
{
case ABILITY_NATURAL_CURE:
gBattleMons[gActiveBattler].status1 = 0;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[*(gBattleStruct->field_58 + gActiveBattler)], 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[*(gBattleStruct->battlerPartyIndexes + gActiveBattler)], 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
break;
}
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 058573aaf..62df9965d 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -76,18 +76,18 @@ static EWRAM_DATA u16 sRivalBattleFlags = 0;
static const u8 sBattleTransitionTable_Wild[][2] =
{
- B_TRANSITION_SLICED_SCREEN, B_TRANSITION_WHITEFADE_IN_STRIPES,
- B_TRANSITION_CLOCKWISE_BLACKFADE, B_TRANSITION_GRID_SQUARES,
- B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES,
- B_TRANSITION_BLACK_WAVE_TO_RIGHT, B_TRANSITION_FULLSCREEN_WAVE,
+ { B_TRANSITION_SLICED_SCREEN, B_TRANSITION_WHITEFADE_IN_STRIPES },
+ { B_TRANSITION_CLOCKWISE_BLACKFADE, B_TRANSITION_GRID_SQUARES },
+ { B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES },
+ { B_TRANSITION_BLACK_WAVE_TO_RIGHT, B_TRANSITION_FULLSCREEN_WAVE },
};
static const u8 sBattleTransitionTable_Trainer[][2] =
{
- B_TRANSITION_SLIDING_POKEBALLS, B_TRANSITION_BLACK_DOODLES,
- B_TRANSITION_HORIZONTAL_CORRUGATE, B_TRANSITION_BIG_POKEBALL,
- B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES,
- B_TRANSITION_DISTORTED_WAVE, B_TRANSITION_FULLSCREEN_WAVE,
+ { B_TRANSITION_SLIDING_POKEBALLS, B_TRANSITION_BLACK_DOODLES },
+ { B_TRANSITION_HORIZONTAL_CORRUGATE, B_TRANSITION_BIG_POKEBALL },
+ { B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES },
+ { B_TRANSITION_DISTORTED_WAVE, B_TRANSITION_FULLSCREEN_WAVE },
};
static const struct TrainerBattleParameter sOrdinaryBattleParams[] =
@@ -646,9 +646,9 @@ u8 BattleSetup_GetBattleTowerBattleTransition(void)
u8 playerLevel = GetSumOfPlayerPartyLevel(1);
if (enemyLevel < playerLevel)
- return 4;
+ return B_TRANSITION_SLIDING_POKEBALLS;
else
- return 3;
+ return B_TRANSITION_BIG_POKEBALL;
}
static u32 TrainerBattleLoadArg32(const u8 *ptr)
@@ -904,14 +904,14 @@ static void CB2_EndTrainerBattle(void)
}
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
SetBattledTrainerFlag();
- sub_81139BC();
+ QuestLogEvents_HandleEndTrainerBattle();
}
else
{
gSpecialVar_Result = FALSE;
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
SetBattledTrainerFlag();
- sub_81139BC();
+ QuestLogEvents_HandleEndTrainerBattle();
}
}
@@ -929,7 +929,7 @@ static void CB2_EndTrainerBattle(void)
{
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
SetBattledTrainerFlag();
- sub_81139BC();
+ QuestLogEvents_HandleEndTrainerBattle();
}
}
}
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 04f3019b1..4c6934781 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -1124,7 +1124,8 @@ static void SetPlayerBattleTowerRecord(void)
playerRecord->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i];
for (i = 0; i < 3; i++)
- sub_803E23C(&gPlayerParty[gSaveBlock2Ptr->battleTower.selectedPartyMons[i] - 1], &playerRecord->party[i]);
+ ConvertPokemonToBattleTowerPokemon(&gPlayerParty[gSaveBlock2Ptr->battleTower.selectedPartyMons[i] - 1],
+ &playerRecord->party[i]);
SetBattleTowerRecordChecksum(&gSaveBlock2Ptr->battleTower.playerRecord);
SaveCurrentWinStreak();
@@ -1320,7 +1321,7 @@ static void Debug_FillEReaderTrainerWithPlayerData(void)
}
for (i = 0; i < 3; i++)
- sub_803E23C(&gPlayerParty[i], &ereaderTrainer->party[i]);
+ ConvertPokemonToBattleTowerPokemon(&gPlayerParty[i], &ereaderTrainer->party[i]);
SetEReaderTrainerChecksum(ereaderTrainer);
}
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 7fc2d4255..7d117f50f 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -213,24 +213,24 @@ static const TaskFunc sBT_Phase1Tasks[] =
static const TaskFunc sBT_Phase2Tasks[] =
{
- BT_Phase2Blur,
- BT_Phase2DistortedWave,
- BT_Phase2HorizontalCorrugate,
- BT_Phase2BigPokeball,
- BT_Phase2SlidingPokeballs,
- BT_Phase2ClockwiseBlackFade,
- BT_Phase2FullScreenWave,
- BT_Phase2BlackWaveToRight,
- BT_Phase2SlicedScreen,
- BT_Phase2WhiteFadeInStripes,
- BT_Phase2GridSquares,
- BT_Phase2BlackDoodles,
- BT_Phase2StartLoreleiMugshot,
- BT_Phase2StartBrunoMugshot,
- BT_Phase2StartAgathaMugshot,
- BT_Phase2StartLanceMugshot,
- BT_Phase2StartBlueMugshot,
- BT_Phase2AntiClockwiseSpiral,
+ [B_TRANSITION_BLUR] = BT_Phase2Blur,
+ [B_TRANSITION_DISTORTED_WAVE] = BT_Phase2DistortedWave,
+ [B_TRANSITION_HORIZONTAL_CORRUGATE] = BT_Phase2HorizontalCorrugate,
+ [B_TRANSITION_BIG_POKEBALL] = BT_Phase2BigPokeball,
+ [B_TRANSITION_SLIDING_POKEBALLS] = BT_Phase2SlidingPokeballs,
+ [B_TRANSITION_CLOCKWISE_BLACKFADE] = BT_Phase2ClockwiseBlackFade,
+ [B_TRANSITION_FULLSCREEN_WAVE] = BT_Phase2FullScreenWave,
+ [B_TRANSITION_BLACK_WAVE_TO_RIGHT] = BT_Phase2BlackWaveToRight,
+ [B_TRANSITION_SLICED_SCREEN] = BT_Phase2SlicedScreen,
+ [B_TRANSITION_WHITEFADE_IN_STRIPES] = BT_Phase2WhiteFadeInStripes,
+ [B_TRANSITION_GRID_SQUARES] = BT_Phase2GridSquares,
+ [B_TRANSITION_BLACK_DOODLES] = BT_Phase2BlackDoodles,
+ [B_TRANSITION_LORELEI] = BT_Phase2StartLoreleiMugshot,
+ [B_TRANSITION_BRUNO] = BT_Phase2StartBrunoMugshot,
+ [B_TRANSITION_AGATHA] = BT_Phase2StartAgathaMugshot,
+ [B_TRANSITION_LANCE] = BT_Phase2StartLanceMugshot,
+ [B_TRANSITION_BLUE] = BT_Phase2StartBlueMugshot,
+ [B_TRANSITION_ANTI_CLOCKWISE_SPIRAL] = BT_Phase2AntiClockwiseSpiral,
};
static const TransitionStateFunc sBT_MainPhases[] =
@@ -1487,174 +1487,176 @@ static void VBCB_BT_Phase2BlackWaveToRight(void)
#undef tOffset
#undef tTheta
+// Unused
+
static void BT_Phase2AntiClockwiseSpiral(u8 taskId)
{
while (sBT_Phase2AntiClockwiseSpiralFuncs[gTasks[taskId].tState](&gTasks[taskId]));
}
-static void sub_80D1F64(s16 a1, s16 a2, u8 a3)
+static void BT_AntiClockwiseSpiral_DoUpdateFrame(s16 initRadius, s16 deltaAngleMax, u8 offsetMaybe)
{
u8 theta = 0;
- s16 i, r0, r8;
- s16 res1, res2, res3, res4;
+ s16 i, amplitude1, amplitude2;
+ s16 y1, x1, y2, x2;
for (i = 320; i < 960; ++i)
gScanlineEffectRegBuffers[1][i] = 120;
- for (i = 0; i < (a2 * 16); ++i, ++theta)
+ for (i = 0; i < (deltaAngleMax * 16); ++i, ++theta)
{
- r0 = a1 + (theta >> 3);
+ amplitude1 = initRadius + (theta >> 3);
if ((theta >> 3) != ((theta + 1) >> 3))
{
- r8 = r0 + 1;
+ amplitude2 = amplitude1 + 1;
}
else
{
- r8 = r0;
+ amplitude2 = amplitude1;
}
- res1 = 80 - Sin(theta, r0);
- res2 = Cos(theta, r0) + 120;
- res3 = 80 - Sin(theta + 1, r8);
- res4 = Cos(theta + 1, r8) + 120;
+ y1 = 80 - Sin(theta, amplitude1);
+ x1 = Cos(theta, amplitude1) + 120;
+ y2 = 80 - Sin(theta + 1, amplitude2);
+ x2 = Cos(theta + 1, amplitude2) + 120;
- if (res1 < 0 && res3 < 0)
+ if (y1 < 0 && y2 < 0)
continue;
- if (res1 > 159 && res3 > 159)
+ if (y1 > 159 && y2 > 159)
continue;
- if (res1 < 0)
- res1 = 0;
- if (res1 > 159)
- res1 = 159;
- if (res2 < 0)
- res2 = 0;
- if (res2 > 255)
- res2 = 255;
- if (res3 < 0)
- res3 = 0;
- if (res3 > 159)
- res3 = 159;
- if (res4 < 0)
- res4 = 0;
- if (res4 > 255)
- res4 = 255;
-
- res3 -= res1;
+ if (y1 < 0)
+ y1 = 0;
+ if (y1 > 159)
+ y1 = 159;
+ if (x1 < 0)
+ x1 = 0;
+ if (x1 > 255)
+ x1 = 255;
+ if (y2 < 0)
+ y2 = 0;
+ if (y2 > 159)
+ y2 = 159;
+ if (x2 < 0)
+ x2 = 0;
+ if (x2 > 255)
+ x2 = 255;
+
+ y2 -= y1;
if (theta >= 64 && theta < 192)
{
- gScanlineEffectRegBuffers[1][res1 + 320] = res2;
+ gScanlineEffectRegBuffers[1][y1 + 320] = x1;
- if (res3 == 0)
+ if (y2 == 0)
continue;
- res4 -= res2;
- if (res4 < -1 && res2 > 1)
- --res2;
- else if (res4 > 1 && res2 < 255)
- ++res2;
+ x2 -= x1;
+ if (x2 < -1 && x1 > 1)
+ --x1;
+ else if (x2 > 1 && x1 < 255)
+ ++x1;
- if (res3 < 0)
- for (; res3 < 0; res3++)
- gScanlineEffectRegBuffers[1][res1 + res3 + 320] = res2;
+ if (y2 < 0)
+ for (; y2 < 0; y2++)
+ gScanlineEffectRegBuffers[1][y1 + y2 + 320] = x1;
else
- for (; res3 > 0; res3--)
- gScanlineEffectRegBuffers[1][res1 + res3 + 320] = res2;
+ for (; y2 > 0; y2--)
+ gScanlineEffectRegBuffers[1][y1 + y2 + 320] = x1;
}
else
{
- gScanlineEffectRegBuffers[1][res1 + 480] = res2;
+ gScanlineEffectRegBuffers[1][y1 + 480] = x1;
- if (res3 == 0)
+ if (y2 == 0)
continue;
- res4 -= res2;
- if (res4 < -1 && res2 > 1)
- --res2;
- else if (res4 > 1 && res2 < 255)
- ++res2;
+ x2 -= x1;
+ if (x2 < -1 && x1 > 1)
+ --x1;
+ else if (x2 > 1 && x1 < 255)
+ ++x1;
- if (res3 < 0)
- for (; res3 < 0; res3++)
- gScanlineEffectRegBuffers[1][res1 + res3 + 480] = res2;
+ if (y2 < 0)
+ for (; y2 < 0; y2++)
+ gScanlineEffectRegBuffers[1][y1 + y2 + 480] = x1;
else
- for (; res3 > 0; res3--)
- gScanlineEffectRegBuffers[1][res1 + res3 + 480] = res2;
+ for (; y2 > 0; y2--)
+ gScanlineEffectRegBuffers[1][y1 + y2 + 480] = x1;
}
}
- if (a3 == 0 || a2 % 4 == 0)
+ if (offsetMaybe == 0 || deltaAngleMax % 4 == 0)
{
for (i = 0; i < 160; i++)
{
- gScanlineEffectRegBuffers[1][i * 2 + a3] = gScanlineEffectRegBuffers[1][i + 320] << 8 | gScanlineEffectRegBuffers[1][i + 480];
+ gScanlineEffectRegBuffers[1][i * 2 + offsetMaybe] = gScanlineEffectRegBuffers[1][i + 320] << 8 | gScanlineEffectRegBuffers[1][i + 480];
}
return;
}
- res1 = Sin(a2 * 16, a1 + (a2 << 1));
+ y1 = Sin(deltaAngleMax * 16, initRadius + (deltaAngleMax << 1));
- switch (a2 / 4)
+ switch (deltaAngleMax / 4)
{
case 0:
- if (res1 > 80)
- res1 = 80;
- for (i = res1; i > 0; i--)
+ if (y1 > 80)
+ y1 = 80;
+ for (i = y1; i > 0; i--)
{
- sTransitionStructPtr->data[2] = res2 = ((i * gUnknown_83FA444[a2]) >> 8) + 120;
- if (res2 < 0 || res2 > 255)
+ sTransitionStructPtr->data[2] = x1 = ((i * gUnknown_83FA444[deltaAngleMax]) >> 8) + 120;
+ if (x1 < 0 || x1 > 255)
continue;
sTransitionStructPtr->bg123HOfs = 400 - i;
sTransitionStructPtr->data[10] = gScanlineEffectRegBuffers[1][400 - i];
- if (gScanlineEffectRegBuffers[1][560 - i] < res2)
+ if (gScanlineEffectRegBuffers[1][560 - i] < x1)
gScanlineEffectRegBuffers[1][560 - i] = 120;
- else if (gScanlineEffectRegBuffers[1][400 - i] < res2)
- gScanlineEffectRegBuffers[1][400 - i] = res2;
+ else if (gScanlineEffectRegBuffers[1][400 - i] < x1)
+ gScanlineEffectRegBuffers[1][400 - i] = x1;
}
break;
case 1:
- if (res1 > 80)
- res1 = 80;
- for (i = res1; i > 0; i--)
+ if (y1 > 80)
+ y1 = 80;
+ for (i = y1; i > 0; i--)
{
- sTransitionStructPtr->data[2] = res2 = ((i * gUnknown_83FA444[a2]) >> 8) + 120;
- if (res2 < 0 || res2 > 255)
+ sTransitionStructPtr->data[2] = x1 = ((i * gUnknown_83FA444[deltaAngleMax]) >> 8) + 120;
+ if (x1 < 0 || x1 > 255)
continue;
sTransitionStructPtr->bg123HOfs = 400 - i;
sTransitionStructPtr->data[10] = gScanlineEffectRegBuffers[1][400 - i];
- if (gScanlineEffectRegBuffers[1][400 - i] < res2)
- gScanlineEffectRegBuffers[1][400 - i] = res2;
+ if (gScanlineEffectRegBuffers[1][400 - i] < x1)
+ gScanlineEffectRegBuffers[1][400 - i] = x1;
}
break;
case 2:
- if (res1 < -79)
- res1 = -79;
- for (i = res1; i <= 0; i++)
+ if (y1 < -79)
+ y1 = -79;
+ for (i = y1; i <= 0; i++)
{
- sTransitionStructPtr->data[2] = res2 = ((i * gUnknown_83FA444[a2]) >> 8) + 120;
- if (res2 < 0 || res2 > 255)
+ sTransitionStructPtr->data[2] = x1 = ((i * gUnknown_83FA444[deltaAngleMax]) >> 8) + 120;
+ if (x1 < 0 || x1 > 255)
continue;
sTransitionStructPtr->bg123HOfs = 560 - i;
sTransitionStructPtr->data[10] = gScanlineEffectRegBuffers[1][560 - i];
- if (gScanlineEffectRegBuffers[1][400 - i] >= res2)
+ if (gScanlineEffectRegBuffers[1][400 - i] >= x1)
gScanlineEffectRegBuffers[1][400 - i] = 120;
- else if (gScanlineEffectRegBuffers[1][560 - i] > res2)
- gScanlineEffectRegBuffers[1][560 - i] = res2;
+ else if (gScanlineEffectRegBuffers[1][560 - i] > x1)
+ gScanlineEffectRegBuffers[1][560 - i] = x1;
}
break;
case 3:
- if (res1 < -79)
- res1 = -79;
- for (i = res1; i <= 0; i++)
+ if (y1 < -79)
+ y1 = -79;
+ for (i = y1; i <= 0; i++)
{
- sTransitionStructPtr->data[2] = res2 = ((i * gUnknown_83FA444[a2]) >> 8) + 120;
- if (res2 < 0 || res2 > 255)
+ sTransitionStructPtr->data[2] = x1 = ((i * gUnknown_83FA444[deltaAngleMax]) >> 8) + 120;
+ if (x1 < 0 || x1 > 255)
continue;
sTransitionStructPtr->bg123HOfs = 560 - i;
sTransitionStructPtr->data[10] = gScanlineEffectRegBuffers[1][560 - i];
- if (gScanlineEffectRegBuffers[1][560 - i] > res2)
- gScanlineEffectRegBuffers[1][560 - i] = res2;
+ if (gScanlineEffectRegBuffers[1][560 - i] > x1)
+ gScanlineEffectRegBuffers[1][560 - i] = x1;
}
break;
default:
@@ -1663,7 +1665,7 @@ static void sub_80D1F64(s16 a1, s16 a2, u8 a3)
for (i = 0; i < 160; i++)
{
- gScanlineEffectRegBuffers[1][i * 2 + a3] = (gScanlineEffectRegBuffers[1][i + 320] << 8) | gScanlineEffectRegBuffers[1][i + 480];
+ gScanlineEffectRegBuffers[1][i * 2 + offsetMaybe] = (gScanlineEffectRegBuffers[1][i + 320] << 8) | gScanlineEffectRegBuffers[1][i + 480];
}
}
@@ -1677,8 +1679,8 @@ static bool8 BT_Phase2AntiClockwiseSpiral_Init(struct Task *task)
sTransitionStructPtr->win0V = WIN_RANGE(0x30, 0x70);
sTransitionStructPtr->win1V = WIN_RANGE(0x10, 0x90);
sTransitionStructPtr->counter = 0;
- sub_80D1F64(0, 0, FALSE);
- sub_80D1F64(0, 0, TRUE);
+ BT_AntiClockwiseSpiral_DoUpdateFrame(0, 0, 0);
+ BT_AntiClockwiseSpiral_DoUpdateFrame(0, 0, 1);
DmaCopy16(3, gScanlineEffectRegBuffers[1], gScanlineEffectRegBuffers[0], 640);
SetVBlankCallback(VBCB_BT_Phase2AntiClockwiseBlackFade);
++task->tState;
@@ -1689,30 +1691,30 @@ static bool8 BT_Phase2AntiClockwiseSpiral_Init(struct Task *task)
static bool8 BT_Phase2AntiClockwiseSpiral_Update(struct Task *task)
{
- s16 v0, v1;
+ s16 win_top, win_bottom;
- sub_80D1F64(task->data[2], task->data[1], TRUE);
+ BT_AntiClockwiseSpiral_DoUpdateFrame(task->data[2], task->data[1], 1);
sTransitionStructPtr->vblankDma |= TRUE;
if (++task->data[1] == 17)
{
- sub_80D1F64(task->data[2], 16, FALSE);
- v0 = 48 - task->data[2];
- if (v0 < 0)
- v0 = 0;
- v1 = task->data[2] + 112;
- if (v1 > 255)
- v1 = 255;
- sTransitionStructPtr->win0V = v0 | v1;
+ BT_AntiClockwiseSpiral_DoUpdateFrame(task->data[2], 16, 0);
+ win_top = 48 - task->data[2];
+ if (win_top < 0)
+ win_top = 0;
+ win_bottom = task->data[2] + 112;
+ if (win_bottom > 255)
+ win_bottom = 255;
+ sTransitionStructPtr->win0V = win_top | win_bottom; // UB: win_top should be shifted
task->data[2] += 32;
task->data[1] = 0;
- sub_80D1F64(task->data[2], 0, TRUE);
- v0 = 48 - task->data[2];
- if (v0 < 0)
- v0 = 0;
- v1 = task->data[2] + 112;
- if (v1 > 255)
- v1 = 255;
- sTransitionStructPtr->win1V = v0 | v1;
+ BT_AntiClockwiseSpiral_DoUpdateFrame(task->data[2], 0, 1);
+ win_top = 48 - task->data[2];
+ if (win_top < 0)
+ win_top = 0;
+ win_bottom = task->data[2] + 112;
+ if (win_bottom > 255)
+ win_bottom = 255;
+ sTransitionStructPtr->win1V = win_top | win_bottom; // UB: win_top should be shifted
sTransitionStructPtr->vblankDma |= TRUE;
if (task->data[2] > 159)
{
@@ -2684,7 +2686,7 @@ static bool8 BT_Phase1_FadeIn(struct Task *task)
static void BT_InitCtrlBlk(void)
{
memset(sTransitionStructPtr, 0, sizeof(*sTransitionStructPtr));
- sub_805A658(&sTransitionStructPtr->bg123HOfs, &sTransitionStructPtr->bg123VOfs);
+ FieldCameraGetPixelOffsetAtGround(&sTransitionStructPtr->bg123HOfs, &sTransitionStructPtr->bg123VOfs);
}
static void BT_VBSyncOamAndPltt(void)
diff --git a/src/battle_util.c b/src/battle_util.c
index 27d90b0d4..b3cd5a53c 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -247,7 +247,7 @@ void sub_8017434(u8 battler)
}
}
-void sub_80174B8(u8 battler)
+void UpdateSentPokesToOpponentValue(u8 battler)
{
if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
{
diff --git a/src/battle_util2.c b/src/battle_util2.c
index 6de4941cb..b1036ef0b 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -15,7 +15,7 @@ void AllocateBattleResources(void)
s32 i;
for (i = 0; i < 4; ++i)
- gUnknown_3005EE0[i] = AllocZeroed(8);
+ gPokedudeBattlerStates[i] = AllocZeroed(sizeof(struct PokedudeBattlerState));
}
gBattleStruct = AllocZeroed(sizeof(*gBattleStruct));
gBattleResources = AllocZeroed(sizeof(*gBattleResources));
@@ -29,10 +29,10 @@ void AllocateBattleResources(void)
gBattleResources->AI_ScriptsStack = AllocZeroed(sizeof(*gBattleResources->AI_ScriptsStack));
gLinkBattleSendBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE);
gLinkBattleRecvBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE);
- gUnknown_2022BB8 = AllocZeroed(0x2000);
- gUnknown_2022BBC = AllocZeroed(0x1000);
- SetBgTilemapBuffer(1, gUnknown_2022BBC);
- SetBgTilemapBuffer(2, gUnknown_2022BBC);
+ gBattleAnimMons_BgTilesBuffer = AllocZeroed(0x2000);
+ gBattleAnimMons_BgTilemapBuffer = AllocZeroed(0x1000);
+ SetBgTilemapBuffer(1, gBattleAnimMons_BgTilemapBuffer);
+ SetBgTilemapBuffer(2, gBattleAnimMons_BgTilemapBuffer);
}
void FreeBattleResources(void)
@@ -45,7 +45,7 @@ void FreeBattleResources(void)
for (i = 0; i < 4; ++i)
{
- FREE_AND_SET_NULL(gUnknown_3005EE0[i]);
+ FREE_AND_SET_NULL(gPokedudeBattlerStates[i]);
}
}
if (gBattleResources != NULL)
@@ -62,8 +62,8 @@ void FreeBattleResources(void)
FREE_AND_SET_NULL(gBattleResources);
FREE_AND_SET_NULL(gLinkBattleSendBuffer);
FREE_AND_SET_NULL(gLinkBattleRecvBuffer);
- FREE_AND_SET_NULL(gUnknown_2022BB8);
- FREE_AND_SET_NULL(gUnknown_2022BBC);
+ FREE_AND_SET_NULL(gBattleAnimMons_BgTilesBuffer);
+ FREE_AND_SET_NULL(gBattleAnimMons_BgTilemapBuffer);
}
}
diff --git a/src/bug.c b/src/bug.c
index 6e6b8f400..896fbcbf6 100644
--- a/src/bug.c
+++ b/src/bug.c
@@ -264,7 +264,7 @@ static void AnimTranslateWebThread(struct Sprite *sprite)
{
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
}
- sub_8075678(sprite);
+ BattleAnim_InitLinearTranslationWithDuration(sprite);
sprite->data[5] = gBattleAnimArgs[3];
sprite->callback = sub_80B41C0;
}
diff --git a/src/cable_club.c b/src/cable_club.c
index 7054eb417..039dea19c 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -301,7 +301,7 @@ static void Task_LinkupSlave_2(u8 taskId)
{
if (*res == 3 || *res == 4)
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
HideFieldMessageBox();
gTasks[taskId].func = Task_Linkup_7;
}
@@ -346,13 +346,13 @@ static void Task_LinkupMaster_6(u8 taskId)
if (AnyConnectedPartnersPlayingRS() == TRUE)
CloseLink();
else
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
HideFieldMessageBox();
gTasks[taskId].func = Task_Linkup_7;
}
else if (gSpecialVar_Result == 3)
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
HideFieldMessageBox();
gTasks[taskId].func = Task_Linkup_7;
}
@@ -410,7 +410,7 @@ static void Task_Linkup_6a(u8 taskId)
}
else
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
gTasks[taskId].func = Task_Linkup_7;
}
}
@@ -599,7 +599,7 @@ static void Task_StartWiredCableClubBattle(u8 taskId)
task->data[0]++;
break;
case 3:
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
task->data[0]++;
break;
case 4:
@@ -671,7 +671,7 @@ static void Task_StartWirelessCableClubBattle(u8 taskId)
data[0] = 5;
break;
case 5:
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
data[0] = 6;
break;
case 6:
@@ -711,7 +711,7 @@ static void sub_8081624(void)
switch (gMain.state)
{
case 0:
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
gMain.state++;
break;
case 1:
@@ -838,7 +838,7 @@ static void Task_StartWiredCableClubTrade(u8 taskId)
gSelectedTradeMonPositions[0] = 0;
gSelectedTradeMonPositions[1] = 0;
m4aMPlayAllStop();
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
task->data[0]++;
break;
case 3:
@@ -870,7 +870,7 @@ static void Task_StartWirelessCableClubTrade(u8 taskId)
gSelectedTradeMonPositions[0] = 0;
gSelectedTradeMonPositions[1] = 0;
m4aMPlayAllStop();
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
data[0]++;
break;
case 3:
@@ -959,6 +959,6 @@ static void sub_8081AE4(u8 taskId)
static void sub_8081B08(u8 taskId)
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
gTasks[taskId].func = sub_8081AE4;
}
diff --git a/src/dark.c b/src/dark.c
index 86523f2f1..142366fea 100644
--- a/src/dark.c
+++ b/src/dark.c
@@ -409,7 +409,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId)
task->data[3] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
if (task->data[3] == 1)
{
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
task->data[10] = gBattle_BG1_Y;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
FillPalette(0, animBg.paletteId * 16, 32);
@@ -540,7 +540,7 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId)
case 1:
if (task->data[3] == 1)
{
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
task->data[10] = gBattle_BG1_Y;
FillPalette(0, animBg.paletteId * 16, 32);
}
@@ -742,9 +742,9 @@ void sub_80B8664(u8 taskId)
{
bool8 toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) ^ 1 ? TRUE : FALSE;
- sub_8073128(toBG2);
+ ResetBattleAnimBg(toBG2);
if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
- sub_8073128(toBG2 ^ 1);
+ ResetBattleAnimBg(toBG2 ^ 1);
DestroyAnimVisualTask(taskId);
}
@@ -800,7 +800,7 @@ void AnimTask_MetallicShine(u8 taskId)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
newSpriteId = sub_8076E34(gBattleAnimAttacker, spriteId, species);
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
AnimLoadCompressedBgTilemap(animBg.bgId, gMetalShineTilemap);
AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset);
LoadCompressedPalette(gMetalShinePalette, animBg.paletteId * 16, 32);
@@ -839,8 +839,8 @@ static void sub_80B8920(u8 taskId)
if (gTasks[taskId].data[1] == 0)
SetGreyscaleOrOriginalPalette(paletteNum, 1);
DestroySprite(&gSprites[gTasks[taskId].data[0]]);
- sub_80752A0(&animBg);
- sub_8075358(animBg.bgId);
+ GetBattleAnimBg1Data(&animBg);
+ InitBattleAnimBg(animBg.bgId);
if (gTasks[taskId].data[6] == 1)
gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority++;
}
diff --git a/src/data.c b/src/data.c
index 6b4e113af..3f6a340eb 100644
--- a/src/data.c
+++ b/src/data.c
@@ -8,7 +8,7 @@
#include "constants/battle_ai.h"
#include "constants/trainer_classes.h"
-const struct SpriteFrameImage gUnknown_8234698[] =
+const struct SpriteFrameImage gSpriteImages_BattlerPlayerLeft[] =
{
gHeap + 0x8000, 0x800,
gHeap + 0x8800, 0x800,
@@ -16,7 +16,7 @@ const struct SpriteFrameImage gUnknown_8234698[] =
gHeap + 0x9800, 0x800,
};
-const struct SpriteFrameImage gUnknown_82346B8[] =
+const struct SpriteFrameImage gSpriteImages_BattlerOpponentLeft[] =
{
gHeap + 0xA000, 0x800,
gHeap + 0xA800, 0x800,
@@ -24,7 +24,7 @@ const struct SpriteFrameImage gUnknown_82346B8[] =
gHeap + 0xB800, 0x800,
};
-const struct SpriteFrameImage gUnknown_82346D8[] =
+const struct SpriteFrameImage gSpriteImages_BattlerPlayerRight[] =
{
gHeap + 0xC000, 0x800,
gHeap + 0xC800, 0x800,
@@ -32,7 +32,7 @@ const struct SpriteFrameImage gUnknown_82346D8[] =
gHeap + 0xD800, 0x800,
};
-const struct SpriteFrameImage gUnknown_82346F8[] =
+const struct SpriteFrameImage gSpriteImages_BattlerOpponentRight[] =
{
gHeap + 0xE000, 0x800,
gHeap + 0xE800, 0x800,
@@ -168,7 +168,7 @@ static const union AffineAnimCmd gSpriteAffineAnim_82348B0[] =
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd *const gSpriteAffineAnimTable_82348C8[] =
+const union AffineAnimCmd *const gSpriteAffineAnimTable_BattlerPlayer[] =
{
gSpriteAffineAnim_82347F8,
gSpriteAffineAnim_8234818,
@@ -208,7 +208,7 @@ static const union AffineAnimCmd gSpriteAffineAnim_8234934[] =
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd *const gSpriteAffineAnimTable_8234944[] =
+const union AffineAnimCmd *const gSpriteAffineAnimTable_BattlerOpponent[] =
{
gSpriteAffineAnim_82347F8,
gSpriteAffineAnim_8234818,
diff --git a/src/data/party_menu.h b/src/data/party_menu.h
index 2ada2b5f4..e8151b810 100644
--- a/src/data/party_menu.h
+++ b/src/data/party_menu.h
@@ -526,7 +526,7 @@ static const struct WindowTemplate sLevelUpStatsWindowTemplate =
.baseBlock = 0x2BF,
};
-static const struct WindowTemplate gUnknown_845A170 =
+static const struct WindowTemplate sWindowTemplate_FirstBattleOakVoiceover =
{
.bg = 2,
.tilemapLeft = 2,
diff --git a/src/daycare.c b/src/daycare.c
index 14c41355b..bbd0d89a6 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -790,7 +790,7 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
u8 i;
u8 selectedIvs[INHERITED_IV_COUNT];
u8 availableIVs[NUM_STATS];
- u8 whichParent[ARRAY_COUNT(selectedIvs)];
+ u8 whichParent[NELEMS(selectedIvs)];
u8 iv;
// Initialize a list of IV indices.
@@ -800,7 +800,7 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
}
// Select the 3 IVs that will be inherited.
- for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ for (i = 0; i < NELEMS(selectedIvs); i++)
{
// Randomly pick an IV from the available list and stop from being chosen again.
selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)];
@@ -808,13 +808,13 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
}
// Determine which parent each of the selected IVs should inherit from.
- for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ for (i = 0; i < NELEMS(selectedIvs); i++)
{
whichParent[i] = Random() % DAYCARE_MON_COUNT;
}
// Set each of inherited IVs on the egg mon.
- for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ for (i = 0; i < NELEMS(selectedIvs); i++)
{
switch (selectedIvs[i])
{
@@ -858,7 +858,7 @@ static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves)
numEggMoves = 0;
eggMoveIdx = 0;
species = GetMonData(pokemon, MON_DATA_SPECIES);
- for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i++)
+ for (i = 0; i < NELEMS(gEggMoves) - 1; i++)
{
if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET)
{
@@ -1787,7 +1787,7 @@ static void CB2_EggHatch_0(void)
ResetTempTileDataBuffers();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sBgTemplates_EggHatch, ARRAY_COUNT(sBgTemplates_EggHatch));
+ InitBgsFromTemplates(0, sBgTemplates_EggHatch, NELEMS(sBgTemplates_EggHatch));
ChangeBgX(1, 0, 0);
ChangeBgY(1, 0, 0);
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
index f9ea77003..35562bde7 100644
--- a/src/dodrio_berry_picking.c
+++ b/src/dodrio_berry_picking.c
@@ -804,7 +804,7 @@ static void sub_8151488(void)
switch (gUnknown_203F3E0->unk10)
{
case 0:
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
sub_81549D4(7);
gUnknown_203F3E0->unk10++;
break;
diff --git a/src/dodrio_berry_picking_2.c b/src/dodrio_berry_picking_2.c
index 5bd531edc..ff44a70de 100644
--- a/src/dodrio_berry_picking_2.c
+++ b/src/dodrio_berry_picking_2.c
@@ -1567,7 +1567,7 @@ static void sub_8155EA0(void)
DmaClear16(3, (void *)PLTT, PLTT_SIZE);
SetGpuReg(REG_OFFSET_DISPCNT, 0);
ResetBgsAndClearDma3BusyFlags(FALSE);
- InitBgsFromTemplates(0, sUnknown_847565C, ARRAY_COUNT(sUnknown_847565C));
+ InitBgsFromTemplates(0, sUnknown_847565C, NELEMS(sUnknown_847565C));
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
ChangeBgX(1, 0, 0);
diff --git a/src/easy_chat.c b/src/easy_chat.c
index bf617a854..4360dc72e 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -704,7 +704,7 @@ static bool8 UnlockedECMonOrMove(u16 wordIndex, u8 groupId)
static bool32 EC_IsDeoxys(u16 species)
{
u32 i;
- for (i = 0; i < ARRAY_COUNT(sDeoxysValue); i++)
+ for (i = 0; i < NELEMS(sDeoxysValue); i++)
{
if (sDeoxysValue[i] == species)
return TRUE;
diff --git a/src/fame_checker.c b/src/fame_checker.c
index 48e5cf00a..ea6e63be9 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -450,7 +450,7 @@ static void MainCB2_LoadFameChecker(void)
sBg1TilemapBuffer = AllocZeroed(0x1000);
sBg2TilemapBuffer = AllocZeroed(0x800);
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sUIBgTemplates, ARRAY_COUNT(sUIBgTemplates));
+ InitBgsFromTemplates(0, sUIBgTemplates, NELEMS(sUIBgTemplates));
SetBgTilemapBuffer(3, sBg3TilemapBuffer);
SetBgTilemapBuffer(2, sBg2TilemapBuffer);
SetBgTilemapBuffer(1, sBg1TilemapBuffer);
diff --git a/src/field_camera.c b/src/field_camera.c
index f383b2a27..37133d68f 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -84,10 +84,10 @@ void FieldUpdateBgTilemapScroll(void)
SetGpuReg(REG_OFFSET_BG3VOFS, r4);
}
-void sub_805A658(s16 *a, s16 *b)
+void FieldCameraGetPixelOffsetAtGround(s16 *hofs_p, s16 *vofs_p)
{
- *a = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
- *b = sFieldCameraOffset.yPixelOffset + sVerticalCameraPan + 8;
+ *hofs_p = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
+ *vofs_p = sFieldCameraOffset.yPixelOffset + sVerticalCameraPan + 8;
}
void DrawWholeMapView(void)
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index 93bc8133d..a21833729 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -207,7 +207,7 @@ static void sub_807DDF0(u8 taskId)
switch (task->data[0])
{
case 0:
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
task->data[0]++;
break;
case 1:
@@ -663,7 +663,7 @@ static void Task_ReturnFromLinkRoomWarp(u8 taskId)
case 1:
if (!WaitWarpFadeOutScreen() && BGMusicStopped())
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
data[0]++;
}
break;
diff --git a/src/fighting.c b/src/fighting.c
index ab477cd43..a7dd18ce8 100644
--- a/src/fighting.c
+++ b/src/fighting.c
@@ -788,7 +788,7 @@ static void sub_80B111C(struct Sprite *sprite)
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
InitAnimLinearTranslation(sprite);
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
- sprite->callback = sub_807563C;
+ sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6;
}
}
@@ -874,7 +874,7 @@ static void AnimSuperpowerFireball(struct Sprite *sprite)
sprite->data[4] = GetBattlerSpriteCoord(battler, 3);
InitAnimLinearTranslation(sprite);
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
- sprite->callback = sub_807563C;
+ sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6;
}
static void sub_80B13D4(struct Sprite *sprite)
@@ -940,7 +940,7 @@ void AnimTask_MoveSkyUppercutBg(u8 taskId)
switch (task->data[0])
{
case 0:
- sub_8075458(0);
+ ToggleBg3Mode(0);
task->data[8] = gBattleAnimArgs[0];
++task->data[0];
break;
@@ -965,7 +965,7 @@ void AnimTask_MoveSkyUppercutBg(u8 taskId)
{
gBattle_BG3_X = 0;
gBattle_BG3_Y = 0;
- sub_8075458(1);
+ ToggleBg3Mode(1);
DestroyAnimVisualTask(taskId);
}
}
diff --git a/src/fire.c b/src/fire.c
index 7833620d4..3a3e6be9b 100644
--- a/src/fire.c
+++ b/src/fire.c
@@ -1016,7 +1016,7 @@ static void AnimWillOWispOrb(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- sub_8075678(sprite);
+ BattleAnim_InitLinearTranslationWithDuration(sprite);
sprite->callback = sub_80AD690;
}
break;
@@ -1160,7 +1160,7 @@ void AnimTask_BlendBackground(u8 taskId)
{
struct BattleAnimBgData animBg;
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
BlendPalette(animBg.paletteId * 16, 16, gBattleAnimArgs[0], gBattleAnimArgs[1]);
DestroyAnimVisualTask(taskId);
}
diff --git a/src/ghost.c b/src/ghost.c
index 4aab8409f..0efcc28d4 100644
--- a/src/ghost.c
+++ b/src/ghost.c
@@ -226,7 +226,7 @@ static void AnimConfuseRayBallBounce(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- sub_8075678(sprite);
+ BattleAnim_InitLinearTranslationWithDuration(sprite);
sprite->callback = sub_80B52D0;
sprite->data[6] = 16;
SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
@@ -1314,18 +1314,18 @@ static void sub_80B6BE4(u8 taskId)
gBattle_BG2_Y = 0;
SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X);
SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y);
- sub_80752C8(&animBgData, 2);
+ GetBattleAnimBgData(&animBgData, 2);
AnimLoadCompressedBgGfx(animBgData.bgId, gBattleAnim_ScaryFaceGfx, animBgData.tilesOffset);
LoadCompressedPalette(gBattleAnim_ScaryFacePal, 16 * animBgData.paletteId, 0x20);
break;
case 3:
- sub_80752C8(&animBgData, 2);
- gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
- LZDecompressWram(gBattleAnimBgTilemap_ScaryFacePlayer, gMonSpritesGfxPtr->field_17C);
- sub_80730C0(animBgData.paletteId, gMonSpritesGfxPtr->field_17C, 256, 0);
- CopyToBgTilemapBufferRect_ChangePalette(animBgData.bgId, gMonSpritesGfxPtr->field_17C, 0, 0, 0x20, 0x20, 0x11);
+ GetBattleAnimBgData(&animBgData, 2);
+ gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000);
+ LZDecompressWram(gBattleAnimBgTilemap_ScaryFacePlayer, gMonSpritesGfxPtr->multiUseBuffer);
+ sub_80730C0(animBgData.paletteId, gMonSpritesGfxPtr->multiUseBuffer, 256, 0);
+ CopyToBgTilemapBufferRect_ChangePalette(animBgData.bgId, gMonSpritesGfxPtr->multiUseBuffer, 0, 0, 0x20, 0x20, 0x11);
CopyBgTilemapBufferToVram(2);
- FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C);
+ FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
break;
case 4:
++task->data[1];
@@ -1417,7 +1417,7 @@ static void sub_80B6FC4(u8 taskId)
SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
break;
case 3:
- sub_8075358(2);
+ InitBattleAnimBg(2);
FillPalette(0, 0x90, 0x20);
SetAnimBgAttribute(2, BG_ANIM_CHAR_BASE_BLOCK, 0);
task->data[1] = 12;
diff --git a/src/ice.c b/src/ice.c
index 6a77675e2..ed0c93430 100644
--- a/src/ice.c
+++ b/src/ice.c
@@ -941,7 +941,7 @@ void AnimTask_Haze1(u8 taskId)
gBattle_BG1_Y = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimFogTilemap);
LoadPalette(&gUnknown_83C2CE0, animBg.paletteId * 16, 32);
@@ -992,9 +992,9 @@ static void AnimTask_Haze2(u8 taskId)
}
break;
case 3:
- sub_80752A0(&animBg);
- sub_8075358(1);
- sub_8075358(2);
+ GetBattleAnimBg1Data(&animBg);
+ InitBattleAnimBg(1);
+ InitBattleAnimBg(2);
++gTasks[taskId].data[12];
// fall through
case 4:
@@ -1039,7 +1039,7 @@ void AnimTask_LoadMistTiles(u8 taskId)
gBattle_BG1_Y = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimFogTilemap);
LoadPalette(&gUnknown_83C2CE0, animBg.paletteId * 16, 32);
@@ -1087,9 +1087,9 @@ static void AnimTask_OverlayFogTiles(u8 taskId)
}
break;
case 3:
- sub_80752A0(&animBg);
- sub_8075358(1);
- sub_8075358(2);
+ GetBattleAnimBg1Data(&animBg);
+ InitBattleAnimBg(1);
+ InitBattleAnimBg(2);
++gTasks[taskId].data[12];
// fall through
case 4:
@@ -1230,7 +1230,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
sprite->data[2] = -0x10;
++sprite->data[7];
sprite->pos2.x = sprite->pos2.y = 0;
- sub_8075678(sprite);
+ BattleAnim_InitLinearTranslationWithDuration(sprite);
}
break;
case 2:
diff --git a/src/item_menu.c b/src/item_menu.c
index 676ce6759..3abecc1f5 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -2351,7 +2351,7 @@ static void Task_Bag_TeachyTvStatus(u8 taskId)
DestroyListMenuTask(data[0], NULL, NULL);
RestorePlayerBag();
gItemUseCB = ItemUseCB_MedicineStep;
- ItemMenu_SetExitCallback(ChooseMonForInBattleItem);
+ ItemMenu_SetExitCallback(Pokedude_ChooseMonForInBattleItem);
gTasks[taskId].func = Task_Pokedude_FadeFromBag;
return;
}
diff --git a/src/item_use.c b/src/item_use.c
index 9c434acdb..585d44273 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -793,12 +793,12 @@ static void ItemUse_SwitchToPartyMenuInBattle(u8 taskId)
{
if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH)
{
- BerryPouch_SetExitCallback(sub_81279E0);
+ BerryPouch_SetExitCallback(EnterPartyFromItemMenuInBattle);
BerryPouch_StartFadeToExitCallback(taskId);
}
else
{
- ItemMenu_SetExitCallback(sub_81279E0);
+ ItemMenu_SetExitCallback(EnterPartyFromItemMenuInBattle);
ItemMenu_StartFadeToExitCallback(taskId);
}
}
diff --git a/src/link.c b/src/link.c
index eac984b47..4a0f8561f 100644
--- a/src/link.c
+++ b/src/link.c
@@ -461,7 +461,7 @@ void LinkTestProcessKeyInput(void)
}
if (JOY_NEW(SELECT_BUTTON))
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
}
if (gLinkTestDebugValuesEnabled)
{
@@ -1322,7 +1322,7 @@ void Link_StartSend5FFFwithParam(u16 a0)
}
}
-void Link_TryStartSend5FFF(void)
+void SetCloseLinkCallback(void)
{
if (gWirelessCommType == 1)
{
@@ -1377,7 +1377,7 @@ static void LinkCB_WaitAckCommand5FFF(void)
}
}
-void PrepareSendLinkCmd2FFE_or_RfuCmd6600(void)
+void SetLinkStandbyCallback(void)
{
if (gWirelessCommType == 1)
{
diff --git a/src/load_save.c b/src/load_save.c
index f17d31f37..499c93916 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -70,7 +70,7 @@ void SetSaveBlocksPointers(void)
struct SaveBlock1** sav1_LocalVar = &gSaveBlock1Ptr;
void *oldSave = (void *)gSaveBlock1Ptr;
- offset = (Random()) & (SAVEBLOCK_MOVE_RANGE - 4);
+ offset = (Random()) & ((SAVEBLOCK_MOVE_RANGE - 1) & ~3);
gSaveBlock2Ptr = (void*)(&gSaveBlock2) + offset;
*sav1_LocalVar = (void*)(&gSaveBlock1) + offset;
diff --git a/src/main.c b/src/main.c
index 1573a2c5b..2f039c23b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -67,9 +67,15 @@ IntrFunc gIntrTable[INTR_COUNT];
bool8 gLinkVSyncDisabled;
u32 IntrMain_Buffer[0x200];
u8 gPcmDmaCounter;
-u8 gUnknown_3003578;
-u8 gUnknown_3003D80;
-u8 gUnknown_3003D84;
+
+// These variables are not defined in RS or Emerald, and are never read.
+// They were likely used to debug the audio engine and VCount interrupt.
+// Define NDEBUG in include/config.h to remove these variables.
+#ifndef NDEBUG
+u8 sVcountAfterSound;
+u8 sVcountAtIntr;
+u8 sVcountBeforeSound;
+#endif
static IntrFunc * const sTimerIntrFunc = gIntrTable + 0x7;
@@ -369,11 +375,15 @@ static void VBlankIntr(void)
gPcmDmaCounter = gSoundInfo.pcmDmaCounter;
- gUnknown_3003D84 = REG_VCOUNT;
+#ifndef NDEBUG
+ sVcountBeforeSound = REG_VCOUNT;
+#endif
m4aSoundMain();
- gUnknown_3003578 = REG_VCOUNT;
+#ifndef NDEBUG
+ sVcountAfterSound = REG_VCOUNT;
+#endif
- sub_800DD28();
+ TryReceiveLinkBattleData();
Random();
UpdateWirelessStatusIndicatorSprite();
@@ -398,7 +408,9 @@ static void HBlankIntr(void)
static void VCountIntr(void)
{
- gUnknown_3003D80 = REG_VCOUNT;
+#ifndef NDEBUG
+ sVcountAtIntr = REG_VCOUNT;
+#endif
m4aSoundVSync();
INTR_CHECK |= INTR_FLAG_VCOUNT;
gMain.intrCheck |= INTR_FLAG_VCOUNT;
diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c
index 1a36fd6f6..2c455b57a 100644
--- a/src/mystery_gift_menu.c
+++ b/src/mystery_gift_menu.c
@@ -375,7 +375,7 @@ bool32 HandleMysteryGiftOrEReaderSetup(s32 mg_or_ereader)
ScanlineEffect_Stop();
ResetBgsAndClearDma3BusyFlags(1);
- InitBgsFromTemplates(0, sBGTemplates, ARRAY_COUNT(sBGTemplates));
+ InitBgsFromTemplates(0, sBGTemplates, NELEMS(sBGTemplates));
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
ChangeBgX(1, 0, 0);
diff --git a/src/party_menu.c b/src/party_menu.c
index b01e62a03..1acbc04ea 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -353,23 +353,23 @@ static void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId);
static void Task_MultiPartnerPartySlideIn(u8 taskId);
static bool8 CB2_FadeFromPartyMenu(void);
static void Task_PartyMenuWaitForFade(u8 taskId);
-static void sub_8120C6C(u8 taskId);
-static void sub_8120CA8(u8 taskId);
-static void sub_8120CD8(u8 taskId);
-static void sub_8120D08(u8 taskId);
-static void sub_8120D40(u8 taskId);
-static void sub_8120D7C(u8 taskId);
-static void sub_8120DAC(u8 taskId);
-static void sub_8120DE0(u8 taskId);
-static void sub_8120E1C(u8 taskId);
-static void sub_8120E58(u8 taskId);
-static void sub_8120EE0(u8 taskId);
-static void sub_8120FF0(u8 taskId);
-static bool8 sub_8120F78(u8 taskId);
-static void sub_8120FB0(void);
-static void sub_8122084(u8 windowId, const u8 *str);
-static u8 sub_81220D4(void);
-static void sub_8122110(u8 windowId);
+static void Task_FirstBattleEnterParty_DarkenScreen(u8 taskId);
+static void Task_FirstBattleEnterParty_WaitDarken(u8 taskId);
+static void Task_FirstBattleEnterParty_CreatePrinter(u8 taskId);
+static void Task_FirstBattleEnterParty_RunPrinterMsg1(u8 taskId);
+static void Task_FirstBattleEnterParty_LightenFirstMonIcon(u8 taskId);
+static void Task_FirstBattleEnterParty_WaitLightenFirstMonIcon(u8 taskId);
+static void Task_FirstBattleEnterParty_StartPrintMsg2(u8 taskId);
+static void Task_FirstBattleEnterParty_RunPrinterMsg2(u8 taskId);
+static void Task_FirstBattleEnterParty_FadeNormal(u8 taskId);
+static void Task_FirstBattleEnterParty_WaitFadeNormal(u8 taskId);
+static void Task_PartyMenu_PokedudeStep(u8 taskId);
+static void Task_PartyMenuFromBag_PokedudeStep(u8 taskId);
+static bool8 PartyMenuPokedudeIsCancelled(u8 taskId);
+static void PartyMenuHandlePokedudeCancel(void);
+static void PartyMenu_Oak_PrintText(u8 windowId, const u8 *str);
+static u8 FirstBattleEnterParty_CreateWindowAndMsg1Printer(void);
+static void FirstBattleEnterParty_DestroyVoiceoverWindow(u8 windowId);
static void SetSwitchedPartyOrderQuestLogEvent(void);
static void SetUsedFieldMoveQuestLogEvent(struct Pokemon *mon, u8 fieldMove);
static void sub_8124DE0(void);
@@ -855,7 +855,7 @@ static bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot)
DisplayPartyPokemonDataToTeachMove(slot, item, 0);
break;
case 2: // Evolution stone
- if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, 3, item) != SPECIES_NONE)
+ if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, EVO_MODE_ITEM_CHECK, item) != SPECIES_NONE)
return FALSE;
DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_NO_USE);
break;
@@ -1955,76 +1955,78 @@ static bool8 CanLearnTutorMove(u16 species, u8 tutor)
}
}
-static void sub_8120C3C(u8 taskId)
+// Tutorial battle messages
+
+static void Task_FirstBattleEnterParty_WaitFadeIn(u8 taskId)
{
if (!gPaletteFade.active)
- gTasks[taskId].func = sub_8120C6C;
+ gTasks[taskId].func = Task_FirstBattleEnterParty_DarkenScreen;
}
-static void sub_8120C6C(u8 taskId)
+static void Task_FirstBattleEnterParty_DarkenScreen(u8 taskId)
{
BeginNormalPaletteFade(0xFFFF1FFF, 4, 0, 6, RGB_BLACK);
- gTasks[taskId].func = sub_8120CA8;
+ gTasks[taskId].func = Task_FirstBattleEnterParty_WaitDarken;
}
-static void sub_8120CA8(u8 taskId)
+static void Task_FirstBattleEnterParty_WaitDarken(u8 taskId)
{
if (!gPaletteFade.active)
- gTasks[taskId].func = sub_8120CD8;
+ gTasks[taskId].func = Task_FirstBattleEnterParty_CreatePrinter;
}
-static void sub_8120CD8(u8 taskId)
+static void Task_FirstBattleEnterParty_CreatePrinter(u8 taskId)
{
- gTasks[taskId].data[0] = sub_81220D4();
- gTasks[taskId].func = sub_8120D08;
+ gTasks[taskId].data[0] = FirstBattleEnterParty_CreateWindowAndMsg1Printer();
+ gTasks[taskId].func = Task_FirstBattleEnterParty_RunPrinterMsg1;
}
-static void sub_8120D08(u8 taskId)
+static void Task_FirstBattleEnterParty_RunPrinterMsg1(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (RunTextPrinters_CheckActive((u8)data[0]) != TRUE)
- gTasks[taskId].func = sub_8120D40;
+ gTasks[taskId].func = Task_FirstBattleEnterParty_LightenFirstMonIcon;
}
-static void sub_8120D40(u8 taskId)
+static void Task_FirstBattleEnterParty_LightenFirstMonIcon(u8 taskId)
{
BeginNormalPaletteFade(0xFFFF0008, 4, 6, 0, RGB_BLACK);
- gTasks[taskId].func = sub_8120D7C;
+ gTasks[taskId].func = Task_FirstBattleEnterParty_WaitLightenFirstMonIcon;
}
-static void sub_8120D7C(u8 taskId)
+static void Task_FirstBattleEnterParty_WaitLightenFirstMonIcon(u8 taskId)
{
if (!gPaletteFade.active)
- gTasks[taskId].func = sub_8120DAC;
+ gTasks[taskId].func = Task_FirstBattleEnterParty_StartPrintMsg2;
}
-static void sub_8120DAC(u8 taskId)
+static void Task_FirstBattleEnterParty_StartPrintMsg2(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_8122084(data[0], gUnknown_8417494);
- gTasks[taskId].func = sub_8120DE0;
+ PartyMenu_Oak_PrintText(data[0], gText_OakThisIsListOfPokemon);
+ gTasks[taskId].func = Task_FirstBattleEnterParty_RunPrinterMsg2;
}
-static void sub_8120DE0(u8 taskId)
+static void Task_FirstBattleEnterParty_RunPrinterMsg2(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (RunTextPrinters_CheckActive((u8)data[0]) != TRUE)
{
- sub_8122110((u8)data[0]);
- gTasks[taskId].func = sub_8120E1C;
+ FirstBattleEnterParty_DestroyVoiceoverWindow((u8)data[0]);
+ gTasks[taskId].func = Task_FirstBattleEnterParty_FadeNormal;
}
}
-static void sub_8120E1C(u8 taskId)
+static void Task_FirstBattleEnterParty_FadeNormal(u8 taskId)
{
BeginNormalPaletteFade(0x0000FFF7, 4, 6, 0, RGB_BLACK);
- gTasks[taskId].func = sub_8120E58;
+ gTasks[taskId].func = Task_FirstBattleEnterParty_WaitFadeNormal;
}
-static void sub_8120E58(u8 taskId)
+static void Task_FirstBattleEnterParty_WaitFadeNormal(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -2038,24 +2040,25 @@ static void sub_8120E58(u8 taskId)
}
}
-static void sub_8120EBC(u8 taskId)
+// Pokedude switches Pokemon
+static void Task_PartyMenu_Pokedude(u8 taskId)
{
s16 *data = gTasks[taskId].data;
data[0] = 0;
- gTasks[taskId].func = sub_8120EE0;
+ gTasks[taskId].func = Task_PartyMenu_PokedudeStep;
}
-static void sub_8120EE0(u8 taskId)
+static void Task_PartyMenu_PokedudeStep(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (!gPaletteFade.active && sub_8120F78(taskId) != TRUE)
+ if (!gPaletteFade.active && PartyMenuPokedudeIsCancelled(taskId) != TRUE)
{
switch (data[0])
{
case 80:
- UpdateCurrentPartySelection(&gPartyMenu.slotId, 2);
+ UpdateCurrentPartySelection(&gPartyMenu.slotId, MENU_DIR_RIGHT);
break;
case 160:
PlaySE(SE_SELECT);
@@ -2070,18 +2073,18 @@ static void sub_8120EE0(u8 taskId)
}
}
-static bool8 sub_8120F78(u8 taskId)
+static bool8 PartyMenuPokedudeIsCancelled(u8 taskId)
{
if (JOY_NEW(B_BUTTON))
{
- sPartyMenuInternal->exitCallback = sub_8120FB0;
+ sPartyMenuInternal->exitCallback = PartyMenuHandlePokedudeCancel;
Task_ClosePartyMenu(taskId);
return TRUE;
}
return FALSE;
}
-static void sub_8120FB0(void)
+static void PartyMenuHandlePokedudeCancel(void)
{
FreeRestoreBattleData();
LoadPlayerParty();
@@ -2089,19 +2092,20 @@ static void sub_8120FB0(void)
SetMainCallback2(CB2_ReturnToTeachyTV);
}
-static void sub_8120FCC(u8 taskId)
+// Pokedude uses item on his own Pokemon
+static void Task_PartyMenuFromBag_Pokedude(u8 taskId)
{
s16 *data = gTasks[taskId].data;
data[0] = 0;
- gTasks[taskId].func = sub_8120FF0;
+ gTasks[taskId].func = Task_PartyMenuFromBag_PokedudeStep;
}
-static void sub_8120FF0(u8 taskId)
+static void Task_PartyMenuFromBag_PokedudeStep(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (!gPaletteFade.active && sub_8120F78(taskId) != TRUE)
+ if (!gPaletteFade.active && PartyMenuPokedudeIsCancelled(taskId) != TRUE)
{
if (data[0] != 80)
{
@@ -2612,24 +2616,24 @@ static void RemoveLevelUpStatsWindow(void)
PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
}
-static void sub_8122084(u8 windowId, const u8 *str)
+static void PartyMenu_Oak_PrintText(u8 windowId, const u8 *str)
{
StringExpandPlaceholders(gStringVar4, str);
gTextFlags.canABSpeedUpPrint = TRUE;
- AddTextPrinterParameterized2(windowId, 4, gStringVar4, GetTextSpeedSetting(), 0, 2, 1, 3);
+ AddTextPrinterParameterized2(windowId, 4, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3);
}
-static bool8 sub_81220D4(void)
+static bool8 FirstBattleEnterParty_CreateWindowAndMsg1Printer(void)
{
- u8 windowId = AddWindow(&gUnknown_845A170);
+ u8 windowId = AddWindow(&sWindowTemplate_FirstBattleOakVoiceover);
TextWindow_LoadResourcesStdFrame0(windowId, 0x4F, 0xE0);
DrawDialogFrameWithCustomTileAndPalette(windowId, 1, 0x4F, 0xE);
- sub_8122084(windowId, gUnknown_8417457);
+ PartyMenu_Oak_PrintText(windowId, gText_OakImportantToGetToKnowPokemonThroughly);
return windowId;
}
-static void sub_8122110(u8 windowId)
+static void FirstBattleEnterParty_DestroyVoiceoverWindow(u8 windowId)
{
ClearWindowTilemap(windowId);
ClearDialogWindowAndFrameToTransparent(windowId, FALSE);
@@ -5193,7 +5197,7 @@ static void Task_TryLearningNextMove(u8 taskId)
static void PartyMenuTryEvolution(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
- u16 targetSpecies = GetEvolutionTargetSpecies(mon, 0, 0);
+ u16 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, 0);
if (targetSpecies != SPECIES_NONE)
{
@@ -5349,7 +5353,7 @@ static void sub_8126BD4(void)
static bool8 MonCanEvolve(void)
{
if (!IsNationalPokedexEnabled()
- && GetEvolutionTargetSpecies(&gPlayerParty[gPartyMenu.slotId], 2, gSpecialVar_ItemId) > KANTO_DEX_COUNT)
+ && GetEvolutionTargetSpecies(&gPlayerParty[gPartyMenu.slotId], EVO_MODE_ITEM_USE, gSpecialVar_ItemId) > KANTO_DEX_COUNT)
return FALSE;
else
return TRUE;
@@ -5858,16 +5862,16 @@ static u8 GetPartyLayoutFromBattleType(void)
void OpenPartyMenuInTutorialBattle(u8 partyAction)
{
- if (!sub_80EB2E0(8) && (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE))
+ if (!BtlCtrl_OakOldMan_TestState2Flag(FIRST_BATTLE_MSG_FLAG_PARTY_MENU) && (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE))
{
InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE,
GetPartyLayoutFromBattleType(),
partyAction,
FALSE,
PARTY_MSG_NONE,
- sub_8120C3C,
+ Task_FirstBattleEnterParty_WaitFadeIn,
SetCB2ToReshowScreenAfterMenu);
- sub_80EB2F4(8);
+ BtlCtrl_OakOldMan_SetState2Flag(FIRST_BATTLE_MSG_FLAG_PARTY_MENU);
}
else
{
@@ -5879,36 +5883,36 @@ void OpenPartyMenuInTutorialBattle(u8 partyAction)
Task_HandleChooseMonInput,
SetCB2ToReshowScreenAfterMenu);
}
- nullsub_44();
+ ReshowBattleScreenDummy();
UpdatePartyToBattleOrder();
}
-void OpenPartyMenuInBattle(void)
+void Pokedude_OpenPartyMenuInBattle(void)
{
- InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), PARTY_ACTION_CHOOSE_MON, FALSE, PARTY_MSG_CHOOSE_MON, sub_8120EBC, SetCB2ToReshowScreenAfterMenu);
- nullsub_44();
+ InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), PARTY_ACTION_CHOOSE_MON, FALSE, PARTY_MSG_CHOOSE_MON, Task_PartyMenu_Pokedude, SetCB2ToReshowScreenAfterMenu);
+ ReshowBattleScreenDummy();
UpdatePartyToBattleOrder();
}
-void ChooseMonForInBattleItem(void)
+void Pokedude_ChooseMonForInBattleItem(void)
{
- InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), PARTY_ACTION_REUSABLE_ITEM, FALSE, PARTY_MSG_USE_ON_WHICH_MON, sub_8120FCC, CB2_BagMenuFromBattle);
- nullsub_44();
+ InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE, GetPartyLayoutFromBattleType(), PARTY_ACTION_REUSABLE_ITEM, FALSE, PARTY_MSG_USE_ON_WHICH_MON, Task_PartyMenuFromBag_Pokedude, CB2_BagMenuFromBattle);
+ ReshowBattleScreenDummy();
UpdatePartyToBattleOrder();
}
-void sub_81279E0(void)
+void EnterPartyFromItemMenuInBattle(void)
{
- if (!sub_80EB2E0(8) && (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE))
+ if (!BtlCtrl_OakOldMan_TestState2Flag(FIRST_BATTLE_MSG_FLAG_PARTY_MENU) && (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE))
{
InitPartyMenu(PARTY_MENU_TYPE_IN_BATTLE,
GetPartyLayoutFromBattleType(),
PARTY_ACTION_USE_ITEM,
FALSE,
PARTY_MSG_NONE,
- sub_8120C3C,
+ Task_FirstBattleEnterParty_WaitFadeIn,
CB2_BagMenuFromBattle);
- sub_80EB2F4(8);
+ BtlCtrl_OakOldMan_SetState2Flag(FIRST_BATTLE_MSG_FLAG_PARTY_MENU);
}
else
{
@@ -5926,7 +5930,7 @@ void sub_81279E0(void)
Task_HandleChooseMonInput,
callback);
}
- nullsub_44();
+ ReshowBattleScreenDummy();
UpdatePartyToBattleOrder();
}
@@ -5973,7 +5977,7 @@ static bool8 TrySwitchInPokemon(void)
StringExpandPlaceholders(gStringVar4, gText_EggCantBattle);
return FALSE;
}
- if (GetPartyIdFromBattleSlot(slot) == gBattleStruct->field_8B)
+ if (GetPartyIdFromBattleSlot(slot) == gBattleStruct->playerPartyIdx)
{
GetMonNickname(&gPlayerParty[slot], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_PkmnAlreadySelected);
@@ -6061,7 +6065,7 @@ static void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId)
void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId)
{
- BufferBattlePartyOrderBySide(gBattleStruct->field_60[battlerId], flankId, battlerId);
+ BufferBattlePartyOrderBySide(gBattleStruct->battlerPartyOrders[battlerId], flankId, battlerId);
}
// when GetBattlerSide(battlerId) == B_SIDE_PLAYER, this function is identical the one above
@@ -6139,7 +6143,7 @@ void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2)
if (IsMultiBattle())
{
- partyBattleOrder = gBattleStruct->field_60[battlerId];
+ partyBattleOrder = gBattleStruct->battlerPartyOrders[battlerId];
for (i = j = 0; i < 3; ++j, ++i)
{
partyIds[j] = partyBattleOrder[i] >> 4;
diff --git a/src/pokeball.c b/src/pokeball.c
index 69bab3e90..ba44a2771 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -775,7 +775,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
species = GetMonData(mon, MON_DATA_SPECIES);
if ((battlerId == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battlerId == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
- && IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1)
+ && IsDoubleBattle() && gBattleSpritesDataPtr->animationData->healthboxSlideInStarted)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
@@ -788,7 +788,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
}
}
- if (!IsDoubleBattle() || !gBattleSpritesDataPtr->animationData->field_9_x1)
+ if (!IsDoubleBattle() || !gBattleSpritesDataPtr->animationData->healthboxSlideInStarted)
wantedCryCase = 0;
else if (battlerId == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battlerId == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
wantedCryCase = 1;
@@ -949,7 +949,7 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite)
sprite->sBattler = sprite->oam.affineParam & 0xFF;
sprite->data[0] = 0;
- if (IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1
+ if (IsDoubleBattle() && gBattleSpritesDataPtr->animationData->healthboxSlideInStarted
&& sprite->sBattler == GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT))
sprite->callback = SpriteCB_ReleaseMon2FromBall;
else
@@ -975,7 +975,7 @@ static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite)
if (sprite->data[0] > 15)
{
sprite->data[0] = 0;
- if (IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1
+ if (IsDoubleBattle() && gBattleSpritesDataPtr->animationData->healthboxSlideInStarted
&& sprite->sBattler == GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT))
sprite->callback = SpriteCB_ReleaseMon2FromBall;
else
@@ -1167,7 +1167,7 @@ void DestroySpriteAndFreeResources2(struct Sprite *sprite)
DestroySpriteAndFreeResources(sprite);
}
-void sub_804BD94(u8 battlerId)
+void StartHealthboxSlideIn(u8 battlerId)
{
struct Sprite *healthboxSprite = &gSprites[gHealthboxSpriteIds[battlerId]];
diff --git a/src/pokemon.c b/src/pokemon.c
index b523c4cb9..f8c03ea02 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -30,6 +30,7 @@
#include "constants/abilities.h"
#include "constants/moves.h"
#include "constants/songs.h"
+#include "constants/item_effects.h"
#include "constants/trainer_classes.h"
#include "constants/facility_trainer_classes.h"
#include "constants/hold_effects.h"
@@ -72,7 +73,7 @@ static u16 GetDeoxysStat(struct Pokemon *mon, s32 statId);
static bool8 IsShinyOtIdPersonality(u32 otId, u32 personality);
static u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex);
static u8 GetNatureFromPersonality(u32 personality);
-static bool8 sub_8042BE8(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId);
+static bool8 PartyMonHasStatus(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId);
static bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId);
static bool8 IsPokemonStorageFull(void);
static u8 SendMonToPC(struct Pokemon* mon);
@@ -1472,101 +1473,101 @@ static const u8 sHoldEffectToType[][2] =
{HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL},
};
-const struct SpriteTemplate gUnknown_825DEF0[] =
+const struct SpriteTemplate gSpriteTemplates_Battlers[] =
{
- {
+ [B_POSITION_PLAYER_LEFT] = {
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
- .oam = &gOamData_824F018,
+ .oam = &gOamData_BattlerPlayer,
.anims = NULL,
- .images = gUnknown_8234698,
- .affineAnims = gSpriteAffineAnimTable_82348C8,
- .callback = sub_80120C4,
+ .images = gSpriteImages_BattlerPlayerLeft,
+ .affineAnims = gSpriteAffineAnimTable_BattlerPlayer,
+ .callback = SpriteCB_AllyMon,
},
- {
+ [B_POSITION_OPPONENT_LEFT] = {
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
- .oam = &gOamData_824F010,
+ .oam = &gOamData_BattlerOpponent,
.anims = NULL,
- .images = gUnknown_82346B8,
- .affineAnims = gSpriteAffineAnimTable_8234944,
- .callback = SpriteCB_WildMon,
+ .images = gSpriteImages_BattlerOpponentLeft,
+ .affineAnims = gSpriteAffineAnimTable_BattlerOpponent,
+ .callback = SpriteCB_EnemyMon,
},
- {
+ [B_POSITION_PLAYER_RIGHT] = {
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
- .oam = &gOamData_824F018,
+ .oam = &gOamData_BattlerPlayer,
.anims = NULL,
- .images = gUnknown_82346D8,
- .affineAnims = gSpriteAffineAnimTable_82348C8,
- .callback = sub_80120C4,
+ .images = gSpriteImages_BattlerPlayerRight,
+ .affineAnims = gSpriteAffineAnimTable_BattlerPlayer,
+ .callback = SpriteCB_AllyMon,
},
- {
+ [B_POSITION_OPPONENT_RIGHT] = {
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
- .oam = &gOamData_824F010,
+ .oam = &gOamData_BattlerOpponent,
.anims = NULL,
- .images = gUnknown_82346F8,
- .affineAnims = gSpriteAffineAnimTable_8234944,
- .callback = SpriteCB_WildMon,
+ .images = gSpriteImages_BattlerOpponentRight,
+ .affineAnims = gSpriteAffineAnimTable_BattlerOpponent,
+ .callback = SpriteCB_EnemyMon,
},
};
-const struct SpriteTemplate gUnknown_825DF50[] =
+const struct SpriteTemplate gSpriteTemplates_TrainerBackpics[] =
{
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
- .oam = &gOamData_824F018,
+ .oam = &gOamData_BattlerPlayer,
.anims = NULL,
.images = gTrainerBackPicTable_Red,
- .affineAnims = gSpriteAffineAnimTable_82348C8,
- .callback = sub_80120C4,
+ .affineAnims = gSpriteAffineAnimTable_BattlerPlayer,
+ .callback = SpriteCB_AllyMon,
},
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
- .oam = &gOamData_824F018,
+ .oam = &gOamData_BattlerPlayer,
.anims = NULL,
.images = gTrainerBackPicTable_Leaf,
- .affineAnims = gSpriteAffineAnimTable_82348C8,
- .callback = sub_80120C4,
+ .affineAnims = gSpriteAffineAnimTable_BattlerPlayer,
+ .callback = SpriteCB_AllyMon,
},
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
- .oam = &gOamData_824F018,
+ .oam = &gOamData_BattlerPlayer,
.anims = NULL,
.images = gTrainerBackPicTable_RSBrendan,
- .affineAnims = gSpriteAffineAnimTable_82348C8,
- .callback = sub_80120C4,
+ .affineAnims = gSpriteAffineAnimTable_BattlerPlayer,
+ .callback = SpriteCB_AllyMon,
},
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
- .oam = &gOamData_824F018,
+ .oam = &gOamData_BattlerPlayer,
.anims = NULL,
.images = gTrainerBackPicTable_RSMay,
- .affineAnims = gSpriteAffineAnimTable_82348C8,
- .callback = sub_80120C4,
+ .affineAnims = gSpriteAffineAnimTable_BattlerPlayer,
+ .callback = SpriteCB_AllyMon,
},
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
- .oam = &gOamData_824F018,
+ .oam = &gOamData_BattlerPlayer,
.anims = NULL,
.images = gTrainerBackPicTable_Pokedude,
- .affineAnims = gSpriteAffineAnimTable_82348C8,
- .callback = sub_80120C4,
+ .affineAnims = gSpriteAffineAnimTable_BattlerPlayer,
+ .callback = SpriteCB_AllyMon,
},
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
- .oam = &gOamData_824F018,
+ .oam = &gOamData_BattlerPlayer,
.anims = NULL,
.images = gTrainerBackPicTable_OldMan,
- .affineAnims = gSpriteAffineAnimTable_82348C8,
- .callback = sub_80120C4,
+ .affineAnims = gSpriteAffineAnimTable_BattlerPlayer,
+ .callback = SpriteCB_AllyMon,
},
};
@@ -1586,7 +1587,7 @@ static const u8 sGetMonDataEVConstants[] =
MON_DATA_SPATK_EV
};
-static const u8 gUnknown_825DFF0[] =
+static const u8 sStatsToRaise[] =
{
STAT_ATK, STAT_ATK, STAT_SPEED, STAT_DEF, STAT_SPATK, STAT_ACC
};
@@ -1986,7 +1987,7 @@ static void CreateEventLegalMon(struct Pokemon *mon, u16 species, u8 level, u8 f
SetMonData(mon, MON_DATA_EVENT_LEGAL, &isEventLegal);
}
-void sub_803E23C(struct Pokemon *mon, struct BattleTowerPokemon *dest)
+void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerPokemon *dest)
{
s32 i;
u16 heldItem;
@@ -2716,7 +2717,7 @@ void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition)
if (battlerPosition >= 4)
battlerPosition = 0;
- gMultiuseSpriteTemplate = gUnknown_825DEF0[battlerPosition];
+ gMultiuseSpriteTemplate = gSpriteTemplates_Battlers[battlerPosition];
}
}
gMultiuseSpriteTemplate.paletteTag = speciesTag;
@@ -2728,7 +2729,7 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosit
gMultiuseSpriteTemplate.paletteTag = trainerSpriteId;
if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
{
- gMultiuseSpriteTemplate = gUnknown_825DF50[trainerSpriteId];
+ gMultiuseSpriteTemplate = gSpriteTemplates_TrainerBackpics[trainerSpriteId];
gMultiuseSpriteTemplate.anims = gTrainerBackAnimsPtrTable[trainerSpriteId];
}
else
@@ -2736,7 +2737,7 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosit
if (gMonSpritesGfxPtr != NULL)
gMultiuseSpriteTemplate = gMonSpritesGfxPtr->templates[battlerPosition];
else
- gMultiuseSpriteTemplate = gUnknown_825DEF0[battlerPosition];
+ gMultiuseSpriteTemplate = gSpriteTemplates_Battlers[battlerPosition];
gMultiuseSpriteTemplate.anims = gTrainerFrontAnimsPtrTable[trainerSpriteId];
}
}
@@ -3895,7 +3896,7 @@ static void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex)
gBattleMons[battlerId].statStages[i] = 6;
gBattleMons[battlerId].status2 = 0;
- sub_80174B8(battlerId);
+ UpdateSentPokesToOpponentValue(battlerId);
ClearTemporarySpeciesSpriteData(battlerId, FALSE);
}
@@ -3911,14 +3912,14 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
s32 cmdIndex;
bool8 retVal = TRUE;
const u8 *itemEffect;
- u8 sp24 = 6;
- u32 sp28;
- s8 sp2C = 0;
+ u8 idx = 6;
+ u32 i;
+ s8 friendshipDelta = 0;
u8 holdEffect;
- u8 sp34 = 4;
+ u8 battleMonId = 4;
u16 heldItem;
- u8 r10;
- u32 r4;
+ u8 val;
+ u32 evDelta;
heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, NULL);
if (heldItem == ITEM_ENIGMA_BERRY)
@@ -3942,7 +3943,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
{
if (gBattlerPartyIndexes[cmdIndex] == partyIndex)
{
- sp34 = cmdIndex;
+ battleMonId = cmdIndex;
break;
}
cmdIndex += 2;
@@ -3951,12 +3952,12 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
else
{
gActiveBattler = 0;
- sp34 = 4;
+ battleMonId = 4;
}
if (!IS_POKEMON_ITEM(item))
return TRUE;
- if (gItemEffectTable[item - 13] == NULL && item != ITEM_ENIGMA_BERRY)
+ if (gItemEffectTable[item - ITEM_POTION] == NULL && item != ITEM_ENIGMA_BERRY)
return TRUE;
if (item == ITEM_ENIGMA_BERRY)
@@ -3968,7 +3969,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
}
else
{
- itemEffect = gItemEffectTable[item - 13];
+ itemEffect = gItemEffectTable[item - ITEM_POTION];
}
for (cmdIndex = 0; cmdIndex < 6; cmdIndex++)
@@ -3977,22 +3978,22 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
{
// status healing effects
case 0:
- if ((itemEffect[cmdIndex] & 0x80)
- && gMain.inBattle && sp34 != 4 && (gBattleMons[sp34].status2 & STATUS2_INFATUATION))
+ if ((itemEffect[cmdIndex] & ITEM0_INFATUATION)
+ && gMain.inBattle && battleMonId != 4 && (gBattleMons[battleMonId].status2 & STATUS2_INFATUATION))
{
- gBattleMons[sp34].status2 &= ~STATUS2_INFATUATION;
+ gBattleMons[battleMonId].status2 &= ~STATUS2_INFATUATION;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x30)
+ if ((itemEffect[cmdIndex] & ITEM0_HIGH_CRIT)
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY))
{
gBattleMons[gActiveBattler].status2 |= STATUS2_FOCUS_ENERGY;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM0_X_ATTACK)
&& gBattleMons[gActiveBattler].statStages[STAT_ATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_ATK] += itemEffect[cmdIndex] & 0xF;
+ gBattleMons[gActiveBattler].statStages[STAT_ATK] += itemEffect[cmdIndex] & ITEM0_X_ATTACK;
if (gBattleMons[gActiveBattler].statStages[STAT_ATK] > 12)
gBattleMons[gActiveBattler].statStages[STAT_ATK] = 12;
retVal = FALSE;
@@ -4000,18 +4001,18 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
break;
// in-battle stat boosting effects?
case 1:
- if ((itemEffect[cmdIndex] & 0xF0)
+ if ((itemEffect[cmdIndex] & ITEM1_X_DEFEND)
&& gBattleMons[gActiveBattler].statStages[STAT_DEF] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ gBattleMons[gActiveBattler].statStages[STAT_DEF] += (itemEffect[cmdIndex] & ITEM1_X_DEFEND) >> 4;
if (gBattleMons[gActiveBattler].statStages[STAT_DEF] > 12)
gBattleMons[gActiveBattler].statStages[STAT_DEF] = 12;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM1_X_SPEED)
&& gBattleMons[gActiveBattler].statStages[STAT_SPEED] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_SPEED] += itemEffect[cmdIndex] & 0xF;
+ gBattleMons[gActiveBattler].statStages[STAT_SPEED] += itemEffect[cmdIndex] & ITEM1_X_SPEED;
if (gBattleMons[gActiveBattler].statStages[STAT_SPEED] > 12)
gBattleMons[gActiveBattler].statStages[STAT_SPEED] = 12;
retVal = FALSE;
@@ -4019,31 +4020,31 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
break;
// more stat boosting effects?
case 2:
- if ((itemEffect[cmdIndex] & 0xF0)
+ if ((itemEffect[cmdIndex] & ITEM2_X_ACCURACY)
&& gBattleMons[gActiveBattler].statStages[STAT_ACC] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ gBattleMons[gActiveBattler].statStages[STAT_ACC] += (itemEffect[cmdIndex] & ITEM2_X_ACCURACY) >> 4;
if (gBattleMons[gActiveBattler].statStages[STAT_ACC] > 12)
gBattleMons[gActiveBattler].statStages[STAT_ACC] = 12;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM2_X_SPATK)
&& gBattleMons[gActiveBattler].statStages[STAT_SPATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_SPATK] += itemEffect[cmdIndex] & 0xF;
+ gBattleMons[gActiveBattler].statStages[STAT_SPATK] += itemEffect[cmdIndex] & ITEM2_X_SPATK;
if (gBattleMons[gActiveBattler].statStages[STAT_SPATK] > 12)
gBattleMons[gActiveBattler].statStages[STAT_SPATK] = 12;
retVal = FALSE;
}
break;
case 3:
- if ((itemEffect[cmdIndex] & 0x80)
+ if ((itemEffect[cmdIndex] & ITEM3_MIST)
&& gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer == 0)
{
gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer = 5;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x40) // raise level
+ if ((itemEffect[cmdIndex] & ITEM3_LEVEL_UP) // raise level
&& GetMonData(mon, MON_DATA_LEVEL, NULL) != 100)
{
data = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1];
@@ -4051,93 +4052,93 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
CalculateMonStats(mon);
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x20)
- && HealStatusConditions(mon, partyIndex, 7, sp34) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_SLEEP)
+ && HealStatusConditions(mon, partyIndex, STATUS1_SLEEP, battleMonId) == 0)
{
- if (sp34 != 4)
- gBattleMons[sp34].status2 &= ~STATUS2_NIGHTMARE;
+ if (battleMonId != 4)
+ gBattleMons[battleMonId].status2 &= ~STATUS2_NIGHTMARE;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x10) && HealStatusConditions(mon, partyIndex, 0xF88, sp34) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_POISON) && HealStatusConditions(mon, partyIndex, STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER, battleMonId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 8) && HealStatusConditions(mon, partyIndex, 16, sp34) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_BURN) && HealStatusConditions(mon, partyIndex, STATUS1_BURN, battleMonId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 4) && HealStatusConditions(mon, partyIndex, 32, sp34) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_FREEZE) && HealStatusConditions(mon, partyIndex, STATUS1_FREEZE, battleMonId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 2) && HealStatusConditions(mon, partyIndex, 64, sp34) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_PARALYSIS) && HealStatusConditions(mon, partyIndex, STATUS1_PARALYSIS, battleMonId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 1) // heal confusion
- && gMain.inBattle && sp34 != 4 && (gBattleMons[sp34].status2 & STATUS2_CONFUSION))
+ if ((itemEffect[cmdIndex] & ITEM3_CONFUSION) // heal confusion
+ && gMain.inBattle && battleMonId != 4 && (gBattleMons[battleMonId].status2 & STATUS2_CONFUSION))
{
- gBattleMons[sp34].status2 &= ~STATUS2_CONFUSION;
+ gBattleMons[battleMonId].status2 &= ~STATUS2_CONFUSION;
retVal = FALSE;
}
break;
// EV, HP, and PP raising effects
case 4:
- r10 = itemEffect[cmdIndex];
- if (r10 & 0x20)
+ val = itemEffect[cmdIndex];
+ if (val & ITEM4_PP_UP)
{
- r10 &= ~0x20;
+ val &= ~ITEM4_PP_UP;
data = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
- sp28 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
- if (data < 3 && sp28 > 4)
+ i = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
+ if (data < 3 && i > 4)
{
data = GetMonData(mon, MON_DATA_PP_BONUSES, NULL) + gPPUpAddMask[moveIndex];
SetMonData(mon, MON_DATA_PP_BONUSES, &data);
- data = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - sp28;
+ data = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - i;
data = GetMonData(mon, MON_DATA_PP1 + moveIndex, NULL) + data;
SetMonData(mon, MON_DATA_PP1 + moveIndex, &data);
retVal = FALSE;
}
}
- sp28 = 0;
- while (r10 != 0)
+ i = 0;
+ while (val != 0)
{
- if (r10 & 1)
+ if (val & 1)
{
u16 evCount;
s32 r5;
- switch (sp28)
+ switch (i)
{
- case 0:
- case 1:
+ case 0: // EV_HP
+ case 1: // EV_ATK
evCount = GetMonEVCount(mon);
if (evCount >= 510)
return TRUE;
- data = GetMonData(mon, sGetMonDataEVConstants[sp28], NULL);
+ data = GetMonData(mon, sGetMonDataEVConstants[i], NULL);
if (data < 100)
{
- if (data + itemEffect[sp24] > 100)
- r4 = 100 - (data + itemEffect[sp24]) + itemEffect[sp24];
+ if (data + itemEffect[idx] > 100)
+ evDelta = 100 - (data + itemEffect[idx]) + itemEffect[idx];
else
- r4 = itemEffect[sp24];
- if (evCount + r4 > 510)
- r4 += 510 - (evCount + r4);
- data += r4;
- SetMonData(mon, sGetMonDataEVConstants[sp28], &data);
+ evDelta = itemEffect[idx];
+ if (evCount + evDelta > 510)
+ evDelta += 510 - (evCount + evDelta);
+ data += evDelta;
+ SetMonData(mon, sGetMonDataEVConstants[i], &data);
CalculateMonStats(mon);
- sp24++;
+ idx++;
retVal = FALSE;
}
break;
- case 2:
+ case 2: // HEAL_HP
// revive?
- if (r10 & 0x10)
+ if (val & (ITEM4_REVIVE >> 2))
{
if (GetMonData(mon, MON_DATA_HP, NULL) != 0)
{
- sp24++;
+ idx++;
break;
}
if (gMain.inBattle)
{
- if (sp34 != 4)
+ if (battleMonId != 4)
{
- gAbsentBattlerFlags &= ~gBitTable[sp34];
- CopyPlayerPartyMonToBattleData(sp34, GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[sp34]));
+ gAbsentBattlerFlags &= ~gBitTable[battleMonId];
+ CopyPlayerPartyMonToBattleData(battleMonId, GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battleMonId]));
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255)
gBattleResults.numRevivesUsed++;
}
@@ -4153,11 +4154,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
{
if (GetMonData(mon, MON_DATA_HP, NULL) == 0)
{
- sp24++;
+ idx++;
break;
}
}
- data = itemEffect[sp24++];
+ data = itemEffect[idx++];
switch (data)
{
case 0xFF:
@@ -4180,16 +4181,16 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
if (data > GetMonData(mon, MON_DATA_MAX_HP, NULL))
data = GetMonData(mon, MON_DATA_MAX_HP, NULL);
SetMonData(mon, MON_DATA_HP, &data);
- if (gMain.inBattle && sp34 != 4)
+ if (gMain.inBattle && battleMonId != 4)
{
- gBattleMons[sp34].hp = data;
- if (!(r10 & 0x10) && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
+ gBattleMons[battleMonId].hp = data;
+ if (!(val & (ITEM4_REVIVE >> 2)) && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
if (gBattleResults.numHealingItemsUsed < 255)
gBattleResults.numHealingItemsUsed++;
// I have to re-use this variable to match.
r5 = gActiveBattler;
- gActiveBattler = sp34;
+ gActiveBattler = battleMonId;
BtlController_EmitGetMonData(0, 0, 0);
MarkBattlerForControllerExec(gActiveBattler);
gActiveBattler = r5;
@@ -4202,63 +4203,63 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
}
retVal = FALSE;
}
- r10 &= 0xEF;
+ val &= ~(ITEM4_REVIVE >> 2);
break;
- case 3:
- if (!(r10 & 2))
+ case 3: // HEAL_PP_ALL
+ if (!(val & (ITEM4_HEAL_PP_ONE >> 3)))
{
for (r5 = 0; r5 < 4; r5++)
{
- u16 r4;
+ u16 move_id;
data = GetMonData(mon, MON_DATA_PP1 + r5, NULL);
- r4 = GetMonData(mon, MON_DATA_MOVE1 + r5, NULL);
- if (data != CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), r5))
+ move_id = GetMonData(mon, MON_DATA_MOVE1 + r5, NULL);
+ if (data != CalculatePPWithBonus(move_id, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), r5))
{
- data += itemEffect[sp24];
- r4 = GetMonData(mon, MON_DATA_MOVE1 + r5, NULL);
- if (data > CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), r5))
+ data += itemEffect[idx];
+ move_id = GetMonData(mon, MON_DATA_MOVE1 + r5, NULL);
+ if (data > CalculatePPWithBonus(move_id, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), r5))
{
- r4 = GetMonData(mon, MON_DATA_MOVE1 + r5, NULL);
- data = CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), r5);
+ move_id = GetMonData(mon, MON_DATA_MOVE1 + r5, NULL);
+ data = CalculatePPWithBonus(move_id, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), r5);
}
SetMonData(mon, MON_DATA_PP1 + r5, &data);
if (gMain.inBattle
- && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000)
- && !(gDisableStructs[sp34].mimickedMoves & gBitTable[r5]))
- gBattleMons[sp34].pp[r5] = data;
+ && battleMonId != 4 && !(gBattleMons[battleMonId].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[battleMonId].mimickedMoves & gBitTable[r5]))
+ gBattleMons[battleMonId].pp[r5] = data;
retVal = FALSE;
}
}
- sp24++;
+ idx++;
}
else
{
- u16 r4;
+ u16 move_id;
data = GetMonData(mon, MON_DATA_PP1 + moveIndex, NULL);
- r4 = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL);
- if (data != CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex))
+ move_id = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL);
+ if (data != CalculatePPWithBonus(move_id, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex))
{
- data += itemEffect[sp24++];
- r4 = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL);
- if (data > CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex))
+ data += itemEffect[idx++];
+ move_id = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL);
+ if (data > CalculatePPWithBonus(move_id, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex))
{
- r4 = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL);
- data = CalculatePPWithBonus(r4, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
+ move_id = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL);
+ data = CalculatePPWithBonus(move_id, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
}
SetMonData(mon, MON_DATA_PP1 + moveIndex, &data);
if (gMain.inBattle
- && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000)
- && !(gDisableStructs[sp34].mimickedMoves & gBitTable[moveIndex]))
- gBattleMons[sp34].pp[moveIndex] = data;
+ && battleMonId != 4 && !(gBattleMons[battleMonId].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[battleMonId].mimickedMoves & gBitTable[moveIndex]))
+ gBattleMons[battleMonId].pp[moveIndex] = data;
retVal = FALSE;
}
}
break;
- case 7:
+ case 7: // EVO_STONE
{
- u16 targetSpecies = GetEvolutionTargetSpecies(mon, 2, item);
+ u16 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_ITEM_USE, item);
if (targetSpecies != SPECIES_NONE)
{
@@ -4269,70 +4270,70 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
break;
}
}
- sp28++;
- r10 >>= 1;
+ i++;
+ val >>= 1;
}
break;
case 5:
- r10 = itemEffect[cmdIndex];
- sp28 = 0;
- while (r10 != 0)
+ val = itemEffect[cmdIndex];
+ i = 0;
+ while (val != 0)
{
- if (r10 & 1)
+ if (val & 1)
{
u16 evCount;
- switch (sp28)
+ switch (i)
{
- case 0:
- case 1:
- case 2:
- case 3:
+ case 0: // EV_DEF
+ case 1: // EV_SPEED
+ case 2: // EV_SPDEF
+ case 3: // EV_SPATK
evCount = GetMonEVCount(mon);
if (evCount >= 510)
return TRUE;
- data = GetMonData(mon, sGetMonDataEVConstants[sp28 + 2], NULL);
+ data = GetMonData(mon, sGetMonDataEVConstants[i + 2], NULL);
if (data < 100)
{
- if (data + itemEffect[sp24] > 100)
- r4 = 100 - (data + itemEffect[sp24]) + itemEffect[sp24];
+ if (data + itemEffect[idx] > 100)
+ evDelta = 100 - (data + itemEffect[idx]) + itemEffect[idx];
else
- r4 = itemEffect[sp24];
- if (evCount + r4 > 510)
- r4 += 510 - (evCount + r4);
- data += r4;
- SetMonData(mon, sGetMonDataEVConstants[sp28 + 2], &data);
+ evDelta = itemEffect[idx];
+ if (evCount + evDelta > 510)
+ evDelta += 510 - (evCount + evDelta);
+ data += evDelta;
+ SetMonData(mon, sGetMonDataEVConstants[i + 2], &data);
CalculateMonStats(mon);
retVal = FALSE;
- sp24++;
+ idx++;
}
break;
- case 4:
+ case 4: // PP_MAX
data = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
if (data < 3)
{
- r4 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
+ evDelta = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
data = GetMonData(mon, MON_DATA_PP_BONUSES, NULL);
data &= gPPUpSetMask[moveIndex];
data += gPPUpAddMask[moveIndex] * 3;
SetMonData(mon, MON_DATA_PP_BONUSES, &data);
- data = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - r4;
+ data = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - evDelta;
data = GetMonData(mon, MON_DATA_PP1 + moveIndex, NULL) + data;
SetMonData(mon, MON_DATA_PP1 + moveIndex, &data);
retVal = FALSE;
}
break;
- case 5:
- if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 100 && retVal == 0 && sp2C == 0)
+ case 5: // FRIENDSHIP_LOW
+ if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 100 && retVal == 0 && friendshipDelta == 0)
{
- sp2C = itemEffect[sp24];
+ friendshipDelta = itemEffect[idx];
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL);
- if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
- friendship += 150 * sp2C / 100;
+ if (friendshipDelta > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
+ friendship += 150 * friendshipDelta / 100;
else
- friendship += sp2C;
- if (sp2C > 0)
+ friendship += friendshipDelta;
+ if (friendshipDelta > 0)
{
if (GetMonData(mon, MON_DATA_POKEBALL, NULL) == 11)
friendship++;
@@ -4345,19 +4346,19 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
friendship = 255;
SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship);
}
- sp24++;
+ idx++;
break;
- case 6:
+ case 6: // FRIENDSHIP_MID
if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 100 && GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 200
- && retVal == 0 && sp2C == 0)
+ && retVal == 0 && friendshipDelta == 0)
{
- sp2C = itemEffect[sp24];
+ friendshipDelta = itemEffect[idx];
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL);
- if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
- friendship += 150 * sp2C / 100;
+ if (friendshipDelta > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
+ friendship += 150 * friendshipDelta / 100;
else
- friendship += sp2C;
- if (sp2C > 0)
+ friendship += friendshipDelta;
+ if (friendshipDelta > 0)
{
if (GetMonData(mon, MON_DATA_POKEBALL, NULL) == 11)
friendship++;
@@ -4370,18 +4371,18 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
friendship = 255;
SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship);
}
- sp24++;
+ idx++;
break;
- case 7:
- if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 200 && retVal == 0 && sp2C == 0)
+ case 7: // FRIENDSHIP_HIGH
+ if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 200 && retVal == 0 && friendshipDelta == 0)
{
- sp2C = itemEffect[sp24];
+ friendshipDelta = itemEffect[idx];
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL);
- if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
- friendship += 150 * sp2C / 100;
+ if (friendshipDelta > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
+ friendship += 150 * friendshipDelta / 100;
else
- friendship += sp2C;
- if (sp2C > 0)
+ friendship += friendshipDelta;
+ if (friendshipDelta > 0)
{
if (GetMonData(mon, MON_DATA_POKEBALL, NULL) == 11)
friendship++;
@@ -4394,12 +4395,12 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
friendship = 255;
SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship);
}
- sp24++;
+ idx++;
break;
}
}
- sp28++;
- r10 >>= 1;
+ i++;
+ val >>= 1;
}
break;
}
@@ -4432,7 +4433,7 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
s32 cmdIndex;
bool8 retVal = TRUE;
const u8 *itemEffect;
- u8 r10 = 6;
+ u8 idx = 6;
u32 i;
s32 sp18 = 0;
u8 holdEffect;
@@ -4476,7 +4477,7 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
}
if (!IS_POKEMON_ITEM(item))
return TRUE;
- if (gItemEffectTable[item - 13] == NULL && item != ITEM_ENIGMA_BERRY)
+ if (gItemEffectTable[item - ITEM_POTION] == NULL && item != ITEM_ENIGMA_BERRY)
return TRUE;
if (item == ITEM_ENIGMA_BERRY)
{
@@ -4495,64 +4496,64 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
{
// status healing effects
case 0:
- if (itemEffect[cmdIndex] & 0x80
+ if (itemEffect[cmdIndex] & ITEM0_INFATUATION
&& gMain.inBattle
&& battlerId != 4
&& gBattleMons[battlerId].status2 & STATUS2_INFATUATION)
retVal = FALSE;
- if (itemEffect[cmdIndex] & 0x30
+ if (itemEffect[cmdIndex] & ITEM0_HIGH_CRIT
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY))
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM0_X_ATTACK)
&& gBattleMons[gActiveBattler].statStages[STAT_ATK] < 12)
retVal = FALSE;
break;
// in-battle stat boosting effects?
case 1:
- if ((itemEffect[cmdIndex] & 0xF0)
+ if ((itemEffect[cmdIndex] & ITEM1_X_DEFEND)
&& gBattleMons[gActiveBattler].statStages[STAT_DEF] < 12)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM1_X_SPEED)
&& gBattleMons[gActiveBattler].statStages[STAT_SPEED] < 12)
retVal = FALSE;
break;
// more stat boosting effects?
case 2:
- if ((itemEffect[cmdIndex] & 0xF0)
+ if ((itemEffect[cmdIndex] & ITEM2_X_ACCURACY)
&& gBattleMons[gActiveBattler].statStages[STAT_ACC] < 12)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM2_X_SPATK)
&& gBattleMons[gActiveBattler].statStages[STAT_SPATK] < 12)
retVal = FALSE;
break;
case 3:
- if ((itemEffect[cmdIndex] & 0x80)
+ if ((itemEffect[cmdIndex] & ITEM3_MIST)
&& gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 0x40) // raise level
+ if ((itemEffect[cmdIndex] & ITEM3_LEVEL_UP) // raise level
&& GetMonData(mon, MON_DATA_LEVEL, NULL) != 100)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 0x20)
- && sub_8042BE8(mon, partyIndex, 7, battlerId))
+ if ((itemEffect[cmdIndex] & ITEM3_SLEEP)
+ && PartyMonHasStatus(mon, partyIndex, STATUS1_SLEEP, battlerId))
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 0x10) && sub_8042BE8(mon, partyIndex, 0xF88, battlerId))
+ if ((itemEffect[cmdIndex] & ITEM3_POISON) && PartyMonHasStatus(mon, partyIndex, STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER, battlerId))
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 8) && sub_8042BE8(mon, partyIndex, 16, battlerId))
+ if ((itemEffect[cmdIndex] & ITEM3_BURN) && PartyMonHasStatus(mon, partyIndex, STATUS1_BURN, battlerId))
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 4) && sub_8042BE8(mon, partyIndex, 32, battlerId))
+ if ((itemEffect[cmdIndex] & ITEM3_FREEZE) && PartyMonHasStatus(mon, partyIndex, STATUS1_FREEZE, battlerId))
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 2) && sub_8042BE8(mon, partyIndex, 64, battlerId))
+ if ((itemEffect[cmdIndex] & ITEM3_PARALYSIS) && PartyMonHasStatus(mon, partyIndex, STATUS1_PARALYSIS, battlerId))
retVal = FALSE;
- if (itemEffect[cmdIndex] & 1 // heal confusion
+ if (itemEffect[cmdIndex] & ITEM3_CONFUSION // heal confusion
&& gMain.inBattle && battlerId != 4 && (gBattleMons[battlerId].status2 & STATUS2_CONFUSION))
retVal = FALSE;
break;
// EV, HP, and PP raising effects
case 4:
curEffect = itemEffect[cmdIndex];
- if (curEffect & 0x20)
+ if (curEffect & ITEM4_PP_UP)
{
- curEffect &= ~0x20;
+ curEffect &= ~ITEM4_PP_UP;
data = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
i = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
if (data < 3 && i > 4)
@@ -4565,24 +4566,24 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
{
switch (i)
{
- case 0:
- case 1:
+ case 0: // EV_HP
+ case 1: // EV_ATK
if (GetMonEVCount(mon) >= 510)
return TRUE;
data = GetMonData(mon, sGetMonDataEVConstants[i], NULL);
if (data < 100)
{
- r10++;
+ idx++;
retVal = FALSE;
}
break;
- case 2:
+ case 2: // HEAL_HP
// revive?
- if (curEffect & 0x10)
+ if (curEffect & (ITEM4_REVIVE >> 2))
{
if (GetMonData(mon, MON_DATA_HP, NULL) != 0)
{
- r10++;
+ idx++;
break;
}
}
@@ -4590,17 +4591,17 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
{
if (GetMonData(mon, MON_DATA_HP, NULL) == 0)
{
- r10++;
+ idx++;
break;
}
}
if (GetMonData(mon, MON_DATA_MAX_HP, NULL) != GetMonData(mon, MON_DATA_HP, NULL))
retVal = FALSE;
- r10++;
- curEffect &= 0xEF;
+ idx++;
+ curEffect &= ~(ITEM4_REVIVE >> 2);
break;
case 3:
- if (!(curEffect & 2))
+ if (!(curEffect & (ITEM4_HEAL_PP_ONE >> 3)))
{
for (tmp = 0; tmp < MAX_MON_MOVES; tmp++)
{
@@ -4608,7 +4609,7 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
if (data != CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + tmp, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), tmp))
retVal = FALSE;
}
- r10++;
+ idx++;
}
else // _080429FA
{
@@ -4616,13 +4617,13 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
curMoveId = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL);
if (data != CalculatePPWithBonus(curMoveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex))
{
- r10++;
+ idx++;
retVal = FALSE;
}
}
break;
case 7:
- if (GetEvolutionTargetSpecies(mon, 2, item) != SPECIES_NONE)
+ if (GetEvolutionTargetSpecies(mon, EVO_MODE_ITEM_USE, item) != SPECIES_NONE)
return FALSE;
break;
}
@@ -4640,46 +4641,46 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
{
switch (i)
{
- case 0:
- case 1:
- case 2:
- case 3:
+ case 0: // EV_DEF
+ case 1: // EV_SPEED
+ case 2: // EV_SPDEF
+ case 3: // EV_SPATK
if (GetMonEVCount(mon) >= 510)
return TRUE;
data = GetMonData(mon, sGetMonDataEVConstants[i + 2], NULL);
if (data < 100)
{
retVal = FALSE;
- r10++;
+ idx++;
}
break;
- case 4:
+ case 4: // PP_MAX
data = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
tmp = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
if (data < 3 && tmp > 4)
retVal = FALSE;
break;
- case 5:
+ case 5: // FRIENDSHIP_LOW
if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 100
&& retVal == FALSE
&& sp18 == 0)
- sp18 = itemEffect[r10];
- r10++;
+ sp18 = itemEffect[idx];
+ idx++;
break;
- case 6:
+ case 6: // FRIENDSHIP_MID
if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 100
&& GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) < 200
&& retVal == FALSE
&& sp18 == 0)
- sp18 = itemEffect[r10];
- r10++;
+ sp18 = itemEffect[idx];
+ idx++;
break;
- case 7:
+ case 7: // FRIENDSHIP_HIGH
if (GetMonData(mon, MON_DATA_FRIENDSHIP, NULL) >= 200
&& retVal == FALSE
&& sp18 == 0)
- sp18 = itemEffect[r10];
- r10++;
+ sp18 = itemEffect[idx];
+ idx++;
break;
}
}
@@ -4692,7 +4693,7 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
return retVal;
}
-static bool8 sub_8042BE8(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId)
+static bool8 PartyMonHasStatus(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId)
{
if ((GetMonData(mon, MON_DATA_STATUS, NULL) & healMask) != 0)
return TRUE;
@@ -4813,10 +4814,10 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
return offset;
}
-static void sub_8042D50(int stat)
+static void BufferStatRoseMessage(int stat)
{
gBattlerTarget = gBattlerInMenuId;
- StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_825DFF0[stat]]);
+ StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[stat]]);
StringCopy(gBattleTextBuff2, gBattleText_Rose);
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnsStatChanged2);
}
@@ -4847,12 +4848,12 @@ const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId)
for (i = 0; i < 3; i++)
{
if (itemEffect[i] & 0xF)
- sub_8042D50(i * 2);
+ BufferStatRoseMessage(i * 2);
if (itemEffect[i] & 0xF0)
{
if (i)
{
- sub_8042D50(i * 2 + 1);
+ BufferStatRoseMessage(i * 2 + 1);
}
else
{
@@ -4899,12 +4900,12 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
else
holdEffect = ItemId_GetHoldEffect(heldItem);
- if (holdEffect == HOLD_EFFECT_PREVENT_EVOLVE && type != 3)
+ if (holdEffect == HOLD_EFFECT_PREVENT_EVOLVE && type != EVO_MODE_ITEM_CHECK)
return 0;
switch (type)
{
- case 0:
+ case EVO_MODE_NORMAL:
level = GetMonData(mon, MON_DATA_LEVEL, 0);
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, 0);
@@ -4969,7 +4970,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
}
}
break;
- case 1:
+ case EVO_MODE_TRADE:
for (i = 0; i < 5; i++)
{
switch (gEvolutionTable[species][i].method)
@@ -4992,8 +4993,8 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
}
}
break;
- case 2:
- case 3:
+ case EVO_MODE_ITEM_USE:
+ case EVO_MODE_ITEM_CHECK:
for (i = 0; i < 5; i++)
{
if (gEvolutionTable[species][i].method == EVO_ITEM
@@ -5098,96 +5099,63 @@ u16 SpeciesToCryId(u16 species)
return sHoennSpeciesIdToCryId[species - ((SPECIES_OLD_UNOWN_Z + 1) - 1)];
}
-static void sub_8043338(u16 species, u32 personality, u8 *dest)
+#define DRAW_SPINDA_SPOTS \
+{ \
+ int i; \
+ for (i = 0; i < 4; i++) \
+ { \
+ int j; \
+ u8 x = sSpindaSpotGraphics[i].x + ((personality & 0x0F) - 8); \
+ u8 y = sSpindaSpotGraphics[i].y + (((personality & 0xF0) >> 4) - 8); \
+ \
+ for (j = 0; j < 16; j++) \
+ { \
+ int k; \
+ s32 row = sSpindaSpotGraphics[i].image[j]; \
+ \
+ for (k = x; k < x + 16; k++) \
+ { \
+ u8 *val = dest + ((k / 8) * 32) + \
+ ((k % 8) / 2) + \
+ ((y >> 3) << 8) + \
+ ((y & 7) << 2); \
+ \
+ if (row & 1) \
+ { \
+ if (k & 1) \
+ { \
+ if ((u8)((*val & 0xF0) - 0x10) <= 0x20) \
+ *val += 0x40; \
+ } \
+ else \
+ { \
+ if ((u8)((*val & 0xF) - 0x01) <= 0x02) \
+ *val += 0x04; \
+ } \
+ } \
+ \
+ row >>= 1; \
+ } \
+ \
+ y++; \
+ } \
+ \
+ personality >>= 8; \
+ } \
+}
+
+static void DrawSpindaSpotsUnused(u16 species, u32 personality, u8 *dest)
{
if (species == SPECIES_SPINDA
&& dest != gMonSpritesGfxPtr->sprites[0]
&& dest != gMonSpritesGfxPtr->sprites[2])
- {
- int i;
- for (i = 0; i < 4; i++)
- {
- int j;
- u8 x = sSpindaSpotGraphics[i].x + ((personality & 0x0F) - 8);
- u8 y = sSpindaSpotGraphics[i].y + (((personality & 0xF0) >> 4) - 8);
-
- for (j = 0; j < 16; j++)
- {
- int k;
- s32 row = sSpindaSpotGraphics[i].image[j];
-
- for (k = x; k < x + 16; k++)
- {
- u8 *val = dest + ((k / 8) * 32) + ((k % 8) / 2) + ((y >> 3) << 8) + ((y & 7) << 2);
-
- if (row & 1)
- {
- if (k & 1)
- {
- if ((u8)((*val & 0xF0) - 0x10) <= 0x20)
- *val += 0x40;
- }
- else
- {
- if ((u8)((*val & 0xF) - 0x01) <= 0x02)
- *val += 0x04;
- }
- }
-
- row >>= 1;
- }
-
- y++;
- }
-
- personality >>= 8;
- }
- }
+ DRAW_SPINDA_SPOTS;
}
-void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4)
+void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, bool8 isFrontPic)
{
- if (species == SPECIES_SPINDA && a4)
- {
- int i;
- for (i = 0; i < 4; i++)
- {
- int j;
- u8 x = sSpindaSpotGraphics[i].x + ((personality & 0x0F) - 8);
- u8 y = sSpindaSpotGraphics[i].y + (((personality & 0xF0) >> 4) - 8);
-
- for (j = 0; j < 16; j++)
- {
- int k;
- s32 row = sSpindaSpotGraphics[i].image[j];
-
- for (k = x; k < x + 16; k++)
- {
- u8 *val = dest + ((k / 8) * 32) + ((k % 8) / 2) + ((y >> 3) << 8) + ((y & 7) << 2);
-
- if (row & 1)
- {
- if (k & 1)
- {
- if ((u8)((*val & 0xF0) - 0x10) <= 0x20)
- *val += 0x40;
- }
- else
- {
- if ((u8)((*val & 0xF) - 0x01) <= 0x02)
- *val += 0x04;
- }
- }
-
- row >>= 1;
- }
-
- y++;
- }
-
- personality >>= 8;
- }
- }
+ if (species == SPECIES_SPINDA && isFrontPic)
+ DRAW_SPINDA_SPOTS;
}
void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies)
@@ -5427,9 +5395,14 @@ u16 GetMonEVCount(struct Pokemon *mon)
return count;
}
+// This function was stubbed from RS, but it is stubbed badly.
+// This variable is likely the u8 passed to SetMonData in RSE.
+// The pointer reference causes agbcc to reserve it on the stack before even checking
+// whether it's used.
void RandomlyGivePartyPokerus(struct Pokemon *party)
{
- u8 foo[4]; // huh?
+ u8 foo;
+ &foo;
}
u8 CheckPartyPokerus(struct Pokemon *party, u8 selection)
@@ -5488,14 +5461,18 @@ u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection)
return retVal;
}
-static void sub_8043B38(void)
+// These two functions are stubbed from RS, but they're stubbed badly.
+// See note on RandomlyGivePartyPokerus above.
+static void UpdatePartyPokerusTime(void)
{
- u8 foo[4]; // huh?
+ u8 foo;
+ &foo;
}
void PartySpreadPokerus(struct Pokemon *party)
{
- u8 foo[4]; // huh?
+ u8 foo;
+ &foo;
}
static void SetMonExpWithMaxLevelCheck(struct Pokemon *mon, int species, u8 unused, u32 data)
@@ -5909,7 +5886,7 @@ u16 FacilityClassToPicIndex(u16 facilityClass)
return gFacilityClassToPicIndex[facilityClass];
}
-bool8 sub_804455C(u8 caseId, u8 battlerId)
+bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
{
switch (caseId)
{
@@ -6009,7 +5986,7 @@ void SetDeoxysStats(void)
}
}
-u16 sub_80447AC(void)
+u16 GetUnionRoomTrainerPic(void)
{
u8 linkId = GetMultiplayerId() ^ 1;
u32 arrId = gLinkPlayers[linkId].trainerId & 7;
@@ -6018,7 +5995,7 @@ u16 sub_80447AC(void)
return FacilityClassToPicIndex(gLinkPlayerFacilityClasses[arrId]);
}
-u16 sub_80447F0(void)
+u16 GetUnionRoomTrainerClass(void)
{
u8 linkId = GetMultiplayerId() ^ 1;
u32 arrId = gLinkPlayers[linkId].trainerId & 7;
@@ -6081,7 +6058,7 @@ static void OakSpeechNidoranFSetupTemplate(struct OakSpeechNidoranFStruct *struc
{
for (i = 0; i < (s8)structPtr->spriteCount; ++i)
{
- structPtr->templates[i] = gUnknown_825DEF0[i];
+ structPtr->templates[i] = gSpriteTemplates_Battlers[i];
for (j = 0; j < structPtr->frameCount; ++j)
structPtr->frameImages[i * structPtr->frameCount + j].data = &structPtr->bufferPtrs[i][j * 0x800];
structPtr->templates[i].images = &structPtr->frameImages[i * structPtr->frameCount];
@@ -6089,7 +6066,7 @@ static void OakSpeechNidoranFSetupTemplate(struct OakSpeechNidoranFStruct *struc
}
else
{
- const struct SpriteTemplate *template = &gUnknown_825DEF0[battlePosition];
+ const struct SpriteTemplate *template = &gSpriteTemplates_Battlers[battlePosition];
structPtr->templates[0] = *template;
for (j = 0; j < structPtr->frameCount; ++j)
diff --git a/src/pokemon_jump_2.c b/src/pokemon_jump_2.c
index e51d79814..a219459c1 100644
--- a/src/pokemon_jump_2.c
+++ b/src/pokemon_jump_2.c
@@ -1317,7 +1317,7 @@ static bool32 sub_8148D5C(void)
case 4:
if (!gPaletteFade.active)
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
gUnknown_203F3D4->unkA++;
}
break;
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 03b9c6744..b2ff1209b 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -2339,7 +2339,7 @@ static void sub_8136BC4(void)
SetGpuReg(REG_OFFSET_DISPCNT, 0);
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sUnknown_8463EFC, ARRAY_COUNT(sUnknown_8463EFC));
+ InitBgsFromTemplates(0, sUnknown_8463EFC, NELEMS(sUnknown_8463EFC));
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
@@ -3902,20 +3902,20 @@ static void sub_8139768(struct Sprite * sprite)
{
case 0:
sprite->pos1.y += sUnknown_8463FBE[sUnknown_203B170->unk00++];
- v0 = ARRAY_COUNT(sUnknown_8463FBE);
+ v0 = NELEMS(sUnknown_8463FBE);
break;
case 1:
sprite->pos1.y += sUnknown_8463FC1[sUnknown_203B170->unk00++];
- v0 = ARRAY_COUNT(sUnknown_8463FC1);
+ v0 = NELEMS(sUnknown_8463FC1);
break;
case 2:
sprite->pos1.y += sUnknown_8463FC6[sUnknown_203B170->unk00++];
- v0 = ARRAY_COUNT(sUnknown_8463FC6);
+ v0 = NELEMS(sUnknown_8463FC6);
break;
case 3:
default:
sprite->pos1.y += sUnknown_8463FCD[sUnknown_203B170->unk00++];
- v0 = ARRAY_COUNT(sUnknown_8463FCD);
+ v0 = NELEMS(sUnknown_8463FCD);
break;
}
@@ -3941,7 +3941,7 @@ static void sub_8139868(struct Sprite * sprite)
if (sUnknown_203B170->unk04++ >= 120)
{
sprite->pos1.x += sUnknown_8463FD4[sUnknown_203B170->unk00];
- if (++sUnknown_203B170->unk00 >= ARRAY_COUNT(sUnknown_8463FD4))
+ if (++sUnknown_203B170->unk00 >= NELEMS(sUnknown_8463FD4))
{
sUnknown_203B170->unk00 = 0;
sUnknown_203B170->unk04 = 0;
@@ -3953,7 +3953,7 @@ static void sub_8139868(struct Sprite * sprite)
if (sUnknown_203B170->unk04++ >= 90)
{
sprite->pos1.x += sUnknown_8463FDF[sUnknown_203B170->unk00];
- if (++sUnknown_203B170->unk00 >= ARRAY_COUNT(sUnknown_8463FDF))
+ if (++sUnknown_203B170->unk00 >= NELEMS(sUnknown_8463FDF))
{
sUnknown_203B170->unk00 = 0;
sUnknown_203B170->unk04 = 0;
@@ -3965,7 +3965,7 @@ static void sub_8139868(struct Sprite * sprite)
if (sUnknown_203B170->unk04++ >= 60)
{
sprite->pos1.x += sUnknown_8463FEA[sUnknown_203B170->unk00];
- if (++sUnknown_203B170->unk00 >= ARRAY_COUNT(sUnknown_8463FEA))
+ if (++sUnknown_203B170->unk00 >= NELEMS(sUnknown_8463FEA))
{
sUnknown_203B170->unk00 = 0;
sUnknown_203B170->unk04 = 0;
@@ -4002,7 +4002,7 @@ static void sub_813995C(void)
}
else
{
- if (sub_804455C(3, sLastViewedMonIndex))
+ if (ShouldIgnoreDeoxysForm(3, sLastViewedMonIndex))
spriteId = CreateMonPicSprite(species, trainerId, personality, 1, 60, 65, 12, 0xffff, 1);
else
spriteId = CreateMonPicSprite_HandleDeoxys(species, trainerId, personality, 1, 60, 65, 12, 0xffff);
@@ -4130,7 +4130,7 @@ static void sub_8139DBC(void)
}
else
{
- if (sub_804455C(3, sLastViewedMonIndex))
+ if (ShouldIgnoreDeoxysForm(3, sLastViewedMonIndex))
sMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 0);
else
sMonSummaryScreen->unk3014 = CreateMonIcon(species, SpriteCallbackDummy, 24, 32, 0, personality, 1);
diff --git a/src/psychic.c b/src/psychic.c
index 32e4dce46..9a072ad5c 100644
--- a/src/psychic.c
+++ b/src/psychic.c
@@ -523,10 +523,10 @@ static void sub_80B3168(struct Sprite *sprite)
bool8 toBG2 = (rank ^ var0) != 0;
if (IsBattlerSpriteVisible(battler))
- sub_8073128(toBG2);
+ ResetBattleAnimBg(toBG2);
battler = battlerCopy ^ 2;
if (IsBattlerSpriteVisible(battler))
- sub_8073128(toBG2 ^ var0);
+ ResetBattleAnimBg(toBG2 ^ var0);
}
sprite->callback = DestroyAnimSprite;
}
diff --git a/src/quest_log_events.c b/src/quest_log_events.c
index 8eaf331e5..72b8ddfd7 100644
--- a/src/quest_log_events.c
+++ b/src/quest_log_events.c
@@ -425,7 +425,7 @@ static bool8 TrySetTrainerBattleQuestLogEvent(u16 eventId, const u16 *eventData)
return TRUE;
}
-void sub_81139BC(void)
+void QuestLogEvents_HandleEndTrainerBattle(void)
{
if (sDeferredEvent.id != QL_EVENT_0)
{
diff --git a/src/quest_log_player.c b/src/quest_log_player.c
index 715061963..da1c2b76e 100644
--- a/src/quest_log_player.c
+++ b/src/quest_log_player.c
@@ -35,7 +35,7 @@ static void (*const gUnknown_8471EDC[])(void) = {
void sub_8150454(u8 a0)
{
- if (a0 < ARRAY_COUNT(gUnknown_8471EDC))
+ if (a0 < NELEMS(gUnknown_8471EDC))
gUnknown_8471EDC[a0]();
}
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index c65169710..cc1e14d8f 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -10,12 +10,12 @@
#include "battle_controllers.h"
static void CB2_ReshowBattleScreenAfterMenu(void);
-static void sub_8077AAC(void);
+static void ReshowBattleScreen_TurnOnDisplay(void);
static bool8 LoadBattlerSpriteGfx(u8 battlerId);
static void CreateBattlerSprite(u8 battlerId);
static void CreateHealthboxSprite(u8 battlerId);
-void nullsub_44(void)
+void ReshowBattleScreenDummy(void)
{
}
@@ -113,35 +113,35 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
if (!LoadBattlerSpriteGfx(2))
--gBattleScripting.reshowMainState;
break;
- case 0xA:
+ case 10:
if (!LoadBattlerSpriteGfx(3))
--gBattleScripting.reshowMainState;
break;
- case 0xB:
+ case 11:
CreateBattlerSprite(0);
break;
- case 0xC:
+ case 12:
CreateBattlerSprite(1);
break;
- case 0xD:
+ case 13:
CreateBattlerSprite(2);
break;
- case 0xE:
+ case 14:
CreateBattlerSprite(3);
break;
- case 0xF:
+ case 15:
CreateHealthboxSprite(0);
break;
- case 0x10:
+ case 16:
CreateHealthboxSprite(1);
break;
- case 0x11:
+ case 17:
CreateHealthboxSprite(2);
break;
- case 0x12:
+ case 18:
CreateHealthboxSprite(3);
break;
- case 0x13:
+ case 19:
LoadAndCreateEnemyShadowSprites();
opponentBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBattler]], MON_DATA_SPECIES);
@@ -159,13 +159,13 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
CreateWirelessStatusIndicatorSprite(0, 0);
}
break;
- case 0x14:
+ case 20:
SetVBlankCallback(VBlankCB_Battle);
- sub_8077AAC();
+ ReshowBattleScreen_TurnOnDisplay();
BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1);
gPaletteFade.bufferTransferDisabled = 0;
SetMainCallback2(BattleMainCB2);
- sub_80357C8();
+ BattleInterfaceSetWindowPals();
break;
default:
break;
@@ -173,7 +173,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
++gBattleScripting.reshowMainState;
}
-static void sub_8077AAC(void)
+static void ReshowBattleScreen_TurnOnDisplay(void)
{
EnableInterrupts(INTR_FLAG_VBLANK);
SetGpuReg(REG_OFFSET_BLDCNT, 0);
@@ -202,9 +202,9 @@ static bool8 LoadBattlerSpriteGfx(u8 battler)
BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE);
}
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler.
- DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, battler);
+ DecompressTrainerBackPalette(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, battler);
else if (gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler.
- DecompressTrainerBackPalette(5, battler);
+ DecompressTrainerBackPalette(BACK_PIC_OLDMAN, battler);
else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
else
diff --git a/src/roamer.c b/src/roamer.c
index 074ac22cf..6367e9d43 100644
--- a/src/roamer.c
+++ b/src/roamer.c
@@ -94,7 +94,7 @@ void CreateInitialRoamerMon(void)
saveRoamer.smart = GetMonData(tmpMon, MON_DATA_SMART);
saveRoamer.tough = GetMonData(tmpMon, MON_DATA_TOUGH);
sRoamerLocation[MAP_GRP] = 3;
- sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % (ARRAY_COUNT(sRoamerLocations) - 1)][0];
+ sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % (NELEMS(sRoamerLocations) - 1)][0];
}
void InitRoamer(void)
@@ -125,7 +125,7 @@ void RoamerMoveToOtherLocationSet(void)
while (1)
{
- mapNum = sRoamerLocations[Random() % (ARRAY_COUNT(sRoamerLocations) - 1)][0];
+ mapNum = sRoamerLocations[Random() % (NELEMS(sRoamerLocations) - 1)][0];
if (sRoamerLocation[MAP_NUM] != mapNum)
{
sRoamerLocation[MAP_NUM] = mapNum;
@@ -150,7 +150,7 @@ void RoamerMove(void)
if (!roamer->active)
return;
- while (locSet < (ARRAY_COUNT(sRoamerLocations) - 1))
+ while (locSet < (NELEMS(sRoamerLocations) - 1))
{
if (sRoamerLocation[MAP_NUM] == sRoamerLocations[locSet][0])
{
diff --git a/src/rock.c b/src/rock.c
index 922b2ad6a..c5b78fe31 100644
--- a/src/rock.c
+++ b/src/rock.c
@@ -407,7 +407,7 @@ void AnimTask_LoadSandstormBackground(u8 taskId)
gBattle_BG1_Y = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
AnimLoadCompressedBgTilemap(animBg.bgId, gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap);
AnimLoadCompressedBgGfx(animBg.bgId, gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet, animBg.tilesOffset);
LoadCompressedPalette(gBattleAnimSpritePal_FlyingDirt, animBg.paletteId * 16, 32);
@@ -464,8 +464,8 @@ static void sub_80B490C(u8 taskId)
}
break;
case 3:
- sub_80752A0(&animBg);
- sub_8075358(animBg.bgId);
+ GetBattleAnimBg1Data(&animBg);
+ InitBattleAnimBg(animBg.bgId);
++gTasks[taskId].data[12];
break;
case 4:
@@ -795,14 +795,14 @@ void AnimTask_MoveSeismicTossBg(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
- sub_8075458(0);
+ ToggleBg3Mode(0);
gTasks[taskId].data[1] = 200;
}
gBattle_BG3_Y += gTasks[taskId].data[1] / 10;
gTasks[taskId].data[1] -= 3;
if (gTasks[taskId].data[0] == 120)
{
- sub_8075458(1);
+ ToggleBg3Mode(1);
DestroyAnimVisualTask(taskId);
}
++gTasks[taskId].data[0];
@@ -812,7 +812,7 @@ void AnimTask_SeismicTossBgAccelerateDownAtEnd(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
- sub_8075458(0);
+ ToggleBg3Mode(0);
++gTasks[taskId].data[0];
gTasks[taskId].data[2] = gBattle_BG3_Y;
}
@@ -822,7 +822,7 @@ void AnimTask_SeismicTossBgAccelerateDownAtEnd(u8 taskId)
if (gBattleAnimArgs[7] == 0xFFF)
{
gBattle_BG3_Y = 0;
- sub_8075458(1);
+ ToggleBg3Mode(1);
DestroyAnimVisualTask(taskId);
}
}
diff --git a/src/save.c b/src/save.c
index d5993182c..894b420f6 100644
--- a/src/save.c
+++ b/src/save.c
@@ -45,26 +45,24 @@
min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \
} \
-// TODO: use gSaveblock2, gSaveblock1, gPokemonStorage instead of structs
-// Will be done when load_save is decompiled.
const struct SaveSectionOffsets gSaveSectionOffsets[] =
{
- SAVEBLOCK_CHUNK(struct SaveBlock2, 0),
-
- SAVEBLOCK_CHUNK(struct SaveBlock1, 0),
- SAVEBLOCK_CHUNK(struct SaveBlock1, 1),
- SAVEBLOCK_CHUNK(struct SaveBlock1, 2),
- SAVEBLOCK_CHUNK(struct SaveBlock1, 3),
-
- SAVEBLOCK_CHUNK(struct PokemonStorage, 0),
- SAVEBLOCK_CHUNK(struct PokemonStorage, 1),
- SAVEBLOCK_CHUNK(struct PokemonStorage, 2),
- SAVEBLOCK_CHUNK(struct PokemonStorage, 3),
- SAVEBLOCK_CHUNK(struct PokemonStorage, 4),
- SAVEBLOCK_CHUNK(struct PokemonStorage, 5),
- SAVEBLOCK_CHUNK(struct PokemonStorage, 6),
- SAVEBLOCK_CHUNK(struct PokemonStorage, 7),
- SAVEBLOCK_CHUNK(struct PokemonStorage, 8)
+ SAVEBLOCK_CHUNK(gSaveBlock2, 0),
+
+ SAVEBLOCK_CHUNK(gSaveBlock1, 0),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 1),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 2),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 3),
+
+ SAVEBLOCK_CHUNK(gPokemonStorage, 0),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 1),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 2),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 3),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 4),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 5),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 6),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 7),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 8)
};
// Sector num to begin writing save data. Sectors are rotated each time the game is saved. (possibly to avoid wear on flash memory?)
@@ -855,7 +853,7 @@ void Task_SaveGame_UpdatedLinkRecords(u8 taskId)
gTasks[taskId].data[0] = 1;
break;
case 1:
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
gTasks[taskId].data[0] = 2;
break;
case 2:
@@ -889,7 +887,7 @@ void Task_SaveGame_UpdatedLinkRecords(u8 taskId)
break;
case 7:
ClearContinueGameWarpStatus2();
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
gTasks[taskId].data[0] = 8;
break;
case 8:
@@ -900,7 +898,7 @@ void Task_SaveGame_UpdatedLinkRecords(u8 taskId)
}
break;
case 9:
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
gTasks[taskId].data[0] = 10;
break;
case 10:
diff --git a/src/string_util.c b/src/string_util.c
index 17507b0e8..f059ac43d 100644
--- a/src/string_util.c
+++ b/src/string_util.c
@@ -487,7 +487,7 @@ u8 *GetExpandedPlaceholder(u32 id)
[PLACEHOLDER_ID_KYOGRE] = ExpandPlaceholder_Kyogre,
};
- if (id >= ARRAY_COUNT(funcs))
+ if (id >= NELEMS(funcs))
return gExpandedPlaceholder_Empty;
else
return funcs[id]();
@@ -627,7 +627,7 @@ u8 GetExtCtrlCodeLength(u8 code)
};
u8 length = 0;
- if (code < ARRAY_COUNT(lengths))
+ if (code < NELEMS(lengths))
length = lengths[code];
return length;
}
diff --git a/src/strings.c b/src/strings.c
index c696601c4..d620cdc80 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -342,8 +342,8 @@ const u8 gText_NotAble[] = _("NOT ABLE");
const u8 gText_Able3[] = _("ABLE!");
const u8 gText_NotAble2[] = _("NOT ABLE!");
const u8 gText_Learned[] = _("LEARNED");
-const u8 gUnknown_8417457[] = _("OAK: It's important to get to know\nyour POKéMON thoroughly.\p");
-const u8 gUnknown_8417494[] = _("This is a list of your POKéMON,\n{PLAYER}.\pOpen this to check the skills\nand moves of your POKéMON.\pYou also choose POKéMON here if\nyou want to use an item on one.{PAUSE_UNTIL_PRESS}");
+const u8 gText_OakImportantToGetToKnowPokemonThroughly[] = _("OAK: It's important to get to know\nyour POKéMON thoroughly.\p");
+const u8 gText_OakThisIsListOfPokemon[] = _("This is a list of your POKéMON,\n{PLAYER}.\pOpen this to check the skills\nand moves of your POKéMON.\pYou also choose POKéMON here if\nyou want to use an item on one.{PAUSE_UNTIL_PRESS}");
const u8 gText_CutATreeOrGrass[] = _("Cut a tree or grass.");
const u8 gText_FlyToAKnownTown[] = _("Fly to a known town.");
const u8 gText_TravelOnWater[] = _("Travel on water.");
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
index d6ce57c3d..3baaa094a 100644
--- a/src/teachy_tv.c
+++ b/src/teachy_tv.c
@@ -1177,9 +1177,9 @@ static void TeachyTvPrepBattle(u8 taskId)
InitPokedudePartyAndOpponent();
PlayMapChosenOrBattleBGM(MUS_DUMMY);
if (sStaticResources.whichScript == TTVSCR_BATTLE)
- data[6] = 9;
+ data[6] = B_TRANSITION_WHITEFADE_IN_STRIPES;
else
- data[6] = 8;
+ data[6] = B_TRANSITION_SLICED_SCREEN;
data[7] = 0;
gTasks[taskId].func = TeachyTvPreBattleAnimAndSetBattleCallback;
}
diff --git a/src/trade.c b/src/trade.c
index 60643f2fc..21c127838 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -814,7 +814,7 @@ static void CB2_ReturnFromLinkTrade2(void)
if (gWirelessCommType)
{
ToggleLMANlinkRecovery(TRUE);
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
}
}
break;
@@ -2001,7 +2001,7 @@ static void TradeMenuCB_11(void)
{
if (gWirelessCommType)
{
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
}
else
{
@@ -2041,7 +2041,7 @@ static void TradeMenuCB_16(void)
{
if (!ToggleLMANlinkRecovery(FALSE))
{
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
sTradeMenuResourcesPtr->tradeMenuCBnum = 13;
}
}
diff --git a/src/trade_scene.c b/src/trade_scene.c
index f068b17d4..b259ba939 100644
--- a/src/trade_scene.c
+++ b/src/trade_scene.c
@@ -1725,7 +1725,7 @@ static bool8 DoTradeAnim_Cable(void)
case 72: // Only if in-game trade
TradeMons(gSpecialVar_0x8005, 0);
gCB2_AfterEvolution = CB2_RunTradeAnim_InGameTrade;
- evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], TRUE, ITEM_NONE);
+ evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], EVO_MODE_TRADE, ITEM_NONE);
if (evoTarget != SPECIES_NONE)
{
TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[0]], evoTarget, sTradeData->pokePicSpriteIdxs[1], gSelectedTradeMonPositions[0]);
@@ -2246,7 +2246,7 @@ static bool8 DoTradeAnim_Wireless(void)
case 72: // Only if in-game trade
TradeMons(gSpecialVar_0x8005, 0);
gCB2_AfterEvolution = CB2_RunTradeAnim_InGameTrade;
- evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], TRUE, ITEM_NONE);
+ evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], EVO_MODE_TRADE, ITEM_NONE);
if (evoTarget != SPECIES_NONE)
{
TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[0]], evoTarget, sTradeData->pokePicSpriteIdxs[1], gSelectedTradeMonPositions[0]);
@@ -2290,7 +2290,7 @@ static void sub_8053788(void)
break;
case 4:
gCB2_AfterEvolution = sub_8053E8C;
- evoSpecies = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], 1, 0);
+ evoSpecies = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], EVO_MODE_TRADE, 0);
if (evoSpecies != SPECIES_NONE)
TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[0]], evoSpecies, sTradeData->pokePicSpriteIdxs[1], gSelectedTradeMonPositions[0]);
else
@@ -2546,7 +2546,7 @@ static void sub_8053E8C(void)
DrawTextOnTradeWindow(0, gStringVar4, 0);
break;
case 1:
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
gMain.state = 100;
sTradeData->timer = 0;
break;
@@ -2631,7 +2631,7 @@ static void sub_8053E8C(void)
case 41:
if (sTradeData->timer == 0)
{
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
gMain.state = 42;
}
else
@@ -2650,7 +2650,7 @@ static void sub_8053E8C(void)
if (++sTradeData->timer > 60)
{
gMain.state++;
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
}
break;
case 6:
@@ -2672,11 +2672,11 @@ static void sub_8053E8C(void)
{
if (gWirelessCommType && gMain.savedCallback == CB2_ReturnFromLinkTrade)
{
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
}
else
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
}
gMain.state++;
}
diff --git a/src/trainer_card.c b/src/trainer_card.c
index e42385243..f1af00254 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -618,7 +618,7 @@ static void Task_TrainerCard(u8 taskId)
}
break;
case STATE_WAIT_LINK_PARTNER:
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
DrawDialogueFrame(0, 1);
AddTextPrinterParameterized(0, 2, gText_WaitingTrainerFinishReading, 0, 1, TEXT_SPEED_FF, 0);
CopyWindowToVram(0, COPYWIN_BOTH);
@@ -1472,7 +1472,7 @@ static bool8 SetTrainerCardBgsAndPals(void)
switch (sTrainerCardDataPtr->bgPalLoadState)
{
case 0:
- LoadBgTiles(3, sTrainerCardDataPtr->badgeTiles, ARRAY_COUNT(sTrainerCardDataPtr->badgeTiles), 0);
+ LoadBgTiles(3, sTrainerCardDataPtr->badgeTiles, NELEMS(sTrainerCardDataPtr->badgeTiles), 0);
break;
case 1:
LoadBgTiles(0, sTrainerCardDataPtr->cardTiles, 0x1800, 0);
diff --git a/src/union_room.c b/src/union_room.c
index 772af688b..24b8a4d3e 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -2022,7 +2022,7 @@ static void Task_RunScriptAndFadeToActivity(u8 taskId)
case 2:
if (!gPaletteFade.active)
{
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
data[0]++;
}
break;
@@ -2246,7 +2246,7 @@ static void Task_MEvent_Leader(u8 taskId)
Free(data->field_8);
Free(data->field_0);
Free(data->field_4);
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
data->state++;
break;
case 17:
@@ -2413,7 +2413,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
break;
case 11:
data->state++;
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
break;
case 12:
if (IsLinkTaskFinished())
@@ -2592,7 +2592,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
break;
case 13:
data->state++;
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
break;
case 14:
if (IsLinkTaskFinished())
@@ -2935,7 +2935,7 @@ static void Task_RunUnionRoom(u8 taskId)
}
break;
case 32:
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
data->state = 36;
break;
case 31:
@@ -2984,7 +2984,7 @@ static void Task_RunUnionRoom(u8 taskId)
if (PrintOnTextbox(&data->textState, gStringVar4))
{
data->state = 41;
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
data->partnerYesNoResponse = 0;
data->recvActivityRequest[0] = 0;
}
@@ -3162,7 +3162,7 @@ static void Task_RunUnionRoom(u8 taskId)
}
break;
case 10:
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
data->state = 36;
break;
case 36:
@@ -3185,7 +3185,7 @@ static void Task_RunUnionRoom(u8 taskId)
UnionRoom_ScheduleFieldMessageWithFollowupState(14, gStringVar4);
break;
case 14:
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
data->state = 15;
break;
case 15:
@@ -3447,7 +3447,7 @@ static bool32 UnionRoom_HandleContactFromOtherPlayer(struct UnkStruct_URoom * ur
else if (var == 2)
{
uroom->state = 36;
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
return FALSE;
}
}
@@ -4689,7 +4689,7 @@ static void ViewURoomPartnerTrainerCard(u8 *unused, struct UnkStruct_URoom * uro
DynamicPlaceholderTextUtil_Reset();
- StringCopy(uroom->trainerCardStrbufs[0], gTrainerClassNames[sub_80447F0()]);
+ StringCopy(uroom->trainerCardStrbufs[0], gTrainerClassNames[GetUnionRoomTrainerClass()]);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, uroom->trainerCardStrbufs[0]);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, trainerCard->rse.playerName);
diff --git a/src/union_room_battle.c b/src/union_room_battle.c
index 3d5ef39eb..1e4528c8c 100644
--- a/src/union_room_battle.c
+++ b/src/union_room_battle.c
@@ -163,7 +163,7 @@ void CB2_UnionRoomBattle(void)
}
else
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
if (gBlockRecvBuffer[GetMultiplayerId()][0] == (ACTIVITY_DECLINE | 0x40))
{
gMain.state = 6;
@@ -179,7 +179,7 @@ void CB2_UnionRoomBattle(void)
case 50:
if (!UpdatePaletteFade())
{
- PrepareSendLinkCmd2FFE_or_RfuCmd6600();
+ SetLinkStandbyCallback();
gMain.state++;
}
break;
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
index 5d19dc9cd..85df5cd39 100644
--- a/src/union_room_chat.c
+++ b/src/union_room_chat.c
@@ -587,7 +587,7 @@ static void ChatEntryRoutine_ExitChat(void)
case 5:
if (IsLinkTaskFinished() && !GetRfuUnkCE8())
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
sWork->exitDelayTimer = 0;
sWork->routineState++;
}
@@ -622,7 +622,7 @@ static void ChatEntryRoutine_Drop(void)
case 1:
if (!RunDisplaySubtask(0) && IsLinkTaskFinished() && !GetRfuUnkCE8())
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
sWork->exitDelayTimer = 0;
sWork->routineState++;
}
@@ -668,7 +668,7 @@ static void ChatEntryRoutine_Disbanded(void)
case 2:
if (RunDisplaySubtask(0) != TRUE && IsLinkTaskFinished() && !GetRfuUnkCE8())
{
- Link_TryStartSend5FFF();
+ SetCloseLinkCallback();
sWork->exitDelayTimer = 0;
sWork->routineState++;
}
diff --git a/src/water.c b/src/water.c
index f8dd29bd0..8a1737e58 100644
--- a/src/water.c
+++ b/src/water.c
@@ -812,7 +812,7 @@ void AnimTask_CreateSurfWave(u8 taskId)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1);
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
if (!IsContest())
{
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
@@ -889,7 +889,7 @@ static void AnimTask_CreateSurfWave_Step1(u8 taskId)
*BGptrX += gTasks[taskId].data[0];
*BGptrY += gTasks[taskId].data[1];
- sub_80752A0(&animBg);
+ GetBattleAnimBg1Data(&animBg);
gTasks[taskId].data[2] += gTasks[taskId].data[1];
if (++gTasks[taskId].data[5] == 4)
{
@@ -928,8 +928,8 @@ static void AnimTask_CreateSurfWave_Step2(u8 taskId)
u16 *BGptrY = &gBattle_BG1_Y;
if (gTasks[taskId].data[0] == 0)
{
- sub_8075358(1);
- sub_8075358(2);
+ InitBattleAnimBg(1);
+ InitBattleAnimBg(2);
gTasks[taskId].data[0]++;
}
else