Merge pull request #532 from AsparagusEduardo/pokefirered_pokeemeraldSync3

Sync src/battle_util.c with pokeemerald
This commit is contained in:
GriffinR
2022-08-17 11:29:51 -04:00
committed by GitHub
22 changed files with 1433 additions and 1249 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ PewterCity_Gym_Text_BrockIntro::
@ NOTE: This defeat text actually causes a buffer overflow. It's too long for the gDisplayedStringBattle
@ buffer that it's put into, and it stomps all over the gBattleTextBuffs after, as well as the otherwise
@ unused array after that, gUnknown_2022AE8. Perhaps that's the reason why said array exists.
@ unused array after that, sFlickerArray. Perhaps that's the reason why said array exists.
PewterCity_Gym_Text_BrockDefeat::
.string "I took you for granted, and so\n"
.string "I lost.\p"
+5 -5
View File
@@ -188,7 +188,7 @@ struct ProtectStruct
u32 confusionSelfDmg:1;
u32 targetNotAffected:1;
u32 chargingTurn:1;
u32 fleeFlag:2; // for RunAway and Smoke Ball
u32 fleeType:2; // for RunAway and Smoke Ball
u32 usedImprisonedMove:1;
u32 loveImmobility:1;
u32 usedDisabledMove:1;
@@ -361,7 +361,7 @@ struct BattleResults
extern struct BattleResults gBattleResults;
struct LinkPartnerHeader
struct LinkBattlerHeader
{
u8 versionSignatureLo;
u8 versionSignatureHi;
@@ -452,7 +452,7 @@ struct BattleStruct
u8 field_182;
// align 4
union {
struct LinkPartnerHeader linkPartnerHeader;
struct LinkBattlerHeader linkBattlerHeader;
struct MultiBattlePokemonTx multiBattleMons[3];
} multiBuffer;
u8 padding_1E4[0x1C];
@@ -681,8 +681,8 @@ extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
extern void (*gPreBattleCallback1)(void);
extern bool8 gDoingBattleAnim;
extern struct PokedudeBattlerState *gPokedudeBattlerStates[MAX_BATTLERS_COUNT];
extern u8 *gBattleAnimMons_BgTilesBuffer;
extern u8 *gBattleAnimMons_BgTilemapBuffer;
extern u8 *gBattleAnimBgTileBuffer;
extern u8 *gBattleAnimBgTilemapBuffer;
extern void (*gBattleMainFunc)(void);
extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
extern u32 gUnknown_2022B54;
+2
View File
@@ -101,6 +101,8 @@ enum {
#define INSTANT_HP_BAR_DROP 0x7FFF
#define PARTY_SUMM_SKIP_DRAW_DELAY (1 << 7)
// Special return values in gBattleBufferB from Battle Controller functions.
#define RET_VALUE_LEVELED_UP 11
+3 -3
View File
@@ -73,10 +73,10 @@ u32 GetBattleBgTemplateData(u8 arrayId, u8 caseId);
void SpriteCB_EnemyMon(struct Sprite *sprite);
void SpriteCallbackDummy_2(struct Sprite *sprite);
void SpriteCB_FaintOpponentMon(struct Sprite *sprite);
void SpriteCb_ShowAsMoveTarget(struct Sprite *sprite);
void SpriteCb_HideAsMoveTarget(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 SetIdleSpriteCallback(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);
+7 -4
View File
@@ -9,6 +9,7 @@
#define MOVE_LIMITATION_TORMENTED (1 << 3)
#define MOVE_LIMITATION_TAUNT (1 << 4)
#define MOVE_LIMITATION_IMPRISON (1 << 5)
#define MOVE_LIMITATIONS_ALL 0xFF
#define ABILITYEFFECT_ON_SWITCHIN 0
#define ABILITYEFFECT_ENDTURN 1
@@ -38,9 +39,12 @@
#define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0))
#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
// For the first argument of ItemBattleEffects, to deteremine which block of item effects to try
#define ITEMEFFECT_ON_SWITCH_IN 0
#define ITEMEFFECT_NORMAL 1
#define ITEMEFFECT_DUMMY 2 // Unused, empty
#define ITEMEFFECT_MOVE_END 3
#define ITEMEFFECT_KINGSROCK_SHELLBELL 4
#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0)))
#define WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0)))
@@ -58,7 +62,6 @@ u8 GetBattlerForBattleScript(u8 caseId);
void PressurePPLose(u8 target, u8 attacker, u16 move);
void PressurePPLoseOnUsingImprison(u8 attacker);
void PressurePPLoseOnUsingPerishSong(u8 attacker);
void MarkAllBattlersForControllerExec(void);
void MarkBattlerForControllerExec(u8 battlerId);
void MarkBattlerReceivedLinkData(u8 battlerId);
void CancelMultiTurnMoves(u8 battler);
+6
View File
@@ -316,6 +316,9 @@
#define NUM_CASTFORM_FORMS 4
#define CASTFORM_SUBSTITUTE (1 << 7)
#define FLEE_ITEM 1
#define FLEE_ABILITY 2
// Return value for IsRunningFromBattleImpossible.
#define BATTLE_RUN_SUCCESS 0
#define BATTLE_RUN_FORBIDDEN 1
@@ -351,4 +354,7 @@
#define B_TEXT_FLAG_NPC_CONTEXT_FONT (1 << 6)
#define B_TEXT_FLAG_WINDOW_CLEAR (1 << 7)
// Indicator for the party summary bar to display an empty slot.
#define HP_EMPTY_SLOT 0xFFFF
#endif // GUARD_CONSTANTS_BATTLE_H
-1
View File
@@ -224,7 +224,6 @@
#define EV_ITEM_RAISE_LIMIT 100
#define PARTY_SIZE 6
#define UNOWN_FORM_COUNT 28
#define BOX_NAME_LENGTH 8
#define EVO_MODE_NORMAL 0
+9
View File
@@ -314,6 +314,15 @@ struct Evolution
#define EVOS_PER_MON 5
#define NUM_UNOWN_FORMS 28
#define GET_UNOWN_LETTER(personality) (( \
(((personality) & 0x03000000) >> 18) \
| (((personality) & 0x00030000) >> 12) \
| (((personality) & 0x00000300) >> 6) \
| (((personality) & 0x00000003) >> 0) \
) % NUM_UNOWN_FORMS)
extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[PARTY_SIZE];
extern u8 gEnemyPartyCount;
+2 -2
View File
@@ -3,8 +3,8 @@
#include "main.h"
extern const u8 * const gMoveDescriptionPointers[];
extern const u8 * const gNatureNamePointers[];
extern const u8 *const gMoveDescriptionPointers[];
extern const u8 *const gNatureNamePointers[];
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
u8 GetMoveSlotToReplace(void);
+9 -16
View File
@@ -9,13 +9,6 @@
#include "util.h"
#include "constants/battle_anim.h"
#define GET_UNOWN_LETTER(personality) (( \
(((personality & 0x03000000) >> 24) << 6) \
| (((personality & 0x00030000) >> 16) << 4) \
| (((personality & 0x00000300) >> 8) << 2) \
| (((personality & 0x00000003) >> 0) << 0) \
) % 28)
#define IS_DOUBLE_BATTLE() (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3);
@@ -811,8 +804,8 @@ bool8 IsDoubleBattle(void)
void GetBattleAnimBg1Data(struct BattleAnimBgData *animBgData)
{
animBgData->bgTiles = gBattleAnimMons_BgTilesBuffer;
animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer;
animBgData->bgTiles = gBattleAnimBgTileBuffer;
animBgData->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
animBgData->paletteId = 8;
animBgData->bgId = 1;
animBgData->tilesOffset = 0x200;
@@ -827,8 +820,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *animBgData, u32 bgId)
}
else
{
animBgData->bgTiles = gBattleAnimMons_BgTilesBuffer;
animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer;
animBgData->bgTiles = gBattleAnimBgTileBuffer;
animBgData->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
animBgData->paletteId = 9;
animBgData->bgId = 2;
animBgData->tilesOffset = 0x300;
@@ -838,8 +831,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *animBgData, u32 bgId)
void GetBattleAnimBgDataByPriorityRank(struct BattleAnimBgData *animBgData, u8 unused)
{
animBgData->bgTiles = gBattleAnimMons_BgTilesBuffer;
animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer;
animBgData->bgTiles = gBattleAnimBgTileBuffer;
animBgData->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
{
animBgData->paletteId = 8;
@@ -869,9 +862,9 @@ void InitBattleAnimBg(u32 bgId)
void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset)
{
CpuFill32(0, gBattleAnimMons_BgTilesBuffer, 0x2000);
LZDecompressWram(src, gBattleAnimMons_BgTilesBuffer);
LoadBgTiles(bgId, gBattleAnimMons_BgTilesBuffer, 0x2000, tilesOffset);
CpuFill32(0, gBattleAnimBgTileBuffer, 0x2000);
LZDecompressWram(src, gBattleAnimBgTileBuffer);
LoadBgTiles(bgId, gBattleAnimBgTileBuffer, 0x2000, tilesOffset);
}
void InitAnimBgTilemapBuffer(u32 bgId, const void *src)
+7 -7
View File
@@ -337,7 +337,7 @@ static void HandleInputChooseTarget(void)
if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_HideAsMoveTarget;
BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX);
PlayerBufferExecCompleted();
@@ -345,7 +345,7 @@ static void HandleInputChooseTarget(void)
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_HideAsMoveTarget;
gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove;
DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1);
DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1);
@@ -354,7 +354,7 @@ static void HandleInputChooseTarget(void)
else if (JOY_NEW(DPAD_LEFT | DPAD_UP))
{
PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_HideAsMoveTarget;
do
{
@@ -389,12 +389,12 @@ static void HandleInputChooseTarget(void)
i = 0;
}
while (i == 0);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_ShowAsMoveTarget;
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_ShowAsMoveTarget;
}
else if (JOY_NEW(DPAD_RIGHT | DPAD_DOWN))
{
PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_HideAsMoveTarget;
do
{
@@ -429,7 +429,7 @@ static void HandleInputChooseTarget(void)
i = 0;
}
while (i == 0);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_ShowAsMoveTarget;
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_ShowAsMoveTarget;
}
}
@@ -496,7 +496,7 @@ void HandleInputChooseMove(void)
gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
else
gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_ShowAsMoveTarget;
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_ShowAsMoveTarget;
}
}
else if (JOY_NEW(B_BUTTON))
+3 -3
View File
@@ -1100,13 +1100,13 @@ void BtlController_EmitIntroTrainerBallThrow(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 param)
void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 flags)
{
s32 i;
sBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
sBattleBuffersTransferData[1] = param & 0x7F;
sBattleBuffersTransferData[2] = (param & 0x80) >> 7;
sBattleBuffersTransferData[1] = flags & ~PARTY_SUMM_SKIP_DRAW_DELAY; // If true, skip player side
sBattleBuffersTransferData[2] = (flags & PARTY_SUMM_SKIP_DRAW_DELAY) >> 7; // If true, skip delay after drawing. True during intro
sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); ++i)
sBattleBuffersTransferData[4 + i] = *(i + (u8 *)(hpAndStatus));
+1 -1
View File
@@ -140,7 +140,7 @@ void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite)
gSprites[spriteId].animPaused = 0;
else if (gSprites[spriteId].animEnded)
{
gSprites[spriteId].callback = SpriteCB_SetToDummy3;
gSprites[spriteId].callback = SetIdleSpriteCallback;
StartSpriteAffineAnim(&gSprites[spriteId], 0);
sprite->callback = SpriteCallbackDummy;
}
+14 -7
View File
@@ -1137,8 +1137,9 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg
if (partyInfo[i].hp == HP_EMPTY_SLOT)
{
// empty slot or an egg
gSprites[ballIconSpritesIds[i]].oam.tileNum += 1;
gSprites[ballIconSpritesIds[i]].data[7] = 1;
}
@@ -1153,17 +1154,20 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
}
else
{
if (i >= nValidMons) // empty slot or an egg
if (i >= nValidMons)
{
// empty slot or an egg
gSprites[ballIconSpritesIds[i]].oam.tileNum += 1;
gSprites[ballIconSpritesIds[i]].data[7] = 1;
}
else if (partyInfo[i].hp == 0) // fainted mon
else if (partyInfo[i].hp == 0)
{
// fainted mon
gSprites[ballIconSpritesIds[i]].oam.tileNum += 3;
}
else if (partyInfo[i].status != 0) // mon with major status
else if (partyInfo[i].status != 0)
{
// mon with major status
gSprites[ballIconSpritesIds[i]].oam.tileNum += 2;
}
}
@@ -1175,17 +1179,20 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg
if (partyInfo[i].hp == HP_EMPTY_SLOT)
{
// empty slot or an egg
gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 1;
gSprites[ballIconSpritesIds[5 - i]].data[7] = 1;
}
else if (partyInfo[i].hp == 0) // fainted mon
else if (partyInfo[i].hp == 0)
{
// fainted mon
gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 3;
}
else if (partyInfo[i].status != 0) // mon with major status
else if (partyInfo[i].status != 0)
{
// mon with major status
gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 2;
}
}
+668 -571
View File
File diff suppressed because it is too large Load Diff
+662 -608
View File
File diff suppressed because it is too large Load Diff
+22 -10
View File
@@ -2,8 +2,8 @@
#include "bg.h"
#include "battle.h"
#include "battle_anim.h"
#include "pokemon.h"
#include "malloc.h"
#include "pokemon.h"
#include "trainer_tower.h"
void AllocateBattleResources(void)
@@ -14,10 +14,12 @@ void AllocateBattleResources(void)
{
s32 i;
for (i = 0; i < 4; ++i)
for (i = 0; i < 4; i++)
gPokedudeBattlerStates[i] = AllocZeroed(sizeof(struct PokedudeBattlerState));
}
gBattleStruct = AllocZeroed(sizeof(*gBattleStruct));
gBattleResources = AllocZeroed(sizeof(*gBattleResources));
gBattleResources->secretBase = AllocZeroed(sizeof(*gBattleResources->secretBase));
gBattleResources->flags = AllocZeroed(sizeof(*gBattleResources->flags));
@@ -27,12 +29,15 @@ void AllocateBattleResources(void)
gBattleResources->ai = AllocZeroed(sizeof(*gBattleResources->ai));
gBattleResources->battleHistory = AllocZeroed(sizeof(*gBattleResources->battleHistory));
gBattleResources->AI_ScriptsStack = AllocZeroed(sizeof(*gBattleResources->AI_ScriptsStack));
gLinkBattleSendBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE);
gLinkBattleRecvBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE);
gBattleAnimMons_BgTilesBuffer = AllocZeroed(0x2000);
gBattleAnimMons_BgTilemapBuffer = AllocZeroed(0x1000);
SetBgTilemapBuffer(1, gBattleAnimMons_BgTilemapBuffer);
SetBgTilemapBuffer(2, gBattleAnimMons_BgTilemapBuffer);
gBattleAnimBgTileBuffer = AllocZeroed(0x2000);
gBattleAnimBgTilemapBuffer = AllocZeroed(0x1000);
SetBgTilemapBuffer(1, gBattleAnimBgTilemapBuffer);
SetBgTilemapBuffer(2, gBattleAnimBgTilemapBuffer);
}
void FreeBattleResources(void)
@@ -43,7 +48,7 @@ void FreeBattleResources(void)
{
s32 i;
for (i = 0; i < 4; ++i)
for (i = 0; i < 4; i++)
{
FREE_AND_SET_NULL(gPokedudeBattlerStates[i]);
}
@@ -51,6 +56,7 @@ void FreeBattleResources(void)
if (gBattleResources != NULL)
{
FREE_AND_SET_NULL(gBattleStruct);
FREE_AND_SET_NULL(gBattleResources->secretBase);
FREE_AND_SET_NULL(gBattleResources->flags);
FREE_AND_SET_NULL(gBattleResources->battleScriptsStack);
@@ -60,21 +66,26 @@ void FreeBattleResources(void)
FREE_AND_SET_NULL(gBattleResources->battleHistory);
FREE_AND_SET_NULL(gBattleResources->AI_ScriptsStack);
FREE_AND_SET_NULL(gBattleResources);
FREE_AND_SET_NULL(gLinkBattleSendBuffer);
FREE_AND_SET_NULL(gLinkBattleRecvBuffer);
FREE_AND_SET_NULL(gBattleAnimMons_BgTilesBuffer);
FREE_AND_SET_NULL(gBattleAnimMons_BgTilemapBuffer);
FREE_AND_SET_NULL(gBattleAnimBgTileBuffer);
FREE_AND_SET_NULL(gBattleAnimBgTilemapBuffer);
}
}
void AdjustFriendshipOnBattleFaint(u8 battlerId)
{
u8 opposingBattlerId, opposingBattlerId2;
u8 opposingBattlerId;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
u8 opposingBattlerId2;
opposingBattlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
opposingBattlerId2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
if (gBattleMons[opposingBattlerId2].level > gBattleMons[opposingBattlerId].level)
opposingBattlerId = opposingBattlerId2;
}
@@ -82,6 +93,7 @@ void AdjustFriendshipOnBattleFaint(u8 battlerId)
{
opposingBattlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
}
if (gBattleMons[opposingBattlerId].level > gBattleMons[battlerId].level)
{
if (gBattleMons[opposingBattlerId].level - gBattleMons[battlerId].level > 29)
+5 -3
View File
@@ -5,6 +5,8 @@
#include "constants/items.h"
#include "pokemon_icon.h"
#define UNOWN_OFFSET 30000
void ClearMailData(void)
{
u8 i;
@@ -73,7 +75,7 @@ u8 GiveMailToMon(struct Pokemon *mon, u16 itemId)
u16 SpeciesToMailSpecies(u16 species, u32 personality)
{
if (species == SPECIES_UNOWN) {
u32 mailSpecies = GetUnownLetterByPersonality(personality) + 30000;
u32 mailSpecies = GetUnownLetterByPersonality(personality) + UNOWN_OFFSET;
return mailSpecies;
}
return species;
@@ -83,10 +85,10 @@ u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *unownLetter)
{
u16 result;
if (mailSpecies >= 30000 && mailSpecies < (30000 + UNOWN_FORM_COUNT))
if (mailSpecies >= UNOWN_OFFSET && mailSpecies < (UNOWN_OFFSET + NUM_UNOWN_FORMS))
{
result = SPECIES_UNOWN;
*unownLetter = mailSpecies - 30000;
*unownLetter = mailSpecies - UNOWN_OFFSET;
}
else
{
+1 -1
View File
@@ -797,7 +797,7 @@ const u8 (*const sCategoryPageIconCoords[])[4] = {
sPageIconCoords_4Mons,
};
static const u8 * const sDexCategoryNamePtrs[] = {
static const u8 *const sDexCategoryNamePtrs[] = {
gText_DexCategory_GrasslandPkmn,
gText_DexCategory_ForestPkmn,
gText_DexCategory_WatersEdgePkmn,
+2 -2
View File
@@ -1856,7 +1856,7 @@ void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level,
{
u32 personality;
if ((u8)(unownLetter - 1) < 28)
if ((u8)(unownLetter - 1) < NUM_UNOWN_FORMS)
{
u16 actualLetter;
@@ -3919,7 +3919,7 @@ static void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex)
*hpSwitchout = gBattleMons[battlerId].hp;
for (i = 0; i < 8; i++)
gBattleMons[battlerId].statStages[i] = 6;
gBattleMons[battlerId].statStages[i] = DEFAULT_STAT_STAGE;
gBattleMons[battlerId].status2 = 0;
UpdateSentPokesToOpponentValue(battlerId);
+2 -2
View File
@@ -626,14 +626,14 @@ static const u32 sBgTilemap_MovesPage[] = INCBIN_U32( "graphics/interface/pokesu
#include "data/text/nature_names.h"
static const u8 * const sEggHatchTimeTexts[] = {
static const u8 *const sEggHatchTimeTexts[] = {
gText_PokeSum_EggHatch_LongTime,
gText_PokeSum_EggHatch_SomeTime,
gText_PokeSum_EggHatch_Soon,
gText_PokeSum_EggHatch_AlmostReady
};
static const u8 * const sEggOriginTexts[] = {
static const u8 *const sEggOriginTexts[] = {
gText_PokeSum_EggOrigin_DayCare,
gText_PokeSum_EggOrigin_Trade,
gText_PokeSum_EggOrigin_TravelingMan,
+2 -2
View File
@@ -16,7 +16,7 @@ struct GFRomHeader
const struct CompressedSpriteSheet * monBackPics;
const struct CompressedSpritePalette * monNormalPalettes;
const struct CompressedSpritePalette * monShinyPalettes;
const u8 * const * monIcons;
const u8 *const * monIcons;
const u8 * monIconPaletteIds;
const struct SpritePalette * monIconPalettes;
const u8 (* monSpeciesNames)[];
@@ -63,7 +63,7 @@ struct GFRomHeader
u32 unk18;
const struct BaseStats * baseStats;
const u8 (* abilityNames)[];
const u8 * const * abilityDescriptions;
const u8 *const * abilityDescriptions;
const struct Item * items;
const struct BattleMove * moves;
const struct CompressedSpriteSheet * ballGfx;