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