Merge branch 'master' of https://github.com/GriffinRichards/pokefirered into clone-union

This commit is contained in:
GriffinR
2022-08-10 13:48:30 -04:00
1146 changed files with 40526 additions and 38156 deletions
+60 -49
View File
@@ -4,6 +4,7 @@
#include <limits.h>
#include "global.h"
#include "constants/battle.h"
#include "constants/battle_script_commands.h"
#include "battle_util.h"
#include "battle_script_commands.h"
#include "battle_main.h"
@@ -23,18 +24,25 @@
#define GET_BATTLER_SIDE(battler)((GetBattlerPosition(battler) & BIT_SIDE))
#define GET_BATTLER_SIDE2(battler)((GET_BATTLER_POSITION(battler) & BIT_SIDE))
// Used to exclude moves learned temporarily by Transform or Mimic
#define MOVE_IS_PERMANENT(battler, moveSlot) \
(!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) \
&& !(gDisableStructs[battler].mimickedMoves & gBitTable[moveSlot]))
#define TRAINER_OPPONENT_3FE 0x3FE
#define TRAINER_OPPONENT_C00 0xC00
#define TRAINER_LINK_OPPONENT 0x800
#define SECRET_BASE_OPPONENT 0x400
// Battle Actions
// These determine what each battler will do in a turn
#define B_ACTION_USE_MOVE 0
#define B_ACTION_USE_ITEM 1
#define B_ACTION_SWITCH 2
#define B_ACTION_RUN 3
#define B_ACTION_SAFARI_WATCH_CAREFULLY 4
#define B_ACTION_SAFARI_BALL 5
#define B_ACTION_SAFARI_BAIT 6
#define B_ACTION_SAFARI_BAIT 6
#define B_ACTION_SAFARI_GO_NEAR 7
#define B_ACTION_SAFARI_RUN 8
#define B_ACTION_OLDMAN_THROW 9
@@ -47,26 +55,23 @@
#define MAX_TRAINER_ITEMS 4
// array entries for battle communication
#define MULTIUSE_STATE 0x0
#define CURSOR_POSITION 0x1
#define TASK_ID 0x1 // task Id and cursor position share the same field
#define SPRITES_INIT_STATE1 0x1 // shares the Id as well
#define SPRITES_INIT_STATE2 0x2
#define MOVE_EFFECT_BYTE 0x3
#define ACTIONS_CONFIRMED_COUNT 0x4
#define MULTISTRING_CHOOSER 0x5
#define MSG_DISPLAY 0x7
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8
enum {
BATTLER_AFFINE_NORMAL,
BATTLER_AFFINE_EMERGE,
BATTLER_AFFINE_RETURN,
};
#define MOVE_TARGET_SELECTED 0x0
#define MOVE_TARGET_DEPENDS 0x1
#define MOVE_TARGET_USER_OR_SELECTED 0x2
#define MOVE_TARGET_RANDOM 0x4
#define MOVE_TARGET_BOTH 0x8
#define MOVE_TARGET_USER 0x10
#define MOVE_TARGET_FOES_AND_ALLY 0x20
#define MOVE_TARGET_OPPONENTS_FIELD 0x40
#define MOVE_TARGET_SELECTED 0
#define MOVE_TARGET_DEPENDS (1 << 0)
#define MOVE_TARGET_USER_OR_SELECTED (1 << 1)
#define MOVE_TARGET_RANDOM (1 << 2)
#define MOVE_TARGET_BOTH (1 << 3)
#define MOVE_TARGET_USER (1 << 4)
#define MOVE_TARGET_FOES_AND_ALLY (1 << 5)
#define MOVE_TARGET_OPPONENTS_FIELD (1 << 6)
// For the second argument of GetMoveTarget, when no target override is needed
#define NO_TARGET_OVERRIDE 0
struct TrainerMonNoItemDefaultMoves
{
@@ -159,7 +164,7 @@ struct DisableStruct
/*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
/*0x18*/ u8 truantCounter : 1;
/*0x18*/ u8 truantSwitchInHack : 1; // unused?
/*0x18*/ u8 truantSwitchInHack : 1; // Unused here, but used in pokeemerald
/*0x18*/ u8 unk18_a_2 : 2;
/*0x18*/ u8 mimickedMoves : 4;
/*0x19*/ u8 rechargeTimer;
@@ -209,14 +214,14 @@ extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT];
struct SpecialStatus
{
u8 statLowered : 1; // 0x1
u8 lightningRodRedirected : 1; // 0x2
u8 restoredBattlerSprite: 1; // 0x4
u8 intimidatedMon : 1; // 0x8
u8 traced : 1; // 0x10
u8 ppNotAffectedByPressure : 1;
u8 flag40 : 1;
u8 focusBanded : 1;
u8 statLowered:1; // 0x1
u8 lightningRodRedirected:1; // 0x2
u8 restoredBattlerSprite:1; // 0x4
u8 intimidatedMon:1; // 0x8
u8 traced:1; // 0x10
u8 ppNotAffectedByPressure:1;
u8 faintedHasReplacement:1;
u8 focusBanded:1;
u8 field1[3];
s32 dmg;
s32 physicalDmg;
@@ -455,17 +460,23 @@ struct BattleStruct
extern struct BattleStruct *gBattleStruct;
#define GET_MOVE_TYPE(move, typeArg) \
{ \
if (gBattleStruct->dynamicMoveType) \
typeArg = gBattleStruct->dynamicMoveType & 0x3F; \
else \
typeArg = gBattleMoves[move].type; \
#define F_DYNAMIC_TYPE_1 (1 << 6)
#define F_DYNAMIC_TYPE_2 (1 << 7)
#define DYNAMIC_TYPE_MASK (F_DYNAMIC_TYPE_1 - 1)
#define GET_MOVE_TYPE(move, typeArg) \
{ \
if (gBattleStruct->dynamicMoveType) \
typeArg = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; \
else \
typeArg = gBattleMoves[move].type; \
}
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
#define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0))
#define IS_BATTLER_OF_TYPE(battlerId, type)((gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type))
#define SET_BATTLER_TYPE(battlerId, type) \
{ \
@@ -492,7 +503,7 @@ struct BattleScripting
u8 animArg1;
u8 animArg2;
u16 tripleKickPower;
u8 atk49_state;
u8 moveendState;
u8 battlerWithAbility;
u8 multihitMoveEffect;
u8 battler;
@@ -500,11 +511,11 @@ struct BattleScripting
u8 animTargetsHit;
u8 statChanger;
bool8 statAnimPlayed;
u8 atk23_state;
u8 getexpState;
u8 battleStyle;
u8 atk6C_state;
u8 drawlvlupboxState;
u8 learnMoveState;
u8 field_20;
u8 pursuitDoublesAttacker;
u8 reshowMainState;
u8 reshowHelperState;
u8 field_23;
@@ -540,15 +551,15 @@ struct BattleAnimationInfo
u8 field_6;
u8 field_7;
u8 ballThrowCaseId;
u8 healthboxSlideInStarted : 1;
u8 field_9_x2 : 1;
u8 field_9_x1C : 3;
u8 field_9_x20 : 1;
u8 field_9_x40 : 1;
u8 field_9_x80 : 1;
u8 field_A;
u8 introAnimActive:1;
u8 wildMonInvisible:1;
u8 field_9_x1C:3;
u8 field_9_x20:1;
u8 field_9_x40:1;
u8 field_9_x80:1;
u8 numBallParticles;
u8 field_B;
s16 field_C;
s16 ballSubpx;
u8 field_E;
u8 field_F;
};
@@ -605,8 +616,8 @@ extern u8 *gLinkBattleRecvBuffer;
struct MonSpritesGfx
{
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
void* sprites[MAX_BATTLERS_COUNT];
void *firstDecompressed; // ptr to the decompressed sprite of the first pokemon
void *sprites[MAX_BATTLERS_COUNT];
struct SpriteTemplate templates[MAX_BATTLERS_COUNT];
struct SpriteFrameImage images[MAX_BATTLERS_COUNT][4];
u8 field_F4[0x80]; // unused
+3 -3
View File
@@ -165,8 +165,8 @@ extern const union AnimCmd *const gMusicNotesAnimTable[];
extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate;
void AnimMovePowderParticle(struct Sprite *);
void AnimPowerAbsorptionOrb(struct Sprite *);
void AnimSolarbeamBigOrb(struct Sprite *);
void AnimSolarbeamSmallOrb(struct Sprite *);
void AnimSolarBeamBigOrb(struct Sprite *);
void AnimSolarBeamSmallOrb(struct Sprite *);
void AnimAbsorptionOrb(struct Sprite *);
void AnimHyperBeamOrb(struct Sprite *);
void AnimSporeParticle(struct Sprite *);
@@ -317,7 +317,7 @@ void AnimRecycle(struct Sprite *);
// battle_anim_special.c
void TryShinyAnimation(u8 battler, struct Pokemon *mon);
u8 ItemIdToBallId(u16 itemId);
u8 LaunchBallStarsTask(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId);
u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId);
u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
void DoLoadHealthboxPalsForLevelUp(u8 *, u8 *, u8 battlerId);
void DoFreeHealthboxPalsForLevelUp(u8 batterId);
+34 -17
View File
@@ -68,17 +68,34 @@ enum
REQUEST_TOUGH_RIBBON_BATTLE,
};
#define RESET_ACTION_MOVE_SELECTION 0
#define RESET_ACTION_SELECTION 1
#define RESET_MOVE_SELECTION 2
// Special arguments for Battle Controller functions.
#define BALL_NO_SHAKES 0
#define BALL_1_SHAKE 1
#define BALL_2_SHAKES 2
#define BALL_3_SHAKES_FAIL 3
#define BALL_3_SHAKES_SUCCESS 4
#define BALL_TRAINER_BLOCK 5
#define BALL_GHOST_DODGE 6
enum { // Values given to the emit functions to choose gBattleBufferA or gBattleBufferB
BUFFER_A,
BUFFER_B
};
enum {
RESET_ACTION_MOVE_SELECTION,
RESET_ACTION_SELECTION,
RESET_MOVE_SELECTION,
};
enum {
BALL_NO_SHAKES,
BALL_1_SHAKE,
BALL_2_SHAKES,
BALL_3_SHAKES_FAIL,
BALL_3_SHAKES_SUCCESS,
BALL_TRAINER_BLOCK,
BALL_GHOST_DODGE,
};
enum {
LINK_STANDBY_MSG_STOP_BOUNCE,
LINK_STANDBY_STOP_BOUNCE_ONLY,
LINK_STANDBY_MSG_ONLY,
};
#define RET_VALUE_LEVELLED_UP 11
@@ -149,7 +166,7 @@ enum
CONTROLLER_STATUSXOR,
CONTROLLER_DATATRANSFER,
CONTROLLER_DMA3TRANSFER,
CONTROLLER_31,
CONTROLLER_PLAYBGM,
CONTROLLER_32,
CONTROLLER_TWORETURNVALUES,
CONTROLLER_CHOSENMONRETURNVALUE,
@@ -173,7 +190,7 @@ enum
CONTROLLER_BATTLEANIMATION,
CONTROLLER_LINKSTANDBYMSG,
CONTROLLER_RESETACTIONMOVESELECTION,
CONTROLLER_55,
CONTROLLER_ENDLINKBATTLE,
/*new controllers should go here*/
CONTROLLER_TERMINATOR_NOP,
CONTROLLER_CMDS_COUNT
@@ -193,7 +210,7 @@ void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck);
void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data);
void BtlController_EmitLoadMonSprite(u8 bufferId);
void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit);
void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1);
void BtlController_EmitReturnMonToBall(u8 bufferId, bool8 skipAnim);
void BtlController_EmitDrawTrainerPic(u8 bufferId);
void BtlController_EmitTrainerSlide(u8 bufferId);
void BtlController_EmitTrainerSlideBack(u8 bufferId);
@@ -205,7 +222,7 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId);
void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1);
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4);
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8 *arg4);
void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints);
void BtlController_EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2);
@@ -216,7 +233,7 @@ void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c);
void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1);
void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b);
void BtlController_EmitHitAnimation(u8 bufferId);
void BtlController_EmitCmd42(u8 bufferId);
void BtlController_EmitCantSwitch(u8 bufferId);
void BtlController_EmitPlaySE(u8 bufferId, u16 songId);
void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId);
void BtlController_EmitFaintingCry(u8 bufferId);
@@ -227,9 +244,9 @@ void BtlController_EmitHidePartyStatusSummary(u8 bufferId);
void BtlController_EmitEndBounceEffect(u8 bufferId);
void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument);
void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1);
void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 mode);
void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
void BtlController_EmitCmd55(u8 bufferId, u8 arg1);
void BtlController_EmitEndLinkBattle(u8 bufferId, u8 battleOutcome);
// player controller
void PlayerDummy(void);
+2 -2
View File
@@ -23,7 +23,7 @@ bool8 BattleInitAllSprites(u8 *state, u8 *battlerId);
void ClearSpritesHealthboxAnimData(void);
void CopyAllBattleSpritesInvisibilities(void);
void CopyBattleSpriteInvisibility(u8 battlerId);
void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 notTransform);
void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 transformType);
void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite);
void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId);
void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move);
@@ -40,6 +40,6 @@ void BattleInterfaceSetWindowPals(void);
void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute);
void AllocateMonSpritesGfx(void);
void FreeMonSpritesGfx(void);
bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon);
bool32 ShouldPlayNormalMonCry(struct Pokemon *mon);
#endif // GUARD_BATTLE_GFX_SFX_UTIL_H
+2 -2
View File
@@ -69,9 +69,9 @@ void VBlankCB_Battle(void);
void SpriteCB_VsLetterDummy(struct Sprite *sprite);
void SpriteCB_VsLetterInit(struct Sprite *sprite);
void CB2_InitEndLinkBattle(void);
u32 GetBattleBgAttribute(u8 arrayId, u8 caseId);
u32 GetBattleBgTemplateData(u8 arrayId, u8 caseId);
void SpriteCB_EnemyMon(struct Sprite *sprite);
void SpriteCallbackDummy2(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);
+9 -9
View File
@@ -208,12 +208,12 @@ struct BattleMsgData
};
void BufferStringBattle(u16 stringID);
u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src);
u32 BattleStringExpandPlaceholders(const u8* src, u8* dst);
void BattleHandleAddTextPrinter(const u8* text, u8 arg1);
u32 BattleStringExpandPlaceholdersToDisplayedString(const u8 *src);
u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst);
void BattleHandleAddTextPrinter(const u8 *text, u8 arg1);
void SetPpNumbersPaletteInMoveSelection(void);
u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp);
void BattlePutTextOnWindow(const u8* text, u8 windowId_flags);
void BattlePutTextOnWindow(const u8 *text, u8 windowId_flags);
bool8 BattleStringShouldBeColored(u16);
extern struct BattleMsgData *gBattleMsgDataPtr;
@@ -225,11 +225,11 @@ extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT];
extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT];
extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT];
extern const u8* const gBattleStringsTable[];
extern const u8* const gStatNamesTable[];
extern const u8* const gPokeblockWasTooXStringTable[];
extern const u8* const gRefereeStringsTable[];
extern const u8* const gStatNamesTable2[];
extern const u8 *const gBattleStringsTable[];
extern const u8 *const gStatNamesTable[];
extern const u8 *const gPokeblockWasTooXStringTable[];
extern const u8 *const gRefereeStringsTable[];
extern const u8 *const gStatNamesTable2[];
extern const u16 gMissStringIds[];
extern const u16 gTrappingMoves[];
+11 -13
View File
@@ -3,23 +3,21 @@
#include "global.h"
#define STAT_CHANGE_WORKED 0
#define STAT_CHANGE_DIDNT_WORK 1
// Arguments for 'flags' in HandleBattleWindow
#define WINDOW_CLEAR (1 << 0)
#define WINDOW_BG1 (1 << 7)
#define WINDOW_CLEAR 0x1
#define WINDOW_x80 0x80
void SetMoveEffect(bool8 primary, u8 certain);
bool8 UproarWakeUpCheck(u8 battlerId);
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
u8 TypeCalc(u16 move, u8 attacker, u8 defender);
void AI_CalcDmg(u8 attacker, u8 defender);
bool32 IsMonGettingExpSentOut(void);
void BattleCreateYesNoCursorAt(void);
void BattleDestroyYesNoCursorAt(void);
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
u8 TypeCalc(u16 move, u8 attacker, u8 defender);
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
u8 GetBattlerTurnOrderNum(u8 battlerId);
void SetMoveEffect(bool8 primary, u8 certain);
bool32 IsMonGettingExpSentOut(void);
void BattleDestroyYesNoCursorAt(void);
void BattleCreateYesNoCursorAt(void);
void BufferMoveToLearnIntoBattleTextBuff2(void);
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
bool8 UproarWakeUpCheck(u8 battlerId);
extern void (* const gBattleScriptingCommandsTable[])(void);
+1 -1
View File
@@ -197,7 +197,7 @@ extern const u8 BattleScript_BerryPPHealEnd2[];
extern const u8 BattleScript_ItemHealHP_End2[];
extern const u8 BattleScript_ItemHealHP_Ret[];
extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[];
extern const u8 BattleScript_HangedOnMsg[];
extern const u8 BattleScript_FocusBandActivates[];
extern const u8 BattleScript_BerryConfuseHealEnd2[];
extern const u8 BattleScript_BerryStatRaiseEnd2[];
extern const u8 BattleScript_BerryFocusEnergyEnd2[];
+209 -8
View File
@@ -1,8 +1,6 @@
#ifndef GUARD_BATTLE_STRING_IDS_H
#define GUARD_BATTLE_STRING_IDS_H
#define BATTLESTRINGS_ID_ADDER 12 // all battlestrings have its ID + 12, because first 5 are reserved
#define STRINGID_INTROMSG 0
#define STRINGID_INTROSENDOUT 1
#define STRINGID_RETURNMON 2
@@ -123,7 +121,7 @@
#define STRINGID_PKMNSTORINGENERGY 120
#define STRINGID_PKMNUNLEASHEDENERGY 121
#define STRINGID_PKMNFATIGUECONFUSION 122
#define STRINGID_PKMNPICKEDUPITEM 123
#define STRINGID_PLAYERPICKEDUPMONEY 123
#define STRINGID_PKMNUNAFFECTED 124
#define STRINGID_PKMNTRANSFORMEDINTO 125
#define STRINGID_PKMNMADESUBSTITUTE 126
@@ -213,10 +211,10 @@
#define STRINGID_STATROSE 210
#define STRINGID_STATHARSHLY 211
#define STRINGID_STATFELL 212
#define STRINGID_PKMNSSTATCHANGED 213
#define STRINGID_PKMNSSTATCHANGED2 214
#define STRINGID_PKMNSSTATCHANGED3 215
#define STRINGID_PKMNSSTATCHANGED4 216
#define STRINGID_ATTACKERSSTATROSE 213
#define STRINGID_DEFENDERSSTATROSE 214
#define STRINGID_ATTACKERSSTATFELL 215
#define STRINGID_DEFENDERSSTATFELL 216
#define STRINGID_CRITICALHIT 217
#define STRINGID_ONEHITKO 218
#define STRINGID_123POOF 219
@@ -325,7 +323,7 @@
#define STRINGID_SOOTHINGAROMA 322
#define STRINGID_ITEMSCANTBEUSEDNOW 323
#define STRINGID_FORXCOMMAYZ 324
#define STRINGID_USINGXTHEYOFZN 325
#define STRINGID_USINGITEMSTATOFPKMNROSE 325
#define STRINGID_PKMNUSEDXTOGETPUMPED 326
#define STRINGID_PKMNSXMADEYUSELESS 327
#define STRINGID_PKMNTRAPPEDBYSANDTOMB 328
@@ -389,4 +387,207 @@
#define BATTLESTRINGS_COUNT 374
// This is the string id that gBattleStringsTable starts with.
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table,
// and are instead handled explicitly by BufferStringBattle.
#define BATTLESTRINGS_TABLE_START STRINGID_TRAINER1LOSETEXT
// The below IDs are all indexes into battle message tables,
// used to determine which of a set of messages to print.
// They are assigned to the MULTISTRING_CHOOSER byte of gBattleCommunication
// and read when e.g. the command printfromtable is used.
// gStatUpStringIds
#define B_MSG_ATTACKER_STAT_ROSE 0
#define B_MSG_DEFENDER_STAT_ROSE 1
#define B_MSG_STAT_WONT_INCREASE 2
#define B_MSG_STAT_ROSE_EMPTY 3
#define B_MSG_STAT_ROSE_ITEM 4
#define B_MSG_USED_DIRE_HIT 5
// gStatDownStringIds
#define B_MSG_ATTACKER_STAT_FELL 0
#define B_MSG_DEFENDER_STAT_FELL 1
#define B_MSG_STAT_WONT_DECREASE 2
#define B_MSG_STAT_FELL_EMPTY 3
// gMissStringIds
#define B_MSG_MISSED 0
#define B_MSG_PROTECTED 1
#define B_MSG_AVOIDED_ATK 2
#define B_MSG_AVOIDED_DMG 3
#define B_MSG_GROUND_MISS 4
// gAbsorbDrainStringIds
#define B_MSG_ABSORB 0
#define B_MSG_ABSORB_OOZE 1
// gLeechSeedStringIds
#define B_MSG_LEECH_SEED_SET 0
#define B_MSG_LEECH_SEED_MISS 1
#define B_MSG_LEECH_SEED_FAIL 2
#define B_MSG_LEECH_SEED_DRAIN 3
#define B_MSG_LEECH_SEED_OOZE 4
// gFirstTurnOfTwoStringIds
#define B_MSG_TURN1_RAZOR_WIND 0
#define B_MSG_TURN1_SOLAR_BEAM 1
#define B_MSG_TURN1_SKULL_BASH 2
#define B_MSG_TURN1_SKY_ATTACK 3
#define B_MSG_TURN1_FLY 4
#define B_MSG_TURN1_DIG 5
#define B_MSG_TURN1_DIVE 6
#define B_MSG_TURN1_BOUNCE 7
// gMoveWeatherChangeStringIds
#define B_MSG_STARTED_RAIN 0
#define B_MSG_STARTED_DOWNPOUR 1
#define B_MSG_WEATHER_FAILED 2
#define B_MSG_STARTED_SANDSTORM 3
#define B_MSG_STARTED_SUNLIGHT 4
#define B_MSG_STARTED_HAIL 5
// gRainContinuesStringIds
#define B_MSG_RAIN_CONTINUES 0
#define B_MSG_DOWNPOUR_CONTINUES 1
#define B_MSG_RAIN_STOPPED 2
// gSandStormHailContinuesStringIds / gSandStormHailDmgStringIds/ gSandStormHailEndStringIds
#define B_MSG_SANDSTORM 0
#define B_MSG_HAIL 1
// gReflectLightScreenSafeguardStringIds
#define B_MSG_SIDE_STATUS_FAILED 0
#define B_MSG_SET_REFLECT_SINGLE 1
#define B_MSG_SET_REFLECT_DOUBLE 2
#define B_MSG_SET_LIGHTSCREEN_SINGLE 3
#define B_MSG_SET_LIGHTSCREEN_DOUBLE 4
#define B_MSG_SET_SAFEGUARD 5
// gProtectLikeUsedStringIds
#define B_MSG_PROTECTED_ITSELF 0
#define B_MSG_BRACED_ITSELF 1
#define B_MSG_PROTECT_FAILED 2
// gRestUsedStringIds
#define B_MSG_REST 0
#define B_MSG_REST_STATUSED 1
// gWokeUpStringIds
#define B_MSG_WOKE_UP 0
#define B_MSG_WOKE_UP_UPROAR 1
// gUproarAwakeStringIds
#define B_MSG_CANT_SLEEP_UPROAR 0
#define B_MSG_UPROAR_KEPT_AWAKE 1
#define B_MSG_STAYED_AWAKE_USING 2
// gUproarOverTurnStringIds
#define B_MSG_UPROAR_CONTINUES 0
#define B_MSG_UPROAR_ENDS 1
// gStockpileUsedStringIds
#define B_MSG_STOCKPILED 0
#define B_MSG_CANT_STOCKPILE 1
// gSwallowFailStringIds
#define B_MSG_SWALLOW_FAILED 0
#define B_MSG_SWALLOW_FULL_HP 1
// gKOFailedStringIds
#define B_MSG_KO_MISS 0
#define B_MSG_KO_UNAFFECTED 1
// gMistUsedStringIds
#define B_MSG_SET_MIST 0
#define B_MSG_MIST_FAILED 1
// gFocusEnergyUsedStringIds
#define B_MSG_GETTING_PUMPED 0
#define B_MSG_FOCUS_ENERGY_FAILED 1
// gTransformUsedStringIds
#define B_MSG_TRANSFORMED 0
#define B_MSG_TRANSFORM_FAILED 1
// gSubstituteUsedStringIds
#define B_MSG_SET_SUBSTITUTE 0
#define B_MSG_SUBSTITUTE_FAILED 1
// gPartyStatusHealStringIds
#define B_MSG_BELL 0
#define B_MSG_BELL_SOUNDPROOF_ATTACKER 1
#define B_MSG_BELL_SOUNDPROOF_PARTNER 2
#define B_MSG_BELL_BOTH_SOUNDPROOF 3
#define B_MSG_SOOTHING_AROMA 4
// gFutureMoveUsedStringIds
#define B_MSG_FUTURE_SIGHT 0
#define B_MSG_DOOM_DESIRE 1
// gItemSwapStringIds
#define B_MSG_ITEM_SWAP_TAKEN 0
#define B_MSG_ITEM_SWAP_GIVEN 1
#define B_MSG_ITEM_SWAP_BOTH 2
// gSportsUsedStringIds
#define B_MSG_WEAKEN_ELECTRIC 0
#define B_MSG_WEAKEN_FIRE 1
// gCaughtMonStringIds
#define B_MSG_SENT_SOMEONES_PC 0
#define B_MSG_SENT_BILLS_PC 1
#define B_MSG_SOMEONES_BOX_FULL 2
#define B_MSG_BILLS_BOX_FULL 3
// gInobedientStringIds
#define B_MSG_LOAFING 0
#define B_MSG_WONT_OBEY 1
#define B_MSG_TURNED_AWAY 2
#define B_MSG_PRETEND_NOT_NOTICE 3
#define B_MSG_INCAPABLE_OF_POWER 4
// For randomly selecting a disobey string
// Skips the one used for Battle Palace
#define NUM_LOAF_STRINGS 4
// gSafariGetNearStringIds
#define B_MSG_CREPT_CLOSER 0
#define B_MSG_CANT_GET_CLOSER 1
// gSafariPokeblockResultStringIds
#define B_MSG_MON_CURIOUS 0
#define B_MSG_MON_ENTHRALLED 1
#define B_MSG_MON_IGNORED 2
// gFlashFireStringIds
#define B_MSG_FLASH_FIRE_BOOST 0
#define B_MSG_FLASH_FIRE_NO_BOOST 1
// gBerryEffectStringIds
#define B_MSG_CURED_PROBLEM 0
#define B_MSG_NORMALIZED_STATUS 1
// gNoEscapeStringIds
#define B_MSG_CANT_ESCAPE 0
#define B_MSG_DONT_LEAVE_BIRCH 1
#define B_MSG_PREVENTS_ESCAPE 2
#define B_MSG_CANT_ESCAPE_2 3
#define B_MSG_ATTACKER_CANT_ESCAPE 4
// gGotPoisonedStringIds / gGotParalyzedStringIds / gFellAsleepStringIds
// gGotBurnedStringIds / gGotFrozenStringIds / gAttractUsedStringIds
#define B_MSG_STATUSED 0
#define B_MSG_STATUSED_BY_ABILITY 1
// gBRNPreventionStringIds / gPRLZPreventionStringIds / gPSNPreventionStringIds
#define B_MSG_ABILITY_PREVENTS_MOVE_STATUS 0
#define B_MSG_ABILITY_PREVENTS_ABILITY_STATUS 1
#define B_MSG_STATUS_HAD_NO_EFFECT 2
// gGotDefrostedStringIds
#define B_MSG_DEFROSTED 0
#define B_MSG_DEFROSTED_BY_MOVE 1
#define NUM_TRAPPING_MOVES 6
#endif // GUARD_BATTLE_STRING_IDS_H
+23 -21
View File
@@ -10,27 +10,29 @@
#define MOVE_LIMITATION_TAUNT (1 << 4)
#define MOVE_LIMITATION_IMPRISON (1 << 5)
#define ABILITYEFFECT_ON_SWITCHIN 0x0
#define ABILITYEFFECT_ENDTURN 0x1
#define ABILITYEFFECT_MOVES_BLOCK 0x2
#define ABILITYEFFECT_ABSORBING 0x3
#define ABILITYEFFECT_MOVE_END 0x4
#define ABILITYEFFECT_IMMUNITY 0x5
#define ABILITYEFFECT_FORECAST 0x6
#define ABILITYEFFECT_SYNCHRONIZE 0x7
#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8
#define ABILITYEFFECT_INTIMIDATE1 0x9
#define ABILITYEFFECT_INTIMIDATE2 0xA
#define ABILITYEFFECT_TRACE 0xB
#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC
#define ABILITYEFFECT_CHECK_BATTLER_SIDE 0xD
#define ABILITYEFFECT_FIELD_SPORT 0xE
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 0xF // TODO: Is it correct?
#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10
#define ABILITYEFFECT_COUNT_BATTLER_SIDE 0x11
#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF
#define ABILITYEFFECT_ON_SWITCHIN 0
#define ABILITYEFFECT_ENDTURN 1
#define ABILITYEFFECT_MOVES_BLOCK 2
#define ABILITYEFFECT_ABSORBING 3
#define ABILITYEFFECT_ON_DAMAGE 4
#define ABILITYEFFECT_IMMUNITY 5
#define ABILITYEFFECT_FORECAST 6
#define ABILITYEFFECT_SYNCHRONIZE 7
#define ABILITYEFFECT_ATK_SYNCHRONIZE 8
#define ABILITYEFFECT_INTIMIDATE1 9
#define ABILITYEFFECT_INTIMIDATE2 10
#define ABILITYEFFECT_TRACE 11
#define ABILITYEFFECT_CHECK_OTHER_SIDE 12
#define ABILITYEFFECT_CHECK_BATTLER_SIDE 13
#define ABILITYEFFECT_FIELD_SPORT 14
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 15
#define ABILITYEFFECT_COUNT_OTHER_SIDE 16
#define ABILITYEFFECT_COUNT_BATTLER_SIDE 17
#define ABILITYEFFECT_COUNT_ON_FIELD 18
#define ABILITYEFFECT_CHECK_ON_FIELD 19
#define ABILITYEFFECT_MUD_SPORT 253
#define ABILITYEFFECT_WATER_SPORT 254
#define ABILITYEFFECT_SWITCH_IN_WEATHER 255
#define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0))
#define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0))
+11 -4
View File
@@ -39,6 +39,13 @@ enum
BG_ATTR_BASETILE = 10
};
// Modes for ChangeBgX / ChangeBgY
enum {
BG_COORD_SET,
BG_COORD_ADD,
BG_COORD_SUB,
};
enum AdjustBgMosaicMode
{
BG_MOSAIC_SET,
@@ -82,7 +89,7 @@ void ResetBgsAndClearDma3BusyFlags(bool32 enableWindowTileAutoAlloc);
void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates);
void InitBgFromTemplate(const struct BgTemplate *template);
void SetBgMode(u8 bgMode);
u16 LoadBgTiles(u8 bg, const void* src, u16 size, u16 destOffset);
u16 LoadBgTiles(u8 bg, const void *src, u16 size, u16 destOffset);
u16 LoadBgTilemap(u8 bg, const void *src, u16 size, u16 destOffset);
u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset);
bool8 IsDma3ManagerBusyWithBgCopy(void);
@@ -99,12 +106,12 @@ void SetBgAffine(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dis
u8 AdjustBgMosaic(u8 value, u8 mode);
void SetBgTilemapBuffer(u8 bg, void *tilemap);
void UnsetBgTilemapBuffer(u8 bg);
void* GetBgTilemapBuffer(u8 bg);
void *GetBgTilemapBuffer(u8 bg);
void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset);
void CopyBgTilemapBufferToVram(u8 bg);
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height);
void CopyToBgTilemapBufferRect(u8 bg, const void *src, u8 destX, u8 destY, u8 width, u8 height);
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
void CopyRectToBgTilemapBufferRect(u8 bg, const void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, s16 tileOffset, s16 palette2);
void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, s16 tileOffset, s16 palette2);
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height);
void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette);
void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta);
+2 -2
View File
@@ -14,8 +14,8 @@ enum
void AllocBoxPartyPokemonDropdowns(u8 num);
void FreeBoxPartyPokemonDropdowns(void);
void CopyAllBoxPartyPokemonDropdownsToVram(void);
void SetBoxPartyPokemonDropdownMap2(u8 idx, u8 bgId, const void * src, u16 width, u16 height);
void SetBoxPartyPokemonDropdownMap1Tiles(u8 idx, const void * src);
void SetBoxPartyPokemonDropdownMap2(u8 idx, u8 bgId, const void *src, u16 width, u16 height);
void SetBoxPartyPokemonDropdownMap1Tiles(u8 idx, const void *src);
void SetBoxPartyPokemonDropdownMap2Pos(u8 idx, u16 x, u16 y);
void SetBoxPartyPokemonDropdownMap2Rect(u8 idx, u16 x, u16 y, u16 width, u16 height);
void AdjustBoxPartyPokemonDropdownPos(u8 a0, u8 a1, s8 a2);
+233 -196
View File
@@ -44,39 +44,27 @@
#define BIT_FLANK 2
// Battle Type Flags
#define BATTLE_TYPE_DOUBLE 0x0001
#define BATTLE_TYPE_LINK 0x0002
#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_LINK_ESTABLISHED 0x0020 // Set when the link battle setup callback finishes.
#define BATTLE_TYPE_MULTI 0x0040
#define BATTLE_TYPE_SAFARI 0x0080
#define BATTLE_TYPE_BATTLE_TOWER 0x0100
#define BATTLE_TYPE_OLD_MAN_TUTORIAL 0x0200
#define BATTLE_TYPE_ROAMER 0x0400
#define BATTLE_TYPE_EREADER_TRAINER 0x0800
#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_GHOST_UNVEILED 0x2000 // Re-use of BATTLE_TYPE_LEGENDARY, when combined with BATTLE_TYPE_GHOST
#define BATTLE_TYPE_REGI 0x4000
#define BATTLE_TYPE_GHOST 0x8000
#define BATTLE_TYPE_POKEDUDE 0x10000
#define BATTLE_TYPE_WILD_SCRIPTED 0x20000
#define BATTLE_TYPE_LEGENDARY_FRLG 0x40000
#define BATTLE_TYPE_TRAINER_TOWER 0x80000
#define BATTLE_TYPE_x100000 0x100000
#define BATTLE_TYPE_x200000 0x200000
#define BATTLE_TYPE_INGAME_PARTNER 0x400000
#define BATTLE_TYPE_x800000 0x800000
#define BATTLE_TYPE_RECORDED 0x1000000
#define BATTLE_TYPE_x2000000 0x2000000
#define BATTLE_TYPE_x4000000 0x4000000
#define BATTLE_TYPE_SECRET_BASE 0x8000000
#define BATTLE_TYPE_GROUDON 0x10000000
#define BATTLE_TYPE_KYOGRE 0x20000000
#define BATTLE_TYPE_RAYQUAZA 0x40000000
#define BATTLE_TYPE_x80000000 0x80000000
#define BATTLE_TYPE_DOUBLE (1 << 0)
#define BATTLE_TYPE_LINK (1 << 1)
#define BATTLE_TYPE_IS_MASTER (1 << 2) // In not-link battles, it's always set.
#define BATTLE_TYPE_TRAINER (1 << 3)
#define BATTLE_TYPE_FIRST_BATTLE (1 << 4)
#define BATTLE_TYPE_LINK_IN_BATTLE (1 << 5) // Set on battle entry, cleared on exit. Checked rarely
#define BATTLE_TYPE_MULTI (1 << 6)
#define BATTLE_TYPE_SAFARI (1 << 7)
#define BATTLE_TYPE_BATTLE_TOWER (1 << 8)
#define BATTLE_TYPE_OLD_MAN_TUTORIAL (1 << 9) // Used in pokeemerald as BATTLE_TYPE_WALLY_TUTORIAL.
#define BATTLE_TYPE_ROAMER (1 << 10)
#define BATTLE_TYPE_EREADER_TRAINER (1 << 11)
#define BATTLE_TYPE_KYOGRE_GROUDON (1 << 12)
#define BATTLE_TYPE_LEGENDARY (1 << 13)
#define BATTLE_TYPE_GHOST_UNVEILED (1 << 13) // Re-use of BATTLE_TYPE_LEGENDARY, when combined with BATTLE_TYPE_GHOST
#define BATTLE_TYPE_REGI (1 << 14)
#define BATTLE_TYPE_GHOST (1 << 15) // Used in pokeemerald as BATTLE_TYPE_TWO_OPPONENTS.
#define BATTLE_TYPE_POKEDUDE (1 << 16) // Used in pokeemerald as BATTLE_TYPE_DOME.
#define BATTLE_TYPE_WILD_SCRIPTED (1 << 17) // Used in pokeemerald as BATTLE_TYPE_PALACE.
#define BATTLE_TYPE_LEGENDARY_FRLG (1 << 18) // Used in pokeemerald as BATTLE_TYPE_ARENA.
#define BATTLE_TYPE_TRAINER_TOWER (1 << 19) // Used in pokeemerald as BATTLE_TYPE_FACTORY.
#define IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && !((flags) & BATTLE_TYPE_GHOST_UNVEILED))
#define IS_BATTLE_TYPE_GHOST_WITH_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && (flags) & BATTLE_TYPE_GHOST_UNVEILED)
@@ -85,103 +73,113 @@
#define RIVAL_BATTLE_TUTORIAL 3
// Battle Outcome defines
#define B_OUTCOME_WON 0x1
#define B_OUTCOME_LOST 0x2
#define B_OUTCOME_DREW 0x3
#define B_OUTCOME_RAN 0x4
#define B_OUTCOME_PLAYER_TELEPORTED 0x5
#define B_OUTCOME_MON_FLED 0x6
#define B_OUTCOME_CAUGHT 0x7
#define B_OUTCOME_NO_SAFARI_BALLS 0x8
#define B_OUTCOME_FORFEITED 0x9
#define B_OUTCOME_MON_TELEPORTED 0xA
#define B_OUTCOME_LINK_BATTLE_RAN 0x80
#define B_OUTCOME_WON 1
#define B_OUTCOME_LOST 2
#define B_OUTCOME_DREW 3
#define B_OUTCOME_RAN 4
#define B_OUTCOME_PLAYER_TELEPORTED 5
#define B_OUTCOME_MON_FLED 6
#define B_OUTCOME_CAUGHT 7
#define B_OUTCOME_NO_SAFARI_BALLS 8
#define B_OUTCOME_FORFEITED 9
#define B_OUTCOME_MON_TELEPORTED 10
#define B_OUTCOME_LINK_BATTLE_RAN (1 << 7) // 128
// Non-volatile status conditions
// These persist remain outside of battle and after switching out
#define STATUS1_NONE 0x0
#define STATUS1_SLEEP 0x7
#define STATUS1_POISON 0x8
#define STATUS1_BURN 0x10
#define STATUS1_FREEZE 0x20
#define STATUS1_PARALYSIS 0x40
#define STATUS1_TOXIC_POISON 0x80
#define STATUS1_TOXIC_COUNTER 0xF00
#define STATUS1_NONE 0
#define STATUS1_SLEEP (1 << 0 | 1 << 1 | 1 << 2) // First 3 bits (Number of turns to sleep)
#define STATUS1_SLEEP_TURN(num) ((num) << 0) // Just for readability (or if rearranging statuses)
#define STATUS1_POISON (1 << 3)
#define STATUS1_BURN (1 << 4)
#define STATUS1_FREEZE (1 << 5)
#define STATUS1_PARALYSIS (1 << 6)
#define STATUS1_TOXIC_POISON (1 << 7)
#define STATUS1_TOXIC_COUNTER (1 << 8 | 1 << 9 | 1 << 10 | 1 << 11)
#define STATUS1_TOXIC_TURN(num) ((num) << 8)
#define STATUS1_PSN_ANY (STATUS1_POISON | STATUS1_TOXIC_POISON)
#define STATUS1_ANY (STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)
// Volatile status ailments
// These are removed after exiting the battle or switching out
#define STATUS2_CONFUSION 0x00000007
#define STATUS2_FLINCHED 0x00000008
#define STATUS2_UPROAR 0x00000070
#define STATUS2_BIDE 0x00000300 // two bits 0x100, 0x200
#define STATUS2_LOCK_CONFUSE 0x00000C00
#define STATUS2_MULTIPLETURNS 0x00001000
#define STATUS2_WRAPPED 0x0000E000
#define STATUS2_INFATUATION 0x000F0000 // 4 bits, one for every battler
#define STATUS2_CONFUSION (1 << 0 | 1 << 1 | 1 << 2)
#define STATUS2_CONFUSION_TURN(num) ((num) << 0)
#define STATUS2_FLINCHED (1 << 3)
#define STATUS2_UPROAR (1 << 4 | 1 << 5 | 1 << 6)
#define STATUS2_UPROAR_TURN(num) ((num) << 4)
#define STATUS2_UNUSED (1 << 7)
#define STATUS2_BIDE (1 << 8 | 1 << 9)
#define STATUS2_BIDE_TURN(num) (((num) << 8) & STATUS2_BIDE)
#define STATUS2_LOCK_CONFUSE (1 << 10 | 1 << 11) // e.g. Thrash
#define STATUS2_LOCK_CONFUSE_TURN(num)((num) << 10)
#define STATUS2_MULTIPLETURNS (1 << 12)
#define STATUS2_WRAPPED (1 << 13 | 1 << 14 | 1 << 15)
#define STATUS2_WRAPPED_TURN(num) ((num) << 13)
#define STATUS2_INFATUATION (1 << 16 | 1 << 17 | 1 << 18 | 1 << 19) // 4 bits, one for every battler
#define STATUS2_INFATUATED_WITH(battler) (gBitTable[battler] << 16)
#define STATUS2_FOCUS_ENERGY 0x00100000
#define STATUS2_TRANSFORMED 0x00200000
#define STATUS2_RECHARGE 0x00400000
#define STATUS2_RAGE 0x00800000
#define STATUS2_SUBSTITUTE 0x01000000
#define STATUS2_DESTINY_BOND 0x02000000
#define STATUS2_ESCAPE_PREVENTION 0x04000000
#define STATUS2_NIGHTMARE 0x08000000
#define STATUS2_CURSED 0x10000000
#define STATUS2_FORESIGHT 0x20000000
#define STATUS2_DEFENSE_CURL 0x40000000
#define STATUS2_TORMENT 0x80000000
#define STATUS2_FOCUS_ENERGY (1 << 20)
#define STATUS2_TRANSFORMED (1 << 21)
#define STATUS2_RECHARGE (1 << 22)
#define STATUS2_RAGE (1 << 23)
#define STATUS2_SUBSTITUTE (1 << 24)
#define STATUS2_DESTINY_BOND (1 << 25)
#define STATUS2_ESCAPE_PREVENTION (1 << 26)
#define STATUS2_NIGHTMARE (1 << 27)
#define STATUS2_CURSED (1 << 28)
#define STATUS2_FORESIGHT (1 << 29)
#define STATUS2_DEFENSE_CURL (1 << 30)
#define STATUS2_TORMENT (1 << 31)
// Seems like per-battler statuses. Not quite sure how to categorize these
#define STATUS3_LEECHSEED_BATTLER 0x3
#define STATUS3_LEECHSEED 0x4
#define STATUS3_ALWAYS_HITS 0x18 // two bits
#define STATUS3_PERISH_SONG 0x20
#define STATUS3_ON_AIR 0x40
#define STATUS3_UNDERGROUND 0x80
#define STATUS3_MINIMIZED 0x100
#define STATUS3_ROOTED 0x400
#define STATUS3_CHARGED_UP 0x200
#define STATUS3_YAWN 0x1800 // two bits
#define STATUS3_IMPRISONED_OTHERS 0x2000
#define STATUS3_GRUDGE 0x4000
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
#define STATUS3_MUDSPORT 0x10000
#define STATUS3_WATERSPORT 0x20000
#define STATUS3_UNDERWATER 0x40000
#define STATUS3_INTIMIDATE_POKES 0x80000
#define STATUS3_TRACE 0x100000
#define STATUS3_LEECHSEED_BATTLER (1 << 0 | 1 << 1) // The battler to receive HP from Leech Seed
#define STATUS3_LEECHSEED (1 << 2)
#define STATUS3_ALWAYS_HITS (1 << 3 | 1 << 4)
#define STATUS3_ALWAYS_HITS_TURN(num) (((num) << 3) & STATUS3_ALWAYS_HITS) // "Always Hits" is set as a 2 turn timer, i.e. next turn is the last turn when it's active
#define STATUS3_PERISH_SONG (1 << 5)
#define STATUS3_ON_AIR (1 << 6)
#define STATUS3_UNDERGROUND (1 << 7)
#define STATUS3_MINIMIZED (1 << 8)
#define STATUS3_CHARGED_UP (1 << 9)
#define STATUS3_ROOTED (1 << 10)
#define STATUS3_YAWN (1 << 11 | 1 << 12) // Number of turns to sleep
#define STATUS3_YAWN_TURN(num) (((num) << 11) & STATUS3_YAWN)
#define STATUS3_IMPRISONED_OTHERS (1 << 13)
#define STATUS3_GRUDGE (1 << 14)
#define STATUS3_CANT_SCORE_A_CRIT (1 << 15)
#define STATUS3_MUDSPORT (1 << 16)
#define STATUS3_WATERSPORT (1 << 17)
#define STATUS3_UNDERWATER (1 << 18)
#define STATUS3_INTIMIDATE_POKES (1 << 19)
#define STATUS3_TRACE (1 << 20)
#define STATUS3_SEMI_INVULNERABLE (STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)
// Not really sure what a "hitmarker" is.
#define HITMARKER_x10 0x00000010
#define HITMARKER_x20 0x00000020
#define HITMARKER_DESTINYBOND 0x00000040
#define HITMARKER_NO_ANIMATIONS 0x00000080
#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
#define HITMARKER_NO_ATTACKSTRING 0x00000200
#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
#define HITMARKER_NO_PPDEDUCT 0x00000800
#define HITMARKER_SWAP_ATTACKER_TARGET 0x00001000
#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
#define HITMARKER_RUN 0x00008000
#define HITMARKER_IGNORE_ON_AIR 0x00010000
#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
#define HITMARKER_IGNORE_UNDERWATER 0x00040000
#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000
#define HITMARKER_PASSIVE_DAMAGE 0x00100000
#define HITMARKER_x200000 0x00200000
#define HITMARKER_PLAYER_FAINTED 0x00400000
#define HITMARKER_x800000 0x00800000
#define HITMARKER_GRUDGE 0x01000000
#define HITMARKER_OBEYS 0x02000000
#define HITMARKER_x4000000 0x04000000
#define HITMARKER_CHARGING 0x08000000
#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 0x1C)
#define HITMARKER_FAINTED2(battler) (0x10000000 << battler)
#define HITMARKER_WAKE_UP_CLEAR (1 << 4) // Cleared when waking up. Never set or checked.
#define HITMARKER_SKIP_DMG_TRACK (1 << 5)
#define HITMARKER_DESTINYBOND (1 << 6)
#define HITMARKER_NO_ANIMATIONS (1 << 7)
#define HITMARKER_IGNORE_SUBSTITUTE (1 << 8)
#define HITMARKER_NO_ATTACKSTRING (1 << 9)
#define HITMARKER_ATTACKSTRING_PRINTED (1 << 10)
#define HITMARKER_NO_PPDEDUCT (1 << 11)
#define HITMARKER_SWAP_ATTACKER_TARGET (1 << 12)
#define HITMARKER_IGNORE_SAFEGUARD (1 << 13)
#define HITMARKER_SYNCHRONISE_EFFECT (1 << 14)
#define HITMARKER_RUN (1 << 15)
#define HITMARKER_IGNORE_ON_AIR (1 << 16)
#define HITMARKER_IGNORE_UNDERGROUND (1 << 17)
#define HITMARKER_IGNORE_UNDERWATER (1 << 18)
#define HITMARKER_UNABLE_TO_USE_MOVE (1 << 19)
#define HITMARKER_PASSIVE_DAMAGE (1 << 20)
#define HITMARKER_DISOBEDIENT_MOVE (1 << 21)
#define HITMARKER_PLAYER_FAINTED (1 << 22)
#define HITMARKER_ALLOW_NO_PP (1 << 23)
#define HITMARKER_GRUDGE (1 << 24)
#define HITMARKER_OBEYS (1 << 25)
#define HITMARKER_NEVER_SET (1 << 26) // Cleared as part of a large group. Never set or checked
#define HITMARKER_CHARGING (1 << 27)
#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 28)
#define HITMARKER_FAINTED2(battler) ((1 << 28) << battler)
// Per-side statuses that affect an entire party
#define SIDE_STATUS_REFLECT (1 << 0)
@@ -205,87 +203,85 @@
#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
// Battle Weather flags
#define WEATHER_RAIN_TEMPORARY (1 << 0)
#define WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
#define WEATHER_RAIN_PERMANENT (1 << 2)
#define WEATHER_RAIN_ANY (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)
#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
#define WEATHER_SANDSTORM_ANY (WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)
#define WEATHER_SUN_TEMPORARY (1 << 5)
#define WEATHER_SUN_PERMANENT (1 << 6)
#define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)
#define WEATHER_HAIL (1 << 7)
#define WEATHER_HAIL_ANY (WEATHER_HAIL)
#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)
#define B_WEATHER_RAIN_TEMPORARY (1 << 0)
#define B_WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
#define B_WEATHER_RAIN_PERMANENT (1 << 2)
#define B_WEATHER_RAIN (B_WEATHER_RAIN_TEMPORARY | B_WEATHER_RAIN_DOWNPOUR | B_WEATHER_RAIN_PERMANENT)
#define B_WEATHER_SANDSTORM_TEMPORARY (1 << 3)
#define B_WEATHER_SANDSTORM_PERMANENT (1 << 4)
#define B_WEATHER_SANDSTORM (B_WEATHER_SANDSTORM_TEMPORARY | B_WEATHER_SANDSTORM_PERMANENT)
#define B_WEATHER_SUN_TEMPORARY (1 << 5)
#define B_WEATHER_SUN_PERMANENT (1 << 6)
#define B_WEATHER_SUN (B_WEATHER_SUN_TEMPORARY | B_WEATHER_SUN_PERMANENT)
#define B_WEATHER_HAIL_TEMPORARY (1 << 7)
#define B_WEATHER_HAIL (B_WEATHER_HAIL_TEMPORARY)
#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL)
// Move Effects
#define MOVE_EFFECT_NOTHING_0 0x0
#define MOVE_EFFECT_SLEEP 0x1
#define MOVE_EFFECT_POISON 0x2
#define MOVE_EFFECT_BURN 0x3
#define MOVE_EFFECT_FREEZE 0x4
#define MOVE_EFFECT_PARALYSIS 0x5
#define MOVE_EFFECT_TOXIC 0x6
#define MOVE_EFFECT_CONFUSION 0x7
#define MOVE_EFFECT_FLINCH 0x8
#define MOVE_EFFECT_TRI_ATTACK 0x9
#define MOVE_EFFECT_UPROAR 0xA
#define MOVE_EFFECT_PAYDAY 0xB
#define MOVE_EFFECT_CHARGING 0xC
#define MOVE_EFFECT_WRAP 0xD
#define MOVE_EFFECT_RECOIL_25 0xE
#define MOVE_EFFECT_ATK_PLUS_1 0xF
#define MOVE_EFFECT_DEF_PLUS_1 0x10
#define MOVE_EFFECT_SPD_PLUS_1 0x11
#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12
#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13
#define MOVE_EFFECT_ACC_PLUS_1 0x14
#define MOVE_EFFECT_EVS_PLUS_1 0x15
#define MOVE_EFFECT_ATK_MINUS_1 0x16
#define MOVE_EFFECT_DEF_MINUS_1 0x17
#define MOVE_EFFECT_SPD_MINUS_1 0x18
#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19
#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A
#define MOVE_EFFECT_ACC_MINUS_1 0x1B
#define MOVE_EFFECT_EVS_MINUS_1 0x1C
#define MOVE_EFFECT_RECHARGE 0x1D
#define MOVE_EFFECT_RAGE 0x1E
#define MOVE_EFFECT_STEAL_ITEM 0x1F
#define MOVE_EFFECT_PREVENT_ESCAPE 0x20
#define MOVE_EFFECT_NIGHTMARE 0x21
#define MOVE_EFFECT_ALL_STATS_UP 0x22
#define MOVE_EFFECT_RAPIDSPIN 0x23
#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24
#define MOVE_EFFECT_ATK_DEF_DOWN 0x25
#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
#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A
#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B
#define MOVE_EFFECT_ACC_PLUS_2 0x2C
#define MOVE_EFFECT_EVS_PLUS_2 0x2D
#define MOVE_EFFECT_ATK_MINUS_2 0x2E
#define MOVE_EFFECT_DEF_MINUS_2 0x2F
#define MOVE_EFFECT_SPD_MINUS_2 0x30
#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31
#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32
#define MOVE_EFFECT_ACC_MINUS_2 0x33
#define MOVE_EFFECT_EVS_MINUS_2 0x34
#define MOVE_EFFECT_THRASH 0x35
#define MOVE_EFFECT_KNOCK_OFF 0x36
#define MOVE_EFFECT_NOTHING_37 0x37
#define MOVE_EFFECT_NOTHING_38 0x38
#define MOVE_EFFECT_NOTHING_39 0x39
#define MOVE_EFFECT_NOTHING_3A 0x3A
#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
#define MOVE_EFFECT_NOTHING_3C 0x3C
#define MOVE_EFFECT_NOTHING_3D 0x3D
#define MOVE_EFFECT_NOTHING_3E 0x3E
#define MOVE_EFFECT_NOTHING_3F 0x3F
#define MOVE_EFFECT_AFFECTS_USER 0x40
#define MOVE_EFFECT_CERTAIN 0x80
#define MOVE_EFFECT_SLEEP 1
#define MOVE_EFFECT_POISON 2
#define MOVE_EFFECT_BURN 3
#define MOVE_EFFECT_FREEZE 4
#define MOVE_EFFECT_PARALYSIS 5
#define MOVE_EFFECT_TOXIC 6
#define PRIMARY_STATUS_MOVE_EFFECT MOVE_EFFECT_TOXIC // All above move effects apply primary status
#define MOVE_EFFECT_CONFUSION 7
#define MOVE_EFFECT_FLINCH 8
#define MOVE_EFFECT_TRI_ATTACK 9
#define MOVE_EFFECT_UPROAR 10
#define MOVE_EFFECT_PAYDAY 11
#define MOVE_EFFECT_CHARGING 12
#define MOVE_EFFECT_WRAP 13
#define MOVE_EFFECT_RECOIL_25 14
#define MOVE_EFFECT_ATK_PLUS_1 15
#define MOVE_EFFECT_DEF_PLUS_1 16
#define MOVE_EFFECT_SPD_PLUS_1 17
#define MOVE_EFFECT_SP_ATK_PLUS_1 18
#define MOVE_EFFECT_SP_DEF_PLUS_1 19
#define MOVE_EFFECT_ACC_PLUS_1 20
#define MOVE_EFFECT_EVS_PLUS_1 21
#define MOVE_EFFECT_ATK_MINUS_1 22
#define MOVE_EFFECT_DEF_MINUS_1 23
#define MOVE_EFFECT_SPD_MINUS_1 24
#define MOVE_EFFECT_SP_ATK_MINUS_1 25
#define MOVE_EFFECT_SP_DEF_MINUS_1 26
#define MOVE_EFFECT_ACC_MINUS_1 27
#define MOVE_EFFECT_EVS_MINUS_1 28
#define MOVE_EFFECT_RECHARGE 29
#define MOVE_EFFECT_RAGE 30
#define MOVE_EFFECT_STEAL_ITEM 31
#define MOVE_EFFECT_PREVENT_ESCAPE 32
#define MOVE_EFFECT_NIGHTMARE 33
#define MOVE_EFFECT_ALL_STATS_UP 34
#define MOVE_EFFECT_RAPIDSPIN 35
#define MOVE_EFFECT_REMOVE_PARALYSIS 36
#define MOVE_EFFECT_ATK_DEF_DOWN 37
#define MOVE_EFFECT_RECOIL_33 38
#define MOVE_EFFECT_ATK_PLUS_2 39
#define MOVE_EFFECT_DEF_PLUS_2 40
#define MOVE_EFFECT_SPD_PLUS_2 41
#define MOVE_EFFECT_SP_ATK_PLUS_2 42
#define MOVE_EFFECT_SP_DEF_PLUS_2 43
#define MOVE_EFFECT_ACC_PLUS_2 44
#define MOVE_EFFECT_EVS_PLUS_2 45
#define MOVE_EFFECT_ATK_MINUS_2 46
#define MOVE_EFFECT_DEF_MINUS_2 47
#define MOVE_EFFECT_SPD_MINUS_2 48
#define MOVE_EFFECT_SP_ATK_MINUS_2 49
#define MOVE_EFFECT_SP_DEF_MINUS_2 50
#define MOVE_EFFECT_ACC_MINUS_2 51
#define MOVE_EFFECT_EVS_MINUS_2 52
#define MOVE_EFFECT_THRASH 53
#define MOVE_EFFECT_KNOCK_OFF 54
#define MOVE_EFFECT_NOTHING_37 55
#define MOVE_EFFECT_NOTHING_38 56
#define MOVE_EFFECT_NOTHING_39 57
#define MOVE_EFFECT_NOTHING_3A 58
#define MOVE_EFFECT_SP_ATK_TWO_DOWN 59
#define NUM_MOVE_EFFECTS 60
#define MOVE_EFFECT_AFFECTS_USER (1 << 6) // 64
#define MOVE_EFFECT_CERTAIN (1 << 7) // 128
// Battle terrain defines for gBattleTerrain.
#define BATTLE_TERRAIN_GRASS 0
@@ -309,9 +305,50 @@
#define BATTLE_TERRAIN_LANCE 18
#define BATTLE_TERRAIN_CHAMPION 19
// Return value for IsRunningFromBattleImpossible.
#define B_WAIT_TIME_LONG 64
#define B_WAIT_TIME_MED 48
#define B_WAIT_TIME_SHORT 32
#define CASTFORM_NORMAL 0
#define CASTFORM_FIRE 1
#define CASTFORM_WATER 2
#define CASTFORM_ICE 3
#define NUM_CASTFORM_FORMS 4
#define CASTFORM_SUBSTITUTE (1 << 7)
// Return value for IsRunningFromBattleImpossible.
#define BATTLE_RUN_SUCCESS 0
#define BATTLE_RUN_FORBIDDEN 1
#define BATTLE_RUN_FAILURE 2
// Window Ids for sStandardBattleWindowTemplates
#define B_WIN_MSG 0
#define B_WIN_ACTION_PROMPT 1 // "What will {x} do?"
#define B_WIN_ACTION_MENU 2 // "Fight/Pokémon/Bag/Run" menu
#define B_WIN_MOVE_NAME_1 3 // Top left
#define B_WIN_MOVE_NAME_2 4 // Top right
#define B_WIN_MOVE_NAME_3 5 // Bottom left
#define B_WIN_MOVE_NAME_4 6 // Bottom right
#define B_WIN_PP 7
#define B_WIN_MOVE_TYPE 8
#define B_WIN_PP_REMAINING 9
#define B_WIN_DUMMY 10
#define B_WIN_SWITCH_PROMPT 11 // "Switch which?"
#define B_WIN_LEVEL_UP_BOX 12
#define B_WIN_LEVEL_UP_BANNER 13
#define B_WIN_YESNO 14
#define B_WIN_VS_PLAYER 15
#define B_WIN_VS_OPPONENT 16
#define B_WIN_VS_MULTI_PLAYER_1 17
#define B_WIN_VS_MULTI_PLAYER_2 18
#define B_WIN_VS_MULTI_PLAYER_3 19
#define B_WIN_VS_MULTI_PLAYER_4 20
#define B_WIN_VS_OUTCOME_DRAW 21
#define B_WIN_VS_OUTCOME_LEFT 22
#define B_WIN_VS_OUTCOME_RIGHT 23
#define B_WIN_OAK_OLD_MAN 24
#define B_TEXT_FLAG_NPC_CONTEXT_FONT (1 << 6)
#define B_TEXT_FLAG_WINDOW_CLEAR (1 << 7)
#endif // GUARD_CONSTANTS_BATTLE_H
+5 -5
View File
@@ -342,9 +342,9 @@
#define BG_FISSURE 21
#define BG_BUG_OPPONENT 22
#define BG_BUG_PLAYER 23
#define BG_SOLARBEAM_OPPONENT 24
#define BG_SOLARBEAM_PLAYER 25
#define BG_SOLARBEAM_CONTESTS 26
#define BG_SOLAR_BEAM_OPPONENT 24
#define BG_SOLAR_BEAM_PLAYER 25
#define BG_SOLAR_BEAM_CONTESTS 26
// table ids for general animations
#define B_ANIM_CASTFORM_CHANGE 0x0
@@ -354,9 +354,9 @@
#define B_ANIM_BAIT_THROW 0x4
#define B_ANIM_ITEM_KNOCKOFF 0x5
#define B_ANIM_TURN_TRAP 0x6
#define B_ANIM_ITEM_EFFECT 0x7
#define B_ANIM_HELD_ITEM_EFFECT 0x7
#define B_ANIM_SMOKEBALL_ESCAPE 0x8
#define B_ANIM_HANGED_ON 0x9
#define B_ANIM_FOCUS_BAND 0x9
#define B_ANIM_RAIN_CONTINUES 0xA
#define B_ANIM_SUN_CONTINUES 0xB
#define B_ANIM_SANDSTORM_CONTINUES 0xC
+1 -1
View File
@@ -152,7 +152,7 @@
#define EFFECT_FUTURE_SIGHT 148
#define EFFECT_GUST 149
#define EFFECT_FLINCH_MINIMIZE_HIT 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
#define EFFECT_SOLARBEAM 151
#define EFFECT_SOLAR_BEAM 151
#define EFFECT_THUNDER 152
#define EFFECT_TELEPORT 153
#define EFFECT_BEAT_UP 154
+68 -54
View File
@@ -30,29 +30,40 @@
#define sMULTIPLAYER_ID gBattleScripting + 0x25
#define sSPECIAL_TRAINER_BATTLE_TYPE gBattleScripting + 0x26
#define cEFFECT_CHOOSER gBattleCommunication + 3
#define cMULTISTRING_CHOOSER gBattleCommunication + 5
// Array entries for battle communication
#define MULTIUSE_STATE 0
#define CURSOR_POSITION 1
#define TASK_ID 1 // task Id and cursor position share the same field
#define SPRITES_INIT_STATE1 1 // shares the Id as well
#define SPRITES_INIT_STATE2 2
#define MOVE_EFFECT_BYTE 3
#define ACTIONS_CONFIRMED_COUNT 4
#define MULTISTRING_CHOOSER 5
#define MISS_TYPE 6
#define MSG_DISPLAY 7
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 8
#define cEFFECT_CHOOSER (gBattleCommunication + MOVE_EFFECT_BYTE)
#define cMULTISTRING_CHOOSER (gBattleCommunication + MULTISTRING_CHOOSER)
#define cMISS_TYPE (gBattleCommunication + MISS_TYPE)
// Battle Script defines for getting the wanted battler
#define BS_TARGET 0
#define BS_ATTACKER 1
#define BS_EFFECT_BATTLER 2
#define BS_FAINTED 3
#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_updatestatusicon
#define BS_UNKNOWN_5 5 // for openpartyscreen
#define BS_UNKNOWN_6 6 // for openpartyscreen
#define BS_ATTACKER_WITH_PARTNER 4 // for Cmd_updatestatusicon
#define BS_FAINTED_LINK_MULTIPLE_1 5 // for openpartyscreen
#define BS_FAINTED_LINK_MULTIPLE_2 6 // for openpartyscreen
#define BS_BATTLER_0 7
#define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability
#define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
#define BS_ATTACKER_SIDE 8 // for Cmd_jumpifability
#define BS_NOT_ATTACKER_SIDE 9 // for Cmd_jumpifability
#define BS_SCRIPTING 10
#define BS_PLAYER1 11
#define BS_OPPONENT1 12
#define BS_PLAYER2 13 // for atk98_updatestatusicon
#define BS_PLAYER2 13 // for Cmd_updatestatusicon
#define BS_OPPONENT2 14
// used for openpartyscreen
#define OPEN_PARTY_ALLOW_CANCEL 0x80
// atk 01, accuracy calc
#define NO_ACC_CALC 0xFFFE
#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF
@@ -72,61 +83,64 @@
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
#define VARIOUS_GET_MOVE_TARGET 3
#define VARIOUS_CASE_4 4
#define VARIOUS_GET_BATTLER_FAINTED 4
#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
#define VARIOUS_RESET_PLAYER_FAINTED_FLAG 7
#define VARIOUS_RESET_PLAYER_FAINTED 7
#define VARIOUS_CASE_8 8
#define VARIOUS_RETURN_OPPONENT_MON1 9
#define VARIOUS_RETURN_OPPONENT_MON2 10
#define VARIOUS_CHECK_POKEFLUTE 11
#define VARIOUS_WAIT_FANFARE 12
// atk80, dmg manipulation
#define ATK80_DMG_CHANGE_SIGN 0
#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1
#define ATK80_DMG_DOUBLED 2
// Cmd_manipulatedmg
#define DMG_CHANGE_SIGN 0
#define DMG_RECOIL_FROM_MISS 1
#define DMG_DOUBLED 2
// atk4F, a flag used for the jumpifcantswitch command
#define ATK4F_DONT_CHECK_STATUSES 0x80
// Cmd_jumpifcantswitch
#define SWITCH_IGNORE_ESCAPE_PREVENTION (1 << 7)
// statchange defines
#define STAT_CHANGE_BS_PTR 0x1
#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20
// Cmd_statbuffchange
#define STAT_CHANGE_ALLOW_PTR (1 << 0) // If set, allow use of jumpptr. Set in every use of statbuffchange
#define STAT_CHANGE_NOT_PROTECT_AFFECTED (1 << 5)
// atk48
#define ATK48_STAT_NEGATIVE 0x1
#define ATK48_STAT_BY_TWO 0x2
#define ATK48_ONLY_MULTIPLE 0x4
#define ATK48_DONT_CHECK_LOWER 0x8
// stat change flags for Cmd_playstatchangeanimation
#define STAT_CHANGE_NEGATIVE (1 << 0)
#define STAT_CHANGE_BY_TWO (1 << 1)
#define STAT_CHANGE_MULTIPLE_STATS (1 << 2)
#define STAT_CHANGE_CANT_PREVENT (1 << 3)
// atk49, moveend cases
#define ATK49_RAGE 0
#define ATK49_DEFROST 1
#define ATK49_SYNCHRONIZE_TARGET 2
#define ATK49_MOVE_END_ABILITIES 3
#define ATK49_STATUS_IMMUNITY_ABILITIES 4
#define ATK49_SYNCHRONIZE_ATTACKER 5
#define ATK49_CHOICE_MOVE 6
#define ATK49_CHANGED_ITEMS 7
#define ATK49_ATTACKER_INVISIBLE 8
#define ATK49_ATTACKER_VISIBLE 9
#define ATK49_TARGET_VISIBLE 10
#define ATK49_ITEM_EFFECTS_ALL 11
#define ATK49_KINGSROCK_SHELLBELL 12
#define ATK49_SUBSTITUTE 13
#define ATK49_UPDATE_LAST_MOVES 14
#define ATK49_MIRROR_MOVE 15
#define ATK49_NEXT_TARGET 16
#define ATK49_COUNT 17
// stat flags for Cmd_playstatchangeanimation
#define BIT_HP (1 << 0)
#define BIT_ATK (1 << 1)
#define BIT_DEF (1 << 2)
#define BIT_SPEED (1 << 3)
#define BIT_SPATK (1 << 4)
#define BIT_SPDEF (1 << 5)
#define BIT_ACC (1 << 6)
#define BIT_EVASION (1 << 7)
#define BIT_HP 0x1
#define BIT_ATK 0x2
#define BIT_DEF 0x4
#define BIT_SPEED 0x8
#define BIT_SPATK 0x10
#define BIT_SPDEF 0x20
#define BIT_ACC 0x40
#define BIT_EVASION 0x80
#define PARTY_SCREEN_OPTIONAL (1 << 7) // Flag for first argument to openpartyscreen
// cases for Cmd_moveend
#define MOVEEND_RAGE 0
#define MOVEEND_DEFROST 1
#define MOVEEND_SYNCHRONIZE_TARGET 2
#define MOVEEND_ON_DAMAGE_ABILITIES 3
#define MOVEEND_IMMUNITY_ABILITIES 4
#define MOVEEND_SYNCHRONIZE_ATTACKER 5
#define MOVEEND_CHOICE_MOVE 6
#define MOVEEND_CHANGED_ITEMS 7
#define MOVEEND_ATTACKER_INVISIBLE 8
#define MOVEEND_ATTACKER_VISIBLE 9
#define MOVEEND_TARGET_VISIBLE 10
#define MOVEEND_ITEM_EFFECTS_ALL 11
#define MOVEEND_KINGSROCK_SHELLBELL 12
#define MOVEEND_SUBSTITUTE 13
#define MOVEEND_UPDATE_LAST_MOVES 14
#define MOVEEND_MIRROR_MOVE 15
#define MOVEEND_NEXT_TARGET 16
#define MOVEEND_COUNT 17
#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
+83 -1
View File
@@ -247,7 +247,7 @@
#define MOVEMENT_ACTION_WALK_SLOWEST_UP 0x9C
#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT 0x9D
#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT 0x9E
#define MOVEMENT_ACTION_SHAKE_HEAD 0x9F
#define MOVEMENT_ACTION_SHAKE_HEAD_OR_WALK_IN_PLACE 0x9F
#define MOVEMENT_ACTION_0xA0 0xA0
#define MOVEMENT_ACTION_0xA1 0xA1
#define MOVEMENT_ACTION_0xA2 0xA2
@@ -261,4 +261,86 @@
#define MOVEMENT_ACTION_STEP_END 0xFE
#define ANIM_STD_FACE_SOUTH 0
#define ANIM_STD_FACE_NORTH 1
#define ANIM_STD_FACE_WEST 2
#define ANIM_STD_FACE_EAST 3
#define ANIM_STD_GO_SOUTH 4
#define ANIM_STD_GO_NORTH 5
#define ANIM_STD_GO_WEST 6
#define ANIM_STD_GO_EAST 7
#define ANIM_STD_GO_FAST_SOUTH 8
#define ANIM_STD_GO_FAST_NORTH 9
#define ANIM_STD_GO_FAST_WEST 10
#define ANIM_STD_GO_FAST_EAST 11
#define ANIM_STD_GO_FASTER_SOUTH 12
#define ANIM_STD_GO_FASTER_NORTH 13
#define ANIM_STD_GO_FASTER_WEST 14
#define ANIM_STD_GO_FASTER_EAST 15
#define ANIM_STD_GO_FASTEST_SOUTH 16
#define ANIM_STD_GO_FASTEST_NORTH 17
#define ANIM_STD_GO_FASTEST_WEST 18
#define ANIM_STD_GO_FASTEST_EAST 19
#define ANIM_STD_COUNT 20
#define ANIM_RUN_SOUTH (ANIM_STD_COUNT + 0)
#define ANIM_RUN_NORTH (ANIM_STD_COUNT + 1)
#define ANIM_RUN_WEST (ANIM_STD_COUNT + 2)
#define ANIM_RUN_EAST (ANIM_STD_COUNT + 3)
#define ANIM_SPIN_SOUTH (ANIM_STD_COUNT + 4)
#define ANIM_SPIN_NORTH (ANIM_STD_COUNT + 5)
#define ANIM_SPIN_WEST (ANIM_STD_COUNT + 6)
#define ANIM_SPIN_EAST (ANIM_STD_COUNT + 7)
#define ANIM_SHAKE_HEAD_OR_WALK_IN_PLACE (ANIM_STD_COUNT + 8)
#define ANIM_BUNNY_HOP_BACK_WHEEL_SOUTH (ANIM_STD_COUNT + 0)
#define ANIM_BUNNY_HOP_BACK_WHEEL_NORTH (ANIM_STD_COUNT + 1)
#define ANIM_BUNNY_HOP_BACK_WHEEL_WEST (ANIM_STD_COUNT + 2)
#define ANIM_BUNNY_HOP_BACK_WHEEL_EAST (ANIM_STD_COUNT + 3)
#define ANIM_BUNNY_HOP_FRONT_WHEEL_SOUTH (ANIM_STD_COUNT + 4)
#define ANIM_BUNNY_HOP_FRONT_WHEEL_NORTH (ANIM_STD_COUNT + 5)
#define ANIM_BUNNY_HOP_FRONT_WHEEL_WEST (ANIM_STD_COUNT + 6)
#define ANIM_BUNNY_HOP_FRONT_WHEEL_EAST (ANIM_STD_COUNT + 7)
#define ANIM_STANDING_WHEELIE_BACK_WHEEL_SOUTH (ANIM_STD_COUNT + 8)
#define ANIM_STANDING_WHEELIE_BACK_WHEEL_NORTH (ANIM_STD_COUNT + 9)
#define ANIM_STANDING_WHEELIE_BACK_WHEEL_WEST (ANIM_STD_COUNT + 10)
#define ANIM_STANDING_WHEELIE_BACK_WHEEL_EAST (ANIM_STD_COUNT + 11)
#define ANIM_STANDING_WHEELIE_FRONT_WHEEL_SOUTH (ANIM_STD_COUNT + 12)
#define ANIM_STANDING_WHEELIE_FRONT_WHEEL_NORTH (ANIM_STD_COUNT + 13)
#define ANIM_STANDING_WHEELIE_FRONT_WHEEL_WEST (ANIM_STD_COUNT + 14)
#define ANIM_STANDING_WHEELIE_FRONT_WHEEL_EAST (ANIM_STD_COUNT + 15)
#define ANIM_MOVING_WHEELIE_SOUTH (ANIM_STD_COUNT + 16)
#define ANIM_MOVING_WHEELIE_NORTH (ANIM_STD_COUNT + 17)
#define ANIM_MOVING_WHEELIE_WEST (ANIM_STD_COUNT + 18)
#define ANIM_MOVING_WHEELIE_EAST (ANIM_STD_COUNT + 19)
#define ANIM_GET_ON_OFF_POKEMON_SOUTH (ANIM_STD_COUNT + 0)
#define ANIM_GET_ON_OFF_POKEMON_NORTH (ANIM_STD_COUNT + 1)
#define ANIM_GET_ON_OFF_POKEMON_WEST (ANIM_STD_COUNT + 2)
#define ANIM_GET_ON_OFF_POKEMON_EAST (ANIM_STD_COUNT + 3)
#define ANIM_NURSE_BOW (ANIM_STD_COUNT + 0)
#define ANIM_RAISE_HAND (ANIM_STD_COUNT + 0)
#define ANIM_FIELD_MOVE 0
#define ANIM_VS_SEEKER 0
#define ANIM_STAY_STILL 0
#define ANIM_REMOVE_OBSTACLE 1
#define ANIM_TAKE_OUT_ROD_SOUTH 0
#define ANIM_TAKE_OUT_ROD_NORTH 1
#define ANIM_TAKE_OUT_ROD_WEST 2
#define ANIM_TAKE_OUT_ROD_EAST 3
#define ANIM_PUT_AWAY_ROD_SOUTH 4
#define ANIM_PUT_AWAY_ROD_NORTH 5
#define ANIM_PUT_AWAY_ROD_WEST 6
#define ANIM_PUT_AWAY_ROD_EAST 7
#define ANIM_HOOKED_POKEMON_SOUTH 8
#define ANIM_HOOKED_POKEMON_NORTH 9
#define ANIM_HOOKED_POKEMON_WEST 10
#define ANIM_HOOKED_POKEMON_EAST 11
#endif // GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
-22
View File
@@ -1,22 +0,0 @@
#ifndef GUARD_CONSTANTS_FANFARES_H
#define GUARD_CONSTANTS_FANFARES_H
enum Fanfares
{
FANFARE_00,
FANFARE_01,
FANFARE_02,
FANFARE_03,
FANFARE_04,
FANFARE_05,
FANFARE_06,
FANFARE_07,
FANFARE_08,
FANFARE_09,
FANFARE_10,
FANFARE_POKEFLUTE,
FANFARE_KEY_ITEM,
FANFARE_DEX_EVAL
};
#endif //GUARD_CONSTANTS_FANFARES_H
+6 -6
View File
@@ -20,10 +20,10 @@
#define FLDEFF_JUMP_SMALL_SPLASH 16
#define FLDEFF_LONG_GRASS 17
#define FLDEFF_JUMP_LONG_GRASS 18
#define FLDEFF_UNKNOWN_19 19
#define FLDEFF_UNKNOWN_20 20
#define FLDEFF_UNKNOWN_21 21
#define FLDEFF_UNKNOWN_22 22
#define FLDEFF_UNUSED_GRASS 19
#define FLDEFF_UNUSED_GRASS_2 20
#define FLDEFF_UNUSED_SAND 21
#define FLDEFF_UNUSED_WATER_SURFACING 22
#define FLDEFF_BERRY_TREE_GROWTH_SPARKLE 23
#define FLDEFF_DEEP_SAND_FOOTPRINTS 24
#define FLDEFF_POKECENTER_HEAL 25
@@ -32,7 +32,7 @@
#define FLDEFF_TREE_DISGUISE 28
#define FLDEFF_MOUNTAIN_DISGUISE 29
#define FLDEFF_NPCFLY_OUT 30
#define FLDEFF_USE_FLY 31
#define FLDEFF_FLY_OUT 31
#define FLDEFF_FLY_IN 32
#define FLDEFF_QUESTION_MARK_ICON 33
#define FLDEFF_FEET_IN_FLOWING_WATER 34
@@ -70,7 +70,7 @@
#define FLDEFF_DOUBLE_EXCL_MARK_ICON 66
#define FLDEFF_MOVE_DEOXYS_ROCK 67
#define FLDEFF_DESTROY_DEOXYS_ROCK 68
#define FLDEFF_UNK_45 69 // TODO: related to fame checker photos
#define FLDEFF_PHOTO_FLASH 69
#define FLDEFF_PAL_TAG_GENERAL_0 0x1004
#define FLDEFF_PAL_TAG_GENERAL_1 0x1005
+4
View File
@@ -30,6 +30,7 @@
#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
#endif
// capacities of various saveblock objects
#define DAYCARE_MON_COUNT 2
#define PC_ITEMS_COUNT 30
#define BAG_ITEMS_COUNT 42
@@ -53,6 +54,9 @@
#define POCKET_BERRY_POUCH 5
#define NUM_BAG_POCKETS 5
// Contests
#define CONTEST_CATEGORIES_COUNT 5
// string lengths
#define ITEM_NAME_LENGTH 14
#define POKEMON_NAME_LENGTH 10
+2 -1
View File
@@ -372,7 +372,7 @@
#define ITEM_TM19_GIGA_DRAIN ITEM_TM19
#define ITEM_TM20_SAFEGUARD ITEM_TM20
#define ITEM_TM21_FRUSTRATION ITEM_TM21
#define ITEM_TM22_SOLARBEAM ITEM_TM22
#define ITEM_TM22_SOLAR_BEAM ITEM_TM22
#define ITEM_TM23_IRON_TAIL ITEM_TM23
#define ITEM_TM24_THUNDERBOLT ITEM_TM24
#define ITEM_TM25_THUNDER ITEM_TM25
@@ -447,6 +447,7 @@
#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY
#define ITEM_TO_BERRY(itemId)(((itemId - FIRST_BERRY_INDEX) + 1))
#define MAIL_NONE 0xFF
#define NUM_TECHNICAL_MACHINES 50
#define NUM_HIDDEN_MACHINES 8
+2 -2
View File
@@ -252,7 +252,7 @@
#define LAYOUT_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB 263
#define LAYOUT_SEVEN_ISLAND_HOUSE_ROOM1_DOOR_OPEN 264
#define LAYOUT_SEVEN_ISLAND_HOUSE_ROOM2 265
#define LAYOUT_VIRIDIAN_CITY_HOUSE2 266
#define LAYOUT_VIRIDIAN_CITY_SCHOOL 266
#define LAYOUT_CELADON_CITY_RESTAURANT_DUPLICATE 267
#define LAYOUT_CELADON_CITY_HOTEL_DUPLICATE 268
#define LAYOUT_MT_EMBER_RUBY_PATH_B4F 269
@@ -262,7 +262,7 @@
#define LAYOUT_VERMILION_CITY_POKEMON_FAN_CLUB 273
#define LAYOUT_LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE 274
#define LAYOUT_ROUTE5_POKEMON_DAY_CARE 275
#define LAYOUT_VIRIDIAN_CITY_HOUSE1 276
#define LAYOUT_VIRIDIAN_CITY_HOUSE 276
#define LAYOUT_FOUR_ISLAND_POKEMON_DAY_CARE 277
#define LAYOUT_SEAFOAM_ISLANDS_B3F_CURRENT_STOPPED 278
#define LAYOUT_SEAFOAM_ISLANDS_B4F_CURRENT_STOPPED 279
+2 -2
View File
@@ -274,9 +274,9 @@
#define MAP_PALLET_TOWN_PROFESSOR_OAKS_LAB (3 | (4 << 8))
// gMapGroup_IndoorViridian
#define MAP_VIRIDIAN_CITY_HOUSE1 (0 | (5 << 8))
#define MAP_VIRIDIAN_CITY_HOUSE (0 | (5 << 8))
#define MAP_VIRIDIAN_CITY_GYM (1 | (5 << 8))
#define MAP_VIRIDIAN_CITY_HOUSE2 (2 | (5 << 8))
#define MAP_VIRIDIAN_CITY_SCHOOL (2 | (5 << 8))
#define MAP_VIRIDIAN_CITY_MART (3 | (5 << 8))
#define MAP_VIRIDIAN_CITY_POKEMON_CENTER_1F (4 | (5 << 8))
#define MAP_VIRIDIAN_CITY_POKEMON_CENTER_2F (5 | (5 << 8))
+27 -12
View File
@@ -1,33 +1,41 @@
#ifndef GUARD_METATILE_BEHAVIORS
#define GUARD_METATILE_BEHAVIORS
#define METATILE_COUNT 0xF0
#define MB_NORMAL 0x00
#define MB_01 0x01
#define MB_UNUSED_01 0x01
#define MB_TALL_GRASS 0x02
//
#define MB_CAVE 0x08
//
#define MB_RUNNING_DISALLOWED 0x0A
#define MB_0B 0x0B
#define MB_0C 0x0C
#define MB_INDOOR_ENCOUNTER 0x0B
#define MB_MOUNTAIN_TOP 0x0C
//
#define MB_POND_WATER 0x10
#define MB_SEMI_DEEP_WATER 0x11
#define MB_DEEP_WATER 0x12
#define MB_WATERFALL 0x13
//
#define MB_OCEAN_WATER 0x15
#define MB_PUDDLE 0x16
#define MB_SHALLOW_WATER 0x17
//
#define MB_UNDERWATER_BLOCKED_ABOVE 0x19
#define MB_1A 0x1A
#define MB_1B 0x1B
#define MB_UNUSED_WATER 0x1A
#define MB_CYCLING_ROAD_WATER 0x1B
//
#define MB_STRENGTH_BUTTON 0x20
#define MB_SAND 0x21
#define MB_SEAWEED 0x22
#define MB_ICE 0x23
//
#define MB_THIN_ICE 0x26
#define MB_CRACKED_ICE 0x27
#define MB_HOT_SPRINGS 0x28
//
#define MB_ROCK_STAIRS 0x2A
#define MB_SAND_CAVE 0x2B
//
#define MB_IMPASSABLE_EAST 0x30
#define MB_IMPASSABLE_WEST 0x31
#define MB_IMPASSABLE_NORTH 0x32
@@ -40,8 +48,7 @@
#define MB_JUMP_WEST 0x39
#define MB_JUMP_NORTH 0x3A
#define MB_JUMP_SOUTH 0x3B
#define MB_JUMP_SOUTHEAST 0x3E
#define MB_JUMP_SOUTHWEST 0x3F
//
#define MB_WALK_EAST 0x40
#define MB_WALK_WEST 0x41
#define MB_WALK_NORTH 0x42
@@ -50,7 +57,8 @@
#define MB_SLIDE_WEST 0x45
#define MB_SLIDE_NORTH 0x46
#define MB_SLIDE_SOUTH 0x47
#define MB_UNKNOWN_MOVEMENT_48 0x48
#define MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48
//
#define MB_EASTWARD_CURRENT 0x50
#define MB_WESTWARD_CURRENT 0x51
#define MB_NORTHWARD_CURRENT 0x52
@@ -60,6 +68,7 @@
#define MB_SPIN_UP 0x56
#define MB_SPIN_DOWN 0x57
#define MB_STOP_SPINNING 0x58
//
#define MB_CAVE_DOOR 0x60
#define MB_LADDER 0x61
#define MB_EAST_ARROW_WARP 0x62
@@ -76,7 +85,9 @@
#define MB_UP_LEFT_STAIR_WARP 0x6D
#define MB_DOWN_RIGHT_STAIR_WARP 0x6E
#define MB_DOWN_LEFT_STAIR_WARP 0x6F
//
#define MB_UNION_ROOM_WARP 0x71
//
#define MB_COUNTER 0x80
#define MB_BOOKSHELF 0x81
#define MB_POKEMART_SHELF 0x82
@@ -90,12 +101,12 @@
#define MB_KITCHEN 0x8A
#define MB_DRESSER 0x8B
#define MB_SNACKS 0x8C
#define MB_8D 0x8D
#define MB_CABLE_CLUB_WIRELESS_MONITOR 0x8D
#define MB_BATTLE_RECORDS 0x8E
#define MB_QUESTIONNAIRE 0x8F
#define MB_FOOD 0x90
#define MB_INDIGO_PLATEAU_MARK_DPAD 0x91
#define MB_INDIGO_PLATEAU_MARK_2_DPAD 0x92
#define MB_INDIGO_PLATEAU_SIGN_1 0x91
#define MB_INDIGO_PLATEAU_SIGN_2 0x92
#define MB_BLUEPRINTS 0x93
#define MB_PAINTING 0x94
#define MB_POWER_PLANT_MACHINE 0x95
@@ -106,13 +117,17 @@
#define MB_TRASH_BIN 0x9A
#define MB_CUP 0x9B
#define MB_PORTHOLE 0x9C
#define MB_WINDOW 0x9D
#define MB_BLINKING_LIGHTS 0x9E
#define MB_NEATLY_LINED_UP_TOOLS 0x9F
#define MB_IMPRESSIVE_MACHINE 0xA0
#define MB_VIDEO_GAME 0xA1
#define MB_BURGLARY 0xA2
#define MB_TRAINER_TOWER_MONITOR 0xA3
//
#define MB_CYCLING_ROAD_PULL_DOWN 0xD0
#define MB_CYCLING_ROAD_PULL_DOWN_GRASS 0xD1
//
#define NUM_METATILE_BEHAVIORS 0xF0
#endif // GUARD_METATILE_BEHAVIORS
+3
View File
@@ -361,6 +361,9 @@
#define MOVES_COUNT 355
// Used for checks for moves affected by Disable, Mimic, etc.
#define MOVE_UNAVAILABLE 0xFFFF
#define MOVETUTOR_MEGA_PUNCH 0
#define MOVETUTOR_SWORDS_DANCE 1
#define MOVETUTOR_MEGA_KICK 2
+47 -36
View File
@@ -81,7 +81,7 @@
#define MON_DATA_NATIONAL_RIBBON 76
#define MON_DATA_EARTH_RIBBON 77
#define MON_DATA_WORLD_RIBBON 78
#define MON_DATA_FILLER 79
#define MON_DATA_UNUSED_RIBBONS 79
#define MON_DATA_EVENT_LEGAL 80
#define MON_DATA_KNOWN_MOVES 81
#define MON_DATA_RIBBON_COUNT 82
@@ -134,44 +134,51 @@
#define EGG_GROUPS_PER_MON 2
// Pokemon natures
#define NATURE_HARDY 0
#define NATURE_LONELY 1
#define NATURE_BRAVE 2
#define NATURE_ADAMANT 3
#define NATURE_NAUGHTY 4
#define NATURE_BOLD 5
#define NATURE_DOCILE 6
#define NATURE_RELAXED 7
#define NATURE_IMPISH 8
#define NATURE_LAX 9
#define NATURE_TIMID 10
#define NATURE_HASTY 11
#define NATURE_SERIOUS 12
#define NATURE_JOLLY 13
#define NATURE_NAIVE 14
#define NATURE_MODEST 15
#define NATURE_MILD 16
#define NATURE_QUIET 17
#define NATURE_BASHFUL 18
#define NATURE_RASH 19
#define NATURE_CALM 20
#define NATURE_GENTLE 21
#define NATURE_SASSY 22
#define NATURE_CAREFUL 23
#define NATURE_QUIRKY 24
#define NATURE_HARDY 0
#define NATURE_LONELY 1
#define NATURE_BRAVE 2
#define NATURE_ADAMANT 3
#define NATURE_NAUGHTY 4
#define NATURE_BOLD 5
#define NATURE_DOCILE 6
#define NATURE_RELAXED 7
#define NATURE_IMPISH 8
#define NATURE_LAX 9
#define NATURE_TIMID 10
#define NATURE_HASTY 11
#define NATURE_SERIOUS 12
#define NATURE_JOLLY 13
#define NATURE_NAIVE 14
#define NATURE_MODEST 15
#define NATURE_MILD 16
#define NATURE_QUIET 17
#define NATURE_BASHFUL 18
#define NATURE_RASH 19
#define NATURE_CALM 20
#define NATURE_GENTLE 21
#define NATURE_SASSY 22
#define NATURE_CAREFUL 23
#define NATURE_QUIRKY 24
#define NUM_NATURES 25
// Pokemon Stats
#define STAT_HP 0
#define STAT_ATK 1
#define STAT_DEF 2
#define STAT_SPEED 3
#define STAT_SPATK 4
#define STAT_SPDEF 5
#define STAT_ACC 6 // only in battles
#define STAT_EVASION 7 // only in battles
#define STAT_HP 0
#define STAT_ATK 1
#define STAT_DEF 2
#define STAT_SPEED 3
#define STAT_SPATK 4
#define STAT_SPDEF 5
#define NUM_STATS 6
#define NUM_STATS 6
#define NUM_BATTLE_STATS 8
#define STAT_ACC 6 // Only in battles.
#define STAT_EVASION 7 // Only in battles.
#define NUM_NATURE_STATS (NUM_STATS - 1) // excludes HP
#define NUM_BATTLE_STATS (NUM_STATS + 2) // includes Accuracy and Evasion
#define MIN_STAT_STAGE 0
#define DEFAULT_STAT_STAGE 6
#define MAX_STAT_STAGE 12
// Shiny odds
#define SHINY_ODDS 8 // Actual probability is SHINY_ODDS/65536
@@ -225,6 +232,10 @@
#define EVO_MODE_ITEM_USE 2
#define EVO_MODE_ITEM_CHECK 3 // If an Everstone is being held, still want to show that the stone *could* be used on that Pokémon to evolve
#define MON_PIC_WIDTH 64
#define MON_PIC_HEIGHT 64
#define MON_PIC_SIZE (MON_PIC_WIDTH * MON_PIC_HEIGHT / 2)
// used by ShouldIgnoreDeoxysForm
#define DEOXYS_CHECK_BATTLE_SPRITE 1
#define DEOXYS_CHECK_TRADE_MAIN 3
+2
View File
@@ -353,4 +353,6 @@
#define MUS_SLOW_PALLET 345 // MUS_RG_SLOWMASARA
#define MUS_TEACHY_TV_MENU 346 // MUS_RG_TVNOIZE
#define MUS_NONE 0xFFFF
#endif // GUARD_CONSTANTS_SONGS_H
+44
View File
@@ -0,0 +1,44 @@
#ifndef GUARD_CONSTANTS_SOUND_H
#define GUARD_CONSTANTS_SOUND_H
#define FANFARE_LEVEL_UP 0
#define FANFARE_OBTAIN_ITEM 1
#define FANFARE_EVOLVED 2
#define FANFARE_OBTAIN_TMHM 3
#define FANFARE_HEAL 4
#define FANFARE_OBTAIN_BADGE 5
#define FANFARE_MOVE_DELETED 6
#define FANFARE_OBTAIN_BERRY 7
#define FANFARE_SLOTS_JACKPOT 8
#define FANFARE_SLOTS_WIN 9
#define FANFARE_TOO_BAD 10
#define FANFARE_POKE_FLUTE 11
#define FANFARE_KEY_ITEM 12
#define FANFARE_DEX_EVAL 13
#define CRY_MODE_NORMAL 0 // Default
#define CRY_MODE_DOUBLES 1 // Shortened cry for double battles
#define CRY_MODE_ENCOUNTER 2 // Used when starting a static encounter, or when a Pokémon is "aggressive"
#define CRY_MODE_HIGH_PITCH 3 // Highest pitch mode, used exclusively by the move Howl
#define CRY_MODE_ECHO_START 4 // For 1st half of cry used by the move Hyper Voice. Played in reverse
#define CRY_MODE_FAINT 5 // Used when a Pokémon faints
#define CRY_MODE_ECHO_END 6 // For 2nd half of cry used by the move Hyper Voice
#define CRY_MODE_ROAR_1 7 // For 1st cry used by the move Roar
#define CRY_MODE_ROAR_2 8 // For 2nd cry used by the move Roar
#define CRY_MODE_GROWL_1 9 // For 1st cry used by the move Growl. Played in reverse
#define CRY_MODE_GROWL_2 10 // For 2nd cry used by the move Growl
#define CRY_MODE_WEAK 11 // Used when a Pokémon is unhealthy
#define CRY_MODE_WEAK_DOUBLES 12 // Equivalent to CRY_MODE_DOUBLES for CRY_MODE_WEAK
// Given to SoundTask_PlayDoubleCry to determine which cry mode to use. Values are arbitrary
#define DOUBLE_CRY_ROAR 2
#define DOUBLE_CRY_GROWL 255
#define CRY_PRIORITY_NORMAL 10
#define CRY_PRIORITY_AMBIENT 1
// Cry volume was changed from 125 in R/S to 120 for FRLG/Em, but was (accidentally?) not updated outside of sound.c
#define CRY_VOLUME 120
#define CRY_VOLUME_RS 125
#endif //GUARD_CONSTANTS_SOUND_H
+3 -3
View File
@@ -18,9 +18,9 @@ void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src);
void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src);
void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer, s32 species);
void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void *buffer, s32 species);
void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *buffer, s32 species);
void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void HandleLoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
+2
View File
@@ -52,4 +52,6 @@ struct Decoration
const u16 *tiles;
};
extern const struct Decoration gDecorations[];
#endif //GUARD_DECORATION_H
+1 -1
View File
@@ -31,6 +31,6 @@ void EReaderHelper_Timer3Callback(void);
void EReaderHelper_SaveRegsState(void);
void EReaderHelper_ClearsSendRecvMgr(void);
void EReaderHelper_RestoreRegsState(void);
u16 EReaderHandleTransfer(u8 mode, size_t size, const void * src, void * dest);
u16 EReaderHandleTransfer(u8 mode, size_t size, const void *src, void *dest);
#endif //GUARD_EREADER_HELPERS_H
+3 -3
View File
@@ -20,7 +20,7 @@ enum SpinnerRunnerFollowPatterns
RUNFOLLOW_SOUTH_EAST_WEST
};
struct UnkStruct_083A3698
struct StepAnimTable
{
const union AnimCmd *const *anims;
u8 animPos[4];
@@ -156,14 +156,14 @@ bool32 RfuUnionObjectIsWarping(u8 objectEventId);
u8 GetJumpSpecialMovementAction(u32 direction);
void EnableObjectGroundEffectsByXY(s16 x, s16 y);
void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y);
u8 CreateCopySpriteAt(struct Sprite * sprite, s16 x, s16 y, u8 subpriority);
u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority);
u16 GetObjectPaletteTag(u8 paletteIndex);
void SetSpritePosToMapCoords(s16 x, s16 y, s16 *x2, s16 *y2);
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible);
bool8 AreZCoordsCompatible(u8, u8);
u8 ZCoordToPriority(u8 z);
void ObjectEventUpdateZCoord(struct ObjectEvent *pObject);
void SetObjectSubpriorityByZCoord(u8 z, struct Sprite * sprite, u8 offset);
void SetObjectSubpriorityByZCoord(u8 z, struct Sprite *sprite, u8 offset);
bool8 IsZCoordMismatchAt(u8, s16, s16);
void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables);
u8 AddCameraObject(u8 trackedSpriteId);
+6 -6
View File
@@ -5,12 +5,12 @@
void LoadEvoSparkleSpriteAndPal(void);
u8 LaunchTask_PreEvoSparklesSet1(u16 arg0);
u8 LaunchTask_PreEvoSparklesSet2(void);
u8 LaunchTask_PostEvoSparklesSet1(void);
u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species);
u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species);
u8 LaunchTask_PrePostEvoMonSprites(u8 preEvoSpriteId, u8 postEvoSpriteId);
u8 EvolutionSparkles_SpiralUpward(u16 arg0);
u8 EvolutionSparkles_ArcDown(void);
u8 EvolutionSparkles_CircleInward(void);
u8 EvolutionSparkles_SprayAndFlash(u16 species);
u8 EvolutionSparkles_SprayAndFlash_Trade(u16 species);
u8 CycleEvolutionMonSprite(u8 preEvoSpriteId, u8 postEvoSpriteId);
#define EvoGraphicsTaskEvoStop data[8]
+3 -3
View File
@@ -20,12 +20,12 @@ void StartEscalatorWarp(u8 metatileBehavior, u8 priority);
void StartLavaridgeGymB1FWarp(u8 a0);
void StartLavaridgeGym1FWarp(u8 a0);
void ApplyGlobalFieldPaletteTint(u8 paletteIdx);
void FreeResourcesAndDestroySprite(struct Sprite * sprite, u8 spriteId);
void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId);
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, bool8 unused);
void ReturnToFieldFromFlyMapSelect(void);
void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b);
void SpriteCB_PopOutOfAsh(struct Sprite * sprite);
void SpriteCB_AshLaunch(struct Sprite * sprite);
void SpriteCB_PopOutOfAsh(struct Sprite *sprite);
void SpriteCB_AshLaunch(struct Sprite *sprite);
void FieldEffectActiveListClear(void);
#endif //GUARD_FIELD_EFFECTS_H
+25 -25
View File
@@ -7,38 +7,38 @@
#include "global.h"
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
enum {
BOB_NONE,
BOB_PLAYER_AND_MON,
BOB_MON_ONLY, // when player has jumped / flown off
};
u8 CreateWarpArrowSprite(void);
void SetSurfBlob_BobState(u8, u8);
void SetSurfBlob_DontSyncAnim(u8, u8);
void SetSurfBlob_BobState(u8 spriteId, u8 bobState);
void SetSurfBlob_DontSyncAnim(u8 spriteId, bool8 value);
void StartAshFieldEffect(s16, s16, u16, s16);
void StartRevealDisguise(struct ObjectEvent *);
bool8 UpdateRevealDisguise(struct ObjectEvent *);
void SetUpReflection(struct ObjectEvent*, struct Sprite*, u8);
u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent*);
void SetUpReflection(struct ObjectEvent *, struct Sprite *, u8);
u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent *);
u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y);
void SetSpriteInvisible(u8 spriteId);
void SetSurfBlob_PlayerOffset(u8 spriteId, u8 hasOffset, s16 offset);
void UpdateJumpImpactEffect(struct Sprite * sprite);
void UpdateShadowFieldEffect(struct Sprite * sprite);
void UpdateBubblesFieldEffect(struct Sprite * sprite);
void UpdateSparkleFieldEffect(struct Sprite * sprite);
void UpdateTallGrassFieldEffect(struct Sprite * sprite);
void WaitFieldEffectSpriteAnim(struct Sprite * sprite);
void UpdateAshFieldEffect(struct Sprite * sprite);
void UpdateSurfBlobFieldEffect(struct Sprite * sprite);
void UpdateFootprintsTireTracksFieldEffect(struct Sprite * sprite);
void UpdateSplashFieldEffect(struct Sprite * sprite);
void UpdateShortGrassFieldEffect(struct Sprite * sprite);
void UpdateLongGrassFieldEffect(struct Sprite * sprite);
void UpdateSandPileFieldEffect(struct Sprite * sprite);
void UpdateDisguiseFieldEffect(struct Sprite * sprite);
void UpdateHotSpringsWaterFieldEffect(struct Sprite * sprite);
void SetSurfBlob_PlayerOffset(u8 spriteId, bool8 hasOffset, s16 offset);
void UpdateJumpImpactEffect(struct Sprite *sprite);
void UpdateShadowFieldEffect(struct Sprite *sprite);
void UpdateBubblesFieldEffect(struct Sprite *sprite);
void UpdateSparkleFieldEffect(struct Sprite *sprite);
void UpdateTallGrassFieldEffect(struct Sprite *sprite);
void WaitFieldEffectSpriteAnim(struct Sprite *sprite);
void UpdateAshFieldEffect(struct Sprite *sprite);
void UpdateSurfBlobFieldEffect(struct Sprite *sprite);
void UpdateFootprintsTireTracksFieldEffect(struct Sprite *sprite);
void UpdateSplashFieldEffect(struct Sprite *sprite);
void UpdateShortGrassFieldEffect(struct Sprite *sprite);
void UpdateLongGrassFieldEffect(struct Sprite *sprite);
void UpdateSandPileFieldEffect(struct Sprite *sprite);
void UpdateDisguiseFieldEffect(struct Sprite *sprite);
void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite);
#endif //GUARD_FIELD_EFFECT_HELPERS_H
+1 -1
View File
@@ -7,7 +7,7 @@ bool8 ShowFieldMessage(const u8 *message);
bool8 ShowFieldAutoScrollMessage(const u8 *message);
void HideFieldMessageBox(void);
bool8 IsFieldMessageBoxHidden(void);
bool8 textbox_any_visible(void);
u8 GetFieldMessageBoxType(void);
void InitFieldMessageBox(void);
#endif // GUARD_FIELD_MESSAGE_BOX_H
+2 -2
View File
@@ -13,7 +13,7 @@ u8 GetPlayerMovementDirection(void);
u8 PlayerGetCopyableMovement(void);
void MovePlayerNotOnBike(u8 direction, u16 heldKeys);
void MovementType_Player(struct Sprite * sprite);
void MovementType_Player(struct Sprite *sprite);
void HandleEnforcedLookDirectionOnPlayerStopMoving(void);
void StopPlayerAvatar(void);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
@@ -56,7 +56,7 @@ void PlayerFaceDirection(u8 direction);
void PlayerFaceDirectionFast(u8 direction);
void PlayerTurnInPlace(u8 direction);
void PlayerJumpLedge(u8 direction);
void PlayerShakeHead(void);
void PlayerShakeHeadOrWalkInPlace(void);
void player_step(u8 direction, u16 newKeys, u16 heldKeys);
bool32 PlayerIsMovingOnRockStairs(u8 direction);
void UpdatePlayerAvatarTransitionState(void);
+1 -1
View File
@@ -21,7 +21,7 @@ u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y);
void MapGridSetMetatileIdAt(s32, s32, u16);
void MapGridSetMetatileEntryAt(s32, s32, u16);
u8 MapGridGetZCoordAt(s32 x, s32 y);
void GetCameraCoords(u16*, u16*);
void GetCameraCoords(u16 *, u16 *);
bool8 MapGridIsImpassableAt(s32, s32);
s32 GetMapBorderIdAt(s32, s32);
bool32 CanCameraMoveInDirection(s32);
+4 -4
View File
@@ -23,14 +23,14 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP
#ifdef NDEBUG
#define AGB_ASSERT(exp)
#else
#define AGB_ASSERT(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 1);
#define AGB_ASSERT(exp) (exp) ? ((void *)0) : AGBAssert(__FILE__, __LINE__, #exp, 1);
#endif
#undef AGB_WARNING
#ifdef NDEBUG
#define AGB_WARNING(exp)
#else
#define AGB_WARNING(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 0);
#define AGB_WARNING(exp) (exp) ? ((void *)0) : AGBAssert(__FILE__, __LINE__, #exp, 0);
#endif
// for matching purposes
@@ -42,13 +42,13 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP
#ifdef NDEBUG
#define AGB_ASSERT_EX(exp, file, line)
#else
#define AGB_ASSERT_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 1);
#define AGB_ASSERT_EX(exp, file, line) (exp) ? ((void *)0) : AGBAssert(file, line, #exp, 1);
#endif
#ifdef NDEBUG
#define AGB_WARNING_EX(exp, file, line)
#else
#define AGB_WARNING_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 0);
#define AGB_WARNING_EX(exp, file, line) (exp) ? ((void *)0) : AGBAssert(file, line, #exp, 0);
#endif
#endif
+2
View File
@@ -313,6 +313,8 @@ struct MusicPlayerTrack
#define MAX_MUSICPLAYER_TRACKS 16
#define TRACKS_ALL 0xFFFF
#define TEMPORARY_FADE 0x0001
#define FADE_IN 0x0002
#define FADE_VOL_MAX 64
+6 -2
View File
@@ -100,13 +100,13 @@
#define T1_READ_8(ptr) ((ptr)[0])
#define T1_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
#define T1_READ_32(ptr) ((ptr)[0] | ((ptr)[1] << 8) | ((ptr)[2] << 16) | ((ptr)[3] << 24))
#define T1_READ_PTR(ptr) (u8*) T1_READ_32(ptr)
#define T1_READ_PTR(ptr) (u8 *) T1_READ_32(ptr)
// T2_READ_8 is a duplicate to remain consistent with each group.
#define T2_READ_8(ptr) ((ptr)[0])
#define T2_READ_16(ptr) ((ptr)[0] + ((ptr)[1] << 8))
#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)
#define T2_READ_PTR(ptr) (void *) T2_READ_32(ptr)
// This macro is required to prevent the compiler from optimizing
// a dpad up/down check in sub_812CAD8 (fame_checker.c).
@@ -129,6 +129,10 @@ extern u8 gStringVar4[];
#define NUM_FLAG_BYTES ROUND_BITS_TO_BYTES(FLAGS_COUNT)
#define NUM_ADDITIONAL_PHRASE_BYTES ROUND_BITS_TO_BYTES(NUM_ADDITIONAL_PHRASES)
// This produces an error at compile-time if expr is zero.
// It looks like file.c:line: size of array `id' is negative
#define STATIC_ASSERT(expr, id) typedef char id[(expr) ? 1 : -1];
struct Coords8
{
s8 x;
+28 -28
View File
@@ -3,30 +3,30 @@
#include "global.h"
extern const u32 gInterfaceGfx_PokeBall[];
extern const u32 gInterfacePal_PokeBall[];
extern const u32 gInterfaceGfx_GreatBall[];
extern const u32 gInterfacePal_GreatBall[];
extern const u32 gInterfaceGfx_SafariBall[];
extern const u32 gInterfacePal_SafariBall[];
extern const u32 gInterfaceGfx_UltraBall[];
extern const u32 gInterfacePal_UltraBall[];
extern const u32 gInterfaceGfx_MasterBall[];
extern const u32 gInterfacePal_MasterBall[];
extern const u32 gInterfaceGfx_NetBall[];
extern const u32 gInterfacePal_NetBall[];
extern const u32 gInterfaceGfx_DiveBall[];
extern const u32 gInterfacePal_DiveBall[];
extern const u32 gInterfaceGfx_NestBall[];
extern const u32 gInterfacePal_NestBall[];
extern const u32 gInterfaceGfx_RepeatBall[];
extern const u32 gInterfacePal_RepeatBall[];
extern const u32 gInterfaceGfx_TimerBall[];
extern const u32 gInterfacePal_TimerBall[];
extern const u32 gInterfaceGfx_LuxuryBall[];
extern const u32 gInterfacePal_LuxuryBall[];
extern const u32 gInterfaceGfx_PremierBall[];
extern const u32 gInterfacePal_PremierBall[];
extern const u32 gBallGfx_Poke[];
extern const u32 gBallPal_Poke[];
extern const u32 gBallGfx_Great[];
extern const u32 gBallPal_Great[];
extern const u32 gBallGfx_Safari[];
extern const u32 gBallPal_Safari[];
extern const u32 gBallGfx_Ultra[];
extern const u32 gBallPal_Ultra[];
extern const u32 gBallGfx_Master[];
extern const u32 gBallPal_Master[];
extern const u32 gBallGfx_Net[];
extern const u32 gBallPal_Net[];
extern const u32 gBallGfx_Dive[];
extern const u32 gBallPal_Dive[];
extern const u32 gBallGfx_Nest[];
extern const u32 gBallPal_Nest[];
extern const u32 gBallGfx_Repeat[];
extern const u32 gBallPal_Repeat[];
extern const u32 gBallGfx_Timer[];
extern const u32 gBallPal_Timer[];
extern const u32 gBallGfx_Luxury[];
extern const u32 gBallPal_Luxury[];
extern const u32 gBallGfx_Premier[];
extern const u32 gBallPal_Premier[];
extern const u32 gOpenPokeballGfx[];
// pokemon gfx
@@ -2980,7 +2980,7 @@ extern const u8 gFile_graphics_items_icon_palettes_soda_pop_palette[];
extern const u8 gFile_graphics_items_icons_lemonade_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_lemonade_palette[];
extern const u8 gFile_graphics_items_icons_moomoo_milk_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_moomoo_milk_palette[];;
extern const u8 gFile_graphics_items_icon_palettes_moomoo_milk_palette[];
extern const u8 gFile_graphics_items_icon_palettes_energy_powder_palette[];
extern const u8 gFile_graphics_items_icons_energy_root_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_energy_root_palette[];
@@ -4258,7 +4258,7 @@ extern const u32 gBattleAnimBgPalette_Sky[];
extern const u32 gBattleAnimBgPalette_Aurora[];
extern const u32 gBattleAnimBgPalette_Fissure[];
extern const u32 gBattleAnimBgPalette_Bug[];
extern const u32 gBattleAnimBgPalette_Solarbeam[];
extern const u32 gBattleAnimBgPalette_SolarBeam[];
extern const u32 gBattleAnimBgPalette_Surf[];
extern const u32 gBattleAnimBgTilemap_Dark[];
extern const u32 gBattleAnimBgTilemap_Ghost[];
@@ -4829,8 +4829,8 @@ extern const u16 gTradeButtons_Gfx[];
extern const u16 gTradeMenuMonBox_Tilemap[];
// mon_markings
extern const u16 gUnknown_8E9CBBC[];
extern const u16 gUnknown_8E9CB9C[];
extern const u16 gMonMarkingsMenu_Gfx[];
extern const u16 gMonMarkingsMenu_Pal[];
// hall_of_fame
extern const u32 gFile_graphics_misc_confetti_sheet[];
+2 -2
View File
@@ -85,7 +85,7 @@ void HelpSystem_SetInputDelay(u8);
s32 HelpSystem_GetMenuInput(void);
void HS_UpdateMenuScrollArrows(void);
void DecompressAndRenderGlyph(u8 font, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *destBlit, u8 *destBuffer, u8 x, u8 y, u8 width, u8 height);
void DecompressAndRenderGlyph(u8 fontId, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *destBlit, u8 *destBuffer, u8 x, u8 y, u8 width, u8 height);
void HelpSystem_PrintTextInTopLeftCorner(const u8 * str);
void HelpSystem_FillPanel3(void);
void PrintListMenuItems(void);
@@ -93,7 +93,7 @@ void PlaceListMenuCursor(void);
bool8 MoveCursor(u8 by, u8 dirn);
void BackupHelpContext(void);
void RestoreHelpContext(void);
void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 width, u8 height);
void HelpSystemRenderText(u8 fontId, u8 * dest, const u8 * src, u8 x, u8 y, u8 width, u8 height);
void HelpSystem_DisableToggleWithRButton(void);
#endif //GUARD_HELP_SYSTEM_H
+2 -1
View File
@@ -29,9 +29,10 @@ struct BagPocket
u8 capacity;
};
extern const struct Item gItems[];
extern struct BagPocket gBagPockets[];
void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity);
void GetBerryCountString(u8 *dst, const u8 *berryName, u32 quantity);
void CopyItemName(u16 itemId, u8 *string);
void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity);
bool8 IsBagPocketNonEmpty(u8 pocket);
+1 -1
View File
@@ -22,7 +22,7 @@ void ItemMenuIcons_MoveInsertIndicatorBar(s16 x, u16 y);
void ItemMenuIcons_ToggleInsertIndicatorBarVisibility(bool8 invisible);
void SetBagVisualPocketId(u8);
void ShakeBagSprite(void);
const void * GetItemIconGfxPtr(u16 itemId, u8 ptrId);
const void *GetItemIconGfxPtr(u16 itemId, u8 ptrId);
void CreateBagOrSatchelSprite(u8 animNum);
#endif // GUARD_ITEM_MENU_ICONS
+1 -1
View File
@@ -324,7 +324,7 @@ struct STWIStatus
vu8 sending;
};
// This struct is used as u8 array in SDK.
// This struct is used as u8 array in SDK.
struct RfuIntrStruct
{
union RfuPacket rxPacketAlloc;
+2 -1
View File
@@ -58,6 +58,7 @@
#define LINKCMD_0x5FFF 0x5FFF
#define LINKCMD_0x6666 0x6666
#define LINKCMD_0x7777 0x7777
#define LINKCMD_COUNTDOWN 0x7FFF
#define LINKCMD_CONT_BLOCK 0x8888
#define LINKCMD_0xAAAA 0xAAAA
#define LINKCMD_0xAAAB 0xAAAB
@@ -189,7 +190,7 @@ struct Link
struct BlockRequest
{
void * address;
void *address;
u32 size;
};
+3 -1
View File
@@ -6,6 +6,8 @@
#include "link.h"
#include "AgbRfu_LinkManager.h"
#define RFUCMD_MASK 0xFF00
#define RFUCMD_SEND_PACKET 0x2F00
#define RFUCMD_READY_CLOSE_LINK 0x5f00
#define RFUCMD_READY_EXIT_STANDBY 0x6600
@@ -219,7 +221,7 @@ void DestroyWirelessStatusIndicatorSprite(void);
void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0);
void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0);
void MEvent_CreateTask_Leader(u32 arg0);
void Rfu_SendPacket(void * data);
void Rfu_SendPacket(void *data);
u8 CreateTask_ListenToWireless(void);
void LinkRfu_DestroyIdleTask(void);
void InitRFUAPI(void);
+3 -3
View File
@@ -43,9 +43,9 @@ struct MapPreviewScreen
u8 mapsec;
u8 type;
u16 flagId;
const void * tilesptr;
const void * tilemapptr;
const void * palptr;
const void *tilesptr;
const void *tilemapptr;
const void *palptr;
};
u16 MapPreview_CreateMapNameWindow(u8 id);
+13 -29
View File
@@ -31,10 +31,9 @@ bool8 MetatileBehavior_IsEastArrowWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsWestArrowWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsNorthArrowWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsSouthArrowWarp(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedIsArrowWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsForcedMovementTile(u8 metatileBehavior);
bool8 MetatileBehavior_IsIce_2(u8 metatileBehavior);
bool8 MetatileBehavior_IsUnknownMovement48(u8 metatileBehavior);
bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 metatileBehavior);
bool8 MetatileBehavior_IsWalkNorth(u8 metatileBehavior);
bool8 MetatileBehavior_IsWalkSouth(u8 metatileBehavior);
bool8 MetatileBehavior_IsWalkWest(u8 metatileBehavior);
@@ -48,18 +47,16 @@ bool8 MetatileBehavior_IsSlideSouth(u8 metatileBehavior);
bool8 MetatileBehavior_IsSlideWest(u8 metatileBehavior);
bool8 MetatileBehavior_IsSlideEast(u8 metatileBehavior);
bool8 MetatileBehavior_IsCounter(u8 metatileBehavior);
bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDirection);
bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 metatileBehavior, u8 playerDirection);
bool8 MetatileBehavior_IsPC(u8 metatileBehavior);
bool8 MetatileBehavior_HasRipples(u8 metatileBehavior);
bool8 MetatileBehavior_IsPuddle(u8 metatileBehavior);
bool8 MetatileBehavior_IsTallGrass_2(u8 metatileBehavior);
bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior);
bool8 MetatileBehavior_IsLongGrass(u8 metatileBehavior);
bool8 MetatileBehavior_ReturnFalse_4(u8 metatileBehavior);
bool8 MetatileBehavior_IsAshGrass(u8 metatileBehavior);
bool8 MetatileBehavior_IsFootprints(u8 metatileBehavior);
bool8 MetatileBehavior_IsBridge(u8 metatileBehavior);
bool8 MetatileBehavior_GetBridgeType(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedIsMB_01(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedIsTallGrass(u8 metatileBehavior);
bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior);
bool8 MetatileBehavior_IsMountain(u8 metatileBehavior);
bool8 MetatileBehavior_IsDiveable(u8 metatileBehavior);
@@ -68,7 +65,6 @@ bool8 MetatileBehavior_IsShallowFlowingWater(u8 metatileBehavior);
bool8 MetatileBehavior_IsThinIce(u8 metatileBehavior);
bool8 MetatileBehavior_IsCrackedIce(u8 metatileBehavior);
bool8 MetatileBehavior_IsDeepSemiDeepOrSplashingWater(u8 metatileBehavior);
bool8 MetatileBehavior_IsMB1A(u8 metatileBehavior);
bool8 MetatileBehavior_IsSurfableAndNotWaterfall(u8 metatileBehavior);
bool8 MetatileBehavior_IsEastBlocked(u8 metatileBehavior);
bool8 MetatileBehavior_IsWestBlocked(u8 metatileBehavior);
@@ -78,24 +74,15 @@ bool8 MetatileBehavior_IsShortGrass(u8 metatileBehavior);
bool8 MetatileBehavior_IsHotSprings(u8 metatileBehavior);
bool8 MetatileBehavior_IsWaterfall(u8 metatileBehavior);
bool8 MetatileBehavior_IsFortreeBridge(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_2(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_3(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_4(u8 metatileBehavior);
bool8 MetatileBehavior_IsPacifidlogLog(u8 metatileBehavior);
bool8 MetatileBehavior_ReturnFalse_11(u8 metatileBehavior);
bool8 MetatileBehavior_IsRegionMap(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_5(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_6(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_7(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_8(u8 metatileBehavior);
bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsLavaridge1FWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsWarpPad(u8 metatileBehavior);
bool8 MetatileBehavior_IsUnionRoomWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsWater(u8 metatileBehavior);
bool8 MetatileBehavior_IsFallWarp(u8 metatileBehavior);
bool8 MetatileBehavior_ReturnFalse_13(u8 metatileBehavior);
bool8 MetatileBehavior_IsCrackedFloor(u8 metatileBehavior);
bool32 MetatileBehavior_IsCyclingRoadPullDownTile(u8 metatileBehavior);
bool8 MetatileBehavior_IsCyclingRoadPullDownTileGrass(u8 metatileBehavior);
bool8 MetatileBehavior_IsBumpySlope(u8 metatileBehavior);
@@ -105,15 +92,10 @@ bool8 MetatileBehavior_IsVerticalRail(u8 metatileBehavior);
bool8 MetatileBehavior_IsHorizontalRail(u8 metatileBehavior);
bool8 MetatileBehavior_IsSeaweed(u8 metatileBehavior);
bool8 MetatileBehavior_IsRunningDisallowed(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_9(u8 metatileBehavior);
bool8 MetatileBehavior_IsBookshelf(u8 metatileBehavior);
bool8 MetatileBehavior_IsPokeMartShelf(u8 metatileBehavior);
bool8 MetatileBehavior_IsPlayerFacingPokemonCenterSign(u8 tile, u8 playerDirection);
bool8 MetatileBehavior_IsPlayerFacingPokeMartSign(u8 tile, u8 playerDirection);
bool8 MetatileBehavior_UnusedReturnFalse_10(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_11(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_12(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_13(u8 metatileBehavior);
bool8 MetatileBehavior_IsPlayerFacingPokemonCenterSign(u8 metatileBehavior, u8 playerDirection);
bool8 MetatileBehavior_IsPlayerFacingPokeMartSign(u8 metatileBehavior, u8 playerDirection);
bool8 TestMetatileAttributeBit(u8 attr, u8 bitmask);
bool8 MetatileBehavior_IsSpinRight(u8 metatileBehavior);
bool8 MetatileBehavior_IsSpinLeft(u8 metatileBehavior);
@@ -127,11 +109,11 @@ bool8 MetatileBehavior_IsKitchen(u8 metatileBehavior);
bool8 MetatileBehavior_IsDresser(u8 metatileBehavior);
bool8 MetatileBehavior_IsSnacks(u8 metatileBehavior);
bool8 MetatileBehavior_IsStrengthButton(u8 metatileBehavior);
bool8 MetatileBehavior_IsPlayerFacingCableClubWirelessMonitor(u8 tile, u8 playerDirection);
bool8 MetatileBehavior_IsPlayerFacingBattleRecords(u8 tile, u8 playerDirection);
bool8 MetatileBehavior_IsPlayerFacingCableClubWirelessMonitor(u8 metatileBehavior, u8 playerDirection);
bool8 MetatileBehavior_IsPlayerFacingBattleRecords(u8 metatileBehavior, u8 playerDirection);
bool8 MetatileBehavior_IsQuestionnaire(u8 metatileBehavior);
bool8 MetatileBehavior_IsIndigoPlateauMark(u8 metatileBehavior);
bool8 MetatileBehavior_IsIndigoPlateauMark2(u8 metatileBehavior);
bool8 MetatileBehavior_IsIndigoPlateauSign1(u8 metatileBehavior);
bool8 MetatileBehavior_IsIndigoPlateauSign2(u8 metatileBehavior);
bool8 MetatileBehavior_IsFood(u8 metatileBehavior);
bool8 MetatileBehavior_IsRockStairs(u8 metatileBehavior);
bool8 MetatileBehavior_IsBlueprints(u8 metatileBehavior);
@@ -151,5 +133,7 @@ bool8 MetatileBehavior_IsImpressiveMachine(u8 metatileBehavior);
bool8 MetatileBehavior_IsVideoGame(u8 metatileBehavior);
bool8 MetatileBehavior_IsBurglary(u8 metatileBehavior);
bool8 MetatileBehavior_IsTrainerTowerMonitor(u8 metatileBehavior);
bool8 MetatileBehavior_IsSecretBaseJumpMat(u8 metatileBehavior);
bool8 MetatileBehavior_IsSecretBaseSpinMat(u8 metatileBehavior);
#endif // GUARD_METATILE_BEHAVIOR
+3 -3
View File
@@ -25,7 +25,7 @@ struct MEvent_Str_1
{
u16 status;
size_t size;
const void * data;
const void *data;
};
struct MEvent_Str_2
@@ -63,8 +63,8 @@ void MEvent_WonderCardResetUnk08_6(struct WonderCard * buffer);
bool32 MEvent_ReceiveDistributionMon(const u16 * data);
void BuildMEventClientHeader(struct MEventClientHeaderStruct * data);
bool32 ValidateMEventClientHeader(const struct MEventClientHeaderStruct * data);
u32 sub_8144418(const u16 * a0, const struct MEventClientHeaderStruct * a1, void * unused);
u32 MEvent_CanPlayerReceiveDistributionMon(const u16 * a0, const struct MEventClientHeaderStruct * a1, void * unused);
u32 sub_8144418(const u16 * a0, const struct MEventClientHeaderStruct * a1, void *unused);
u32 MEvent_CanPlayerReceiveDistributionMon(const u16 * a0, const struct MEventClientHeaderStruct * a1, void *unused);
bool32 sub_8144474(const struct MEventClientHeaderStruct * a0, const u16 * a1);
u16 sub_81444B0(const struct MEventClientHeaderStruct * a0, u32 command);
bool32 InitWonderCardResources(struct WonderCard * r5, struct WonderCardMetadata * r6);
+12 -12
View File
@@ -18,8 +18,8 @@ struct mevent_srv_sub
u16 sendCounter;
u16 sendCRC;
u16 sendSize;
void * recvBfr;
const void * sendBfr;
void *recvBfr;
const void *sendBfr;
u32 (*recvFunc)(struct mevent_srv_sub *);
u32 (*sendFunc)(struct mevent_srv_sub *);
};
@@ -59,10 +59,10 @@ struct mevent_client
u32 mainseqno;
u32 flag;
u32 cmdidx;
void * sendBuffer;
void * recvBuffer;
void *sendBuffer;
void *recvBuffer;
struct mevent_client_cmd * cmdBuffer;
void * buffer;
void *buffer;
struct mevent_srv_sub manager;
};
@@ -70,7 +70,7 @@ struct mevent_server_cmd
{
u32 instr;
bool32 flag;
void * parameter;
void *parameter;
};
// Server commands
@@ -99,13 +99,13 @@ struct mevent_srv_common
u32 mainseqno;
u32 cmdidx;
const struct mevent_server_cmd * cmdBuffer;
void * recvBuffer;
void *recvBuffer;
struct WonderCard * card;
struct WonderNews * news;
struct MEventClientHeaderStruct * mevent_unk1442cc;
void * sendBuffer1;
void *sendBuffer1;
u32 sendBuffer1Size;
void * sendBuffer2;
void *sendBuffer2;
u32 sendBuffer2Size;
u32 sendWord;
struct mevent_srv_sub manager;
@@ -114,13 +114,13 @@ struct mevent_srv_common
u32 mevent_srv_sub_recv(struct mevent_srv_sub * svr);
u32 mevent_srv_sub_send(struct mevent_srv_sub * svr);
void mevent_srv_sub_init(struct mevent_srv_sub * svr, u32 sendPlayerNo, u32 recvPlayerNo);
void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 ident, const void * src, u32 size);
void mevent_srv_sub_init_recv(struct mevent_srv_sub * svr, u32 ident, void * dest);
void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 ident, const void *src, u32 size);
void mevent_srv_sub_init_recv(struct mevent_srv_sub * svr, u32 ident, void *dest);
void mevent_client_do_init(void);
u32 mevent_client_do_exec(u16 * a0);
void mevent_client_inc_flag(void);
void * mevent_client_get_buffer(void);
void *mevent_client_get_buffer(void);
void mevent_client_set_param(u32 a0);
void mevent_srv_init_wnews(void);
void mevent_srv_new_wcard(void);
+18 -16
View File
@@ -1,33 +1,35 @@
#ifndef GUARD_MON_MARKINGS_H
#define GUARD_MON_MARKINGS_H
struct PokemonMarkMenu
#define NUM_MON_MARKINGS 4
struct MonMarkingsMenu
{
/*0x0000*/ u16 baseTileTag;
/*0x0002*/ u16 basePaletteTag;
/*0x0004*/ u8 markings; // bit flags
/*0x0005*/ s8 cursorPos;
/*0x0006*/ bool8 markingsArray[4];
/*0x0006*/ bool8 markingsArray[NUM_MON_MARKINGS];
/*0x000A*/ u8 cursorBaseY;
/*0x000B*/ bool8 spriteSheetLoadRequired;
/*0x000C*/ struct Sprite * menuWindowSprites[2]; // upper and lower halves of menu window
/*0x0014*/ struct Sprite * menuMarkingSprites[4];
/*0x0024*/ struct Sprite * unkSprite;
/*0x0028*/ struct Sprite * menuTextSprite;
/*0x000C*/ struct Sprite *windowSprites[2]; // upper and lower halves of menu window
/*0x0014*/ struct Sprite *markingSprites[NUM_MON_MARKINGS];
/*0x0024*/ struct Sprite *cursorSprite;
/*0x0028*/ struct Sprite *textSprite;
/*0x002C*/ const u8 *frameTiles;
/*0x0030*/ const u16 *framePalette;
/*0x0034*/ u8 menuWindowSpriteTiles[0x1000];
/*0x1034*/ u8 filler1034[0x80];
/*0x0034*/ u8 windowSpriteTiles[0x1000];
/*0x1034*/ u8 unused[0x80];
/*0x10B4*/ u8 tileLoadState;
}; // 10b8
void SetMonMarkingsMenuPointer(struct PokemonMarkMenu * markMenu);
void LoadMonMarkingsFrameGfx(void);
void DrawMonMarkingsMenu(u8 markings, s16 x, s16 y);
void TeardownMonMarkingsMenu(void);
bool8 MonMarkingsHandleInput(void);
struct Sprite * CreateMonMarkingSprite_SelectCombo(u16 tileTag, u16 paletteTag, const u16 *palette);
struct Sprite * CreateMonMarkingSprite_AllOff(u16 tileTag, u16 paletteTag, const u16 *palette);
void RequestDma3LoadMonMarking(u8 markings, void * dest);
void InitMonMarkingsMenu(struct MonMarkingsMenu *ptr);
void BufferMonMarkingsMenuTiles(void);
void OpenMonMarkingsMenu(u8 markings, s16 x, s16 y);
void FreeMonMarkingsMenu(void);
bool8 HandleMonMarkingsMenuInput(void);
struct Sprite *CreateMonMarkingAllCombosSprite(u16 tileTag, u16 paletteTag, const u16 *palette);
struct Sprite *CreateMonMarkingComboSprite(u16 tileTag, u16 paletteTag, const u16 *palette);
void UpdateMonMarkingTiles(u8 markings, void *dest);
#endif //GUARD_MON_MARKINGS_H
+5 -5
View File
@@ -3,11 +3,11 @@
#include "global.h"
u32 GetMoney(u32* moneyPtr);
void SetMoney(u32* moneyPtr, u32 newValue);
bool8 IsEnoughMoney(u32* moneyPtr, u32 cost);
void AddMoney(u32* moneyPtr, u32 toAdd);
void RemoveMoney(u32* moneyPtr, u32 toSub);
u32 GetMoney(u32 *moneyPtr);
void SetMoney(u32 *moneyPtr, u32 newValue);
bool8 IsEnoughMoney(u32 *moneyPtr, u32 cost);
void AddMoney(u32 *moneyPtr, u32 toAdd);
void RemoveMoney(u32 *moneyPtr, u32 toSub);
bool8 IsEnoughForCostInVar0x8005(void);
void SubtractMoneyFromVar0x8005(void);
void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed);
+2 -2
View File
@@ -14,7 +14,7 @@ void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 of
void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
void * MallocAndDecompress(const void * src, u32 * size);
void *MallocAndDecompress(const void *src, u32 * size);
void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
void CopyToBufferFromBgTilemap(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
void ResetBgPositions(void);
@@ -36,7 +36,7 @@ void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram);
void sub_80F7768(u8 windowId, bool8 copyToVram);
void Menu_LoadStdPal(void);
void Menu_LoadStdPalAt(u16 offset);
void DisplayItemMessageOnField(u8 taskId, u8 textSpeed, const u8 *src, TaskFunc callback);
void DisplayItemMessageOnField(u8 taskId, u8 fontId, const u8 *src, TaskFunc callback);
void DisplayYesNoMenuDefaultYes(void);
void DisplayYesNoMenuDefaultNo(void);
u8 GetTextSpeedSetting(void);
+11 -21
View File
@@ -10,29 +10,23 @@
#define LINK_KEY_CODE_DPAD_UP 0x13
#define LINK_KEY_CODE_DPAD_LEFT 0x14
#define LINK_KEY_CODE_DPAD_RIGHT 0x15
#define LINK_KEY_CODE_UNK_2 0x16
#define LINK_KEY_CODE_READY 0x16
#define LINK_KEY_CODE_EXIT_ROOM 0x17
#define LINK_KEY_CODE_START_BUTTON 0x18
#define LINK_KEY_CODE_A_BUTTON 0x19
#define LINK_KEY_CODE_UNK_4 0x1A // I'd guess this is the B button?
#define LINK_KEY_CODE_IDLE 0x1A
// These two are a hack to stop user input until link stuff can be
// resolved.
#define LINK_KEY_CODE_HANDLE_RECV_QUEUE 0x1B
#define LINK_KEY_CODE_HANDLE_SEND_QUEUE 0x1C
#define LINK_KEY_CODE_UNK_7 0x1D
#define LINK_KEY_CODE_UNK_8 0x1E
#define LINK_KEY_CODE_EXIT_SEAT 0x1D
#define MOVEMENT_MODE_FREE 0
#define MOVEMENT_MODE_FROZEN 1
#define MOVEMENT_MODE_SCRIPTED 2
struct UnkPlayerStruct
{
u8 player_field_0;
u8 player_field_1;
};
struct LinkPlayerObjectEvent
{
u8 active;
@@ -53,14 +47,14 @@ struct CreditsOverworldCmd
#define MUSIC_DISABLE_STOP 1
#define MUSIC_DISABLE_KEEP 2
extern const struct UCoords32 gDirectionToVectors[];
extern const struct Coords32 gDirectionToVectors[];
extern struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4];
extern MainCallback gFieldCallback;
extern struct WarpData gLastUsedWarp;
extern u8 gUnknown_2031DE0;
extern u8 gExitStairsMovementDisabled;
extern u8 gFieldLinkPlayerCount;
extern u8 gLocalLinkPlayerId;
@@ -83,8 +77,6 @@ u8 IsMapTypeOutdoors(u8 mapType);
void Overworld_ClearSavedMusic(void);
bool32 Overworld_MusicCanOverrideMapMusic(u16 song);
void player_avatar_init_params_reset(void);
void Overworld_SetFlashLevel(s32 a1);
u8 Overworld_GetFlashLevel(void);
@@ -102,9 +94,7 @@ void CB2_ReturnToFieldContinueScriptPlayMapMusic(void);
void WarpIntoMap(void);
u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum);
void SetWarpDestinationToMapWarp(s8 mapGroup, s8 mapNum, s8 warpNum);
void c2_load_new_map(void);
void SetWarpDestinationToDynamicWarp(u8 unused);
void mapldr_default(void);
u32 GetGameStat(u8 statId);
void SetGameStat(u8 statId, u32 value);
@@ -174,13 +164,13 @@ bool32 Overworld_RecvKeysFromLinkIsRunning(void);
void OverworldWhiteOutGetMoneyLoss(void);
u8 GetCurrentMapBattleScene(void);
void Overworld_ResetStateAfterFly(void);
bool8 sub_8055B38(u16 metatileBehavior);
bool8 MetatileBehavior_IsSurfableInSeafoamIslands(u16 metatileBehavior);
void Overworld_ResetMapMusic(void);
u16 QueueExitLinkRoomKey(void);
u16 sub_8057F34(void);
u32 sub_8057EC0(void);
u16 sub_8057F70(void);
u16 sub_8057F48(void);
u16 SetInCableClubSeat(void);
u32 GetCableClubPartnersReady(void);
u16 SetStartedCableClubActivity(void);
u16 SetLinkWaitingForScript(void);
void SetMainCallback1(MainCallback cb);
void CB1_Overworld(void);
void CB2_ReturnToFieldContinueScript(void);
+11 -1
View File
@@ -20,6 +20,16 @@ enum
POKEBALL_COUNT
};
enum {
BALL_AFFINE_ANIM_0,
BALL_ROTATE_RIGHT,
BALL_ROTATE_LEFT,
BALL_AFFINE_ANIM_3,
BALL_AFFINE_ANIM_4
};
extern const struct CompressedSpriteSheet gBallSpriteSheets[POKEBALL_COUNT];
extern const struct CompressedSpritePalette gBallSpritePalettes[POKEBALL_COUNT];
extern const struct SpriteTemplate gBallSpriteTemplates[];
#define POKEBALL_PLAYER_SENDOUT 0xFF
@@ -32,6 +42,6 @@ void DoHitAnimHealthboxEffect(u8 bank);
void LoadBallGfx(u8 ballId);
void FreeBallGfx(u8 ballId);
void StartHealthboxSlideIn(u8 battler);
void DestroySpriteAndFreeResources2(struct Sprite *sprite);
void DestroySpriteAndFreeResources_Ball(struct Sprite *sprite);
#endif // GUARD_POKEBALL_H
+1 -1
View File
@@ -4,7 +4,7 @@
struct PAM_TaskData
{
struct SubspriteTable subsprites;
void * buffer;
void *buffer;
u8 unk_0C;
u8 spr_id;
u16 tilesTag;
+9 -8
View File
@@ -73,7 +73,7 @@ struct PokemonSubstruct3
/* 0x0B */ u32 nationalRibbon:1;
/* 0x0B */ u32 earthRibbon:1;
/* 0x0B */ u32 worldRibbon:1; // distributed during Pokémon Festa '04 and '05 to tournament winners
/* 0x0B */ u32 filler:4;
/* 0x0B */ u32 unusedRibbons:4; // discarded in Gen 4
/* 0x0B */ u32 eventLegal:1; // controls Mew & Deoxys obedience; if set, Pokémon is a fateful encounter in FRLG & Gen 4+ summary screens; set for in-game event island legendaries, some distributed events, and Pokémon from XD: Gale of Darkness.
};
@@ -245,12 +245,13 @@ struct BattleMove
extern const struct BattleMove gBattleMoves[];
#define FLAG_MAKES_CONTACT 0x1
#define FLAG_PROTECT_AFFECTED 0x2
#define FLAG_MAGICCOAT_AFFECTED 0x4
#define FLAG_SNATCH_AFFECTED 0x8
#define FLAG_MIRROR_MOVE_AFFECTED 0x10
#define FLAG_KINGSROCK_AFFECTED 0x20
// Battle move flags
#define FLAG_MAKES_CONTACT (1 << 0)
#define FLAG_PROTECT_AFFECTED (1 << 1)
#define FLAG_MAGIC_COAT_AFFECTED (1 << 2)
#define FLAG_SNATCH_AFFECTED (1 << 3)
#define FLAG_MIRROR_MOVE_AFFECTED (1 << 4)
#define FLAG_KINGS_ROCK_AFFECTED (1 << 5)
struct SpindaSpot
{
@@ -396,7 +397,7 @@ u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex);
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex);
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex);
bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, bool8 usedByAI);
bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId);
+4 -2
View File
@@ -3,6 +3,8 @@
#include "global.h"
extern const u8 *const gMonIconTable[];
extern const struct SpritePalette gMonIconPaletteTable[];
extern const u16 gMonIconPalettes[][16];
extern const u8 gMonIconPaletteIndices[];
@@ -17,10 +19,10 @@ void DestroyMonIcon(struct Sprite *);
u16 GetUnownLetterByPersonality(u32 personality);
void SpriteCB_MonIcon(struct Sprite *);
u8 CreateMonIcon(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subpriority, u32 personality, bool32 extra);
u8 UpdateMonIconFrame(struct Sprite * sprite);
u8 UpdateMonIconFrame(struct Sprite *sprite);
void LoadMonIconPalette(u16 iconId);
void FreeMonIconPalette(u16 iconId);
void SetPartyHPBarSprite(struct Sprite * sprite, u8 animNum);
void SetPartyHPBarSprite(struct Sprite *sprite, u8 animNum);
u8 GetMonIconPaletteIndexFromSpecies(u16 species);
u16 GetIconSpecies(u16 species, u32 personality);
void LoadMonIconPalettesAt(u16 offset);
+1 -114
View File
@@ -2,122 +2,9 @@
#define GUARD_POKEMON_JUMP_H
#include "main.h"
#include "link.h"
struct PokemonJump1_MonInfo
{
u16 species;
u32 otId;
u32 personality;
};
struct PokemonJump1_82E4
{
int unk0;
int unk4;
u8 filler8[0x4];
u16 unkC;
u16 unkE;
u16 unk10;
u16 unk12;
int unk14;
int unk18;
u8 unk1C[11];
};
struct PokemonJump2
{
int unk0;
u16 unk4;
u8 unk6;
u8 filler7[0xa - 0x7];
u8 unkA;
u8 unkB;
u8 unkC;
u8 unkD;
u8 unkE;
u8 unkF;
u16 filler10;
u16 unk12;
u16 unk14;
u32 unk18;
u16 unk1C[5];
u8 txtBuff[2][0x40];
u8 strBuff[0x100];
u16 tilemapBuffer[0x4000]; // Bug: way larger than it should be
struct Sprite *unk81A8[MAX_RFU_PLAYERS];
struct Sprite *unk81BC[MAX_RFU_PLAYERS];
struct Sprite *unk81D0[8];
u8 filler81F0[0xC];
u8 unk81FC[MAX_RFU_PLAYERS];
};
struct PokemonJump1Sub
{
u8 unk0;
u8 unk1;
u16 unk2;
u16 unk4;
u32 unk8;
};
void ResetPokeJumpResults(void);
void ResetPokemonJumpRecords(void);
bool32 IsSpeciesAllowedInPokemonJump(u16 species);
void StartPokemonJump(u16 species, MainCallback callback);
u16 sub_81499A4(void);
u16 sub_81499B4(void);
struct PokemonJump1_MonInfo *sub_81499C0(u8 multiplayerId);
u8 *sub_81499E0(u8 multiplayerId);
void sub_814A95C(int id);
void sub_8149CEC(struct PokemonJump2 *);
void sub_8149D24(void);
void sub_8149D40(int);
bool32 sub_8149D68(void);
void sub_814A3E4(void);
bool32 sub_814A408(void);
void sub_814A468(u16 itemId, u16 quantity);
void sub_814A53C(u16 itemId);
void sub_814A5B4(u16 itemId);
bool32 sub_814A62C(void);
void sub_814A6CC(void);
void sub_814A940(u32 id, s16 y);
void sub_814AA48(u8 multiplayerId);
bool32 sub_814A6FC(void);
void sub_814AA24(int);
s8 sub_814A744(void);
int sub_814A98C(u8 flags);
void sub_814AA34(u16);
void sub_814AA60(u8 multiplayerId);
int sub_814AA78(int multiplayerId);
void sub_814AA8C(void);
void sub_814AAA0(void);
void sub_814AAB4(int);
int sub_814AAC8(void);
void sub_8149A6C(struct PokemonJump1_MonInfo *arg0);
bool32 sub_8149A90(int multiplayerId, struct PokemonJump1_MonInfo *arg0);
void sub_8149AF8(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1);
bool32 sub_8149B7C(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1);
void sub_8149BF4(struct PokemonJump1_82E4 *arg0, u8 arg1, u16 arg2);
bool32 sub_8149C24(struct PokemonJump1_82E4 *arg0, int multiplayerId, u8 *arg2, u16 *arg3);
bool32 sub_8149C90(struct PokemonJump1_82E4 *arg0, int multiplayerId);
bool32 sub_814B494(u32 jumpScore, u16 jumpsInRow, u16 excellentsInRow);
void sub_814B4E8(void);
void sub_814AD6C(struct PokemonJump2 *);
void sub_814B294(struct PokemonJump2 *);
void sub_814B43C(struct PokemonJump2 *);
bool32 sub_814B460(void);
void sub_814B348(struct PokemonJump2 *, int);
void sub_814AF0C(struct PokemonJump2 *, int);
void sub_814ADCC(struct PokemonJump2 *, struct PokemonJump1_MonInfo *,s16, s16, u8);
void sub_814B240(struct PokemonJump2 *,s16, s16, u8);
void sub_814AFE8(struct PokemonJump2 *, int multiplayerId);
void sub_814B080(struct PokemonJump2 *, int multiplayerId);
bool32 sub_814B010(struct PokemonJump2 *, int multiplayerId);
void sub_814B0A8(struct PokemonJump2 *);
void sub_814B134(struct PokemonJump2 *);
void sub_814B168(struct PokemonJump2 *, int multiplayerId);
bool32 sub_814B190(struct PokemonJump2 *);
#endif // GUARD_POKEMON_JUMP_H
+2 -2
View File
@@ -25,8 +25,8 @@ struct PokemonSpecialAnimScene
u16 monSpriteY1;
u16 monSpriteY2;
u8 lastCloseness;
struct Sprite * monSprite;
struct Sprite * itemIconSprite;
struct Sprite *monSprite;
struct Sprite *itemIconSprite;
u8 textBuf[0x900];
u8 field_0914[BG_SCREEN_SIZE];
u8 field_1114[BG_SCREEN_SIZE];
+1
View File
@@ -26,6 +26,7 @@ enum
WALLPAPER_PLAIN,
WALLPAPER_COUNT
};
#define MAX_DEFAULT_WALLPAPER WALLPAPER_SAVANNA
u8 *GetBoxNamePtr(u8 boxNumber);
struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 monPosition);
+137 -131
View File
@@ -7,9 +7,14 @@
#define IN_BOX_COLUMNS 5
#define IN_BOX_ROWS 6
#define MAX_MON_ICONS 40
// The maximum number of Pokémon icons that can appear on-screen.
// By default the limit is 40 (though in practice only 37 can be).
#define MAX_MON_ICONS (IN_BOX_COUNT + PARTY_SIZE + 1 >= 40 ? IN_BOX_COUNT + PARTY_SIZE + 1 : 40)
// The maximum number of item icons that can appear on-screen while
// moving held items. 1 in the cursor, and 2 more while switching
// between 2 Pokémon with held items
#define MAX_ITEM_ICONS 3
#define MAX_MENU_ITEMS 7
enum
{
@@ -20,11 +25,12 @@ enum
enum
{
BOX_OPTION_WITHDRAW,
BOX_OPTION_DEPOSIT,
BOX_OPTION_MOVE_MONS,
BOX_OPTION_MOVE_ITEMS,
BOX_OPTION_EXIT,
OPTION_WITHDRAW,
OPTION_DEPOSIT,
OPTION_MOVE_MONS,
OPTION_MOVE_ITEMS,
OPTION_EXIT,
OPTIONS_COUNT
};
enum
@@ -167,19 +173,19 @@ struct StorageAction
u8 format;
};
struct UnkPSSStruct_2002370
struct ChooseBoxMenu
{
struct Sprite *unk_0000;
struct Sprite *unk_0004[4];
u32 unk_0014[3]; // unused
struct Sprite *unk_0020[2];
struct Sprite *menuSprite;
struct Sprite *menuSideSprites[4];
u32 unused1[3];
struct Sprite *arrowSprites[2];
u8 buffer[0x200]; // passed but not used
u8 strbuf[20];
bool32 loadPal;
u16 tilesTag;
bool32 loadedPalette;
u16 tileTag;
u16 paletteTag;
u8 curBox;
u8 unk_0245; // unused
u8 unused3;
u8 subpriority;
};
@@ -189,21 +195,21 @@ struct StorageMenu
int textId;
};
struct UnkStruct_2000028
struct UnkUtilData
{
const u8 *unk_00;
u8 *unk_04;
u16 unk_08;
u16 unk_0a;
u16 newField;
void (*unk_0c)(struct UnkStruct_2000028 *data);
const u8 *src;
u8 *dest;
u16 size;
u16 unk;
u16 height;
void (*func)(struct UnkUtilData *data);
};
struct UnkStruct_2000020
struct UnkUtil
{
struct UnkStruct_2000028 *unk_00;
u8 unk_04;
u8 unk_05;
struct UnkUtilData *data;
u8 numActive;
u8 max;
};
struct PSS_ItemIconSprite
@@ -231,115 +237,115 @@ struct PokemonStorageSystemData
u8 screenChangeType;
bool8 isReshowingPSS;
u8 taskId;
struct UnkStruct_2000020 unk_0020;
struct UnkStruct_2000028 unk_0028[8];
u16 field_B0[528 / 2];
u16 field_2C0;
u16 field_2C2;
u8 field_2C4;
u8 field_2C5;
struct UnkUtil unkUtil;
struct UnkUtilData unkUtilData[8];
u16 partyMenuTilemapBuffer[0x108];
u16 partyMenuUnused1; // Never read
u16 partyMenuY;
u8 partyMenuUnused2; // Unused
u8 partyMenuMoveTimer;
u8 showPartyMenuState;
bool8 unk_02C7;
u8 unk_02C8;
bool8 unk_02C9;
bool8 closeBoxFlashing;
u8 closeBoxFlashTimer;
bool8 closeBoxFlashState;
s16 newCurrBoxId;
u16 bg2_X;
s16 field_2CE;
u16 field_2D0;
u8 field_2D2;
u8 field_2D3;
u8 field_2D4;
u16 field_2D6;
s16 field_2D8;
u16 field_2DA;
u16 field_2DC;
u16 field_2DE;
u16 field_2E0;
u8 filler[22];
s16 scrollSpeed;
u16 scrollTimer;
u8 wallpaperOffset;
u8 scrollUnused1; // Never read
u8 scrollToBoxIdUnused; // Never read
u16 scrollUnused2; // Never read
s16 scrollDirectionUnused; // Never read.
u16 scrollUnused3; // Never read
u16 scrollUnused4; // Never read
u16 scrollUnused5; // Never read
u16 scrollUnused6; // Never read
u8 filler1[22];
u8 field_2F8[512];
u8 field_4F8[512];
u8 field_6F8;
u8 field_6F9;
u8 field_6FA;
s8 field_6FB;
u16 field_6FC[16];
u16 field_71C;
u16 field_71E;
struct Sprite *field_720[2];
struct Sprite *field_728[2];
struct Sprite *field_730[2];
u32 field_738;
u8 field_73C[80];
u16 field_78C;
u8 boxTitleCycleId;
u8 wallpaperLoadState; // Written to, but never read.
u8 wallpaperLoadBoxId;
s8 wallpaperLoadDir;
u16 boxTitlePal[16];
u16 boxTitlePalOffset;
u16 boxTitleAltPalOffset;
struct Sprite *curBoxTitleSprites[2];
struct Sprite *nextBoxTitleSprites[2];
struct Sprite *arrowSprites[2];
u32 wallpaperPalBits;
u8 filler2[80]; // Unused
u16 unkUnused1; // Never read.
s16 wallpaperSetId;
s16 wallpaperId;
u16 field_792[360];
u16 wallpaperTilemap[360];
u8 wallpaperChangeState;
u8 field_A63;
u8 field_A64;
s8 field_A65;
u8 scrollState;
u8 scrollToBoxId;
s8 scrollDirection;
// u8 *wallpaperTiles; // used only in Emerald for Walda
/* 0a68 */ struct Sprite *movingMonSprite;
/* 0a6c */ struct Sprite *partySprites[PARTY_SIZE];
/* 0a84 */ struct Sprite *boxMonsSprites[IN_BOX_COUNT];
/* 0afc */ struct Sprite **field_B00;
/* 0b00 */ struct Sprite **field_B04;
/* 0b04 */ u16 field_B08[MAX_MON_ICONS];
/* 0b54 */ u16 field_B58[MAX_MON_ICONS];
/* 0afc */ struct Sprite **shiftMonSpritePtr;
/* 0b00 */ struct Sprite **releaseMonSpritePtr;
/* 0b04 */ u16 numIconsPerSpecies[MAX_MON_ICONS];
/* 0b54 */ u16 iconSpeciesList[MAX_MON_ICONS];
/* 0ba4 */ u16 boxSpecies[IN_BOX_COUNT];
/* 0be0 */ u32 boxPersonalities[IN_BOX_COUNT];
/* 0c58 */ u8 field_C5C;
/* 0c59 */ u8 field_C5D;
/* 0c5a */ u8 field_C5E;
/* 0c5c */ u16 field_C60;
/* 0c5e */ s16 field_C62;
/* 0c60 */ s16 field_C64;
/* 0c62 */ u16 field_C66;
/* 0c64 */ u8 field_C68;
/* 0c65 */ s8 field_C69;
/* 0c66 */ u8 field_C6A;
/* 0c67 */ u8 field_C6B;
/* 0c58 */ u8 incomingBoxId;
/* 0c59 */ u8 shiftTimer;
/* 0c5a */ u8 numPartyToCompact;
/* 0c5c */ u16 iconScrollDistance;
/* 0c5e */ s16 iconScrollPos;
/* 0c60 */ s16 iconScrollSpeed;
/* 0c62 */ u16 iconScrollNumIncoming;
/* 0c64 */ u8 iconScrollCurColumn;
/* 0c65 */ s8 iconScrollDirection; // Unnecessary duplicate of scrollDirection
/* 0c66 */ u8 iconScrollState;
/* 0c67 */ u8 iconScrollToBoxId; // Unused duplicate of scrollToBoxId
/* 0c68 */ struct WindowTemplate menuWindow;
/* 0c70 */ struct StorageMenu menuItems[MAX_MENU_ITEMS];
/* 0c70 */ struct StorageMenu menuItems[7];
/* 0ca8 */ u8 menuItemsCount;
/* 0ca9 */ u8 menuWidth;
/* 0caa */ u8 field_CAE;
/* 0cac */ u16 field_CB0;
/* 0cb0 */ struct Sprite *field_CB4;
/* 0cb4 */ struct Sprite *field_CB8;
/* 0cb8 */ s32 field_CBC;
/* 0cbc */ s32 field_CC0;
/* 0cc0 */ u32 field_CC4;
/* 0cc4 */ u32 field_CC8;
/* 0cc8 */ s16 field_CCC;
/* 0cca */ s16 field_CCE;
/* 0ccc */ u16 field_CD0;
/* 0cce */ s8 field_CD2;
/* 0ccf */ s8 field_CD3;
/* 0cd0 */ u8 field_CD4;
/* 0cd1 */ u8 field_CD5;
/* 0cd2 */ u8 field_CD6;
/* 0cd3 */ u8 field_CD7;
/* 0cd4 */ u8 field_CD8[2];
/* 0cd8 */ const u32 *cursorMonPalette;
/* 0cdc */ u32 cursorMonPersonality;
/* 0ce0 */ u16 cursorMonSpecies;
/* 0ce2 */ u16 cursorMonItem;
/* 0ce4 */ u16 field_CE8;
/* 0caa */ u8 menuUnusedField; // Never read.
/* 0cac */ u16 menuWindowId;
/* 0cb0 */ struct Sprite *cursorSprite;
/* 0cb4 */ struct Sprite *cursorShadowSprite;
/* 0cb8 */ s32 cursorNewX;
/* 0cbc */ s32 cursorNewY;
/* 0cc0 */ u32 cursorSpeedX;
/* 0cc4 */ u32 cursorSpeedY;
/* 0cc8 */ s16 cursorTargetX;
/* 0cca */ s16 cursorTargetY;
/* 0ccc */ u16 cursorMoveSteps;
/* 0cce */ s8 cursorVerticalWrap;
/* 0ccf */ s8 cursorHorizontalWrap;
/* 0cd0 */ u8 newCursorArea;
/* 0cd1 */ u8 newCursorPosition;
/* 0cd2 */ u8 cursorPrevHorizPos;
/* 0cd3 */ u8 cursorFlipTimer;
/* 0cd4 */ u8 cursorPalNums[2];
/* 0cd8 */ const u32 *displayMonPalette;
/* 0cdc */ u32 displayMonPersonality;
/* 0ce0 */ u16 displayMonSpecies;
/* 0ce2 */ u16 displayMonItemId;
/* 0ce4 */ u16 displayUnusedVar;
/* 0ce6 */ bool8 setMosaic;
/* 0ce7 */ u8 cursorMonMarkings;
/* 0ce8 */ u8 cursorMonLevel;
/* 0ce9 */ bool8 cursorMonIsEgg;
/* 0cea */ u8 cursorMonNick[POKEMON_NAME_LENGTH + 1];
/* 0cf5 */ u8 cursorMonTexts[4][36];
/* 0ce7 */ u8 displayMonMarkings;
/* 0ce8 */ u8 displayMonLevel;
/* 0ce9 */ bool8 displayMonIsEgg;
/* 0cea */ u8 displayMonName[POKEMON_NAME_LENGTH + 1];
/* 0cf5 */ u8 displayMonTexts[4][36];
/* 0d88 */ bool8 (*monPlaceChangeFunc)(void);
/* 0d8c */ u8 monPlaceChangeState;
/* 0d8d */ u8 field_D91;
/* 0d90 */ struct Sprite *monMarkingSprite;
/* 0d94 */ struct Sprite *field_D98[2];
/* 0d9c */ u16 *monMarkingSpriteTileStart;
/* 0da0 */ struct PokemonMarkMenu field_DA4;
/* 1e58 */ struct UnkPSSStruct_2002370 field_1E5C;
/* 0d8d */ u8 shiftBoxId;
/* 0d90 */ struct Sprite *markingComboSprite;
/* 0d94 */ struct Sprite *waveformSprites[2];
/* 0d9c */ u16 *markingComboTilesPtr;
/* 0da0 */ struct MonMarkingsMenu markMenu;
/* 1e58 */ struct ChooseBoxMenu field_1E5C;
/* 20a0 */ struct Pokemon movingMon;
/* 2104 */ struct Pokemon field_2108;
/* 2168 */ u8 field_216C;
@@ -366,9 +372,9 @@ struct PokemonStorageSystemData
/* 21db */ u8 itemName[20];
/* 21ef */ u8 inBoxMovingMode;
/* 21f0 */ u16 field_2200;
/* 21f4 */ struct PSS_ItemIconSprite itemIconSprites[MAX_ITEM_ICONS];
/* 2224 */ u16 movingItem;
/* 2226 */ u16 field_2236;
/* 21f4 */ struct PSS_ItemIconSprite itemIcons[MAX_ITEM_ICONS];
/* 2224 */ u16 movingItemId;
/* 2226 */ u16 itemInfoWindowOffset;
/* 2228 */ struct PssQuestLogBuffer qlogBuffer;
/* 2230 */ u16 field_2238;
/* 2232 */ u16 field_223A;
@@ -377,7 +383,7 @@ struct PokemonStorageSystemData
/* 223c */ u16 field_2244[0x40];
/* 22bc */ u8 field_22C4[0x800];
/* 2abc */ u8 field_2AC4[0x1800];
/* 42bc */ u8 field_42C4[0x800];
/* 42bc */ u8 itemIconBuffer[0x800];
/* 4abc */ u8 field_4AC4[0x1000];
/* 5abc */ u8 field_5AC4[0x800];
}; // size=62bc
@@ -386,18 +392,18 @@ extern struct PokemonStorageSystemData *gPSSData;
void Cb2_EnterPSS(u8 a0);
u8 GetCurrentBoxOption(void);
struct Sprite *sub_809223C(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
struct Sprite *CreateChooseBoxArrows(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
void SetBoxWallpaper(u8 boxId, u8 wallpaperId);
void SetCurrentBox(u8 boxId);
void BoxMonAtToMon(u8 boxId, u8 boxPosition, struct Pokemon * dst);
void SetBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon * src);
void Cb2_ExitPSS(void);
void CB2_ExitPokeStorage(void);
void FreeBoxSelectionPopupSpriteGfx(void);
void sub_808C940(u8 curBox);
void sub_808C950(void);
u8 HandleBoxChooseSelectionInput(void);
void LoadBoxSelectionPopupSpriteGfx(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal);
void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal);
void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value);
u32 GetCurrentBoxMonData(u8 boxPosition, s32 request);
u32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst);
@@ -430,16 +436,16 @@ bool8 sub_8095050(void);
void sub_80950A4(void);
void sub_80950BC(u8 a0);
bool8 sub_80950D0(void);
void sub_8095B5C(void);
void CreateItemIconSprites(void);
void sub_8096088(void);
void sub_80960C0(void);
bool8 sub_809610C(void);
const u8 *GetMovingItemName(void);
void sub_80966F4(void);
bool8 sub_8096728(void);
bool8 sub_80967C0(void);
void sub_8096BE4(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2);
void sub_8096BF8(void);
void InitItemInfoWindow(void);
bool8 UpdateItemInfoWindowSlideIn(void);
bool8 UpdateItemInfoWindowSlideOut(void);
void UnkUtil_Init(struct UnkUtil *arg0, struct UnkUtilData *arg1, u32 arg2);
void UnkUtil_Run(void);
void AddMenu(void);
bool8 CanMovePartyMon(void);
bool8 CanShiftMon(void);
@@ -471,11 +477,11 @@ void SetMenuText(u8 textId);
void sub_8095C84(u8 cursorArea, u8 cursorPos);
void sub_8095E2C(u16 itemId);
u8 GetBoxWallpaper(u8 boxId);
bool8 IsCursorOnBox(void);
bool8 IsCursorOnBoxTitle(void);
bool8 IsCursorInBox(void);
void sub_808FFAC(void);
struct Sprite * CreateMonIconSprite(u16 species, u32 pid, s16 x, s16 y, u8 priority, u8 subpriority);
struct Sprite *CreateMonIconSprite(u16 species, u32 pid, s16 x, s16 y, u8 priority, u8 subpriority);
void CreatePartyMonsSprites(bool8 species);
void sub_80909F4(void);
bool8 sub_8090A60(void);
@@ -485,7 +491,7 @@ void sub_8091114(void);
bool8 sub_8091150(void);
void sub_80913DC(u8 box);
bool8 sub_809140C(void);
void sub_80920FC(bool8 species);
void AnimateBoxScrollArrows(bool8 species);
void CreateMovingMonIcon(void);
void sub_8090E08(u8 boxId, u8 cursorPos);
bool8 sub_8090E74(void);
+1 -1
View File
@@ -85,7 +85,7 @@ void sub_81113E4(void);
void sub_8111438(void);
void StartRecordingQuestLogEntry(u16 eventId);
bool8 WillCommandOfSizeFitInSav1Record(u16 *cursor, size_t size);
bool8 sub_8110944(const void * a0, size_t cmdSize);
bool8 sub_8110944(const void *a0, size_t cmdSize);
void sub_8113BD8(void);
void ResetUnk203B044(void);
+5
View File
@@ -13,6 +13,11 @@ u16 Random2(void);
//Returns a 32-bit pseudorandom number
#define Random32() (Random() | (Random() << 16))
// The number 1103515245 comes from the example implementation of rand and srand
// in the ISO C standard.
#define ISO_RANDOMIZE1(val)(1103515245 * (val) + 24691)
#define ISO_RANDOMIZE2(val)(1103515245 * (val) + 12345)
//Sets the initial seed value of the pseudorandom number generator
void SeedRng(u16 seed);
void SeedRng2(u16 seed);
+58 -70
View File
@@ -3,13 +3,44 @@
#include "global.h"
#define NUM_SECTORS 32 // defined in agb_flash but not in a header
// Each 4 KiB flash sector contains 3968 bytes of actual data followed by a 128 byte footer.
// Only 12 bytes of the footer are used.
#define SECTOR_DATA_SIZE 3968
#define SECTOR_FOOTER_SIZE 128
#define SECTOR_SIZE (SECTOR_DATA_SIZE + SECTOR_FOOTER_SIZE)
#define SAVE_STATUS_EMPTY 0
#define SAVE_STATUS_OK 1
#define NUM_SAVE_SLOTS 2
// If the sector's signature field is not this value then the sector is either invalid or empty.
#define SECTOR_SIGNATURE 0x08012025
#define SPECIAL_SECTOR_SENTINEL 0xB39D
#define SECTOR_ID_SAVEBLOCK2 0
#define SECTOR_ID_SAVEBLOCK1_START 1
#define SECTOR_ID_SAVEBLOCK1_END 4
#define SECTOR_ID_PKMN_STORAGE_START 5
#define SECTOR_ID_PKMN_STORAGE_END 13
#define NUM_SECTORS_PER_SLOT 14
// Save Slot 1: 0-13; Save Slot 2: 14-27
#define SECTOR_ID_HOF_1 28
#define SECTOR_ID_HOF_2 29
#define SECTOR_ID_TRAINER_TOWER_1 30
#define SECTOR_ID_TRAINER_TOWER_2 31
#define SECTORS_COUNT 32
#define NUM_HOF_SECTORS 2
#define SAVE_STATUS_EMPTY 0
#define SAVE_STATUS_OK 1
#define SAVE_STATUS_INVALID 2
#define SAVE_STATUS_NO_FLASH 4
#define SAVE_STATUS_ERROR 0xFF
#define SAVE_STATUS_ERROR 0xFF
// Special sector id value for certain save functions
// to indicate that all sectors should be used
// instead of a specific sector.
#define FULL_SAVE_SLOT 0xFFFF
enum
{
@@ -21,45 +52,28 @@ enum
SAVE_HALL_OF_FAME_ERASE_BEFORE, // unused
};
struct SaveBlockChunk
// A save sector location holds a pointer to the data for a particular sector
// and the size of that data. Size cannot be greater than SECTOR_DATA_SIZE.
struct SaveSectorLocation
{
u8 *data;
u16 size;
};
struct SaveSection
struct SaveSector
{
u8 data[0xFF4];
u8 data[SECTOR_DATA_SIZE];
u8 unused[SECTOR_FOOTER_SIZE - 12]; // Unused portion of the footer
u16 id;
u16 checksum;
u32 signature;
u32 counter;
}; // size is 0x1000
}; // size is SECTOR_SIZE (0x1000)
// headless save section?
struct UnkSaveSection
{
u8 data[0xFF4];
u32 signature;
}; // size is 0xFF8
#define SECTOR_SIGNATURE_OFFSET offsetof(struct SaveSector, signature)
#define SECTOR_COUNTER_OFFSET offsetof(struct SaveSector, counter)
struct SaveSectionOffsets
{
u16 toAdd;
u16 size;
};
// Emerald changes this definition to be the sectors per slot.
#define NUM_SECTORS_PER_SAVE_SLOT 14 // Number of sectors occupied by a save slot
#define UNKNOWN_CHECK_VALUE 0x8012025
#define SECTOR_SAVE1(n) (n)
#define SECTOR_SAVE2(n) ((n) + NUM_SECTORS_PER_SAVE_SLOT)
#define SECTOR_HOF(n) ((n) + 2 * NUM_SECTORS_PER_SAVE_SLOT)
#define SECTOR_TTOWER(n) ((n) + 2 * NUM_SECTORS_PER_SAVE_SLOT + 2)
// SetSectorDamagedStatus states
// operations for SetDamagedSectorBits
enum
{
ENABLE,
@@ -67,53 +81,27 @@ enum
CHECK // unused
};
extern u16 gFirstSaveSector;
extern u32 gPrevSaveCounter;
extern u16 gLastKnownGoodSector;
extern u32 gDamagedSaveSectors;
extern u32 gSaveCounter;
extern struct SaveSection *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM.
extern u16 gUnknown_3005398;
extern u16 gSaveUnusedVar;
extern struct SaveSector *gSaveDataBufferPtr; // the pointer is in fast IWRAM but points to the slower EWRAM.
extern u16 gSaveFileStatus;
extern void (*gGameContinueCallback)(void);
extern struct SaveBlockChunk gRamSaveSectionLocations[0xE];
extern u16 gSaveSucceeded;
extern u16 gSaveAttemptStatus;
extern struct SaveSection gSaveDataBuffer;
extern struct SaveSector gSaveDataBuffer;
void ClearSaveData(void);
void Save_ResetSaveCounters(void);
bool32 SetSectorDamagedStatus(u8 op, u8 bit);
u8 save_write_to_flash(u16 a1, const struct SaveBlockChunk *location);
u8 HandleWriteSector(u16 a1, const struct SaveBlockChunk *location);
u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size);
u8 TryWriteSector(u8 sector, u8 *data);
u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *location);
u32 RestoreSaveBackupVars(const struct SaveBlockChunk *location);
u8 sub_80D9AA4(u16 a1, const struct SaveBlockChunk *location);
u8 sub_80D9B04(u16 a1, const struct SaveBlockChunk *location);
u8 ClearSaveData_2(u16 a1, const struct SaveBlockChunk *location);
u8 sav12_xor_get(u16 a1, const struct SaveBlockChunk *location);
u8 sub_80D9D88(u16 a1, const struct SaveBlockChunk *location);
u8 sub_80D9E14(u16 a1, const struct SaveBlockChunk *location);
u8 sub_80D9E54(u16 a1, const struct SaveBlockChunk *location);
u8 GetSaveValidStatus(const struct SaveBlockChunk *location);
u8 sub_80DA120(u8 a1, u8 *data, u16 size);
u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section);
u16 CalculateChecksum(void *data, u16 size);
void UpdateSaveAddresses(void);
u8 HandleSavingData(u8 saveType);
u8 TrySavingData(u8 saveType);
u8 SaveGame_AfterLinkTrade(void);
bool8 AfterLinkTradeSaveFailed(void);
u8 ClearSaveAfterLinkTradeSaveFailure(void);
u8 sub_80DA434(void);
u8 sub_80DA45C(void);
bool8 sub_80DA4A0(void);
u8 Save_LoadGameData(u8 saveType);
u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
u32 TryWriteSpecialSaveSection(u8 sector, u8* src);
void Task_LinkSave(u8 taskId);
bool8 LinkFullSave_Init(void);
bool8 LinkFullSave_WriteSector(void);
bool8 LinkFullSave_ReplaceLastSector(void);
bool8 LinkFullSave_SetLastSectorSignature(void);
bool8 WriteSaveBlock2(void);
bool8 WriteSaveBlock1Sector(void);
u8 LoadGameSave(u8 saveType);
u32 TryReadSpecialSaveSector(u8 sector, u8 *dst);
u32 TryWriteSpecialSaveSector(u8 sector, u8 *src);
void Task_LinkFullSave(u8 taskId);
#endif // GUARD_SAVE_H
+1 -1
View File
@@ -11,7 +11,7 @@ extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3];
void CreatePokemartMenu(const u16 *itemsForSale);
void CreateDecorationShop1Menu(const u16 *);
void CreateDecorationShop2Menu(const u16 *);
u8 GetMartUnk16_4(void);
u8 GetMartFontId(void);
void RecordItemPurchase(u16 a0, u16 a1, u8 a2);
// buy_menu_helper
+5 -7
View File
@@ -24,13 +24,11 @@ bool8 IsBGMPausedOrStopped(void);
void FadeInBGM(u8 speed);
void FadeOutBGM(u8 speed);
bool8 IsBGMStopped(void);
void PlayCry1(u16 species, s8 pan);
void PlayCry2(u16 species, s8 pan, s8 volume, u8 priority);
void PlayCry3(u16 species, s8 pan, u8 mode);
void PlayCry4(u16 species, s8 pan, u8 mode);
void PlayCry5(u16 species, u8 mode);
void PlayCry6(u16 species, s8 pan, u8 mode);
void PlayCry7(u16 species, u8 mode);
void PlayCry_Normal(u16 species, s8 pan);
void PlayCry_NormalNoDucking(u16 species, s8 pan, s8 volume, u8 priority);
void PlayCry_ByMode(u16 species, s8 pan, u8 mode);
void PlayCry_ReleaseDouble(u16 species, s8 pan, u8 mode);
void PlayCry_Script(u16 species, u8 mode);
void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode);
bool8 IsCryFinished(void);
void StopCryAndClearCrySongs(void);
+1 -3
View File
@@ -4,7 +4,7 @@
#include "global.h"
#define MAX_SPRITES 64
#define SPRITE_INVALID_TAG 0xFFFF
#define TAG_NONE 0xFFFF
struct SpriteSheet
{
@@ -292,8 +292,6 @@ u16 LoadSpriteSheet(const struct SpriteSheet *sheet);
void LoadSpriteSheets(const struct SpriteSheet *sheets);
u16 AllocTilesForSpriteSheet(struct SpriteSheet *sheet);
void AllocTilesForSpriteSheets(struct SpriteSheet *sheets);
void LoadTilesForSpriteSheet(const struct SpriteSheet *sheet);
void LoadTilesForSpriteSheets(struct SpriteSheet *sheets);
void FreeSpriteTilesByTag(u16 tag);
void FreeSpriteTileRanges(void);
u16 GetSpriteTileStartByTag(u16 tag);
+1 -1
View File
@@ -3,7 +3,7 @@
#include "global.h"
void AppendToList(u8* list, u8* pos, u8 newEntry);
void AppendToList(u8 *list, u8 *pos, u8 newEntry);
void Task_StartMenuHandleInput(u8 taskId);
void SetUpReturnToStartMenu(void);
void ShowStartMenu(void);
+1 -1
View File
@@ -10,7 +10,7 @@ enum StringConvertMode
STR_CONV_MODE_LEADING_ZEROS
};
u8 *StringCopy10(u8 *dest, const u8 *src);
u8 *StringCopy_Nickname(u8 *dest, const u8 *src);
u8 *StringGetEnd10(u8 *str);
u8 *StringCopy7(u8 *dest, const u8 *src);
u8 *StringCopy(u8 *dest, const u8 *src);
+1 -1
View File
@@ -188,7 +188,7 @@ extern const u8 gText_Ghost[];
// pokemon
extern const u8 gBattleText_Rose[];
extern const u8 gText_PkmnsStatChanged2[];
extern const u8 gText_DefendersStatRose[];
extern const u8 gBattleText_GetPumped[];
extern const u8 gBattleText_MistShroud[];
extern const u8 gText_BadEgg[];
+1
View File
@@ -5,6 +5,7 @@
#define HEAD_SENTINEL 0xFE
#define TAIL_SENTINEL 0xFF
#define TASK_NONE TAIL_SENTINEL
#define NUM_TASKS 16
#define NUM_TASK_DATA 16
+19 -4
View File
@@ -85,7 +85,7 @@
#define CHAR_DYNAMIC_PLACEHOLDER 0xF7
#define CHAR_KEYPAD_ICON 0xF8
#define CHAR_EXTRA_EMOJI 0xF9
#define CHAR_EXTRA_SYMBOL 0xF9
#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog
#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code
@@ -93,6 +93,9 @@
#define CHAR_NEWLINE 0xFE
#define EOS 0xFF // end of string
// CHAR_EXTRA_SYMBOL chars
#define CHAR_LV_2 0x05
#define TEXT_COLOR_TRANSPARENT 0x0
#define TEXT_COLOR_WHITE 0x1
#define TEXT_COLOR_DARK_GRAY 0x2
@@ -154,7 +157,20 @@
#define NUM_TEXT_PRINTERS 32
#define TEXT_SPEED_INSTANT 0
#define TEXT_SPEED_FF 0xFF
// Given as a text speed when all the text should be
// loaded at once but not copied to vram yet.
#define TEXT_SKIP_DRAW 0xFF
enum {
FONT_0,
FONT_1,
FONT_2,
FONT_3,
FONT_4,
FONT_5,
FONT_6,
};
enum
{
@@ -190,7 +206,7 @@ struct TextPrinterSubStruct
struct TextPrinterTemplate // TODO: Better name
{
const u8* currentChar;
const u8 *currentChar;
u8 windowId;
u8 fontId;
u8 x;
@@ -299,7 +315,6 @@ bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter);
bool16 TextPrinterWait(struct TextPrinter *textPrinter);
void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *counter, u8 *yCoordIndex);
u16 RenderText(struct TextPrinter *textPrinter);
s32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing);
s32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32);
s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing);
u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str, int a3, int a4, int a5, int a6, int a7);
+4 -4
View File
@@ -5,13 +5,13 @@
struct TilesPal
{
u32* tiles;
u16* pal;
u32 *tiles;
u16 *pal;
};
void rbox_fill_rectangle(u8 windowId);
const u16* stdpal_get(u8 id);
const u16* GetOverworldTextboxPalettePtr(void);
const u16 *stdpal_get(u8 id);
const u16 *GetOverworldTextboxPalettePtr(void);
void TextWindow_LoadResourcesStdFrame0(u8 windowId, u16 tileStart, u8 palette);
void TextWindow_SetStdFrame0_WithPal(u8 windowId, u16 tileStart, u8 palette);
void TextWindow_SetUserSelectedFrame(u8 windowId, u16 tileStart, u8 palette);
+3 -3
View File
@@ -3,8 +3,8 @@
struct TextWindowGraphics
{
const void * tiles;
const void * palette;
const void *tiles;
const void *palette;
};
extern const u16 gUnknown_8470B0C[];
@@ -14,6 +14,6 @@ extern const u16 gUnknown_8471DEC[][16];
extern const struct TextWindowGraphics gUserFrames[];
const struct TextWindowGraphics * GetUserFrameGraphicsInfo(u8 idx);
const struct TextWindowGraphics *GetWindowFrameTilesPal(u8 idx);
#endif //GUARD_TEXT_WINDOW_GRAPHICS_H
+10 -5
View File
@@ -17,6 +17,14 @@ enum
WINDOW_TILE_DATA
};
// Mode for CopyWindowToVram, CopyWindowRectToVram and CopyWindowToVram8Bit
enum {
COPYWIN_NONE,
COPYWIN_MAP,
COPYWIN_GFX,
COPYWIN_FULL,
};
struct WindowTemplate
{
u8 bg;
@@ -41,6 +49,8 @@ struct WindowTemplate
0, \
}
#define WINDOW_NONE 0xFF
struct Window
{
struct WindowTemplate window;
@@ -55,11 +65,6 @@ int AddWindowWithoutTileMap(const struct WindowTemplate *template);
void RemoveWindow(u8 windowId);
void FreeAllWindowBuffers(void);
// Mode parameter for funcs below
#define COPYWIN_MAP 1
#define COPYWIN_GFX 2
#define COPYWIN_BOTH 3
void CopyWindowToVram(u8 windowId, u8 mode);
void CopyWindowToVram8Bit(u8 windowId, u8 mode);