diff options
Diffstat (limited to 'include')
40 files changed, 703 insertions, 258 deletions
diff --git a/include/battle.h b/include/battle.h index fae21908b..3e638c6ef 100644 --- a/include/battle.h +++ b/include/battle.h @@ -38,17 +38,6 @@ #define MAX_TRAINER_ITEMS 4 #define MAX_MON_MOVES 4 -#define BATTLE_TERRAIN_GRASS 0 -#define BATTLE_TERRAIN_LONG_GRASS 1 -#define BATTLE_TERRAIN_SAND 2 -#define BATTLE_TERRAIN_UNDERWATER 3 -#define BATTLE_TERRAIN_WATER 4 -#define BATTLE_TERRAIN_POND 5 -#define BATTLE_TERRAIN_MOUNTAIN 6 -#define BATTLE_TERRAIN_CAVE 7 -#define BATTLE_TERRAIN_BUILDING 8 -#define BATTLE_TERRAIN_PLAIN 9 - // array entries for battle communication #define MULTIUSE_STATE 0x0 #define CURSOR_POSITION 0x1 @@ -609,7 +598,7 @@ struct BattleScripting // rom_80A5C6C u8 GetBattlerSide(u8 battler); u8 GetBattlerPosition(u8 battler); -u8 GetBattlerAtPosition(u8 battler); +u8 GetBattlerAtPosition(u8 position); struct BattleSpriteInfo { @@ -730,7 +719,7 @@ extern u8 gCurrMovePos; extern u8 gChosenMovePos; extern u16 gCurrentMove; extern u16 gChosenMove; -extern u16 gRandomMove; +extern u16 gCalledMove; extern s32 gBattleMoveDamage; extern s32 gHpDealt; extern s32 gTakenDmg[MAX_BATTLERS_COUNT]; diff --git a/include/battle_anim.h b/include/battle_anim.h index f690cf10c..200b9fdb1 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -14,11 +14,11 @@ enum struct UnknownAnimStruct2 { - void *unk0; + u8 *bgTiles; u16 *unk4; u8 unk8; - u8 unk9; - u16 unkA; + u8 bgId; + u16 tilesOffset; u16 unkC; }; @@ -39,7 +39,7 @@ extern bool8 gAnimScriptActive; extern u8 gAnimVisualTaskCount; extern u8 gAnimSoundTaskCount; extern struct DisableStruct *gAnimDisableStructPtr; -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg; extern u16 gAnimMovePower; extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; @@ -63,36 +63,48 @@ s8 BattleAnimAdjustPanning(s8 pan); s8 BattleAnimAdjustPanning2(s8 pan); s16 KeepPanInRange(s16 a); s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); +void sub_80A4720(u16 a, u16 *b, u32 c, u8 d); // battle_anim_80FE840.s void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); -void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 bankIdentity, u8 arg4, void *arg5, u16 *arg6, u16 arg7); +void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, void *arg5, u16 *arg6, u16 arg7); void HandleIntroSlide(u8 terrainId); +u32 GetAnimBgAttribute(u8 bgId, u8 attributeId); // battle_anim_80A5C6C.s void sub_80A6EEC(struct Sprite *sprite); void sub_80A68D4(struct Sprite *sprite); -void sub_80A6F3C(struct Sprite *sprite); +bool8 TranslateAnimLinear(struct Sprite *sprite); void sub_80A8278(void); void sub_80A6B30(struct UnknownAnimStruct2*); void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); u8 sub_80A82E4(u8 battlerId); -bool8 AnimateBallThrow(struct Sprite *sprite); +bool8 TranslateAnimArc(struct Sprite *sprite); +void sub_80A6630(struct Sprite *sprite); +void sub_80A6680(struct Sprite *sprite); +void sub_80A7344(u8 spriteId); +void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); +void sub_80A6E14(struct Sprite *sprite); +void sub_80A7270(u8 spriteId, u8 objMode); +void sub_80A73A0(u8 spriteId); enum { - BANK_X_POS, - BANK_Y_POS, + BATTLER_COORD_X, + BATTLER_COORD_Y, + BATTLER_COORD_X_2, + BATTLER_COORD_3, + BATTLER_COORD_4, }; u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId); bool8 IsBattlerSpritePresent(u8 battlerId); -void sub_80A6C68(u8 arg0); +void sub_80A6C68(u32 arg0); u8 GetAnimBattlerSpriteId(u8 wantedBattler); bool8 IsDoubleBattle(void); u8 sub_80A6D94(void); -u8 sub_80A8364(u8); +u8 sub_80A8364(u8 battlerId); void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*)); void oamt_add_pos2_onto_pos1(struct Sprite *sprite); u8 GetBattlerSpriteDefault_Y(u8 battlerId); @@ -100,6 +112,14 @@ u8 sub_80A82E4(u8 battlerId); u8 GetSubstituteSpriteDefault_Y(u8 battlerId); // battle_anim_80A9C70.s +#define STAT_ANIM_PLUS1 15 +#define STAT_ANIM_PLUS2 39 +#define STAT_ANIM_MINUS1 22 +#define STAT_ANIM_MINUS2 46 +#define STAT_ANIM_MULTIPLE_PLUS1 55 +#define STAT_ANIM_MULTIPLE_PLUS2 56 +#define STAT_ANIM_MULTIPLE_MINUS1 57 +#define STAT_ANIM_MULTIPLE_MINUS2 58 void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId); // battle_anim_8170478.s @@ -107,6 +127,6 @@ u8 ItemIdToBallId(u16 itemId); u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); -u8 sub_80A600C(u8, u16, u8); +u8 GetBattlerSpriteFinal_Y(u8, u16, u8); #endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_factory.h b/include/battle_factory.h new file mode 100644 index 000000000..1b0e44943 --- /dev/null +++ b/include/battle_factory.h @@ -0,0 +1,7 @@ +#ifndef GUARD_BATTLE_FACTORY_H +#define GUARD_BATTLE_FACTORY_H + +void DoBattleFactorySelectScreen(void); +void DoBattleFactorySwapScreen(void); + +#endif // GUARD_BATTLE_FACTORY_H diff --git a/include/battle_frontier_2.h b/include/battle_frontier_2.h index 09e974068..d032f9f74 100644 --- a/include/battle_frontier_2.h +++ b/include/battle_frontier_2.h @@ -1,6 +1,11 @@ #ifndef GUARD_BATTLE_FRONTIER_2_H #define GUARD_BATTLE_FRONTIER_2_H +#define FRONTIER_BEFORE_TEXT 0 +#define FRONTIER_WIN_TEXT 1 +#define FRONTIER_LOSE_TEXT 2 + +void CopyFrontierTrainerText(u8 whichText, u16 trainerId); void sub_81A8934(u8); void sub_81A895C(void); u16 sub_81A89A0(u8); @@ -9,8 +14,6 @@ bool8 InBattlePike(void); void sub_819FA50(void); void sub_81AA078(u16*, u8); void sub_81A4C30(void); -void sub_819A4F8(void); -void sub_819DC00(void); bool8 sub_81A6BF4(void); #endif // GUARD_BATTLE_FRONTIER_2_H diff --git a/include/battle_interface.h b/include/battle_interface.h index 2d93811f1..3145939d0 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -60,21 +60,21 @@ enum HEALTHBOX_SAFARI_BALLS_TEXT }; -u8 CreateBattlerHealthboxSprites(u8 bank); +u8 CreateBattlerHealthboxSprites(u8 battler); u8 CreateSafariPlayerHealthboxSprites(void); -void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue); +void SetBattleBarStruct(u8 battler, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue); void SetHealthboxSpriteInvisible(u8 healthboxSpriteId); void SetHealthboxSpriteVisible(u8 healthboxSpriteId); void DestoryHealthboxSprite(u8 healthboxSpriteId); void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); void UpdateOamPriorityInAllHealthboxes(u8 priority); -void InitBattlerHealthboxCoords(u8 bank); +void InitBattlerHealthboxCoords(u8 battler); void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); void SwapHpBarsWithHpText(void); -u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart); +u8 CreatePartyStatusSummarySprites(u8 battler, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart); void Task_HidePartyStatusSummary(u8 taskId); void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId); -s32 MoveBattleBar(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3); +s32 MoveBattleBar(u8 battler, u8 healthboxSpriteId, u8 whichBar, u8 arg3); 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 27e61c8fc..5a61b5ef0 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -35,7 +35,7 @@ void CB2_QuitRecordedBattle(void); void sub_8038528(struct Sprite* sprite); void sub_8038A04(void); // unused void VBlankCB_Battle(void); -void nullsub_17(void); +void nullsub_17(struct Sprite *sprite); void sub_8038B74(struct Sprite *sprite); void sub_8038D64(void); u32 sub_80391E0(u8 arrayId, u8 caseId); diff --git a/include/battle_message.h b/include/battle_message.h index c68607246..5d811fe69 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -34,11 +34,11 @@ #define B_TXT_EFF_ABILITY 0x1B #define B_TXT_TRAINER1_CLASS 0x1C #define B_TXT_TRAINER1_NAME 0x1D -#define B_TXT_1E 0x1E // trainer name for a link player -#define B_TXT_1F 0x1F // trainer name for a link player -#define B_TXT_20 0x20 // trainer name for a link player -#define B_TXT_21 0x21 // trainer name for a link player -#define B_TXT_22 0x22 // trainer name for a link player +#define B_TXT_LINK_PLAYER_NAME 0x1E +#define B_TXT_LINK_PARTNER_NAME 0x1F +#define B_TXT_LINK_OPPONENT1_NAME 0x20 +#define B_TXT_LINK_OPPONENT2_NAME 0x21 +#define B_TXT_LINK_SCR_TRAINER_NAME 0x22 #define B_TXT_PLAYER_NAME 0x23 #define B_TXT_TRAINER1_LOSE_TEXT 0x24 #define B_TXT_TRAINER1_WIN_TEXT 0x25 @@ -177,20 +177,20 @@ textVar[4] = B_BUFF_EOS; \ } -#define PREPARE_MON_NICK_WITH_PREFIX_BUFFER(textVar, bank, partyId) \ +#define PREPARE_MON_NICK_WITH_PREFIX_BUFFER(textVar, battler, partyId) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ textVar[1] = B_BUFF_MON_NICK_WITH_PREFIX; \ - textVar[2] = bank; \ + textVar[2] = battler; \ textVar[3] = partyId; \ textVar[4] = B_BUFF_EOS; \ } -#define PREPARE_MON_NICK_BUFFER(textVar, bank, partyId) \ +#define PREPARE_MON_NICK_BUFFER(textVar, battler, partyId) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ textVar[1] = B_BUFF_MON_NICK; \ - textVar[2] = bank; \ + textVar[2] = battler; \ textVar[3] = partyId; \ textVar[4] = B_BUFF_EOS; \ } diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 1197dfb6e..9c4537363 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -26,16 +26,9 @@ extern const u8 BattleScript_LocalBattleLost[]; extern const u8 BattleScript_LocalBattleLostPrintWhiteOut[]; extern const u8 BattleScript_LocalBattleLostEnd[]; extern const u8 BattleScript_CheckDomeDrew[]; -extern const u8 BattleScript_82DAA0B[]; -extern const u8 BattleScript_82DAA31[]; +extern const u8 BattleScript_FlushMessageBox[]; extern const u8 BattleScript_LinkBattleWonOrLost[]; -extern const u8 BattleScript_82DAA5C[]; -extern const u8 BattleScript_82DAA83[]; extern const u8 BattleScript_FrontierTrainerBattleWon[]; -extern const u8 BattleScript_82DAAAB[]; -extern const u8 BattleScript_82DAAAE[]; -extern const u8 BattleScript_82DAACB[]; -extern const u8 BattleScript_82DAADA[]; extern const u8 BattleScript_SmokeBallEscape[]; extern const u8 BattleScript_RanAwayUsingMonAbility[]; extern const u8 BattleScript_GotAwaySafely[]; @@ -45,11 +38,6 @@ extern const u8 BattleScript_PrintFailedToRunString[]; extern const u8 BattleScript_PrintCantEscapeFromBattle[]; extern const u8 BattleScript_PrintFullBox[]; extern const u8 BattleScript_ActionSwitch[]; -extern const u8 BattleScript_82DAB35[]; -extern const u8 BattleScript_82DAB37[]; -extern const u8 BattleScript_82DAB44[]; -extern const u8 BattleScript_82DAB77[]; -extern const u8 BattleScript_82DABB8[]; extern const u8 BattleScript_Pausex20[]; extern const u8 BattleScript_LevelUp[]; extern const u8 BattleScript_RainContinuesOrEnds[]; @@ -62,13 +50,10 @@ extern const u8 BattleScript_SideStatusWoreOff[]; extern const u8 BattleScript_SafeguardProtected[]; extern const u8 BattleScript_SafeguardEnds[]; extern const u8 BattleScript_LeechSeedTurnDrain[]; -extern const u8 BattleScript_82DAD47[]; -extern const u8 BattleScript_82DAD4D[]; extern const u8 BattleScript_BideStoringEnergy[]; extern const u8 BattleScript_BideAttack[]; extern const u8 BattleScript_BideNoEnergyToAttack[]; extern const u8 BattleScript_SuccessForceOut[]; -extern const u8 BattleScript_82DADF1[]; extern const u8 BattleScript_MistProtected[]; extern const u8 BattleScript_RageIsBuilding[]; extern const u8 BattleScript_MoveUsedIsDisabled[]; @@ -79,32 +64,16 @@ extern const u8 BattleScript_SelectingUnusableMoveInPalace[]; extern const u8 BattleScript_EncoredNoMore[]; extern const u8 BattleScript_DestinyBondTakesLife[]; extern const u8 BattleScript_SpikesOnAttacker[]; -extern const u8 BattleScript_82DAE7A[]; extern const u8 BattleScript_SpikesOnTarget[]; -extern const u8 BattleScript_82DAEB1[]; extern const u8 BattleScript_SpikesOnFaintedBattler[]; -extern const u8 BattleScript_82DAEE8[]; -extern const u8 BattleScript_82DAEFE[]; extern const u8 BattleScript_PerishSongTakesLife[]; extern const u8 BattleScript_PerishSongCountGoesDown[]; extern const u8 BattleScript_AllStatsUp[]; -extern const u8 BattleScript_82DAF54[]; -extern const u8 BattleScript_82DAF72[]; -extern const u8 BattleScript_82DAF86[]; -extern const u8 BattleScript_82DAF9A[]; -extern const u8 BattleScript_82DAFAE[]; -extern const u8 BattleScript_82DAFC2[]; extern const u8 BattleScript_RapidSpinAway[]; extern const u8 BattleScript_WrapFree[]; extern const u8 BattleScript_LeechSeedFree[]; extern const u8 BattleScript_SpikesFree[]; extern const u8 BattleScript_MonTookFutureAttack[]; -extern const u8 BattleScript_82DB001[]; -extern const u8 BattleScript_82DB008[]; -extern const u8 BattleScript_82DB020[]; -extern const u8 BattleScript_82DB027[]; -extern const u8 BattleScript_82DB03F[]; -extern const u8 BattleScript_82DB058[]; extern const u8 BattleScript_NoMovesLeft[]; extern const u8 BattleScript_SelectingMoveWithNoPP[]; extern const u8 BattleScript_NoPPForMove[]; @@ -117,8 +86,6 @@ extern const u8 BattleScript_SelectingNotAllowedMoveTauntInPalace[]; extern const u8 BattleScript_WishComesTrue[]; extern const u8 BattleScript_IngrainTurnHeal[]; extern const u8 BattleScript_AtkDefDown[]; -extern const u8 BattleScript_82DB144[]; -extern const u8 BattleScript_82DB167[]; extern const u8 BattleScript_KnockedOff[]; extern const u8 BattleScript_MoveUsedIsImprisoned[]; extern const u8 BattleScript_SelectingImprisionedMove[]; @@ -129,15 +96,11 @@ extern const u8 BattleScript_SnatchedMove[]; extern const u8 BattleScript_EnduredMsg[]; extern const u8 BattleScript_OneHitKOMsg[]; extern const u8 BattleScript_SAtkDown2[]; -extern const u8 BattleScript_82DB1FE[]; extern const u8 BattleScript_FocusPunchSetUp[]; extern const u8 BattleScript_MoveUsedIsAsleep[]; extern const u8 BattleScript_MoveUsedWokeUp[]; extern const u8 BattleScript_MonWokeUpInUproar[]; extern const u8 BattleScript_PoisonTurnDmg[]; -extern const u8 BattleScript_82DB243[]; -extern const u8 BattleScript_82DB245[]; -extern const u8 BattleScript_82DB25E[]; extern const u8 BattleScript_BurnTurnDmg[]; extern const u8 BattleScript_MoveUsedIsFrozen[]; extern const u8 BattleScript_MoveUsedUnfroze[]; @@ -147,8 +110,6 @@ extern const u8 BattleScript_MoveUsedFlinched[]; extern const u8 BattleScript_PrintUproarOverTurns[]; extern const u8 BattleScript_ThrashConfuses[]; extern const u8 BattleScript_MoveUsedIsConfused[]; -extern const u8 BattleScript_82DB2D4[]; -extern const u8 BattleScript_82DB2FF[]; extern const u8 BattleScript_MoveUsedIsConfusedNoMore[]; extern const u8 BattleScript_PrintPayDayMoneyString[]; extern const u8 BattleScript_WrapTurnDmg[]; @@ -159,7 +120,6 @@ extern const u8 BattleScript_NightmareTurnDmg[]; extern const u8 BattleScript_CurseTurnDmg[]; extern const u8 BattleScript_TargetPRLZHeal[]; extern const u8 BattleScript_MoveEffectSleep[]; -extern const u8 BattleScript_82DB374[]; extern const u8 BattleScript_YawnMakesAsleep[]; extern const u8 BattleScript_MoveEffectPoison[]; extern const u8 BattleScript_MoveEffectBurn[]; @@ -170,7 +130,7 @@ extern const u8 BattleScript_MoveEffectToxic[]; extern const u8 BattleScript_MoveEffectPayDay[]; extern const u8 BattleScript_MoveEffectWrap[]; extern const u8 BattleScript_MoveEffectConfusion[]; -extern const u8 BattleScript_MoveEffectRecoil33[]; +extern const u8 BattleScript_MoveEffectRecoil[]; extern const u8 BattleScript_DoRecoil33[]; extern const u8 BattleScript_Recoil33End[]; extern const u8 BattleScript_ItemSteal[]; @@ -183,14 +143,8 @@ extern const u8 BattleScript_ShedSkinActivates[]; extern const u8 BattleScript_WeatherFormChanges[]; extern const u8 BattleScript_WeatherFormChangesLoop[]; extern const u8 BattleScript_CastformChange[]; -extern const u8 BattleScript_82DB4AF[]; -extern const u8 BattleScript_82DB4B8[]; -extern const u8 BattleScript_82DB4BE[]; -extern const u8 BattleScript_82DB4C1[]; -extern const u8 BattleScript_82DB4CD[]; -extern const u8 BattleScript_82DB510[]; -extern const u8 BattleScript_82DB51B[]; -extern const u8 BattleScript_82DB51C[]; +extern const u8 BattleScript_IntimidateActivatesEnd3[]; +extern const u8 BattleScript_IntimidateActivates[]; extern const u8 BattleScript_DroughtActivates[]; extern const u8 BattleScript_TookAttack[]; extern const u8 BattleScript_SturdyPreventsOHKO[]; @@ -218,12 +172,11 @@ extern const u8 BattleScript_ApplySecondaryEffect[]; extern const u8 BattleScript_SynchronizeActivates[]; extern const u8 BattleScript_NoItemSteal[]; extern const u8 BattleScript_AbilityCuredStatus[]; -extern const u8 BattleScript_82DB695[]; +extern const u8 BattleScript_IgnoresWhileAsleep[]; extern const u8 BattleScript_IgnoresAndUsesRandomMove[]; extern const u8 BattleScript_MoveUsedLoafingAround[]; -extern const u8 BattleScript_82DB6C7[]; extern const u8 BattleScript_IgnoresAndFallsAsleep[]; -extern const u8 BattleScript_82DB6F0[]; +extern const u8 BattleScript_IgnoresAndHitsItself[]; extern const u8 BattleScript_SubstituteFade[]; extern const u8 BattleScript_BerryCurePrlzEnd2[]; extern const u8 BattleScript_BerryCureParRet[]; @@ -249,18 +202,12 @@ extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[]; extern const u8 BattleScript_HangedOnMsg[]; extern const u8 BattleScript_BerryConfuseHealEnd2[]; extern const u8 BattleScript_BerryStatRaiseEnd2[]; -extern const u8 BattleScript_82DB85B[]; extern const u8 BattleScript_BerryFocusEnergyEnd2[]; extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[]; -extern const u8 BattleScript_82DB87D[]; -extern const u8 BattleScript_82DB881[]; -extern const u8 BattleScript_82DB887[]; -extern const u8 BattleScript_82DB89D[]; extern const u8 BattleScript_ArenaTurnBeginning[]; -extern const u8 BattleScript_82DB8E0[]; +extern const u8 BattleScript_82DB881[]; extern const u8 BattleScript_82DB8F3[]; -extern const u8 BattleScript_82DB973[]; -extern const u8 BattleScript_82DB992[]; +extern const u8 BattleScript_82DAA0B[]; extern const u8 BattleScript_AskIfWantsToForfeitMatch[]; extern const u8 BattleScript_PrintPlayerForfeited[]; extern const u8 BattleScript_PrintPlayerForfeitedLinkBattle[]; @@ -268,23 +215,12 @@ extern const u8 BattleScript_BallThrow[]; extern const u8 BattleScript_BallThrowByWally[]; extern const u8 BattleScript_SafariBallThrow[]; extern const u8 BattleScript_SuccessBallThrow[]; -extern const u8 BattleScript_82DBD92[]; -extern const u8 BattleScript_82DBDA5[]; -extern const u8 BattleScript_82DBDC2[]; -extern const u8 BattleScript_82DBDC3[]; extern const u8 BattleScript_WallyBallThrow[]; extern const u8 BattleScript_ShakeBallThrow[]; -extern const u8 BattleScript_82DBE01[]; extern const u8 BattleScript_TrainerBallBlock[]; -extern const u8 BattleScript_82DBE12[]; -extern const u8 BattleScript_82DBE1C[]; -extern const u8 BattleScript_82DBE4B[]; -extern const u8 BattleScript_82DBE6F[]; -extern const u8 BattleScript_82DBE91[]; extern const u8 BattleScript_RunByUsingItem[]; extern const u8 BattleScript_ActionWatchesCarefully[]; extern const u8 BattleScript_ActionGetNear[]; extern const u8 BattleScript_ActionThrowPokeblock[]; -extern const u8 BattleScript_82DBEE3[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_tower.h b/include/battle_tower.h index d7ff70006..5879a73bb 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -6,7 +6,7 @@ struct RSBattleTowerRecord /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 /*0x01*/ u8 trainerClass; /*0x02*/ u16 winStreak; - /*0x04*/ u8 name[8]; + /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 trainerId[4]; /*0x10*/ struct { u16 easyChat[6]; @@ -22,14 +22,16 @@ union BattleTowerRecord struct EmeraldBattleTowerRecord emerald; }; +#define FRONTIER_TRAINER_NAME_LENGTH 7 + struct BattleFrontierTrainer { u32 facilityClass; - u8 trainerName[8]; + u8 trainerName[FRONTIER_TRAINER_NAME_LENGTH + 1]; u16 speechBefore[6]; u16 speechWin[6]; u16 speechLose[6]; - u16 *btMonPool; + const u16 *btMonPool; }; struct FacilityMon diff --git a/include/battle_util.h b/include/battle_util.h index be9b5f1fe..b3fff196e 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -12,7 +12,7 @@ #define ABILITYEFFECT_ENDTURN 0x1 #define ABILITYEFFECT_MOVES_BLOCK 0x2 #define ABILITYEFFECT_ABSORBING 0x3 -#define ABILITYEFFECT_CONTACT 0x4 +#define ABILITYEFFECT_MOVE_END 0x4 #define ABILITYEFFECT_IMMUNITY 0x5 #define ABILITYEFFECT_FORECAST 0x6 #define ABILITYEFFECT_SYNCHRONIZE 0x7 @@ -35,6 +35,8 @@ #define ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0)) #define ITEMEFFECT_ON_SWITCH_IN 0x0 +#define ITEMEFFECT_MOVE_END 0x3 +#define ITEMEFFECT_KINGSROCK_SHELLBELL 0x4 #define WEATHER_HAS_EFFECT ((!ABILITY_ON_FIELD(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD(ABILITY_AIR_LOCK))) #define WEATHER_HAS_EFFECT2 ((!ABILITY_ON_FIELD2(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD2(ABILITY_AIR_LOCK))) diff --git a/include/battle_util2.h b/include/battle_util2.h index 3954e42dc..336698ea3 100644 --- a/include/battle_util2.h +++ b/include/battle_util2.h @@ -3,8 +3,8 @@ void AllocateBattleResources(void); void FreeBattleResources(void); -void AdjustFriendshipOnBattleFaint(u8 bank); -void sub_80571DC(u8 bank, u8 arg1); -u32 sub_805725C(u8 bank); +void AdjustFriendshipOnBattleFaint(u8 battler); +void sub_80571DC(u8 battler, u8 arg1); +u32 sub_805725C(u8 battler); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/constants/battle.h b/include/constants/battle.h index b3f9d919a..acb0f6689 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -46,7 +46,7 @@ // Battle Type Flags #define BATTLE_TYPE_DOUBLE 0x0001 #define BATTLE_TYPE_LINK 0x0002 -#define BATTLE_TYPE_WILD 0x0004 +#define BATTLE_TYPE_IS_MASTER 0x0004 // In not-link battles, it's always set. #define BATTLE_TYPE_TRAINER 0x0008 #define BATTLE_TYPE_FIRST_BATTLE 0x0010 #define BATTLE_TYPE_20 0x0020 @@ -70,7 +70,7 @@ #define BATTLE_TYPE_x800000 0x800000 #define BATTLE_TYPE_RECORDED 0x1000000 #define BATTLE_TYPE_x2000000 0x2000000 -#define BATTLE_TYPE_x4000000 0x4000000 +#define BATTLE_TYPE_TRAINER_HILL 0x4000000 #define BATTLE_TYPE_SECRET_BASE 0x8000000 #define BATTLE_TYPE_GROUDON 0x10000000 #define BATTLE_TYPE_KYOGRE 0x20000000 @@ -252,7 +252,7 @@ #define MOVE_EFFECT_RAPIDSPIN 0x23 #define MOVE_EFFECT_REMOVE_PARALYSIS 0x24 #define MOVE_EFFECT_ATK_DEF_DOWN 0x25 -#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26 +#define MOVE_EFFECT_RECOIL_33 0x26 #define MOVE_EFFECT_ATK_PLUS_2 0x27 #define MOVE_EFFECT_DEF_PLUS_2 0x28 #define MOVE_EFFECT_SPD_PLUS_2 0x29 @@ -281,4 +281,16 @@ #define MOVE_EFFECT_AFFECTS_USER 0x40 #define MOVE_EFFECT_CERTAIN 0x80 +// Battle terrain defines for gBattleTerrain. +#define BATTLE_TERRAIN_GRASS 0 +#define BATTLE_TERRAIN_LONG_GRASS 1 +#define BATTLE_TERRAIN_SAND 2 +#define BATTLE_TERRAIN_UNDERWATER 3 +#define BATTLE_TERRAIN_WATER 4 +#define BATTLE_TERRAIN_POND 5 +#define BATTLE_TERRAIN_MOUNTAIN 6 +#define BATTLE_TERRAIN_CAVE 7 +#define BATTLE_TERRAIN_BUILDING 8 +#define BATTLE_TERRAIN_PLAIN 9 + #endif // GUARD_CONSTANTS_BATTLE_H diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h index 7d2c70307..4c3a45dc6 100644 --- a/include/constants/battle_ai.h +++ b/include/constants/battle_ai.h @@ -35,8 +35,8 @@ // script's table id to bit #define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0) -#define AI_SCRIPT_CHECK_VIABILITY (1 << 1) -#define AI_SCRIPT_TRY_TO_FAINT (1 << 2) +#define AI_SCRIPT_TRY_TO_FAINT (1 << 1) +#define AI_SCRIPT_CHECK_VIABILITY (1 << 2) #define AI_SCRIPT_SETUP_FIRST_TURN (1 << 3) #define AI_SCRIPT_RISKY (1 << 4) #define AI_SCRIPT_PREFER_STRONGEST_MOVE (1 << 5) diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 270ac55e0..2b21aad9e 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -1,6 +1,312 @@ #ifndef GUARD_CONSTANTS_BATTLE_ANIM_H #define GUARD_CONSTANTS_BATTLE_ANIM_H +// Sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. +#define GET_TRUE_SPRITE_INDEX(i) ((i - ANIM_SPRITES_START)) + +// Particle ids. +#define ANIM_SPRITES_START 10000 + +#define ANIM_TAG_BONE (ANIM_SPRITES_START + 0) +#define ANIM_TAG_SPARK (ANIM_SPRITES_START + 1) +#define ANIM_TAG_PENCIL (ANIM_SPRITES_START + 2) +#define ANIM_TAG_AIR_WAVE (ANIM_SPRITES_START + 3) +#define ANIM_TAG_004 (ANIM_SPRITES_START + 4) // ? +#define ANIM_TAG_SWORD (ANIM_SPRITES_START + 5) +#define ANIM_TAG_SEED (ANIM_SPRITES_START + 6) +#define ANIM_TAG_007 (ANIM_SPRITES_START + 7) // ? +#define ANIM_TAG_008 (ANIM_SPRITES_START + 8) // ? +#define ANIM_TAG_GUST (ANIM_SPRITES_START + 9) +#define ANIM_TAG_ICE_CUBE (ANIM_SPRITES_START + 10) +#define ANIM_TAG_SPARK_2 (ANIM_SPRITES_START + 11) +#define ANIM_TAG_012 (ANIM_SPRITES_START + 12) // ? +#define ANIM_TAG_YELLOW_BALL (ANIM_SPRITES_START + 13) +#define ANIM_TAG_LOCK_ON (ANIM_SPRITES_START + 14) +#define ANIM_TAG_TIED_BAG (ANIM_SPRITES_START + 15) +#define ANIM_TAG_BLACK_SMOKE (ANIM_SPRITES_START + 16) +#define ANIM_TAG_BLACK_BALL (ANIM_SPRITES_START + 17) +#define ANIM_TAG_CONVERSION (ANIM_SPRITES_START + 18) +#define ANIM_TAG_019 (ANIM_SPRITES_START + 19) // ? +#define ANIM_TAG_HORN_HIT (ANIM_SPRITES_START + 20) +#define ANIM_TAG_021 (ANIM_SPRITES_START + 21) // ? +#define ANIM_TAG_022 (ANIM_SPRITES_START + 22) // ? +#define ANIM_TAG_023 (ANIM_SPRITES_START + 23) // ? +#define ANIM_TAG_024 (ANIM_SPRITES_START + 24) // ? +#define ANIM_TAG_025 (ANIM_SPRITES_START + 25) // ? +#define ANIM_TAG_026 (ANIM_SPRITES_START + 26) // ? +#define ANIM_TAG_GLARE (ANIM_SPRITES_START + 27) +#define ANIM_TAG_028 (ANIM_SPRITES_START + 28) // ? +#define ANIM_TAG_SMALL_EMBER (ANIM_SPRITES_START + 29) +#define ANIM_TAG_GRAY_SMOKE (ANIM_SPRITES_START + 30) +#define ANIM_TAG_BLUE_STAR (ANIM_SPRITES_START + 31) +#define ANIM_TAG_032 (ANIM_SPRITES_START + 32) // ? +#define ANIM_TAG_FIRE (ANIM_SPRITES_START + 33) +#define ANIM_TAG_034 (ANIM_SPRITES_START + 34) // ? +#define ANIM_TAG_035 (ANIM_SPRITES_START + 35) // ? +#define ANIM_TAG_036 (ANIM_SPRITES_START + 36) // ? +#define ANIM_TAG_LIGHTNING (ANIM_SPRITES_START + 37) +#define ANIM_TAG_038 (ANIM_SPRITES_START + 38) // ? +#define ANIM_TAG_CLAW_SLASH (ANIM_SPRITES_START + 39) +#define ANIM_TAG_040 (ANIM_SPRITES_START + 40) // ? +#define ANIM_TAG_041 (ANIM_SPRITES_START + 41) // ? +#define ANIM_TAG_042 (ANIM_SPRITES_START + 42) // ? +#define ANIM_TAG_ICE_CHUNK (ANIM_SPRITES_START + 43) +#define ANIM_TAG_044 (ANIM_SPRITES_START + 44) // ? +#define ANIM_TAG_PINK_HEART (ANIM_SPRITES_START + 45) // ? +#define ANIM_TAG_046 (ANIM_SPRITES_START + 46) // ? +#define ANIM_TAG_047 (ANIM_SPRITES_START + 47) // ? +#define ANIM_TAG_048 (ANIM_SPRITES_START + 48) // ? +#define ANIM_TAG_SPARKLE (ANIM_SPRITES_START + 49) +#define ANIM_TAG_050 (ANIM_SPRITES_START + 50) // ? +#define ANIM_TAG_051 (ANIM_SPRITES_START + 51) +#define ANIM_TAG_052 (ANIM_SPRITES_START + 52) +#define ANIM_TAG_053 (ANIM_SPRITES_START + 53) +#define ANIM_TAG_054 (ANIM_SPRITES_START + 54) +#define ANIM_TAG_RED_FIST (ANIM_SPRITES_START + 55) +#define ANIM_TAG_056 (ANIM_SPRITES_START + 56) +#define ANIM_TAG_057 (ANIM_SPRITES_START + 57) +#define ANIM_TAG_058 (ANIM_SPRITES_START + 58) +#define ANIM_TAG_059 (ANIM_SPRITES_START + 59) +#define ANIM_TAG_060 (ANIM_SPRITES_START + 60) +#define ANIM_TAG_061 (ANIM_SPRITES_START + 61) +#define ANIM_TAG_062 (ANIM_SPRITES_START + 62) +#define ANIM_TAG_063 (ANIM_SPRITES_START + 63) +#define ANIM_TAG_064 (ANIM_SPRITES_START + 64) +#define ANIM_TAG_065 (ANIM_SPRITES_START + 65) +#define ANIM_TAG_066 (ANIM_SPRITES_START + 66) +#define ANIM_TAG_067 (ANIM_SPRITES_START + 67) +#define ANIM_TAG_068 (ANIM_SPRITES_START + 68) +#define ANIM_TAG_069 (ANIM_SPRITES_START + 69) +#define ANIM_TAG_070 (ANIM_SPRITES_START + 70) +#define ANIM_TAG_071 (ANIM_SPRITES_START + 71) +#define ANIM_TAG_MUSIC_NOTES2 (ANIM_SPRITES_START + 72) +#define ANIM_TAG_DUCK (ANIM_SPRITES_START + 73) +#define ANIM_TAG_074 (ANIM_SPRITES_START + 74) +#define ANIM_TAG_075 (ANIM_SPRITES_START + 75) +#define ANIM_TAG_076 (ANIM_SPRITES_START + 76) +#define ANIM_TAG_077 (ANIM_SPRITES_START + 77) +#define ANIM_TAG_078 (ANIM_SPRITES_START + 78) +#define ANIM_TAG_079 (ANIM_SPRITES_START + 79) +#define ANIM_TAG_080 (ANIM_SPRITES_START + 80) +#define ANIM_TAG_081 (ANIM_SPRITES_START + 81) +#define ANIM_TAG_082 (ANIM_SPRITES_START + 82) +#define ANIM_TAG_083 (ANIM_SPRITES_START + 83) +#define ANIM_TAG_084 (ANIM_SPRITES_START + 84) +#define ANIM_TAG_085 (ANIM_SPRITES_START + 85) +#define ANIM_TAG_086 (ANIM_SPRITES_START + 86) +#define ANIM_TAG_ANGER (ANIM_SPRITES_START + 87) +#define ANIM_TAG_088 (ANIM_SPRITES_START + 88) +#define ANIM_TAG_089 (ANIM_SPRITES_START + 89) +#define ANIM_TAG_090 (ANIM_SPRITES_START + 90) +#define ANIM_TAG_091 (ANIM_SPRITES_START + 91) +#define ANIM_TAG_092 (ANIM_SPRITES_START + 92) +#define ANIM_TAG_093 (ANIM_SPRITES_START + 93) +#define ANIM_TAG_094 (ANIM_SPRITES_START + 94) +#define ANIM_TAG_095 (ANIM_SPRITES_START + 95) +#define ANIM_TAG_096 (ANIM_SPRITES_START + 96) +#define ANIM_TAG_BENT_SPOON (ANIM_SPRITES_START + 97) +#define ANIM_TAG_098 (ANIM_SPRITES_START + 98) +#define ANIM_TAG_MILK_BOTTLE (ANIM_SPRITES_START + 99) +#define ANIM_TAG_100 (ANIM_SPRITES_START + 100) +#define ANIM_TAG_101 (ANIM_SPRITES_START + 101) +#define ANIM_TAG_102 (ANIM_SPRITES_START + 102) +#define ANIM_TAG_103 (ANIM_SPRITES_START + 103) +#define ANIM_TAG_104 (ANIM_SPRITES_START + 104) +#define ANIM_TAG_105 (ANIM_SPRITES_START + 105) +#define ANIM_TAG_106 (ANIM_SPRITES_START + 106) +#define ANIM_TAG_107 (ANIM_SPRITES_START + 107) +#define ANIM_TAG_108 (ANIM_SPRITES_START + 108) +#define ANIM_TAG_109 (ANIM_SPRITES_START + 109) +#define ANIM_TAG_110 (ANIM_SPRITES_START + 110) +#define ANIM_TAG_111 (ANIM_SPRITES_START + 111) +#define ANIM_TAG_112 (ANIM_SPRITES_START + 112) +#define ANIM_TAG_113 (ANIM_SPRITES_START + 113) +#define ANIM_TAG_114 (ANIM_SPRITES_START + 114) +#define ANIM_TAG_115 (ANIM_SPRITES_START + 115) +#define ANIM_TAG_116 (ANIM_SPRITES_START + 116) +#define ANIM_TAG_117 (ANIM_SPRITES_START + 117) +#define ANIM_TAG_118 (ANIM_SPRITES_START + 118) +#define ANIM_TAG_119 (ANIM_SPRITES_START + 119) +#define ANIM_TAG_ITEM_BAG2 (ANIM_SPRITES_START + 120) +#define ANIM_TAG_121 (ANIM_SPRITES_START + 121) +#define ANIM_TAG_122 (ANIM_SPRITES_START + 122) +#define ANIM_TAG_123 (ANIM_SPRITES_START + 123) +#define ANIM_TAG_124 (ANIM_SPRITES_START + 124) +#define ANIM_TAG_125 (ANIM_SPRITES_START + 125) +#define ANIM_TAG_126 (ANIM_SPRITES_START + 126) +#define ANIM_TAG_127 (ANIM_SPRITES_START + 127) +#define ANIM_TAG_128 (ANIM_SPRITES_START + 128) +#define ANIM_TAG_129 (ANIM_SPRITES_START + 129) +#define ANIM_TAG_130 (ANIM_SPRITES_START + 130) +#define ANIM_TAG_131 (ANIM_SPRITES_START + 131) +#define ANIM_TAG_132 (ANIM_SPRITES_START + 132) +#define ANIM_TAG_133 (ANIM_SPRITES_START + 133) +#define ANIM_TAG_134 (ANIM_SPRITES_START + 134) +#define ANIM_TAG_135 (ANIM_SPRITES_START + 135) +#define ANIM_TAG_136 (ANIM_SPRITES_START + 136) +#define ANIM_TAG_137 (ANIM_SPRITES_START + 137) +#define ANIM_TAG_138 (ANIM_SPRITES_START + 138) +#define ANIM_TAG_139 (ANIM_SPRITES_START + 139) +#define ANIM_TAG_140 (ANIM_SPRITES_START + 140) +#define ANIM_TAG_141 (ANIM_SPRITES_START + 141) +#define ANIM_TAG_142 (ANIM_SPRITES_START + 142) +#define ANIM_TAG_143 (ANIM_SPRITES_START + 143) +#define ANIM_TAG_144 (ANIM_SPRITES_START + 144) +#define ANIM_TAG_145 (ANIM_SPRITES_START + 145) +#define ANIM_TAG_146 (ANIM_SPRITES_START + 146) +#define ANIM_TAG_147 (ANIM_SPRITES_START + 147) +#define ANIM_TAG_148 (ANIM_SPRITES_START + 148) +#define ANIM_TAG_149 (ANIM_SPRITES_START + 149) +#define ANIM_TAG_POISON_BUBBLE (ANIM_SPRITES_START + 150) +#define ANIM_TAG_TOXIC_BUBBLE (ANIM_SPRITES_START + 151) +#define ANIM_TAG_152 (ANIM_SPRITES_START + 152) +#define ANIM_TAG_153 (ANIM_SPRITES_START + 153) +#define ANIM_TAG_154 (ANIM_SPRITES_START + 154) +#define ANIM_TAG_155 (ANIM_SPRITES_START + 155) +#define ANIM_TAG_156 (ANIM_SPRITES_START + 156) +#define ANIM_TAG_157 (ANIM_SPRITES_START + 157) +#define ANIM_TAG_158 (ANIM_SPRITES_START + 158) +#define ANIM_TAG_159 (ANIM_SPRITES_START + 159) +#define ANIM_TAG_160 (ANIM_SPRITES_START + 160) +#define ANIM_TAG_161 (ANIM_SPRITES_START + 161) +#define ANIM_TAG_162 (ANIM_SPRITES_START + 162) +#define ANIM_TAG_163 (ANIM_SPRITES_START + 163) +#define ANIM_TAG_164 (ANIM_SPRITES_START + 164) +#define ANIM_TAG_165 (ANIM_SPRITES_START + 165) +#define ANIM_TAG_166 (ANIM_SPRITES_START + 166) +#define ANIM_TAG_167 (ANIM_SPRITES_START + 167) +#define ANIM_TAG_168 (ANIM_SPRITES_START + 168) +#define ANIM_TAG_169 (ANIM_SPRITES_START + 169) +#define ANIM_TAG_170 (ANIM_SPRITES_START + 170) +#define ANIM_TAG_171 (ANIM_SPRITES_START + 171) +#define ANIM_TAG_172 (ANIM_SPRITES_START + 172) +#define ANIM_TAG_173 (ANIM_SPRITES_START + 173) +#define ANIM_TAG_174 (ANIM_SPRITES_START + 174) +#define ANIM_TAG_175 (ANIM_SPRITES_START + 175) +#define ANIM_TAG_176 (ANIM_SPRITES_START + 176) +#define ANIM_TAG_177 (ANIM_SPRITES_START + 177) +#define ANIM_TAG_178 (ANIM_SPRITES_START + 178) +#define ANIM_TAG_179 (ANIM_SPRITES_START + 179) +#define ANIM_TAG_WEB_THREAD (ANIM_SPRITES_START + 180) +#define ANIM_TAG_SPIDER_WEB (ANIM_SPRITES_START + 181) +#define ANIM_TAG_182 (ANIM_SPRITES_START + 182) +#define ANIM_TAG_183 (ANIM_SPRITES_START + 183) +#define ANIM_TAG_184 (ANIM_SPRITES_START + 184) +#define ANIM_TAG_185 (ANIM_SPRITES_START + 185) +#define ANIM_TAG_186 (ANIM_SPRITES_START + 186) +#define ANIM_TAG_EYE (ANIM_SPRITES_START + 187) +#define ANIM_TAG_188 (ANIM_SPRITES_START + 188) +#define ANIM_TAG_189 (ANIM_SPRITES_START + 189) +#define ANIM_TAG_OPENING_EYE (ANIM_SPRITES_START + 190) +#define ANIM_TAG_191 (ANIM_SPRITES_START + 191) +#define ANIM_TAG_192 (ANIM_SPRITES_START + 192) +#define ANIM_TAG_193 (ANIM_SPRITES_START + 193) +#define ANIM_TAG_MOON (ANIM_SPRITES_START + 194) +#define ANIM_TAG_GREEN_SPARKLE (ANIM_SPRITES_START + 195) +#define ANIM_TAG_196 (ANIM_SPRITES_START + 196) +#define ANIM_TAG_197 (ANIM_SPRITES_START + 197) +#define ANIM_TAG_EXPLOSION (ANIM_SPRITES_START + 198) +#define ANIM_TAG_NAIL (ANIM_SPRITES_START + 199) +#define ANIM_TAG_200 (ANIM_SPRITES_START + 200) +#define ANIM_TAG_201 (ANIM_SPRITES_START + 201) +#define ANIM_TAG_BREAKING_EGG (ANIM_SPRITES_START + 202) +#define ANIM_TAG_203 (ANIM_SPRITES_START + 203) +#define ANIM_TAG_204 (ANIM_SPRITES_START + 204) +#define ANIM_TAG_BELL (ANIM_SPRITES_START + 205) +#define ANIM_TAG_MUSIC_NOTES (ANIM_SPRITES_START + 206) +#define ANIM_TAG_207 (ANIM_SPRITES_START + 207) +#define ANIM_TAG_208 (ANIM_SPRITES_START + 208) +#define ANIM_TAG_209 (ANIM_SPRITES_START + 209) +#define ANIM_TAG_PURPLE_HEART (ANIM_SPRITES_START + 210) +#define ANIM_TAG_211 (ANIM_SPRITES_START + 211) +#define ANIM_TAG_212 (ANIM_SPRITES_START + 212) +#define ANIM_TAG_213 (ANIM_SPRITES_START + 213) +#define ANIM_TAG_214 (ANIM_SPRITES_START + 214) +#define ANIM_TAG_215 (ANIM_SPRITES_START + 215) +#define ANIM_TAG_216 (ANIM_SPRITES_START + 216) +#define ANIM_TAG_217 (ANIM_SPRITES_START + 217) +#define ANIM_TAG_218 (ANIM_SPRITES_START + 218) +#define ANIM_TAG_219 (ANIM_SPRITES_START + 219) +#define ANIM_TAG_ANGEL (ANIM_SPRITES_START + 220) +#define ANIM_TAG_EVIL_ANGEL (ANIM_SPRITES_START + 221) +#define ANIM_TAG_222 (ANIM_SPRITES_START + 222) +#define ANIM_TAG_223 (ANIM_SPRITES_START + 223) +#define ANIM_TAG_ITEM_BAG (ANIM_SPRITES_START + 224) +#define ANIM_TAG_225 (ANIM_SPRITES_START + 225) +#define ANIM_TAG_226 (ANIM_SPRITES_START + 226) +#define ANIM_TAG_227 (ANIM_SPRITES_START + 227) +#define ANIM_TAG_LETTER_Z (ANIM_SPRITES_START + 228) +#define ANIM_TAG_229 (ANIM_SPRITES_START + 229) +#define ANIM_TAG_TRI_FORCE_TRIANGLE (ANIM_SPRITES_START + 230) +#define ANIM_TAG_231 (ANIM_SPRITES_START + 231) +#define ANIM_TAG_232 (ANIM_SPRITES_START + 232) +#define ANIM_TAG_233 (ANIM_SPRITES_START + 233) +#define ANIM_TAG_234 (ANIM_SPRITES_START + 234) +#define ANIM_TAG_235 (ANIM_SPRITES_START + 235) +#define ANIM_TAG_236 (ANIM_SPRITES_START + 236) +#define ANIM_TAG_237 (ANIM_SPRITES_START + 237) +#define ANIM_TAG_238 (ANIM_SPRITES_START + 238) +#define ANIM_TAG_239 (ANIM_SPRITES_START + 239) +#define ANIM_TAG_240 (ANIM_SPRITES_START + 240) +#define ANIM_TAG_GREEN_STAR (ANIM_SPRITES_START + 241) +#define ANIM_TAG_242 (ANIM_SPRITES_START + 242) +#define ANIM_TAG_243 (ANIM_SPRITES_START + 243) +#define ANIM_TAG_244 (ANIM_SPRITES_START + 244) +#define ANIM_TAG_245 (ANIM_SPRITES_START + 245) +#define ANIM_TAG_246 (ANIM_SPRITES_START + 246) +#define ANIM_TAG_HAND (ANIM_SPRITES_START + 247) +#define ANIM_TAG_248 (ANIM_SPRITES_START + 248) +#define ANIM_TAG_249 (ANIM_SPRITES_START + 249) +#define ANIM_TAG_X_SIGN (ANIM_SPRITES_START + 250) +#define ANIM_TAG_251 (ANIM_SPRITES_START + 251) +#define ANIM_TAG_252 (ANIM_SPRITES_START + 252) +#define ANIM_TAG_253 (ANIM_SPRITES_START + 253) +#define ANIM_TAG_254 (ANIM_SPRITES_START + 254) +#define ANIM_TAG_255 (ANIM_SPRITES_START + 255) +#define ANIM_TAG_256 (ANIM_SPRITES_START + 256) +#define ANIM_TAG_257 (ANIM_SPRITES_START + 257) +#define ANIM_TAG_MAGNIFYING_GLASS (ANIM_SPRITES_START + 258) +#define ANIM_TAG_259 (ANIM_SPRITES_START + 259) +#define ANIM_TAG_260 (ANIM_SPRITES_START + 260) +#define ANIM_TAG_261 (ANIM_SPRITES_START + 261) +#define ANIM_TAG_262 (ANIM_SPRITES_START + 262) +#define ANIM_TAG_263 (ANIM_SPRITES_START + 263) +#define ANIM_TAG_264 (ANIM_SPRITES_START + 264) +#define ANIM_TAG_265 (ANIM_SPRITES_START + 265) +#define ANIM_TAG_266 (ANIM_SPRITES_START + 266) +#define ANIM_TAG_267 (ANIM_SPRITES_START + 267) +#define ANIM_TAG_268 (ANIM_SPRITES_START + 268) +#define ANIM_TAG_269 (ANIM_SPRITES_START + 269) +#define ANIM_TAG_270 (ANIM_SPRITES_START + 270) +#define ANIM_TAG_271 (ANIM_SPRITES_START + 271) +#define ANIM_TAG_272 (ANIM_SPRITES_START + 272) +#define ANIM_TAG_273 (ANIM_SPRITES_START + 273) +#define ANIM_TAG_274 (ANIM_SPRITES_START + 274) +#define ANIM_TAG_275 (ANIM_SPRITES_START + 275) +#define ANIM_TAG_276 (ANIM_SPRITES_START + 276) +#define ANIM_TAG_277 (ANIM_SPRITES_START + 277) +#define ANIM_TAG_RECYCLE (ANIM_SPRITES_START + 278) +#define ANIM_TAG_279 (ANIM_SPRITES_START + 279) +#define ANIM_TAG_PROTECT (ANIM_SPRITES_START + 280) +#define ANIM_TAG_281 (ANIM_SPRITES_START + 281) +#define ANIM_TAG_282 (ANIM_SPRITES_START + 282) +#define ANIM_TAG_283 (ANIM_SPRITES_START + 283) +#define ANIM_TAG_284 (ANIM_SPRITES_START + 284) +#define ANIM_TAG_285 (ANIM_SPRITES_START + 285) +#define ANIM_TAG_286 (ANIM_SPRITES_START + 286) +#define ANIM_TAG_287 (ANIM_SPRITES_START + 287) +#define ANIM_TAG_288 (ANIM_SPRITES_START + 288) +#define ANIM_TAG_289 (ANIM_SPRITES_START + 289) +#define ANIM_TAG_290 (ANIM_SPRITES_START + 290) +#define ANIM_TAG_291 (ANIM_SPRITES_START + 291) +#define ANIM_TAG_292 (ANIM_SPRITES_START + 292) +#define ANIM_TAG_293 (ANIM_SPRITES_START + 293) +#define ANIM_TAG_294 (ANIM_SPRITES_START + 294) +#define ANIM_TAG_295 (ANIM_SPRITES_START + 295) +#define ANIM_TAG_296 (ANIM_SPRITES_START + 296) +#define ANIM_TAG_297 (ANIM_SPRITES_START + 297) +#define ANIM_TAG_298 (ANIM_SPRITES_START + 298) + // battlers #define ANIM_ATTACKER 0 #define ANIM_TARGET 1 @@ -41,7 +347,7 @@ #define B_ANIM_STATS_CHANGE 0x1 #define B_ANIM_SUBSTITUTE_FADE 0x2 #define B_ANIM_SUBSTITUTE_APPEAR 0x3 -#define B_ANIM_x4 0x4 +#define B_ANIM_POKEBLOCK_THROW 0x4 #define B_ANIM_ITEM_KNOCKOFF 0x5 #define B_ANIM_TURN_TRAP 0x6 #define B_ANIM_ITEM_EFFECT 0x7 @@ -57,7 +363,7 @@ #define B_ANIM_SNATCH_MOVE 0x11 #define B_ANIM_FUTURE_SIGHT_HIT 0x12 #define B_ANIM_DOOM_DESIRE_HIT 0x13 -#define B_ANIM_x14 0x14 +#define B_ANIM_FOCUS_PUNCH_SETUP 0x14 #define B_ANIM_INGRAIN_HEAL 0x15 #define B_ANIM_WISH_HEAL 0x16 @@ -82,4 +388,22 @@ #define B_ANIM_STATUS_NIGHTMARE 0x8 #define B_ANIM_STATUS_WRAPPED 0x9 // does not actually exist +// Most tasks return a value to gBattleAnimArgs[7]. +#define ARG_RET_ID 0x7 + +// Trapping Wrap-like moves end turn animation. +#define TRAP_ANIM_BIND 0 +#define TRAP_ANIM_WRAP 0 +#define TRAP_ANIM_FIRE_SPIN 1 +#define TRAP_ANIM_WHIRLPOOL 2 +#define TRAP_ANIM_CLAMP 3 +#define TRAP_ANIM_SAND_TOMB 4 + +// Weather defines for battle animation scripts. +#define ANIM_WEATHER_NONE 0 +#define ANIM_WEATHER_SUN 1 +#define ANIM_WEATHER_RAIN 2 +#define ANIM_WEATHER_SANDSTORM 3 +#define ANIM_WEATHER_HAIL 4 + #endif // GUARD_CONSTANTS_BATTLE_ANIM_H diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index fddcdc8fe..1cd750a3d 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -13,6 +13,7 @@ // Battle Frontier lvl modes. #define FRONTIER_LVL_50 0 #define FRONTIER_LVL_OPEN 1 +#define FRONTIER_LVL_TENT 2 // Battle Frontier battle modes. #define FRONTIER_MODE_SINGLES 0 diff --git a/include/metatile_behaviors.h b/include/constants/metatile_behaviors.h index dd3a8b4f4..d8d75066c 100644..100755 --- a/include/metatile_behaviors.h +++ b/include/constants/metatile_behaviors.h @@ -2,16 +2,17 @@ #define GUARD_METATILE_BEHAVIORS #define MB_NORMAL 0x00 +#define MB_SECRET_BASE_WALL 0x01 #define MB_TALL_GRASS 0x02 #define MB_LONG_GRASS 0x03 -#define MB_04 0x04 -#define MB_05 0x05 +#define MB_UNUSED_04 0x04 +#define MB_UNUSED_05 0x05 #define MB_DEEP_SAND 0x06 #define MB_SHORT_GRASS 0x07 -#define MB_CAVE 0x08 +#define MB_UNUSED_CAVE 0x08 #define MB_LONG_GRASS_SOUTH_EDGE 0x09 #define MB_NO_RUNNING 0x0A -#define MB_0B 0x0B +#define MB_INDOOR_ENCOUNTER 0x0B #define MB_MOUNTAIN_TOP 0x0C #define MB_BATTLE_PYRAMID_WARP 0x0D #define MB_MOSSDEEP_GYM_WARP 0x0E @@ -24,22 +25,30 @@ #define MB_OCEAN_WATER 0x15 #define MB_PUDDLE 0x16 #define MB_SHALLOW_WATER 0x17 -#define MB_18 0x18 +#define MB_UNUSED_SOOTOPOLIS_DEEP_WATER 0x18 #define MB_NO_SURFACING 0x19 -#define MB_1A 0x1A +#define MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2 0x1A #define MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B #define MB_SHOAL_CAVE_ENTRANCE 0x1C +#define MB_UNUSED_1D 0x1D +#define MB_UNUSED_1E 0x1E +#define MB_UNUSED_1F 0x1F #define MB_ICE 0x20 #define MB_SAND 0x21 #define MB_SEAWEED 0x22 +#define MB_UNUSED_23 0x23 #define MB_ASHGRASS 0x24 -#define MB_25 0x25 +#define MB_FOOTPRINTS 0x25 #define MB_THIN_ICE 0x26 #define MB_CRACKED_ICE 0x27 #define MB_HOT_SPRINGS 0x28 #define MB_LAVARIDGE_GYM_B1F_WARP 0x29 #define MB_SEAWEED_NO_SURFACING 0x2A #define MB_REFLECTION_UNDER_BRIDGE 0x2B +#define MB_UNUSED_2C 0x2C +#define MB_UNUSED_2D 0x2D +#define MB_UNUSED_2E 0x2E +#define MB_UNUSED_2F 0x2F #define MB_IMPASSABLE_EAST 0x30 #define MB_IMPASSABLE_WEST 0x31 #define MB_IMPASSABLE_NORTH 0x32 @@ -52,6 +61,8 @@ #define MB_JUMP_WEST 0x39 #define MB_JUMP_NORTH 0x3A #define MB_JUMP_SOUTH 0x3B +#define MB_JUMP_NORTHEAST 0x3C +#define MB_JUMP_NORTHWEST 0x3D #define MB_JUMP_SOUTHEAST 0x3E #define MB_JUMP_SOUTHWEST 0x3F #define MB_WALK_EAST 0x40 @@ -63,10 +74,29 @@ #define MB_SLIDE_NORTH 0x46 #define MB_SLIDE_SOUTH 0x47 #define MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48 +#define MB_UNUSED_49 0x49 +#define MB_UNUSED_4A 0x4A +#define MB_UNUSED_4B 0x4B +#define MB_UNUSED_4C 0x4C +#define MB_UNUSED_4D 0x4D +#define MB_UNUSED_4E 0x4E +#define MB_UNUSED_4F 0x4F #define MB_EASTWARD_CURRENT 0x50 #define MB_WESTWARD_CURRENT 0x51 #define MB_NORTHWARD_CURRENT 0x52 #define MB_SOUTHWARD_CURRENT 0x53 +#define MB_UNUSED_54 0x54 +#define MB_UNUSED_55 0x55 +#define MB_UNUSED_56 0x56 +#define MB_UNUSED_57 0x57 +#define MB_UNUSED_58 0x58 +#define MB_UNUSED_59 0x59 +#define MB_UNUSED_5A 0x5A +#define MB_UNUSED_5B 0x5B +#define MB_UNUSED_5C 0x5C +#define MB_UNUSED_5D 0x5D +#define MB_UNUSED_5E 0x5E +#define MB_UNUSED_5F 0x5F #define MB_NON_ANIMATED_DOOR 0x60 #define MB_LADDER 0x61 #define MB_EAST_ARROW_WARP 0x62 @@ -82,8 +112,9 @@ #define MB_WATER_DOOR 0x6C #define MB_WATER_SOUTH_ARROW_WARP 0x6D #define MB_DEEP_SOUTH_WARP 0x6E +#define MB_UNUSED_6F 0x6F #define MB_WARP_OR_BRIDGE 0x70 -#define MB_71 0x71 +#define MB_UNUSED_71 0x71 #define MB_ROUTE120_NORTH_BRIDGE_1 0x72 #define MB_ROUTE120_NORTH_BRIDGE_2 0x73 #define MB_PACIFIDLOG_VERTICAL_LOG_1 0x74 @@ -91,23 +122,27 @@ #define MB_PACIFIDLOG_HORIZONTAL_LOG_1 0x76 #define MB_PACIFIDLOG_HORIZONTAL_LOG_2 0x77 #define MB_FORTREE_BRIDGE 0x78 +#define MB_UNUSED_79 0x79 #define MB_ROUTE120_SOUTH_BRIDGE_1 0x7A #define MB_ROUTE120_SOUTH_BRIDGE_2 0x7B #define MB_ROUTE120_NORTH_BRIDGE_3 0x7C #define MB_ROUTE120_NORTH_BRIDGE_4 0x7D -#define MB_7E 0x7E +#define MB_UNUSED_7E 0x7E #define MB_ROUTE110_BRIDGE 0x7F #define MB_COUNTER 0x80 +#define MB_UNUSED_81 0x81 +#define MB_UNUSED_82 0x82 #define MB_PC 0x83 #define MB_CABLE_BOX_RESULTS_1 0x84 #define MB_REGION_MAP 0x85 #define MB_TELEVISION 0x86 #define MB_POKEBLOCK_FEEDER 0x87 +#define MB_UNUSED_88 0x88 #define MB_SLOT_MACHINE 0x89 #define MB_ROULETTE 0x8A -#define MB_CLOSED_SOOTOPOLIS_GYM_DOOR 0x8B +#define MB_CLOSED_SOOTOPOLIS_DOOR 0x8B #define MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C -#define MB_8D 0x8D +#define MB_PETALBURG_GYM_DOOR 0x8D #define MB_RUNNING_SHOES_INSTRUCTION 0x8E #define MB_QUESTIONNAIRE 0x8F #define MB_SECRET_BASE_SPOT_RED_CAVE 0x90 @@ -124,39 +159,56 @@ #define MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN 0x9B #define MB_SECRET_BASE_SPOT_TREE_RIGHT 0x9C #define MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN 0x9D +#define MB_UNUSED_9E 0x9E +#define MB_UNUSED_9F 0x9F #define MB_BERRY_TREE_SOIL 0xA0 +#define MB_UNUSED_A1 0xA1 +#define MB_UNUSED_A2 0xA2 +#define MB_UNUSED_A3 0xA3 +#define MB_UNUSED_A4 0xA4 +#define MB_UNUSED_A5 0xA5 +#define MB_UNUSED_A6 0xA6 +#define MB_UNUSED_A7 0xA7 +#define MB_UNUSED_A8 0xA8 +#define MB_UNUSED_A9 0xA9 +#define MB_UNUSED_AA 0xAA +#define MB_UNUSED_AB 0xAB +#define MB_UNUSED_AC 0xAC +#define MB_UNUSED_AD 0xAD +#define MB_UNUSED_AE 0xAE +#define MB_UNUSED_AF 0xAF #define MB_SECRET_BASE_PC 0xB0 #define MB_SECRET_BASE_REGISTER_PC 0xB1 -#define MB_B2 0xB2 -#define MB_B3 0xB3 -#define MB_B4 0xB4 -#define MB_B5 0xB5 -#define MB_B6 0xB6 -#define MB_B7 0xB7 +#define MB_SECRET_BASE_UNUSED 0xB2 +#define MB_BLOCK_DECORATION 0xB3 +#define MB_SECRET_BASE_DECORATION 0xB4 +#define MB_SECRET_BASE_LARGE_MAT_EDGE 0xB5 +#define MB_UNUSED_B6 0xB6 +#define MB_SECRET_BASE_NORTH_WALL 0xB7 #define MB_SECRET_BASE_BALLOON 0xB8 -#define MB_B9 0xB9 +#define MB_SECRET_BASE_IMPASSABLE 0xB9 #define MB_SECRET_BASE_GLITTER_MAT 0xBA #define MB_SECRET_BASE_JUMP_MAT 0xBB #define MB_SECRET_BASE_SPIN_MAT 0xBC #define MB_SECRET_BASE_SOUND_MAT 0xBD -#define MB_BE 0xBE -#define MB_BF 0xBF -#define MB_BED 0xC0 -#define MB_C1 0xC1 -#define MB_C2 0xC2 -#define MB_C3 0xC3 +#define MB_SECRET_BASE_BREAKABLE_DOOR 0xBE +#define MB_SECRET_BASE_SAND_ORNAMENT 0xBF +#define MB_IMPASSABLE_SOUTH_AND_NORTH 0xC0 +#define MB_IMPASSABLE_WEST_AND_EAST 0xC1 +#define MB_SECRET_BASE_HOLE 0xC2 +#define MB_LARGE_MAT_CENTER 0xC3 #define MB_SECRET_BASE_TV_SHIELD 0xC4 -#define MB_C5 0xC5 +#define MB_PLAYER_ROOM_PC_ON 0xC5 #define MB_C6 0xC6 #define MB_SECRET_BASE_POSTER 0xC7 -#define MB_C8 0xC8 -#define MB_C9 0xC9 -#define MB_CA 0xCA -#define MB_CB 0xCB -#define MB_CC 0xCC -#define MB_CD 0xCD -#define MB_CE 0xCE -#define MB_CF 0xCF +#define MB_UNUSED_C8 0xC8 +#define MB_UNUSED_C9 0xC9 +#define MB_UNUSED_CA 0xCA +#define MB_UNUSED_CB 0xCB +#define MB_UNUSED_CC 0xCC +#define MB_UNUSED_CD 0xCD +#define MB_UNUSED_CE 0xCE +#define MB_UNUSED_CF 0xCF #define MB_MUDDY_SLOPE 0xD0 #define MB_BUMPY_SLOPE 0xD1 #define MB_CRACKED_FLOOR 0xD2 @@ -164,6 +216,15 @@ #define MB_ISOLATED_HORIZONTAL_RAIL 0xD4 #define MB_VERTICAL_RAIL 0xD5 #define MB_HORIZONTAL_RAIL 0xD6 +#define MB_UNUSED_D7 0xD7 +#define MB_UNUSED_D8 0xD8 +#define MB_UNUSED_D9 0xD9 +#define MB_UNUSED_DA 0xDA +#define MB_UNUSED_DB 0xDB +#define MB_UNUSED_DC 0xDC +#define MB_UNUSED_DD 0xDD +#define MB_UNUSED_DE 0xDE +#define MB_UNUSED_DF 0xDF #define MB_PICTURE_BOOK_SHELF 0xE0 #define MB_BOOKSHELF 0xE1 #define MB_POKEMON_CENTER_BOOKSHELF 0xE2 @@ -175,5 +236,10 @@ #define MB_WIRELESS_BOX_RESULTS 0xE8 #define MB_TRAINER_HILL_TIMER 0xE9 #define MB_UNKNOWN_CLOSED_DOOR 0xEA +#define MB_UNUSED_EB 0xEB +#define MB_UNUSED_EC 0xEC +#define MB_UNUSED_ED 0xED +#define MB_UNUSED_EE 0xEE +#define MB_UNUSED_EF 0xEF #endif // GUARD_METATILE_BEHAVIORS diff --git a/include/constants/region_map_sections.h b/include/constants/region_map_sections.h index 8ff75dfa9..12c894367 100644 --- a/include/constants/region_map_sections.h +++ b/include/constants/region_map_sections.h @@ -220,4 +220,6 @@ #define MAPSEC_IN_GAME_TRADE 0xFE #define MAPSEC_FATEFUL_ENCOUNTER 0xFF +#define MAPSEC_SUBTRACT_KANTO (MAPSEC_SPECIAL_AREA - MAPSEC_DYNAMIC) + #endif //GUARD_REGIONMAPSEC_H diff --git a/include/contest.h b/include/contest.h index 33080225b..d62d33ab7 100644 --- a/include/contest.h +++ b/include/contest.h @@ -8,6 +8,7 @@ enum CONTEST_CATEGORY_CUTE, CONTEST_CATEGORY_SMART, CONTEST_CATEGORY_TOUGH, + CONTEST_CATEGORIES_COUNT, }; enum @@ -238,14 +239,13 @@ struct Shared18000 struct ContestStruct_field_18 { - // unknown size - u16 field_0; - u16 field_2; - u16 field_4; - u16 field_6; - u32 field_8; - u32 field_C; - u32 field_10; + u16 unk0; + u16 unk2; + u8 unk4_0:1; + u8 unk5; + u32 unk8; + u32 unkC; + u32 unk10; }; struct Contest @@ -410,6 +410,7 @@ extern struct ContestResources *gContestResources; #define eContestAI (gContestResources->field_C) #define shared19328 (*gContestResources->field_10) #define shared19338 (*gContestResources->field_14) +#define shared19348 (*gContestResources->field_18) #define shared15800 (gHeap + 0x18000) #define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000)) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 1a473eea9..d43dd78ea 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -89,10 +89,10 @@ u8 GetEventObjectIdByXY(s16, s16); void SetEventObjectDirection(struct EventObject *, u8); u8 GetFirstInactiveEventObjectId(void); void RemoveEventObjectByLocalIdAndMap(u8, u8, u8); -void npc_load_two_palettes__no_record(u16, u8); -void npc_load_two_palettes__and_record(u16, u8); +void LoadPlayerObjectReflectionPalette(u16, u8); +void LoadSpecialObjectReflectionPalette(u16, u8); void sub_808EBA8(u8, u8, u8, s16, s16); -void pal_patch_for_npc(u16, u8); +void PatchObjectPalette(u16, u8); void sub_808E16C(s16, s16); void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat); void sub_8092FF0(s16, s16, s16 *, s16 *); @@ -113,7 +113,7 @@ void EventObjectTurn(struct EventObject *, u8); void EventObjectTurnByLocalIdAndMap(u8, u8, u8, u8); const struct EventObjectGraphicsInfo *GetEventObjectGraphicsInfo(u8); void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); -void gpu_pal_allocator_reset__manage_upper_four(void); +void FreeAndReserveObjectSpritePalettes(void); void sub_808E82C(u8, u8, u8, s16, s16); void sub_808E7E4(u8, u8, u8); void sub_808E78C(u8, u8, u8, u8); @@ -122,6 +122,7 @@ void EventObjectGetLocalIdAndMap(struct EventObject *eventObject, void *localId, void ShiftEventObjectCoords(struct EventObject *, s16, s16); void sub_808EB08(struct EventObject *, s16, s16); void sub_808F254(u8, u8, u8); +void InitEventObjectPalettes(u8 palSlot); void UpdateEventObjectCurrentMovement(struct EventObject *, struct Sprite *, bool8(struct EventObject *, struct Sprite *)); u8 EventObjectFaceOppositeDirection(struct EventObject *, u8); u8 GetOppositeDirection(u8); diff --git a/include/field_effect.h b/include/field_effect.h index cdabd5c99..e05ded621 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -236,4 +236,6 @@ void sub_80B9CDC(s16*, u8); void sub_80B7CAC(struct Sprite*); void sub_80B7A58(struct Sprite*); +void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b); + #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 05ffb2edc..8287229ed 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -1,6 +1,13 @@ #ifndef GUARD_FIELDMAP_H #define GUARD_FIELDMAP_H +#define NUM_TILES_IN_PRIMARY 512 +#define NUM_TILES_TOTAL 1024 +#define NUM_METATILES_IN_PRIMARY 512 +#define NUM_METATILES_TOTAL 1024 +#define NUM_PALS_IN_PRIMARY 6 +#define NUM_PALS_TOTAL 13 + extern struct BackupMapLayout gUnknown_03005DC0; u32 MapGridGetMetatileIdAt(int, int); diff --git a/include/gba/defines.h b/include/gba/defines.h index 1eed6303d..16f1315d0 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -61,6 +61,9 @@ #define TILE_SIZE_4BPP 32 #define TILE_SIZE_8BPP 64 +#define TILE_OFFSET_4BPP(n) ((n) * TILE_SIZE_4BPP) +#define TILE_OFFSET_8BPP(n) ((n) * TILE_SIZE_8BPP) + #define TOTAL_OBJ_TILE_COUNT 1024 #define WIN_RANGE(a, b) (((a) << 8) | (b)) diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index 9327d6cb0..03faa1a87 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -574,8 +574,6 @@ #define WINOUT_WINOBJ_OBJ (1 << 12) #define WINOUT_WINOBJ_CLR (1 << 13) -#define WINHV_COORDS(m, n) (((m) << 8) | (n)) - // BLDCNT // Bits 0-5 select layers for the 1st target #define BLDCNT_TGT1_BG0 (1 << 0) diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h index 659302fd5..339a0774e 100644 --- a/include/gba/m4a_internal.h +++ b/include/gba/m4a_internal.h @@ -368,7 +368,7 @@ extern const u8 gNoiseTable[]; extern const struct PokemonCrySong gPokemonCrySongTemplate; -extern const struct ToneData voicegroup_pokemon_cry; +extern const struct ToneData voicegroup000; extern char gNumMusicPlayers[]; extern char gMaxLines[]; diff --git a/include/global.berry.h b/include/global.berry.h index 5c8a43a02..8046d344e 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -1,12 +1,12 @@ #ifndef GUARD_GLOBAL_BERRY_H #define GUARD_GLOBAL_BERRY_H -#define BERRY_NAME_COUNT 7 +#define BERRY_NAME_LENGTH 6 #define BERRY_ITEM_EFFECT_COUNT 18 struct Berry { - const u8 name[BERRY_NAME_COUNT]; + const u8 name[BERRY_NAME_LENGTH + 1]; u8 firmness; u16 size; u8 maxYield; @@ -26,7 +26,7 @@ struct Berry struct Berry2 { - u8 name[BERRY_NAME_COUNT]; + u8 name[BERRY_NAME_LENGTH + 1]; u8 firmness; u16 size; u8 maxYield; @@ -53,7 +53,7 @@ struct EnigmaBerry struct BattleEnigmaBerry { - /*0x00*/ u8 name[BERRY_NAME_COUNT]; + /*0x00*/ u8 name[BERRY_NAME_LENGTH + 1]; /*0x07*/ u8 holdEffect; /*0x08*/ u8 itemEffect[BERRY_ITEM_EFFECT_COUNT]; /*0x1A*/ u8 holdEffectParam; diff --git a/include/global.h b/include/global.h index 0fff11d09..9ae892b5c 100644 --- a/include/global.h +++ b/include/global.h @@ -57,8 +57,6 @@ #define PARTY_SIZE 6 #define POKEMON_SLOTS_NUMBER 412 -#define POKEMON_NAME_LENGTH 10 -#define OT_NAME_LENGTH 7 #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) >= (b) ? (a) : (b)) @@ -88,6 +86,11 @@ extern u8 gStringVar4[]; #define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) #define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr) +// Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen. +// In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen. +// In Gen 4 only, migrated Pokemon with Diamond, Pearl, or Platinum's ID show as "----------". +// Gen 5 and up read Diamond, Pearl, or Platinum's ID as "Sinnoh". +// In Gen 4 and up, migrated Pokemon with HeartGold or SoulSilver's ID show the otherwise unused "Johto" string. enum { VERSION_SAPPHIRE = 1, @@ -95,6 +98,12 @@ enum VERSION_EMERALD = 3, VERSION_FIRE_RED = 4, VERSION_LEAF_GREEN = 5, + VERSION_HEART_GOLD = 7, + VERSION_SOUL_SILVER = 8, + VERSION_DIAMOND = 10, + VERSION_PEARL = 11, + VERSION_PLATINUM = 12, + VERSION_GAMECUBE = 15, }; enum LanguageId @@ -134,8 +143,7 @@ enum LanguageId // string lengths #define ITEM_NAME_LENGTH 14 #define POKEMON_NAME_LENGTH 10 -#define OT_NAME_LENGTH 7 -#define PLAYER_NAME_LENGTH 8 +#define PLAYER_NAME_LENGTH 7 #define MAIL_WORDS_COUNT 9 enum @@ -326,7 +334,7 @@ struct EmeraldBattleTowerRecord /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 /*0x01*/ u8 trainerClass; /*0x02*/ u16 winStreak; - /*0x04*/ u8 name[8]; + /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 trainerId[4]; /*0x10*/ struct { u16 easyChat[6]; @@ -347,7 +355,9 @@ struct FrontierMonData struct Struct_field_E70 { u16 monId; - u8 unk2[9]; + u32 personality; + u8 ivs; + u8 abilityBit; }; struct BattleDomeTrainer @@ -416,9 +426,7 @@ struct BattleFrontier /*0xDD8*/ u16 field_DD8; /*0xDDA*/ u16 field_DDA[2]; /*0xDDE*/ u16 field_DDE[2]; - /*0xDE2*/ u16 field_DE2[2]; - /*0xDE6*/ u16 field_DE6; - /*0xDE8*/ u16 field_DE8; + /*0xDE2*/ u16 field_DE2[2][2]; /*0xDEA*/ u16 field_DEA[2]; /*0xDEE*/ u16 field_DEE; /*0xDF0*/ u16 field_DF0; @@ -450,7 +458,7 @@ struct BattleFrontier /*0xEBF*/ u8 field_EBF; /*0xEC0*/ u16 field_EC0[16]; /*0xEE0*/ u8 field_EE0; - /*0xEE1*/ u8 field_EE1[2][PLAYER_NAME_LENGTH]; + /*0xEE1*/ u8 field_EE1[2][PLAYER_NAME_LENGTH + 1]; /*0xEF1*/ u8 field_EF1[2][4]; /*0xEF9*/ u8 field_EF9; /*0xEFA*/ u8 field_EFA; @@ -460,7 +468,7 @@ struct BattleFrontier struct SaveBlock2 { - /*0x00*/ u8 playerName[PLAYER_NAME_LENGTH]; + /*0x00*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x08*/ u8 playerGender; // MALE, FEMALE /*0x09*/ u8 specialSaveWarp; /*0x0A*/ u8 playerTrainerId[4]; @@ -516,7 +524,7 @@ struct SecretBaseRecord /*0x1A9D*/ u8 gender:1; /*0x1A9D*/ u8 sbr_field_1_5:1; /*0x1A9D*/ u8 sbr_field_1_6:2; - /*0x1A9E*/ u8 trainerName[OT_NAME_LENGTH]; + /*0x1A9E*/ u8 trainerName[PLAYER_NAME_LENGTH]; /*0x1AA5*/ u8 trainerId[4]; // byte 0 is used for determining trainer class /*0x1AA9*/ u8 language; /*0x1AAA*/ u16 sbr_field_e; @@ -602,7 +610,7 @@ struct EasyChatPair struct MailStruct { /*0x00*/ u16 words[MAIL_WORDS_COUNT]; - /*0x12*/ u8 playerName[PLAYER_NAME_LENGTH]; + /*0x12*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x1A*/ u8 trainerId[4]; /*0x1E*/ u16 species; /*0x20*/ u16 itemId; @@ -691,7 +699,7 @@ struct RecordMixing_UnknownStruct struct LinkBattleRecord { - u8 name[8]; + u8 name[PLAYER_NAME_LENGTH + 1]; u16 trainerId; u16 wins; u16 losses; @@ -724,15 +732,15 @@ struct ContestWinner u32 trainerId; u16 species; u8 contestCategory; - u8 monName[11]; - u8 trainerName[8]; + u8 monName[POKEMON_NAME_LENGTH + 1]; + u8 trainerName[PLAYER_NAME_LENGTH + 1]; u8 contestRank; }; struct DayCareMail { struct MailStruct message; - u8 OT_name[OT_NAME_LENGTH + 1]; + u8 OT_name[PLAYER_NAME_LENGTH + 1]; u8 monName[POKEMON_NAME_LENGTH + 1]; u8 gameLanguage:4; u8 monLanguage:4; @@ -773,7 +781,7 @@ struct LilycoveLadyQuiz /*0x002*/ u16 unk_002[9]; /*0x014*/ u16 unk_014; /*0x016*/ u16 unk_016; - /*0x018*/ u8 playerName[8]; + /*0x018*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x020*/ u16 playerTrainerId[4]; /*0x028*/ u16 itemId; /*0x02a*/ u8 unk_02a; @@ -788,7 +796,7 @@ struct LilycoveLadyFavour /*0x001*/ u8 phase; /*0x002*/ u8 unk_002; /*0x003*/ u8 unk_003; - /*0x004*/ u8 playerName[8]; + /*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x00c*/ u8 unk_00c; /*0x00e*/ u16 itemId; /*0x010*/ u16 unk_010; @@ -801,7 +809,7 @@ struct LilycoveLadyContest /*0x001*/ u8 phase; /*0x002*/ u8 fave_pkblk; /*0x003*/ u8 other_pkblk; - /*0x004*/ u8 playerName[8]; + /*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x00c*/ u8 max_sheen; /*0x00d*/ u8 category; /*0x00e*/ u8 language; @@ -828,7 +836,7 @@ struct WaldaPhrase struct UnkSaveSubstruct_3b98 { u32 trainerId; - u8 trainerName[8]; + u8 trainerName[PLAYER_NAME_LENGTH + 1]; }; struct SaveBlock1 diff --git a/include/main_menu.h b/include/main_menu.h index 4f75b1767..1944f4ecc 100644 --- a/include/main_menu.h +++ b/include/main_menu.h @@ -2,6 +2,6 @@ #define GUARD_MAIN_MENU_H void CB2_InitMainMenu(void); -void sub_80323CC(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f); +void CreateYesNoMenuParameterized(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f); #endif // GUARD_MAIN_MENU_H diff --git a/include/menu.h b/include/menu.h index a13fe73ec..cddab0870 100644 --- a/include/menu.h +++ b/include/menu.h @@ -22,12 +22,12 @@ extern const u16 gUnknown_0860F074[]; void sub_81971D0(void); void sub_8197200(void); -u16 sub_8197224(void); +u16 RunTextPrintersAndIsPrinter0Active(void); void sub_81973A4(void); void NewMenuHelpers_DrawDialogueFrame(u8, u8); void sub_819746C(u8 windowId, bool8 copyToVram); void NewMenuHelpers_DrawStdWindowFrame(u8, u8); -u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor); +u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor); void PrintPlayerNameOnWindow(u8, const u8*, u16, u16); void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback); void sub_8197434(u8 windowId, bool8 copyToVram); @@ -35,9 +35,8 @@ void SetStandardWindowBorderStyle(u8 a0, u8 a1); void sub_8197930(void); u8 GetPlayerTextSpeed(void); void sub_81978B0(u16 arg0); - void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextSubPrinter *, u16)); -void box_print(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str); +void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str); void sub_8198070(u8 windowId, bool8 copyToVram); void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette); @@ -58,7 +57,7 @@ s8 Menu_ProcessInputNoWrap_(void); s8 ProcessMenuInput_other(void); void do_scheduled_bg_tilemap_copies_to_vram(void); void clear_scheduled_bg_copies_to_vram(void); -void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str); +void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str); void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u8 a3); void sub_81995E4(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds); void sub_8197DF8(u8 windowId, bool8 copyToVram); @@ -84,8 +83,9 @@ void sub_819A344(u8 a0, u8 *dest, u8 color); void RemoveMapNamePopUpWindow(void); u8 GetMapNamePopUpWindowId(void); u8 AddMapNamePopUpWindow(void); -void sub_8199F74(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 letterSpacing, u8 lineSpacing); +void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 letterSpacing, u8 lineSpacing); void sub_8199C30(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); void sub_8199D3C(void *ptr, int delta, int width, int height, bool32 is8BPP); +void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyToVram); #endif // GUARD_MENU_H diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index 86a67ab3e..edffc711f 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -25,7 +25,7 @@ bool8 MetatileBehavior_IsWestArrowWarp(u8); bool8 MetatileBehavior_IsNorthArrowWarp(u8); bool8 MetatileBehavior_IsSouthArrowWarp(u8); bool8 MetatileBehavior_IsArrowWarp(u8); -bool8 MetatileBehavior_IsMoveTile(u8); +bool8 MetatileBehavior_IsForcedMovementTile(u8); bool8 MetatileBehavior_IsIce_2(u8); bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8); bool8 MetatileBehavior_IsMB_05(u8); @@ -45,43 +45,43 @@ bool8 MetatileBehavior_IsCounter(u8); bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDir); bool8 MetatileBehavior_IsPC(u8); bool8 MetatileBehavior_IsCableBoxResults1(u8); -bool8 MetatileBehavior_IsSecretBaseOpen(u8); +bool8 MetatileBehavior_IsOpenSecretBaseDoor(u8); bool8 MetatileBehavior_IsSecretBaseCave(u8); bool8 MetatileBehavior_IsSecretBaseTree(u8); bool8 MetatileBehavior_IsSecretBaseShrub(u8); bool8 MetatileBehavior_IsSecretBasePC(u8); bool8 MetatileBehavior_IsSecretBaseRegisterPC(u8); bool8 MetatileBehavior_IsMB_B2(u8); -bool8 MetatileBehavior_IsMB_B3(u8); -bool8 MetatileBehavior_IsMB_B9(u8); +bool8 MetatileBehavior_IsBlockDecoration(u8); +bool8 MetatileBehavior_IsSecretBaseImpassable(u8); bool8 MetatileBehavior_IsMB_C6(u8); bool8 MetatileBehavior_IsSecretBasePoster(u8); bool8 MetatileBehavior_IsNormal(u8); -bool8 MetatileBehavior_IsMB_B7(u8); +bool8 MetatileBehavior_IsSecretBaseNorthWall(u8); bool8 MetatileBehavior_IsMB_B2_Duplicate(u8); -bool8 MetatileBehavior_IsMB_B5(u8); -bool8 MetatileBehavior_IsMB_C3(u8); -bool8 MetatileBehavior_IsMB_C2(u8); +bool8 MetatileBehavior_IsSecretBaseLargeMatEdge(u8); +bool8 MetatileBehavior_IsLargeMatCenter(u8); +bool8 MetatileBehavior_IsSecretBaseHole(u8); bool8 MetatileBehavior_IsSecretBaseBalloon(u8); -bool8 MetatileBehavior_IsMB_BE(u8); +bool8 MetatileBehavior_IsSecretBaseBreakableDoor(u8); bool8 MetatileBehavior_IsSecretBaseSoundMat(u8); bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8); -bool8 MetatileBehavior_IsMB_BF(u8); +bool8 MetatileBehavior_IsSecretBaseSandOrnament(u8); bool8 MetatileBehavior_IsSecretBaseTvOrShield(u8); -bool8 MetatileBehavior_IsMB_C5(u8); +bool8 MetatileBehavior_IsPlayerRoomPCOn(u8); bool8 MetatileBehavior_HasRipples(u8); bool8 MetatileBehavior_IsPuddle(u8); bool8 MetatileBehavior_IsTallGrass(u8); bool8 MetatileBehavior_IsLongGrass(u8); bool8 MetatileBehavior_IsBerryTreeSoil(u8); bool8 MetatileBehavior_IsAshGrass(u8); -bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8); +bool8 MetatileBehavior_IsFootprints(u8); bool8 MetatileBehavior_IsBridge(u8); u8 MetatileBehavior_GetBridgeSth(u8); u8 MetatileBehavior_8089510(u8); bool8 MetatileBehavior_IsLandWildEncounter(u8); bool8 MetatileBehavior_IsWaterWildEncounter(u8); -bool8 MetatileBehavior_IsMB_0B(u8); +bool8 MetatileBehavior_IsIndoorEncounter(u8); bool8 MetatileBehavior_IsMountain(u8); bool8 MetatileBehavior_IsDiveable(u8); bool8 MetatileBehavior_IsUnableToEmerge(u8); diff --git a/include/overworld.h b/include/overworld.h index 341e44278..f6856ab0c 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -1,10 +1,10 @@ #ifndef GUARD_OVERWORLD_H #define GUARD_OVERWORLD_H -struct UnkPlayerStruct +struct InitialPlayerAvatarState { - u8 player_field_0; - u8 player_field_1; + u8 transitionFlags; + u8 direction; }; struct LinkPlayerEventObject @@ -16,7 +16,7 @@ struct LinkPlayerEventObject }; // Exported RAM declarations -extern struct WarpData gUnknown_020322DC; +extern struct WarpData gLastUsedWarp; extern struct LinkPlayerEventObject gLinkPlayerEventObjects[4]; extern u16 *gBGTilemapBuffers1; @@ -26,7 +26,7 @@ extern u16 *gBGTilemapBuffers3; extern void (*gFieldCallback)(void); // Exported ROM declarations -extern const struct UCoords32 gUnknown_08339D64[]; +extern const struct UCoords32 gDirectionToVectors[]; void DoWhiteOut(void); void Overworld_ResetStateAfterFly(void); @@ -45,13 +45,13 @@ const struct MapLayout *GetMapLayout(void); void ApplyCurrentWarp(void); void set_warp2_warp3_to_neg_1(void); void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -bool32 warp_data_is_not_neg_1(struct WarpData *warp); +bool32 IsDummyWarp(struct WarpData *warp); struct MapHeader const *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum); -struct MapHeader const *const warp1_get_mapheader(void); -void set_current_map_header_from_sav1_save_old_name(void); +struct MapHeader const *const GetDestinationWarpMapHeader(void); +void LoadCurrentMapData(void); void LoadSaveblockMapHeader(void); -void update_camera_pos_from_warpid(void); -void warp_in(void); +void SetPlayerCoordsFromWarp(void); +void WarpIntoMap(void); void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId); void saved_warp2_set(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId); @@ -63,21 +63,21 @@ void Overworld_SetHealLocationWarp(u8 healLocationId); void sub_8084D5C(s16 a1, s16 a2); void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void sub_8084E14(void); -void sub_8084E2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void warp1_set_to_warp2(void); -void sub_8084E80(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void sub_8084EBC(s16 x, s16 y); +void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetFixedDiveWarpAsDestination(void); +void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetFixedHoleWarpAsDestination(s16 x, s16 y); void warp1_set_to_sav1w(void); void sub_8084F2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void sub_8084F6C(u8 a1); void sub_8084FAC(void); const struct MapConnection *GetMapConnection(u8 dir); -bool8 sub_8084FF8(u8 dir, u16 x, u16 y); -bool8 sub_8085058(u16 x, u16 y); -bool8 sub_8085078(u16 x, u16 y); +bool8 SetDiveWarp(u8 dir, u16 x, u16 y); +bool8 SetDiveWarpEmerge(u16 x, u16 y); +bool8 SetDiveWarpDive(u16 x, u16 y); void mliX_load_map(u8 mapGroup, u8 mapNum); -void player_avatar_init_params_reset(void); -void walkrun_find_lowest_active_bit_in_bitfield(void); +void ResetInitialPlayerAvatarState(void); +void StoreInitialPlayerAvatarState(void); bool32 Overworld_IsBikingAllowed(void); void SetDefaultFlashLevel(void); void Overworld_SetFlashLevel(s32 flashLevel); @@ -96,7 +96,7 @@ void Overworld_ChangeMusicToDefault(void); void Overworld_ChangeMusicTo(u16 newMusic); u8 GetMapMusicFadeoutSpeed(void); void music_something(void); -bool8 sub_80859A0(void); +bool8 BGMusicStopped(void); void Overworld_FadeOutMapMusic(void); void UpdateAmbientCry(s16 *state, u16 *delayCounter); u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum); diff --git a/include/party_menu.h b/include/party_menu.h index 02e481200..b93b78544 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -58,7 +58,18 @@ void sub_81B8904(u8 arg0, void (*callback)(void)); void OpenPartyMenuInBattle(u8 caseId); u16 ItemIdToBattleMoveId(u16 itemId); u8 sub_81B205C(struct Pokemon* a); +void sub_81B617C(void); u8 sub_81B6D14(u16 a); bool8 hm_add_c3_without_phase_2(void); +extern void dp05_ether(u8, u16, TaskFunc); +extern void dp05_pp_up(u8, u16, TaskFunc); +extern void dp05_rare_candy(u8, u16, TaskFunc); + +extern void sub_81B67C8(u8, u16, TaskFunc); +extern void sub_81B79E8(u8, u16, TaskFunc); +extern void sub_81B6DC4(u8, u16, TaskFunc); +extern void sub_81B7C74(u8, u16, TaskFunc); +extern u16 ItemIdToBattleMoveId(u16); + #endif // GUARD_PARTY_MENU_H diff --git a/include/pokeball.h b/include/pokeball.h index 30a1d8b11..8e1d8b8ec 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -24,10 +24,10 @@ extern const struct SpriteTemplate gBallSpriteTemplates[]; #define POKEBALL_OPPONENT_SENDOUT 0xFE u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow); -void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species); +void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battler, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species); u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h); -void sub_8076918(u8 bank); -void DoHitAnimHealthboxEffect(u8 bank); +void sub_8076918(u8 battler); +void DoHitAnimHealthboxEffect(u8 battler); void LoadBallGfx(u8 ballId); void FreeBallGfx(u8 ballId); diff --git a/include/pokemon.h b/include/pokemon.h index 09496b5c3..9eddd8155 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -205,7 +205,7 @@ struct BoxPokemon u8 hasSpecies:1; u8 isEgg:1; u8 unused:5; - u8 otName[OT_NAME_LENGTH]; + u8 otName[PLAYER_NAME_LENGTH]; u8 markings; u16 checksum; u16 unknown; @@ -268,12 +268,12 @@ struct UnknownPokemonStruct3 struct Unknown_806F160_Struct { - u8 field_0_0 : 4; - u8 field_0_1 : 4; + u8 field_0_0:4; + u8 field_0_1:4; u8 field_1; u8 magic; - u8 field_3_0 : 4; - u8 field_3_1 : 4; + u8 field_3_0:4; + u8 field_3_1:4; void *bytes; u8 **byteArrays; struct SpriteTemplate *templates; diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index 3d3b6f0e3..a8eee9c18 100755 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -1,6 +1,7 @@ #ifndef GUARD_POKEMON_SUMMARY_SCREEN_H #define GUARD_POKEMON_SUMMARY_SCREEN_H +void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); void sub_81C4F98(u8, void(*)(void)); void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16); diff --git a/include/record_mixing.h b/include/record_mixing.h index 3cd4d649e..f1b74c143 100644 --- a/include/record_mixing.h +++ b/include/record_mixing.h @@ -6,7 +6,7 @@ struct UnkRecordMixingStruct2a { u8 playerId[4]; u16 field_4; - u8 playerName[PLAYER_NAME_LENGTH]; + u8 playerName[PLAYER_NAME_LENGTH + 1]; u8 language; }; @@ -15,8 +15,8 @@ struct UnkRecordMixingStruct2b u8 playerId1[4]; u8 playerId2[4]; u16 field_8; - u8 playerName1[PLAYER_NAME_LENGTH]; - u8 playerName2[PLAYER_NAME_LENGTH]; + u8 playerName1[PLAYER_NAME_LENGTH + 1]; + u8 playerName2[PLAYER_NAME_LENGTH + 1]; u8 language; }; diff --git a/include/rom_8034C54.h b/include/rom_8034C54.h index 9ad84ca13..4da324dd1 100644 --- a/include/rom_8034C54.h +++ b/include/rom_8034C54.h @@ -21,6 +21,6 @@ bool32 sub_8034D14(u32 id, s32 arg1, const struct UnkStruct3 *arg2); void sub_8035044(u32 id, s32 arg1); void sub_80353DC(u32 id); void sub_803547C(u32 id, bool32 arg1); -u8 sub_80355F8(u32 arg0, u32 arg1); +u8 sub_80355F8(u32 shape, u32 size); #endif // GUARD_ROM_8034C54_H diff --git a/include/rom_81520A8.h b/include/rom_81520A8.h new file mode 100644 index 000000000..2be12200f --- /dev/null +++ b/include/rom_81520A8.h @@ -0,0 +1,33 @@ +#ifndef GUARD_ROM_81520A8_H +#define GUARD_ROM_81520A8_H + +struct UnkStruct_81520A8 +{ + struct OamData oam; + s16 x; + s16 y; + s16 xDelta; + s16 yDelta; + u16 tileTag; + u16 palTag; + u16 tileNum; + u8 id; + u8 filler17; // Unused. + u8 unk18; + u8 unk19_0:1; + u8 unk19_1:1; + u8 unk19_2:1; + u8 priority:2; + s16 data[8]; + void (*callback)(struct UnkStruct_81520A8 *); +}; + +bool32 sub_81521C0(u8 count); +bool32 sub_8152254(void); +bool32 sub_81522D4(void); +u8 sub_8152438(u8 id, void (*func)(struct UnkStruct_81520A8 *)); +u8 sub_8152474(u8 id, u8 dataArrayId, s16 dataValue); +u8 sub_81524C4(const struct OamData *oam, u16 tileTag, u16 palTag, s16 x, s16 y, u8 arg5, u8 priority); +u8 sub_81525D0(u8 id); + +#endif // GUARD_ROM_81520A8_H diff --git a/include/save.h b/include/save.h index 9859870b4..a87e31e99 100644 --- a/include/save.h +++ b/include/save.h @@ -1,8 +1,6 @@ #ifndef GUARD_SAVE_H #define GUARD_SAVE_H -extern u16 gSaveFileStatus; - struct SaveSectionLocation { void *data; @@ -58,6 +56,20 @@ enum #define SECTION_ID_RECORDED_BATTLE 31 +extern u16 gLastWrittenSector; +extern u32 gLastSaveCounter; +extern u16 gLastKnownGoodSector; +extern u32 gDamagedSaveSectors; +extern u32 gSaveCounter; +extern struct SaveSection *gFastSaveSection; +extern u16 gUnknown_03006208; +extern u16 gSaveFileStatus; +extern void (*gGameContinueCallback)(void); +extern struct SaveSectionLocation gRamSaveSectionLocations[]; +extern u16 gUnknown_03006294; + +extern struct SaveSection gSaveDataBuffer; + void ClearSaveData(void); void Save_ResetSaveCounters(void); bool32 SetDamagedSectorBits(u8 op, u8 bit); diff --git a/include/sprite.h b/include/sprite.h index f972d09cc..8fc45d501 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -26,6 +26,8 @@ struct SpriteFrameImage #define obj_frame_tiles(ptr) {.data = (u8 *)ptr, .size = sizeof ptr} +#define overworld_frame(ptr, width, height, frame) {.data = (u8 *)ptr + (width * height * frame * 64)/2, .size = (width * height * 64)/2} + struct SpritePalette { const u16 *data; // Raw uncompressed palette data @@ -158,6 +160,8 @@ struct SubspriteTable struct Sprite; +typedef void (*SpriteCallback)(struct Sprite *); + struct SpriteTemplate { u16 tileTag; @@ -166,7 +170,7 @@ struct SpriteTemplate const union AnimCmd *const *anims; const struct SpriteFrameImage *images; const union AffineAnimCmd *const *affineAnims; - void (*callback)(struct Sprite *); + SpriteCallback callback; }; struct Sprite @@ -177,7 +181,7 @@ struct Sprite /*0x10*/ const union AffineAnimCmd *const *affineAnims; /*0x14*/ const struct SpriteTemplate *template; /*0x18*/ const struct SubspriteTable *subspriteTables; - /*0x1C*/ void (*callback)(struct Sprite *); + /*0x1C*/ SpriteCallback callback; /*0x20*/ struct Coords16 pos1; /*0x24*/ struct Coords16 pos2; diff --git a/include/text.h b/include/text.h index 92def780c..e2120efa3 100644 --- a/include/text.h +++ b/include/text.h @@ -223,7 +223,7 @@ u8 gGlyphDimensions[0x2]; void SetFontsPointer(const struct FontInfo *fonts); void DeactivateAllTextPrinters(void); -u16 PrintTextOnWindow(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16)); +u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16)); bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*callback)(struct TextSubPrinter *, u16)); void RunTextPrinters(void); bool16 IsTextPrinterActive(u8 id); |