diff options
author | Kurausukun <lord.uber1@gmail.com> | 2021-03-19 14:34:58 -0400 |
---|---|---|
committer | Kurausukun <lord.uber1@gmail.com> | 2021-03-19 14:34:58 -0400 |
commit | c94e5e9ab0b2b65c8c6275f84043807b2743d6f2 (patch) | |
tree | b188427bb1942695f32e14ee3fe137855d638c8c /include | |
parent | 0643255c85d0ebd5212e731c9fad3b43d0d99a10 (diff) | |
parent | ed16a7409ae9c808a110975dec1930f9f949a6d6 (diff) |
Merge remote-tracking branch 'upstream/master' into port_matchings
Diffstat (limited to 'include')
-rw-r--r-- | include/battle.h | 136 | ||||
-rw-r--r-- | include/battle_anim.h | 42 | ||||
-rw-r--r-- | include/battle_controllers.h | 43 | ||||
-rw-r--r-- | include/battle_gfx_sfx_util.h | 12 | ||||
-rw-r--r-- | include/battle_interface.h | 2 | ||||
-rw-r--r-- | include/battle_main.h | 34 | ||||
-rw-r--r-- | include/battle_message.h | 6 | ||||
-rw-r--r-- | include/battle_util.h | 2 | ||||
-rw-r--r-- | include/constants/pokemon.h | 5 | ||||
-rw-r--r-- | include/data.h | 12 | ||||
-rw-r--r-- | include/field_camera.h | 2 | ||||
-rw-r--r-- | include/gba/defines.h | 1 | ||||
-rw-r--r-- | include/global.h | 10 | ||||
-rw-r--r-- | include/link.h | 4 | ||||
-rw-r--r-- | include/load_save.h | 1 | ||||
-rw-r--r-- | include/party_menu.h | 6 | ||||
-rw-r--r-- | include/pokeball.h | 2 | ||||
-rw-r--r-- | include/pokemon.h | 12 | ||||
-rw-r--r-- | include/quest_log.h | 2 | ||||
-rw-r--r-- | include/reshow_battle_screen.h | 2 | ||||
-rw-r--r-- | include/strings.h | 4 |
21 files changed, 188 insertions, 152 deletions
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[]; |