Merge branch 'master' of https://github.com/pret/pokeemerald into ui-standardize
This commit is contained in:
@@ -3,11 +3,11 @@
|
||||
|
||||
struct BardSound
|
||||
{
|
||||
/*0x00*/ u8 var00;
|
||||
/*0x01*/ s8 var01;
|
||||
/*0x02*/ u16 var02;
|
||||
/*0x00*/ u8 songLengthId;
|
||||
/*0x01*/ s8 songLengthOffset;
|
||||
/*0x02*/ u16 unused;
|
||||
/*0x04*/ s16 volume;
|
||||
/*0x06*/ u16 var06;
|
||||
/*0x06*/ u16 unused2;
|
||||
};
|
||||
|
||||
struct BardPhoneme
|
||||
|
||||
@@ -13,9 +13,8 @@
|
||||
#include "battle_bg.h"
|
||||
#include "pokeball.h"
|
||||
|
||||
#define GET_BATTLER_POSITION(battler) (gBattlerPositions[battler])
|
||||
#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
|
||||
#define GET_BATTLER_SIDE2(battler) (GET_BATTLER_POSITION(battler) & BIT_SIDE)
|
||||
#define GET_BATTLER_SIDE2(battler) (gBattlerPositions[battler] & BIT_SIDE)
|
||||
|
||||
// Used to exclude moves learned temporarily by Transform or Mimic
|
||||
#define MOVE_IS_PERMANENT(battler, moveSlot) \
|
||||
@@ -165,7 +164,7 @@ struct WishFutureKnock
|
||||
u8 wishCounter[MAX_BATTLERS_COUNT];
|
||||
u8 wishMonId[MAX_BATTLERS_COUNT];
|
||||
u8 weatherDuration;
|
||||
u8 knockedOffMons[2]; // Each battler is represented by a bit. The array entry is dependent on the battler's side.
|
||||
u8 knockedOffMons[NUM_BATTLE_SIDES]; // Each battler is represented by a bit.
|
||||
};
|
||||
|
||||
struct AI_ThinkingStruct
|
||||
@@ -327,9 +326,9 @@ struct BattleTv_Mon
|
||||
|
||||
struct BattleTv
|
||||
{
|
||||
struct BattleTv_Mon mon[2][PARTY_SIZE]; // [side][partyId]
|
||||
struct BattleTv_Position pos[2][2]; // [side][flank]
|
||||
struct BattleTv_Side side[2]; // [side]
|
||||
struct BattleTv_Mon mon[NUM_BATTLE_SIDES][PARTY_SIZE];
|
||||
struct BattleTv_Position pos[NUM_BATTLE_SIDES][2]; // [side][flank]
|
||||
struct BattleTv_Side side[NUM_BATTLE_SIDES];
|
||||
};
|
||||
|
||||
struct BattleTvMovePoints
|
||||
@@ -368,7 +367,7 @@ struct BattleStruct
|
||||
u8 faintedActionsState;
|
||||
u8 faintedActionsBattlerId;
|
||||
u16 expValue;
|
||||
u8 field_52;
|
||||
u8 scriptPartyIdx; // for printing the nickname
|
||||
u8 sentInPokes;
|
||||
bool8 selectionScriptFinished[MAX_BATTLERS_COUNT];
|
||||
u8 battlerPartyIndexes[MAX_BATTLERS_COUNT];
|
||||
@@ -400,7 +399,7 @@ struct BattleStruct
|
||||
u8 wallyWaitFrames;
|
||||
u8 wallyMoveFrames;
|
||||
u8 lastTakenMove[MAX_BATTLERS_COUNT * 2 * 2]; // Last move that a battler was hit with. This field seems to erroneously take 16 bytes instead of 8.
|
||||
u16 hpOnSwitchout[2];
|
||||
u16 hpOnSwitchout[NUM_BATTLE_SIDES];
|
||||
u32 savedBattleTypeFlags;
|
||||
u8 abilityPreventingSwitchout;
|
||||
u8 hpScale;
|
||||
@@ -474,7 +473,7 @@ struct BattleStruct
|
||||
|
||||
#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
|
||||
|
||||
// NOTE: The members of this struct have hard-coded offsets
|
||||
// NOTE: The members of this struct have hard-coded offsets
|
||||
// in include/constants/battle_script_commands.h
|
||||
struct BattleScripting
|
||||
{
|
||||
@@ -551,7 +550,7 @@ struct BattleHealthboxInfo
|
||||
u8 specialAnimActive:1; // x40
|
||||
u8 triedShinyMonAnim:1;
|
||||
u8 finishedShinyMonAnim:1;
|
||||
u8 field_1_x1E:4;
|
||||
u8 opponentDrawPartyStatusSummaryDelay:4;
|
||||
u8 bgmRestored:1;
|
||||
u8 waitForCry:1;
|
||||
u8 healthboxSlideInStarted:1;
|
||||
@@ -671,8 +670,8 @@ extern u8 gMoveResultFlags;
|
||||
extern u32 gHitMarker;
|
||||
extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT];
|
||||
extern u8 gUnusedFirstBattleVar2;
|
||||
extern u16 gSideStatuses[2];
|
||||
extern struct SideTimer gSideTimers[2];
|
||||
extern u16 gSideStatuses[NUM_BATTLE_SIDES];
|
||||
extern struct SideTimer gSideTimers[NUM_BATTLE_SIDES];
|
||||
extern u32 gStatuses3[MAX_BATTLERS_COUNT];
|
||||
extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT];
|
||||
extern u16 gPauseCounterBattle;
|
||||
|
||||
@@ -120,7 +120,7 @@ void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode);
|
||||
void SetBattlerSpriteYOffsetFromRotation(u8 spriteId);
|
||||
u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 anim1, bool8 anim2);
|
||||
u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLeft, u8 opponentRight);
|
||||
u8 AnimDummyReturnArg(u8 battler);
|
||||
u8 GetSpritePalIdxByBattler(u8 battler);
|
||||
s16 CloneBattlerSpriteWithBlend(u8);
|
||||
void DestroySpriteWithActiveSheet(struct Sprite *);
|
||||
u8 CreateInvisibleSpriteCopy(int, u8, int);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef GUARD_BATTLE_ARENA_H
|
||||
#define GUARD_BATTLE_ARENA_H
|
||||
|
||||
#include "constants/battle_arena.h"
|
||||
|
||||
void CallBattleArenaFunction(void);
|
||||
u8 BattleArena_ShowJudgmentWindow(u8 *state);
|
||||
void BattleArena_InitPoints(void);
|
||||
|
||||
@@ -202,9 +202,7 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data);
|
||||
|
||||
// emitters
|
||||
void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck);
|
||||
void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused
|
||||
void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data);
|
||||
void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused
|
||||
void BtlController_EmitLoadMonSprite(u8 bufferId);
|
||||
void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit);
|
||||
void BtlController_EmitReturnMonToBall(u8 bufferId, bool8 skipAnim);
|
||||
@@ -212,10 +210,7 @@ void BtlController_EmitDrawTrainerPic(u8 bufferId);
|
||||
void BtlController_EmitTrainerSlide(u8 bufferId);
|
||||
void BtlController_EmitTrainerSlideBack(u8 bufferId);
|
||||
void BtlController_EmitFaintAnimation(u8 bufferId);
|
||||
void BtlController_EmitPaletteFade(u8 bufferId); // unused
|
||||
void BtlController_EmitSuccessBallThrowAnim(u8 bufferId); // unused
|
||||
void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId);
|
||||
void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data); // unused
|
||||
void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
|
||||
void BtlController_EmitPrintString(u8 bufferId, u16 stringId);
|
||||
void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId);
|
||||
@@ -224,24 +219,15 @@ void BtlController_EmitYesNoBox(u8 bufferId);
|
||||
void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
|
||||
void BtlController_EmitChooseItem(u8 bufferId, u8 *battlePartyOrder);
|
||||
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8 *data);
|
||||
void BtlController_EmitCmd23(u8 bufferId); // unused
|
||||
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);
|
||||
void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status);
|
||||
void BtlController_EmitStatusXor(u8 bufferId, u8 b); // unused
|
||||
void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data);
|
||||
void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused
|
||||
void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data); // unused
|
||||
void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data); // unused
|
||||
void BtlController_EmitTwoReturnValues(u8 bufferId, u8 ret8, u16 ret16);
|
||||
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 partyId, u8 *battlePartyOrder);
|
||||
void BtlController_EmitOneReturnValue(u8 bufferId, u16 ret);
|
||||
void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 ret);
|
||||
void BtlController_EmitClearUnkVar(u8 bufferId); // unused
|
||||
void BtlController_EmitSetUnkVar(u8 bufferId, u8 b); // unused
|
||||
void BtlController_EmitClearUnkFlag(u8 bufferId); // unused
|
||||
void BtlController_EmitToggleUnkFlag(u8 bufferId); // unused
|
||||
void BtlController_EmitHitAnimation(u8 bufferId);
|
||||
void BtlController_EmitCantSwitch(u8 bufferId);
|
||||
void BtlController_EmitPlaySE(u8 bufferId, u16 songId);
|
||||
|
||||
@@ -34,16 +34,19 @@ enum
|
||||
#define TAG_HEALTHBAR_PLAYER2_TILE 0xD706
|
||||
#define TAG_HEALTHBAR_OPPONENT2_TILE 0xD707
|
||||
|
||||
#define TAG_HEALTHBOX_PALS_1 0xD709
|
||||
#define TAG_HEALTHBOX_PALS_2 0xD70A
|
||||
#define TAG_HEALTHBOX_SAFARI_TILE 0xD70B
|
||||
|
||||
#define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C
|
||||
#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714
|
||||
|
||||
#define TAG_HEALTHBOX_PAL 0xD6FF
|
||||
#define TAG_HEALTHBAR_PAL 0xD704
|
||||
#define TAG_STATUS_SUMMARY_BAR_PAL 0xD710
|
||||
#define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712
|
||||
|
||||
#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714
|
||||
|
||||
#define TAG_HEALTHBAR_PAL TAG_HEALTHBAR_PLAYER1_TILE
|
||||
#define TAG_HEALTHBOX_PAL TAG_HEALTHBOX_PLAYER1_TILE
|
||||
|
||||
enum
|
||||
{
|
||||
HEALTHBOX_ALL,
|
||||
|
||||
@@ -50,11 +50,11 @@ void SpriteCB_VsLetterInit(struct Sprite *sprite);
|
||||
void CB2_InitEndLinkBattle(void);
|
||||
u32 GetBattleBgTemplateData(u8 arrayId, u8 caseId);
|
||||
u32 GetBattleWindowTemplatePixelWidth(u32 setId, u32 tableId);
|
||||
void SpriteCb_WildMon(struct Sprite *sprite);
|
||||
void SpriteCB_WildMon(struct Sprite *sprite);
|
||||
void SpriteCallbackDummy_2(struct Sprite *sprite);
|
||||
void SpriteCB_FaintOpponentMon(struct Sprite *sprite);
|
||||
void SpriteCb_ShowAsMoveTarget(struct Sprite *sprite);
|
||||
void SpriteCb_HideAsMoveTarget(struct Sprite *sprite);
|
||||
void SpriteCB_ShowAsMoveTarget(struct Sprite *sprite);
|
||||
void SpriteCB_HideAsMoveTarget(struct Sprite *sprite);
|
||||
void SpriteCB_OpponentMonFromBall(struct Sprite *sprite);
|
||||
void SpriteCB_BattleSpriteStartSlideLeft(struct Sprite *sprite);
|
||||
void SpriteCB_FaintSlideAnim(struct Sprite *sprite);
|
||||
|
||||
@@ -202,7 +202,7 @@ struct BattleMsgData
|
||||
u16 lastItem;
|
||||
u8 lastAbility;
|
||||
u8 scrActive;
|
||||
u8 unk1605E;
|
||||
u8 bakScriptPartyIdx;
|
||||
u8 hpScale;
|
||||
u8 itemEffectBattler;
|
||||
u8 moveType;
|
||||
@@ -283,7 +283,7 @@ extern const u8 gText_OpponentMon1Name[];
|
||||
extern const u8 gText_Mind[];
|
||||
extern const u8 gText_Skill[];
|
||||
extern const u8 gText_Body[];
|
||||
extern const u8 gText_Judgement[];
|
||||
extern const u8 gText_Judgment[];
|
||||
extern const u8 gText_EmptyString3[];
|
||||
extern const u8 gText_RecordBattleToPass[];
|
||||
extern const u8 gText_BattleRecordedOnPass[];
|
||||
|
||||
@@ -64,7 +64,6 @@ u8 GetBattlerForBattleScript(u8 caseId);
|
||||
void PressurePPLose(u8 target, u8 attacker, u16 move);
|
||||
void PressurePPLoseOnUsingPerishSong(u8 attacker);
|
||||
void PressurePPLoseOnUsingImprison(u8 attacker);
|
||||
void MarkAllBattlersForControllerExec(void); // unused
|
||||
void MarkBattlerForControllerExec(u8 battlerId);
|
||||
void MarkBattlerReceivedLinkData(u8 battlerId);
|
||||
void CancelMultiTurnMoves(u8 battlerId);
|
||||
|
||||
@@ -8,12 +8,31 @@
|
||||
// Ruby's actual debug build does not use the AGBPrint features.
|
||||
#define NDEBUG
|
||||
|
||||
// To enable print debugging, comment out "#define NDEBUG". This allows
|
||||
// To enable printf debugging, comment out "#define NDEBUG". This allows
|
||||
// the various AGBPrint functions to be used. (See include/gba/isagbprint.h).
|
||||
// Some emulators support a debug console window: uncomment NoCashGBAPrint()
|
||||
// and NoCashGBAPrintf() in libisagbprn.c to use no$gba's own proprietary
|
||||
// printing system. Use NoCashGBAPrint() and NoCashGBAPrintf() like you
|
||||
// would normally use AGBPrint() and AGBPrintf().
|
||||
// See below for enabling different pretty printing versions.
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
||||
#define PRETTY_PRINT_MINI_PRINTF (0)
|
||||
#define PRETTY_PRINT_LIBC (1)
|
||||
|
||||
#define LOG_HANDLER_AGB_PRINT (0)
|
||||
#define LOG_HANDLER_NOCASH_PRINT (1)
|
||||
#define LOG_HANDLER_MGBA_PRINT (2)
|
||||
|
||||
// Use this switch to choose a handler for pretty printing.
|
||||
// NOTE: mini_printf supports a custom pretty printing formatter to display preproc encoded strings. (%S)
|
||||
// some libc distributions (especially dkp arm-libc) will fail to link pretty printing.
|
||||
#define PRETTY_PRINT_HANDLER (PRETTY_PRINT_MINI_PRINTF)
|
||||
|
||||
// Use this switch to choose a handler for printf output.
|
||||
// NOTE: These will only work on the respective emulators and should not be used in a productive environment.
|
||||
// Some emulators or real hardware might (and is allowed to) crash if they are used.
|
||||
// AGB_PRINT is supported on respective debug units.
|
||||
|
||||
#define LOG_HANDLER (LOG_HANDLER_MGBA_PRINT)
|
||||
#endif
|
||||
|
||||
#define ENGLISH
|
||||
|
||||
|
||||
@@ -31,11 +31,12 @@
|
||||
#define B_POSITION_OPPONENT_RIGHT 3
|
||||
|
||||
// These macros can be used with either battler ID or positions to get the partner or the opposite mon
|
||||
#define BATTLE_OPPOSITE(id) ((id) ^ 1)
|
||||
#define BATTLE_PARTNER(id) ((id) ^ 2)
|
||||
#define BATTLE_OPPOSITE(id) ((id) ^ BIT_SIDE)
|
||||
#define BATTLE_PARTNER(id) ((id) ^ BIT_FLANK)
|
||||
|
||||
#define B_SIDE_PLAYER 0
|
||||
#define B_SIDE_OPPONENT 1
|
||||
#define NUM_BATTLE_SIDES 2
|
||||
|
||||
#define B_FLANK_LEFT 0
|
||||
#define B_FLANK_RIGHT 1
|
||||
@@ -78,6 +79,11 @@
|
||||
#define BATTLE_TYPE_RECORDED_IS_MASTER (1 << 31)
|
||||
#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID)
|
||||
#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE)
|
||||
#define BATTLE_TYPE_RECORDED_INVALID ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \
|
||||
| BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \
|
||||
| BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \
|
||||
| BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE \
|
||||
| BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA))
|
||||
|
||||
// Battle Outcome defines
|
||||
#define B_OUTCOME_WON 1
|
||||
@@ -316,6 +322,11 @@
|
||||
#define FLEE_ITEM 1
|
||||
#define FLEE_ABILITY 2
|
||||
|
||||
// Return value for IsRunningFromBattleImpossible.
|
||||
#define BATTLE_RUN_SUCCESS 0
|
||||
#define BATTLE_RUN_FORBIDDEN 1
|
||||
#define BATTLE_RUN_FAILURE 2
|
||||
|
||||
#define B_WIN_TYPE_NORMAL 0
|
||||
#define B_WIN_TYPE_ARENA 1
|
||||
|
||||
@@ -352,8 +363,8 @@
|
||||
#define ARENA_WIN_MIND 18
|
||||
#define ARENA_WIN_SKILL 19
|
||||
#define ARENA_WIN_BODY 20
|
||||
#define ARENA_WIN_JUDGEMENT_TITLE 21
|
||||
#define ARENA_WIN_JUDGEMENT_TEXT 22
|
||||
#define ARENA_WIN_JUDGMENT_TITLE 21
|
||||
#define ARENA_WIN_JUDGMENT_TEXT 22
|
||||
|
||||
// Flag for BattlePutTextOnWindow. Never set
|
||||
#define B_WIN_COPYTOVRAM (1 << 7)
|
||||
|
||||
@@ -17,4 +17,10 @@
|
||||
#define ARENA_CATEGORY_SKILL 1
|
||||
#define ARENA_CATEGORY_BODY 2
|
||||
|
||||
#define ARENA_RESULT_RUNNING 0 // For intermediate steps, when BattleArena_ShowJudgmentWindow should be called again immediately
|
||||
#define ARENA_RESULT_STEP_DONE 1 // A step has been completed, the script may advance to the next instruction
|
||||
#define ARENA_RESULT_PLAYER_WON 2
|
||||
#define ARENA_RESULT_PLAYER_LOST 3
|
||||
#define ARENA_RESULT_TIE 4
|
||||
|
||||
#endif //GUARD_CONSTANTS_BATTLE_ARENA_H
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -232,8 +232,8 @@
|
||||
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT 0x91
|
||||
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT 0x92
|
||||
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT 0x93
|
||||
#define MOVEMENT_ACTION_STORE_AND_LOCK_ANIM 0x94
|
||||
#define MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM 0x95
|
||||
#define MOVEMENT_ACTION_LOCK_ANIM 0x94
|
||||
#define MOVEMENT_ACTION_UNLOCK_ANIM 0x95
|
||||
#define MOVEMENT_ACTION_WALK_LEFT_AFFINE 0x96
|
||||
#define MOVEMENT_ACTION_WALK_RIGHT_AFFINE 0x97
|
||||
#define MOVEMENT_ACTION_LEVITATE 0x98
|
||||
|
||||
@@ -568,7 +568,7 @@
|
||||
#define FLAG_HIDDEN_ITEM_LILYCOVE_CITY_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x1B)
|
||||
#define FLAG_HIDDEN_ITEM_FALLARBOR_TOWN_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x1C)
|
||||
#define FLAG_HIDDEN_ITEM_MT_PYRE_EXTERIOR_ULTRA_BALL (FLAG_HIDDEN_ITEMS_START + 0x1D)
|
||||
#define FLAG_HIDDEN_ITEM_ROUTE_113_TM_32 (FLAG_HIDDEN_ITEMS_START + 0x1E)
|
||||
#define FLAG_HIDDEN_ITEM_ROUTE_113_TM32 (FLAG_HIDDEN_ITEMS_START + 0x1E)
|
||||
#define FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_1_KEY (FLAG_HIDDEN_ITEMS_START + 0x1F)
|
||||
#define FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_2_KEY (FLAG_HIDDEN_ITEMS_START + 0x20)
|
||||
#define FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_4_KEY (FLAG_HIDDEN_ITEMS_START + 0x21)
|
||||
@@ -1053,7 +1053,7 @@
|
||||
#define FLAG_ITEM_ROUTE_109_PP_UP 0x3ED
|
||||
#define FLAG_ITEM_ROUTE_109_RARE_CANDY 0x3EE
|
||||
#define FLAG_ITEM_ROUTE_110_DIRE_HIT 0x3EF
|
||||
#define FLAG_ITEM_ROUTE_111_TM_37 0x3F0
|
||||
#define FLAG_ITEM_ROUTE_111_TM37 0x3F0
|
||||
#define FLAG_ITEM_ROUTE_111_STARDUST 0x3F1
|
||||
#define FLAG_ITEM_ROUTE_111_HP_UP 0x3F2
|
||||
#define FLAG_ITEM_ROUTE_112_NUGGET 0x3F3
|
||||
@@ -1062,7 +1062,7 @@
|
||||
#define FLAG_ITEM_ROUTE_114_RARE_CANDY 0x3F6
|
||||
#define FLAG_ITEM_ROUTE_114_PROTEIN 0x3F7
|
||||
#define FLAG_ITEM_ROUTE_115_SUPER_POTION 0x3F8
|
||||
#define FLAG_ITEM_ROUTE_115_TM_01 0x3F9
|
||||
#define FLAG_ITEM_ROUTE_115_TM01 0x3F9
|
||||
#define FLAG_ITEM_ROUTE_115_IRON 0x3FA
|
||||
#define FLAG_ITEM_ROUTE_116_ETHER 0x3FB
|
||||
#define FLAG_ITEM_ROUTE_116_REPEL 0x3FC
|
||||
@@ -1089,7 +1089,7 @@
|
||||
#define FLAG_ITEM_RUSTBORO_CITY_X_DEFEND 0x411
|
||||
#define FLAG_ITEM_LILYCOVE_CITY_MAX_REPEL 0x412
|
||||
#define FLAG_ITEM_MOSSDEEP_CITY_NET_BALL 0x413
|
||||
#define FLAG_ITEM_METEOR_FALLS_1F_1R_TM_23 0x414
|
||||
#define FLAG_ITEM_METEOR_FALLS_1F_1R_TM23 0x414
|
||||
#define FLAG_ITEM_METEOR_FALLS_1F_1R_FULL_HEAL 0x415
|
||||
#define FLAG_ITEM_METEOR_FALLS_1F_1R_MOON_STONE 0x416
|
||||
#define FLAG_ITEM_METEOR_FALLS_1F_1R_PP_UP 0x417
|
||||
@@ -1119,35 +1119,35 @@
|
||||
#define FLAG_ITEM_AQUA_HIDEOUT_B1F_MAX_ELIXIR 0x42F
|
||||
#define FLAG_ITEM_AQUA_HIDEOUT_B2F_NEST_BALL 0x430
|
||||
#define FLAG_ITEM_MT_PYRE_EXTERIOR_MAX_POTION 0x431
|
||||
#define FLAG_ITEM_MT_PYRE_EXTERIOR_TM_48 0x432
|
||||
#define FLAG_ITEM_MT_PYRE_EXTERIOR_TM48 0x432
|
||||
#define FLAG_ITEM_NEW_MAUVILLE_ULTRA_BALL 0x433
|
||||
#define FLAG_ITEM_NEW_MAUVILLE_ESCAPE_ROPE 0x434
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_6_LUXURY_BALL 0x435
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_4_SCANNER 0x436
|
||||
#define FLAG_ITEM_SCORCHED_SLAB_TM_11 0x437
|
||||
#define FLAG_ITEM_METEOR_FALLS_B1F_2R_TM_02 0x438
|
||||
#define FLAG_ITEM_SCORCHED_SLAB_TM11 0x437
|
||||
#define FLAG_ITEM_METEOR_FALLS_B1F_2R_TM02 0x438
|
||||
#define FLAG_ITEM_SHOAL_CAVE_ENTRANCE_BIG_PEARL 0x439
|
||||
#define FLAG_ITEM_SHOAL_CAVE_INNER_ROOM_RARE_CANDY 0x43A
|
||||
#define FLAG_ITEM_SHOAL_CAVE_STAIRS_ROOM_ICE_HEAL 0x43B
|
||||
#define FLAG_ITEM_VICTORY_ROAD_1F_MAX_ELIXIR 0x43C
|
||||
#define FLAG_ITEM_VICTORY_ROAD_1F_PP_UP 0x43D
|
||||
#define FLAG_ITEM_VICTORY_ROAD_B1F_TM_29 0x43E
|
||||
#define FLAG_ITEM_VICTORY_ROAD_B1F_TM29 0x43E
|
||||
#define FLAG_ITEM_VICTORY_ROAD_B1F_FULL_RESTORE 0x43F
|
||||
#define FLAG_ITEM_VICTORY_ROAD_B2F_FULL_HEAL 0x440
|
||||
#define FLAG_ITEM_MT_PYRE_6F_TM_30 0x441
|
||||
#define FLAG_ITEM_SEAFLOOR_CAVERN_ROOM_9_TM_26 0x442
|
||||
#define FLAG_ITEM_MT_PYRE_6F_TM30 0x441
|
||||
#define FLAG_ITEM_SEAFLOOR_CAVERN_ROOM_9_TM26 0x442
|
||||
#define FLAG_ITEM_FIERY_PATH_TM06 0x443
|
||||
#define FLAG_ITEM_ROUTE_124_RED_SHARD 0x444
|
||||
#define FLAG_ITEM_ROUTE_124_BLUE_SHARD 0x445
|
||||
#define FLAG_ITEM_SAFARI_ZONE_NORTH_WEST_TM_22 0x446
|
||||
#define FLAG_ITEM_SAFARI_ZONE_NORTH_WEST_TM22 0x446
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_ROOMS_1F_HARBOR_MAIL 0x447
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_ESCAPE_ROPE 0x448
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_ROOMS_2_B1F_DIVE_BALL 0x449
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_TM_13 0x44A
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_TM13 0x44A
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_ROOMS_2_1F_REVIVE 0x44B
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_CAPTAINS_OFFICE_STORAGE_KEY 0x44C
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_3_WATER_STONE 0x44D
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_1_TM_18 0x44E
|
||||
#define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_1_TM18 0x44E
|
||||
#define FLAG_ITEM_ROUTE_121_CARBOS 0x44F
|
||||
#define FLAG_ITEM_ROUTE_123_ULTRA_BALL 0x450
|
||||
#define FLAG_ITEM_ROUTE_126_GREEN_SHARD 0x451
|
||||
@@ -1157,7 +1157,7 @@
|
||||
#define FLAG_ITEM_ROUTE_123_ELIXIR 0x455
|
||||
#define FLAG_ITEM_NEW_MAUVILLE_THUNDER_STONE 0x456
|
||||
#define FLAG_ITEM_FIERY_PATH_FIRE_STONE 0x457
|
||||
#define FLAG_ITEM_SHOAL_CAVE_ICE_ROOM_TM_07 0x458
|
||||
#define FLAG_ITEM_SHOAL_CAVE_ICE_ROOM_TM07 0x458
|
||||
#define FLAG_ITEM_SHOAL_CAVE_ICE_ROOM_NEVER_MELT_ICE 0x459
|
||||
#define FLAG_ITEM_ROUTE_103_GUARD_SPEC 0x45A
|
||||
#define FLAG_ITEM_ROUTE_104_X_ACCURACY 0x45B
|
||||
|
||||
@@ -35,7 +35,9 @@
|
||||
#define FRONTIER_PARTY_SIZE 3
|
||||
#define FRONTIER_DOUBLES_PARTY_SIZE 4
|
||||
#define FRONTIER_MULTI_PARTY_SIZE 2
|
||||
#define MAX_FRONTIER_PARTY_SIZE FRONTIER_DOUBLES_PARTY_SIZE
|
||||
#define MAX_FRONTIER_PARTY_SIZE (max(FRONTIER_PARTY_SIZE, \
|
||||
max(FRONTIER_DOUBLES_PARTY_SIZE,\
|
||||
FRONTIER_MULTI_PARTY_SIZE)))
|
||||
#define UNION_ROOM_PARTY_SIZE 2
|
||||
|
||||
// capacities of various saveblock objects
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef GUARD_CONSTANTS_HEAL_LOCATIONS_H
|
||||
#define GUARD_CONSTANTS_HEAL_LOCATIONS_H
|
||||
|
||||
#define HEAL_LOCATION_NONE 0
|
||||
#define HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1
|
||||
#define HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F 2
|
||||
#define HEAL_LOCATION_PETALBURG_CITY 3
|
||||
|
||||
@@ -477,7 +477,10 @@
|
||||
#define ITEM_OLD_SEA_MAP 376
|
||||
|
||||
#define ITEMS_COUNT 377
|
||||
#define ITEM_FIELD_ARROW ITEMS_COUNT
|
||||
|
||||
// A special item id associated with "Cancel"/"Exit" etc. in a list of items or decorations
|
||||
// Its icon is defined at ITEMS_COUNT as the "return to field" arrow
|
||||
#define ITEM_LIST_END 0xFFFF
|
||||
|
||||
// Range of berries given out by various NPCS
|
||||
#define FIRST_BERRY_MASTER_BERRY ITEM_POMEG_BERRY
|
||||
|
||||
@@ -3,14 +3,17 @@
|
||||
|
||||
#include "map_groups.h"
|
||||
|
||||
#define MAP_NONE (0x7F | (0x7F << 8))
|
||||
// Warps using this map will instead use the warp data stored in gSaveBlock1Ptr->dynamicWarp.
|
||||
// Used for warps that need to change destinations, e.g. when stepping off an elevator.
|
||||
#define MAP_DYNAMIC (0x7F | (0x7F << 8))
|
||||
|
||||
#define MAP_UNDEFINED (0xFF | (0xFF << 8))
|
||||
|
||||
#define MAP_GROUP(map) (MAP_##map >> 8)
|
||||
#define MAP_NUM(map) (MAP_##map & 0xFF)
|
||||
|
||||
// IDs for dynamic warps. Both are used in the dest_warp_id field for warp events, but they
|
||||
// are never read in practice. A dest_map of MAP_NONE is used to indicate that a
|
||||
// are never read in practice. A dest_map of MAP_DYNAMIC is used to indicate that a
|
||||
// dynamic warp should be used, at which point the warp id is ignored. It can be passed to
|
||||
// SetDynamicWarp/SetDynamicWarpWithCoords as the first argument, but this argument is unused.
|
||||
// As only one dynamic warp is saved at a time there's no need to distinguish between them.
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#define MB_MOSSDEEP_GYM_WARP 0x0E
|
||||
#define MB_MT_PYRE_HOLE 0x0F
|
||||
#define MB_POND_WATER 0x10
|
||||
#define MB_SEMI_DEEP_WATER 0x11
|
||||
#define MB_INTERIOR_DEEP_WATER 0x11 // Used by interior maps; functionally the same as MB_DEEP_WATER
|
||||
#define MB_DEEP_WATER 0x12
|
||||
#define MB_WATERFALL 0x13
|
||||
#define MB_SOOTOPOLIS_DEEP_WATER 0x14
|
||||
|
||||
@@ -684,8 +684,6 @@
|
||||
#define METATILE_SecretBase_BigPlant_TopRight 0x2E6
|
||||
#define METATILE_SecretBase_BigPlant_BaseLeft1 0x2EC
|
||||
#define METATILE_SecretBase_BigPlant_BaseRight1 0x2ED
|
||||
#define METATILE_SecretBase_BigPlant_TopLeftWall 0x2E5
|
||||
#define METATILE_SecretBase_BigPlant_TopRightWall 0x2E6
|
||||
#define METATILE_SecretBase_BigPlant_BaseLeft2 0x2EE
|
||||
#define METATILE_SecretBase_BigPlant_BaseRight2 0x2EF
|
||||
#define METATILE_SecretBase_GorgeousPlant_TopLeft 0x2F0
|
||||
|
||||
@@ -44,4 +44,12 @@
|
||||
|
||||
#define WONDER_CARD_FLAG_OFFSET 1000
|
||||
|
||||
#define NEWS_REWARD_NONE 0
|
||||
#define NEWS_REWARD_RECV_SMALL 1
|
||||
#define NEWS_REWARD_RECV_BIG 2
|
||||
#define NEWS_REWARD_WAITING 3
|
||||
#define NEWS_REWARD_SENT_SMALL 4
|
||||
#define NEWS_REWARD_SENT_BIG 5
|
||||
#define NEWS_REWARD_AT_MAX 6
|
||||
|
||||
#endif //GUARD_CONSTANTS_MYSTERY_GIFT_H
|
||||
|
||||
@@ -181,6 +181,15 @@
|
||||
#define FRIENDSHIP_EVENT_FAINT_FIELD_PSN 7
|
||||
#define FRIENDSHIP_EVENT_FAINT_LARGE 8 // If opponent was >= 30 levels higher. See AdjustFriendshipOnBattleFaint
|
||||
|
||||
// Constants for GetLeadMonFriendshipScore
|
||||
#define FRIENDSHIP_NONE 0
|
||||
#define FRIENDSHIP_1_TO_49 1
|
||||
#define FRIENDSHIP_50_TO_99 2
|
||||
#define FRIENDSHIP_100_TO_149 3
|
||||
#define FRIENDSHIP_150_TO_199 4
|
||||
#define FRIENDSHIP_200_TO_254 5
|
||||
#define FRIENDSHIP_MAX 6
|
||||
|
||||
#define MAX_FRIENDSHIP 255
|
||||
#define MAX_SHEEN 255
|
||||
#define MAX_CONDITION 255
|
||||
@@ -247,9 +256,6 @@
|
||||
#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 NUM_MALE_LINK_FACILITY_CLASSES 8
|
||||
#define NUM_FEMALE_LINK_FACILITY_CLASSES 8
|
||||
|
||||
#define MON_PIC_WIDTH 64
|
||||
#define MON_PIC_HEIGHT 64
|
||||
#define MON_PIC_SIZE (MON_PIC_WIDTH * MON_PIC_HEIGHT / 2)
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
|
||||
#define UNION_ROOM_MAX_LEVEL 30
|
||||
|
||||
// The number of possible trainer classes for a trainer of a given gender in the Union Room.
|
||||
// This value is necessarily a power of 2 because of the way it's treated in GetUnionRoomTrainerPic / GetUnionRoomTrainerClass
|
||||
#define NUM_UNION_ROOM_CLASSES (1 << 3) // 8
|
||||
|
||||
#define ACTIVITY_NONE 0
|
||||
#define ACTIVITY_BATTLE_SINGLE 1
|
||||
#define ACTIVITY_BATTLE_DOUBLE 2
|
||||
|
||||
@@ -46,235 +46,235 @@
|
||||
#define VAR_OBJ_GFX_ID_F 0x401F
|
||||
|
||||
// general purpose vars
|
||||
#define VAR_RECYCLE_GOODS 0x4020
|
||||
#define VAR_REPEL_STEP_COUNT 0x4021
|
||||
#define VAR_ICE_STEP_COUNT 0x4022
|
||||
#define VAR_STARTER_MON 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip
|
||||
#define VAR_MIRAGE_RND_H 0x4024
|
||||
#define VAR_MIRAGE_RND_L 0x4025
|
||||
#define VAR_SECRET_BASE_MAP 0x4026
|
||||
#define VAR_CYCLING_ROAD_RECORD_COLLISIONS 0x4027
|
||||
#define VAR_CYCLING_ROAD_RECORD_TIME_L 0x4028
|
||||
#define VAR_CYCLING_ROAD_RECORD_TIME_H 0x4029
|
||||
#define VAR_FRIENDSHIP_STEP_COUNTER 0x402A
|
||||
#define VAR_POISON_STEP_COUNTER 0x402B
|
||||
#define VAR_RESET_RTC_ENABLE 0x402C
|
||||
#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D
|
||||
#define VAR_WONDER_NEWS_COUNTER 0x402E
|
||||
#define VAR_RECYCLE_GOODS 0x4020
|
||||
#define VAR_REPEL_STEP_COUNT 0x4021
|
||||
#define VAR_ICE_STEP_COUNT 0x4022
|
||||
#define VAR_STARTER_MON 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip
|
||||
#define VAR_MIRAGE_RND_H 0x4024
|
||||
#define VAR_MIRAGE_RND_L 0x4025
|
||||
#define VAR_SECRET_BASE_MAP 0x4026
|
||||
#define VAR_CYCLING_ROAD_RECORD_COLLISIONS 0x4027
|
||||
#define VAR_CYCLING_ROAD_RECORD_TIME_L 0x4028
|
||||
#define VAR_CYCLING_ROAD_RECORD_TIME_H 0x4029
|
||||
#define VAR_FRIENDSHIP_STEP_COUNTER 0x402A
|
||||
#define VAR_POISON_STEP_COUNTER 0x402B
|
||||
#define VAR_RESET_RTC_ENABLE 0x402C
|
||||
#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D
|
||||
#define VAR_WONDER_NEWS_STEP_COUNTER 0x402E
|
||||
|
||||
#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
|
||||
#define VAR_FRONTIER_GAMBLER_CHALLENGE 0x4030
|
||||
#define VAR_FRONTIER_GAMBLER_SET_CHALLENGE 0x4031
|
||||
#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
|
||||
#define VAR_FRONTIER_GAMBLER_STATE 0x4033
|
||||
#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
|
||||
#define VAR_FRONTIER_GAMBLER_CHALLENGE 0x4030
|
||||
#define VAR_FRONTIER_GAMBLER_SET_CHALLENGE 0x4031
|
||||
#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
|
||||
#define VAR_FRONTIER_GAMBLER_STATE 0x4033
|
||||
|
||||
#define VAR_DEOXYS_ROCK_STEP_COUNT 0x4034
|
||||
#define VAR_DEOXYS_ROCK_LEVEL 0x4035
|
||||
#define VAR_PC_BOX_TO_SEND_MON 0x4036
|
||||
#define VAR_ABNORMAL_WEATHER_LOCATION 0x4037
|
||||
#define VAR_ABNORMAL_WEATHER_STEP_COUNTER 0x4038
|
||||
#define VAR_SHOULD_END_ABNORMAL_WEATHER 0x4039
|
||||
#define VAR_FARAWAY_ISLAND_STEP_COUNTER 0x403A
|
||||
#define VAR_REGICE_STEPS_1 0x403B
|
||||
#define VAR_REGICE_STEPS_2 0x403C
|
||||
#define VAR_REGICE_STEPS_3 0x403D
|
||||
#define VAR_ALTERING_CAVE_WILD_SET 0x403E
|
||||
#define VAR_DISTRIBUTE_EON_TICKET 0x403F // This var is read and written, but is always zero. The only way to obtain the Eon Ticket in Emerald is via Record Mixing
|
||||
#define VAR_DAYS 0x4040
|
||||
#define VAR_FANCLUB_FAN_COUNTER 0x4041
|
||||
#define VAR_FANCLUB_LOSE_FAN_TIMER 0x4042
|
||||
#define VAR_DEPT_STORE_FLOOR 0x4043
|
||||
#define VAR_TRICK_HOUSE_LEVEL 0x4044
|
||||
#define VAR_POKELOT_PRIZE_ITEM 0x4045
|
||||
#define VAR_NATIONAL_DEX 0x4046
|
||||
#define VAR_SEEDOT_SIZE_RECORD 0x4047
|
||||
#define VAR_ASH_GATHER_COUNT 0x4048
|
||||
#define VAR_BIRCH_STATE 0x4049
|
||||
#define VAR_CRUISE_STEP_COUNT 0x404A
|
||||
#define VAR_POKELOT_RND1 0x404B
|
||||
#define VAR_POKELOT_RND2 0x404C
|
||||
#define VAR_POKELOT_PRIZE_PLACE 0x404D
|
||||
#define VAR_UNUSED_0x404E 0x404E // Unused Var
|
||||
#define VAR_LOTAD_SIZE_RECORD 0x404F
|
||||
#define VAR_LITTLEROOT_TOWN_STATE 0x4050
|
||||
#define VAR_OLDALE_TOWN_STATE 0x4051
|
||||
#define VAR_DEWFORD_TOWN_STATE 0x4052 // Unused Var
|
||||
#define VAR_LAVARIDGE_TOWN_STATE 0x4053
|
||||
#define VAR_CURRENT_SECRET_BASE 0x4054 // was probably allocated for VAR_FALLARBOR_TOWN_STATE at one point
|
||||
#define VAR_VERDANTURF_TOWN_STATE 0x4055 // Unused Var
|
||||
#define VAR_PACIFIDLOG_TOWN_STATE 0x4056 // Unused Var
|
||||
#define VAR_PETALBURG_CITY_STATE 0x4057
|
||||
#define VAR_SLATEPORT_CITY_STATE 0x4058
|
||||
#define VAR_MAUVILLE_CITY_STATE 0x4059 // Unused Var
|
||||
#define VAR_RUSTBORO_CITY_STATE 0x405A
|
||||
#define VAR_FORTREE_CITY_STATE 0x405B // Unused Var
|
||||
#define VAR_LILYCOVE_CITY_STATE 0x405C // Unused Var
|
||||
#define VAR_MOSSDEEP_CITY_STATE 0x405D
|
||||
#define VAR_SOOTOPOLIS_CITY_STATE 0x405E
|
||||
#define VAR_EVER_GRANDE_CITY_STATE 0x405F // Unused Var
|
||||
#define VAR_ROUTE101_STATE 0x4060
|
||||
#define VAR_ROUTE102_STATE 0x4061 // Unused Var
|
||||
#define VAR_ROUTE103_STATE 0x4062 // Unused Var
|
||||
#define VAR_ROUTE104_STATE 0x4063
|
||||
#define VAR_ROUTE105_STATE 0x4064 // Unused Var
|
||||
#define VAR_ROUTE106_STATE 0x4065 // Unused Var
|
||||
#define VAR_ROUTE107_STATE 0x4066 // Unused Var
|
||||
#define VAR_ROUTE108_STATE 0x4067 // Unused Var
|
||||
#define VAR_ROUTE109_STATE 0x4068 // Unused Var
|
||||
#define VAR_ROUTE110_STATE 0x4069
|
||||
#define VAR_ROUTE111_STATE 0x406A // Unused Var
|
||||
#define VAR_ROUTE112_STATE 0x406B // Unused Var
|
||||
#define VAR_ROUTE113_STATE 0x406C // Unused Var
|
||||
#define VAR_ROUTE114_STATE 0x406D // Unused Var
|
||||
#define VAR_ROUTE115_STATE 0x406E // Unused Var
|
||||
#define VAR_ROUTE116_STATE 0x406F
|
||||
#define VAR_ROUTE117_STATE 0x4070 // Unused Var
|
||||
#define VAR_ROUTE118_STATE 0x4071
|
||||
#define VAR_ROUTE119_STATE 0x4072
|
||||
#define VAR_ROUTE120_STATE 0x4073 // Unused Var
|
||||
#define VAR_ROUTE121_STATE 0x4074
|
||||
#define VAR_ROUTE122_STATE 0x4075 // Unused Var
|
||||
#define VAR_ROUTE123_STATE 0x4076 // Unused Var
|
||||
#define VAR_ROUTE124_STATE 0x4077 // Unused Var
|
||||
#define VAR_ROUTE125_STATE 0x4078 // Unused Var
|
||||
#define VAR_ROUTE126_STATE 0x4079 // Unused Var
|
||||
#define VAR_ROUTE127_STATE 0x407A // Unused Var
|
||||
#define VAR_ROUTE128_STATE 0x407B
|
||||
#define VAR_ROUTE129_STATE 0x407C // Unused Var
|
||||
#define VAR_ROUTE130_STATE 0x407D // Unused Var
|
||||
#define VAR_ROUTE131_STATE 0x407E // Unused Var
|
||||
#define VAR_ROUTE132_STATE 0x407F // Unused Var
|
||||
#define VAR_ROUTE133_STATE 0x4080 // Unused Var
|
||||
#define VAR_ROUTE134_STATE 0x4081 // Unused Var
|
||||
#define VAR_LITTLEROOT_HOUSES_STATE_MAY 0x4082
|
||||
#define VAR_UNUSED_0x4083 0x4083 // Unused Var
|
||||
#define VAR_BIRCH_LAB_STATE 0x4084
|
||||
#define VAR_PETALBURG_GYM_STATE 0x4085 // 0-1: Wally tutorial, 2-6: 0-4 badges, 7: Defeated Norman, 8: Rematch Norman
|
||||
#define VAR_CONTEST_HALL_STATE 0x4086
|
||||
#define VAR_CABLE_CLUB_STATE 0x4087
|
||||
#define VAR_CONTEST_TYPE 0x4088
|
||||
#define VAR_SECRET_BASE_INITIALIZED 0x4089
|
||||
#define VAR_CONTEST_PRIZE_PICKUP 0x408A
|
||||
#define VAR_UNUSED_0x408B 0x408B // Unused Var
|
||||
#define VAR_LITTLEROOT_HOUSES_STATE_BRENDAN 0x408C
|
||||
#define VAR_LITTLEROOT_RIVAL_STATE 0x408D
|
||||
#define VAR_BOARD_BRINEY_BOAT_STATE 0x408E
|
||||
#define VAR_DEVON_CORP_3F_STATE 0x408F
|
||||
#define VAR_BRINEY_HOUSE_STATE 0x4090
|
||||
#define VAR_UNUSED_0x4091 0x4091 // Unused Var
|
||||
#define VAR_LITTLEROOT_INTRO_STATE 0x4092
|
||||
#define VAR_MAUVILLE_GYM_STATE 0x4093
|
||||
#define VAR_LILYCOVE_MUSEUM_2F_STATE 0x4094
|
||||
#define VAR_LILYCOVE_FAN_CLUB_STATE 0x4095
|
||||
#define VAR_BRINEY_LOCATION 0x4096
|
||||
#define VAR_INIT_SECRET_BASE 0x4097
|
||||
#define VAR_PETALBURG_WOODS_STATE 0x4098
|
||||
#define VAR_LILYCOVE_CONTEST_LOBBY_STATE 0x4099
|
||||
#define VAR_RUSTURF_TUNNEL_STATE 0x409A
|
||||
#define VAR_UNUSED_0x409B 0x409B // Unused Var
|
||||
#define VAR_ELITE_4_STATE 0x409C
|
||||
#define VAR_UNUSED_0x409D 0x409D // Unused Var
|
||||
#define VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE 0x409E
|
||||
#define VAR_MOSSDEEP_SPACE_CENTER_STATE 0x409F
|
||||
#define VAR_SLATEPORT_HARBOR_STATE 0x40A0
|
||||
#define VAR_UNUSED_0x40A1 0x40A1 // Unused var
|
||||
#define VAR_SEAFLOOR_CAVERN_STATE 0x40A2
|
||||
#define VAR_CABLE_CAR_STATION_STATE 0x40A3
|
||||
#define VAR_SAFARI_ZONE_STATE 0x40A4 // 0: In or out of SZ, 1: Player exiting SZ, 2: Player entering SZ
|
||||
#define VAR_TRICK_HOUSE_BEING_WATCHED_STATE 0x40A5
|
||||
#define VAR_TRICK_HOUSE_FOUND_TRICK_MASTER 0x40A6
|
||||
#define VAR_TRICK_HOUSE_ENTRANCE_STATE 0x40A7
|
||||
#define VAR_UNUSED_0x40A8 0x40A8 // Unused Var
|
||||
#define VAR_CYCLING_CHALLENGE_STATE 0x40A9
|
||||
#define VAR_SLATEPORT_MUSEUM_1F_STATE 0x40AA
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_1_STATE 0x40AB
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_2_STATE 0x40AC
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_3_STATE 0x40AD
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_4_STATE 0x40AE
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_5_STATE 0x40AF
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_6_STATE 0x40B0
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_7_STATE 0x40B1
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_8_STATE 0x40B2
|
||||
#define VAR_WEATHER_INSTITUTE_STATE 0x40B3
|
||||
#define VAR_SS_TIDAL_STATE 0x40B4
|
||||
#define VAR_TRICK_HOUSE_ENTER_FROM_CORRIDOR 0x40B5
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2 0x40B6 // Leftover from RS, never set
|
||||
#define VAR_SLATEPORT_FAN_CLUB_STATE 0x40B7
|
||||
#define VAR_UNUSED_0x40B8 0x40B8 // Unused Var
|
||||
#define VAR_MT_PYRE_STATE 0x40B9
|
||||
#define VAR_NEW_MAUVILLE_STATE 0x40BA
|
||||
#define VAR_UNUSED_0x40BB 0x40BB // Unused Var
|
||||
#define VAR_BRAVO_TRAINER_BATTLE_TOWER_ON 0x40BC
|
||||
#define VAR_JAGGED_PASS_ASH_WEATHER 0x40BD
|
||||
#define VAR_GLASS_WORKSHOP_STATE 0x40BE
|
||||
#define VAR_METEOR_FALLS_STATE 0x40BF
|
||||
#define VAR_SOOTOPOLIS_MYSTERY_EVENTS_STATE 0x40C0
|
||||
#define VAR_TRICK_HOUSE_PRIZE_PICKUP 0x40C1
|
||||
#define VAR_PACIFIDLOG_TM_RECEIVED_DAY 0x40C2
|
||||
#define VAR_VICTORY_ROAD_1F_STATE 0x40C3
|
||||
#define VAR_FOSSIL_RESURRECTION_STATE 0x40C4
|
||||
#define VAR_WHICH_FOSSIL_REVIVED 0x40C5
|
||||
#define VAR_STEVENS_HOUSE_STATE 0x40C6
|
||||
#define VAR_OLDALE_RIVAL_STATE 0x40C7
|
||||
#define VAR_JAGGED_PASS_STATE 0x40C8
|
||||
#define VAR_SCOTT_PETALBURG_ENCOUNTER 0x40C9
|
||||
#define VAR_SKY_PILLAR_STATE 0x40CA
|
||||
#define VAR_MIRAGE_TOWER_STATE 0x40CB
|
||||
#define VAR_FOSSIL_MANIAC_STATE 0x40CC
|
||||
#define VAR_CABLE_CLUB_TUTORIAL_STATE 0x40CD
|
||||
#define VAR_FRONTIER_BATTLE_MODE 0x40CE
|
||||
#define VAR_FRONTIER_FACILITY 0x40CF
|
||||
#define VAR_HAS_ENTERED_BATTLE_FRONTIER 0x40D0 // Var is used like a flag.
|
||||
#define VAR_SCOTT_STATE 0x40D1
|
||||
#define VAR_SLATEPORT_OUTSIDE_MUSEUM_STATE 0x40D2
|
||||
#define VAR_DEX_UPGRADE_JOHTO_STARTER_STATE 0x40D3
|
||||
#define VAR_SS_TIDAL_SCOTT_STATE 0x40D4 // Always equal to FLAG_MET_SCOTT_ON_SS_TIDAL
|
||||
#define VAR_ROAMER_POKEMON 0x40D5 // 0 = Latias, 1 = Latios
|
||||
#define VAR_TRAINER_HILL_IS_ACTIVE 0x40D6
|
||||
#define VAR_SKY_PILLAR_RAQUAZA_CRY_DONE 0x40D7
|
||||
#define VAR_SOOTOPOLIS_WALLACE_STATE 0x40D8
|
||||
#define VAR_DEOXYS_ROCK_STEP_COUNT 0x4034
|
||||
#define VAR_DEOXYS_ROCK_LEVEL 0x4035
|
||||
#define VAR_PC_BOX_TO_SEND_MON 0x4036
|
||||
#define VAR_ABNORMAL_WEATHER_LOCATION 0x4037
|
||||
#define VAR_ABNORMAL_WEATHER_STEP_COUNTER 0x4038
|
||||
#define VAR_SHOULD_END_ABNORMAL_WEATHER 0x4039
|
||||
#define VAR_FARAWAY_ISLAND_STEP_COUNTER 0x403A
|
||||
#define VAR_REGICE_STEPS_1 0x403B
|
||||
#define VAR_REGICE_STEPS_2 0x403C
|
||||
#define VAR_REGICE_STEPS_3 0x403D
|
||||
#define VAR_ALTERING_CAVE_WILD_SET 0x403E
|
||||
#define VAR_DISTRIBUTE_EON_TICKET 0x403F // This var is read and written, but is always zero. The only way to obtain the Eon Ticket in Emerald is via Record Mixing
|
||||
#define VAR_DAYS 0x4040
|
||||
#define VAR_FANCLUB_FAN_COUNTER 0x4041
|
||||
#define VAR_FANCLUB_LOSE_FAN_TIMER 0x4042
|
||||
#define VAR_DEPT_STORE_FLOOR 0x4043
|
||||
#define VAR_TRICK_HOUSE_LEVEL 0x4044
|
||||
#define VAR_POKELOT_PRIZE_ITEM 0x4045
|
||||
#define VAR_NATIONAL_DEX 0x4046
|
||||
#define VAR_SEEDOT_SIZE_RECORD 0x4047
|
||||
#define VAR_ASH_GATHER_COUNT 0x4048
|
||||
#define VAR_BIRCH_STATE 0x4049
|
||||
#define VAR_CRUISE_STEP_COUNT 0x404A
|
||||
#define VAR_POKELOT_RND1 0x404B
|
||||
#define VAR_POKELOT_RND2 0x404C
|
||||
#define VAR_POKELOT_PRIZE_PLACE 0x404D
|
||||
#define VAR_UNUSED_0x404E 0x404E // Unused Var
|
||||
#define VAR_LOTAD_SIZE_RECORD 0x404F
|
||||
#define VAR_LITTLEROOT_TOWN_STATE 0x4050
|
||||
#define VAR_OLDALE_TOWN_STATE 0x4051
|
||||
#define VAR_DEWFORD_TOWN_STATE 0x4052 // Unused Var
|
||||
#define VAR_LAVARIDGE_TOWN_STATE 0x4053
|
||||
#define VAR_CURRENT_SECRET_BASE 0x4054 // was probably allocated for VAR_FALLARBOR_TOWN_STATE at one point
|
||||
#define VAR_VERDANTURF_TOWN_STATE 0x4055 // Unused Var
|
||||
#define VAR_PACIFIDLOG_TOWN_STATE 0x4056 // Unused Var
|
||||
#define VAR_PETALBURG_CITY_STATE 0x4057
|
||||
#define VAR_SLATEPORT_CITY_STATE 0x4058
|
||||
#define VAR_MAUVILLE_CITY_STATE 0x4059 // Unused Var
|
||||
#define VAR_RUSTBORO_CITY_STATE 0x405A
|
||||
#define VAR_FORTREE_CITY_STATE 0x405B // Unused Var
|
||||
#define VAR_LILYCOVE_CITY_STATE 0x405C // Unused Var
|
||||
#define VAR_MOSSDEEP_CITY_STATE 0x405D
|
||||
#define VAR_SOOTOPOLIS_CITY_STATE 0x405E
|
||||
#define VAR_EVER_GRANDE_CITY_STATE 0x405F // Unused Var
|
||||
#define VAR_ROUTE101_STATE 0x4060
|
||||
#define VAR_ROUTE102_STATE 0x4061 // Unused Var
|
||||
#define VAR_ROUTE103_STATE 0x4062 // Unused Var
|
||||
#define VAR_ROUTE104_STATE 0x4063
|
||||
#define VAR_ROUTE105_STATE 0x4064 // Unused Var
|
||||
#define VAR_ROUTE106_STATE 0x4065 // Unused Var
|
||||
#define VAR_ROUTE107_STATE 0x4066 // Unused Var
|
||||
#define VAR_ROUTE108_STATE 0x4067 // Unused Var
|
||||
#define VAR_ROUTE109_STATE 0x4068 // Unused Var
|
||||
#define VAR_ROUTE110_STATE 0x4069
|
||||
#define VAR_ROUTE111_STATE 0x406A // Unused Var
|
||||
#define VAR_ROUTE112_STATE 0x406B // Unused Var
|
||||
#define VAR_ROUTE113_STATE 0x406C // Unused Var
|
||||
#define VAR_ROUTE114_STATE 0x406D // Unused Var
|
||||
#define VAR_ROUTE115_STATE 0x406E // Unused Var
|
||||
#define VAR_ROUTE116_STATE 0x406F
|
||||
#define VAR_ROUTE117_STATE 0x4070 // Unused Var
|
||||
#define VAR_ROUTE118_STATE 0x4071
|
||||
#define VAR_ROUTE119_STATE 0x4072
|
||||
#define VAR_ROUTE120_STATE 0x4073 // Unused Var
|
||||
#define VAR_ROUTE121_STATE 0x4074
|
||||
#define VAR_ROUTE122_STATE 0x4075 // Unused Var
|
||||
#define VAR_ROUTE123_STATE 0x4076 // Unused Var
|
||||
#define VAR_ROUTE124_STATE 0x4077 // Unused Var
|
||||
#define VAR_ROUTE125_STATE 0x4078 // Unused Var
|
||||
#define VAR_ROUTE126_STATE 0x4079 // Unused Var
|
||||
#define VAR_ROUTE127_STATE 0x407A // Unused Var
|
||||
#define VAR_ROUTE128_STATE 0x407B
|
||||
#define VAR_ROUTE129_STATE 0x407C // Unused Var
|
||||
#define VAR_ROUTE130_STATE 0x407D // Unused Var
|
||||
#define VAR_ROUTE131_STATE 0x407E // Unused Var
|
||||
#define VAR_ROUTE132_STATE 0x407F // Unused Var
|
||||
#define VAR_ROUTE133_STATE 0x4080 // Unused Var
|
||||
#define VAR_ROUTE134_STATE 0x4081 // Unused Var
|
||||
#define VAR_LITTLEROOT_HOUSES_STATE_MAY 0x4082
|
||||
#define VAR_UNUSED_0x4083 0x4083 // Unused Var
|
||||
#define VAR_BIRCH_LAB_STATE 0x4084
|
||||
#define VAR_PETALBURG_GYM_STATE 0x4085 // 0-1: Wally tutorial, 2-6: 0-4 badges, 7: Defeated Norman, 8: Rematch Norman
|
||||
#define VAR_CONTEST_HALL_STATE 0x4086
|
||||
#define VAR_CABLE_CLUB_STATE 0x4087
|
||||
#define VAR_CONTEST_TYPE 0x4088
|
||||
#define VAR_SECRET_BASE_INITIALIZED 0x4089
|
||||
#define VAR_CONTEST_PRIZE_PICKUP 0x408A
|
||||
#define VAR_UNUSED_0x408B 0x408B // Unused Var
|
||||
#define VAR_LITTLEROOT_HOUSES_STATE_BRENDAN 0x408C
|
||||
#define VAR_LITTLEROOT_RIVAL_STATE 0x408D
|
||||
#define VAR_BOARD_BRINEY_BOAT_STATE 0x408E
|
||||
#define VAR_DEVON_CORP_3F_STATE 0x408F
|
||||
#define VAR_BRINEY_HOUSE_STATE 0x4090
|
||||
#define VAR_UNUSED_0x4091 0x4091 // Unused Var
|
||||
#define VAR_LITTLEROOT_INTRO_STATE 0x4092
|
||||
#define VAR_MAUVILLE_GYM_STATE 0x4093
|
||||
#define VAR_LILYCOVE_MUSEUM_2F_STATE 0x4094
|
||||
#define VAR_LILYCOVE_FAN_CLUB_STATE 0x4095
|
||||
#define VAR_BRINEY_LOCATION 0x4096
|
||||
#define VAR_INIT_SECRET_BASE 0x4097
|
||||
#define VAR_PETALBURG_WOODS_STATE 0x4098
|
||||
#define VAR_LILYCOVE_CONTEST_LOBBY_STATE 0x4099
|
||||
#define VAR_RUSTURF_TUNNEL_STATE 0x409A
|
||||
#define VAR_UNUSED_0x409B 0x409B // Unused Var
|
||||
#define VAR_ELITE_4_STATE 0x409C
|
||||
#define VAR_UNUSED_0x409D 0x409D // Unused Var
|
||||
#define VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE 0x409E
|
||||
#define VAR_MOSSDEEP_SPACE_CENTER_STATE 0x409F
|
||||
#define VAR_SLATEPORT_HARBOR_STATE 0x40A0
|
||||
#define VAR_UNUSED_0x40A1 0x40A1 // Unused var
|
||||
#define VAR_SEAFLOOR_CAVERN_STATE 0x40A2
|
||||
#define VAR_CABLE_CAR_STATION_STATE 0x40A3
|
||||
#define VAR_SAFARI_ZONE_STATE 0x40A4 // 0: In or out of SZ, 1: Player exiting SZ, 2: Player entering SZ
|
||||
#define VAR_TRICK_HOUSE_BEING_WATCHED_STATE 0x40A5
|
||||
#define VAR_TRICK_HOUSE_FOUND_TRICK_MASTER 0x40A6
|
||||
#define VAR_TRICK_HOUSE_ENTRANCE_STATE 0x40A7
|
||||
#define VAR_UNUSED_0x40A8 0x40A8 // Unused Var
|
||||
#define VAR_CYCLING_CHALLENGE_STATE 0x40A9
|
||||
#define VAR_SLATEPORT_MUSEUM_1F_STATE 0x40AA
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_1_STATE 0x40AB
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_2_STATE 0x40AC
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_3_STATE 0x40AD
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_4_STATE 0x40AE
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_5_STATE 0x40AF
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_6_STATE 0x40B0
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_7_STATE 0x40B1
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_8_STATE 0x40B2
|
||||
#define VAR_WEATHER_INSTITUTE_STATE 0x40B3
|
||||
#define VAR_SS_TIDAL_STATE 0x40B4
|
||||
#define VAR_TRICK_HOUSE_ENTER_FROM_CORRIDOR 0x40B5
|
||||
#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2 0x40B6 // Leftover from RS, never set
|
||||
#define VAR_SLATEPORT_FAN_CLUB_STATE 0x40B7
|
||||
#define VAR_UNUSED_0x40B8 0x40B8 // Unused Var
|
||||
#define VAR_MT_PYRE_STATE 0x40B9
|
||||
#define VAR_NEW_MAUVILLE_STATE 0x40BA
|
||||
#define VAR_UNUSED_0x40BB 0x40BB // Unused Var
|
||||
#define VAR_BRAVO_TRAINER_BATTLE_TOWER_ON 0x40BC
|
||||
#define VAR_JAGGED_PASS_ASH_WEATHER 0x40BD
|
||||
#define VAR_GLASS_WORKSHOP_STATE 0x40BE
|
||||
#define VAR_METEOR_FALLS_STATE 0x40BF
|
||||
#define VAR_SOOTOPOLIS_MYSTERY_EVENTS_STATE 0x40C0
|
||||
#define VAR_TRICK_HOUSE_PRIZE_PICKUP 0x40C1
|
||||
#define VAR_PACIFIDLOG_TM_RECEIVED_DAY 0x40C2
|
||||
#define VAR_VICTORY_ROAD_1F_STATE 0x40C3
|
||||
#define VAR_FOSSIL_RESURRECTION_STATE 0x40C4
|
||||
#define VAR_WHICH_FOSSIL_REVIVED 0x40C5
|
||||
#define VAR_STEVENS_HOUSE_STATE 0x40C6
|
||||
#define VAR_OLDALE_RIVAL_STATE 0x40C7
|
||||
#define VAR_JAGGED_PASS_STATE 0x40C8
|
||||
#define VAR_SCOTT_PETALBURG_ENCOUNTER 0x40C9
|
||||
#define VAR_SKY_PILLAR_STATE 0x40CA
|
||||
#define VAR_MIRAGE_TOWER_STATE 0x40CB
|
||||
#define VAR_FOSSIL_MANIAC_STATE 0x40CC
|
||||
#define VAR_CABLE_CLUB_TUTORIAL_STATE 0x40CD
|
||||
#define VAR_FRONTIER_BATTLE_MODE 0x40CE
|
||||
#define VAR_FRONTIER_FACILITY 0x40CF
|
||||
#define VAR_HAS_ENTERED_BATTLE_FRONTIER 0x40D0 // Var is used like a flag.
|
||||
#define VAR_SCOTT_STATE 0x40D1
|
||||
#define VAR_SLATEPORT_OUTSIDE_MUSEUM_STATE 0x40D2
|
||||
#define VAR_DEX_UPGRADE_JOHTO_STARTER_STATE 0x40D3
|
||||
#define VAR_SS_TIDAL_SCOTT_STATE 0x40D4 // Always equal to FLAG_MET_SCOTT_ON_SS_TIDAL
|
||||
#define VAR_ROAMER_POKEMON 0x40D5 // 0 = Latias, 1 = Latios
|
||||
#define VAR_TRAINER_HILL_IS_ACTIVE 0x40D6
|
||||
#define VAR_SKY_PILLAR_RAYQUAZA_CRY_DONE 0x40D7
|
||||
#define VAR_SOOTOPOLIS_WALLACE_STATE 0x40D8
|
||||
#define VAR_HAS_TALKED_TO_SEAFLOOR_CAVERN_ENTRANCE_GRUNT 0x40D9
|
||||
#define VAR_REGISTER_BIRCH_STATE 0x40DA
|
||||
#define VAR_UNUSED_0x40DB 0x40DB // Unused Var
|
||||
#define VAR_UNUSED_0x40DC 0x40DC // Unused Var
|
||||
#define VAR_GIFT_PICHU_SLOT 0x40DD
|
||||
#define VAR_GIFT_UNUSED_1 0x40DE // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_2 0x40DF // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_3 0x40E0 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_4 0x40E1 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_5 0x40E2 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_6 0x40E3 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_7 0x40E4 // var is written to, but never read
|
||||
#define VAR_UNUSED_0x40E5 0x40E5 // Unused Var
|
||||
#define VAR_DAILY_SLOTS 0x40E6
|
||||
#define VAR_DAILY_WILDS 0x40E7
|
||||
#define VAR_DAILY_BLENDER 0x40E8
|
||||
#define VAR_DAILY_PLANTED_BERRIES 0x40E9
|
||||
#define VAR_DAILY_PICKED_BERRIES 0x40EA
|
||||
#define VAR_DAILY_ROULETTE 0x40EB
|
||||
#define VAR_SECRET_BASE_STEP_COUNTER 0x40EC // Used by Secret Base TV programs
|
||||
#define VAR_SECRET_BASE_LAST_ITEM_USED 0x40ED // Used by Secret Base TV programs
|
||||
#define VAR_SECRET_BASE_LOW_TV_FLAGS 0x40EE // Used by Secret Base TV programs
|
||||
#define VAR_SECRET_BASE_HIGH_TV_FLAGS 0x40EF // Used by Secret Base TV programs
|
||||
#define VAR_SECRET_BASE_IS_NOT_LOCAL 0x40F0 // Set to TRUE while in another player's secret base.
|
||||
#define VAR_DAILY_BP 0x40F1
|
||||
#define VAR_WALLY_CALL_STEP_COUNTER 0x40F2
|
||||
#define VAR_SCOTT_FORTREE_CALL_STEP_COUNTER 0x40F3
|
||||
#define VAR_ROXANNE_CALL_STEP_COUNTER 0x40F4
|
||||
#define VAR_SCOTT_BF_CALL_STEP_COUNTER 0x40F5
|
||||
#define VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER 0x40F6
|
||||
#define VAR_UNUSED_0x40F7 0x40F7 // Unused Var
|
||||
#define VAR_UNUSED_0x40F8 0x40F8 // Unused Var
|
||||
#define VAR_UNUSED_0x40F9 0x40F9 // Unused Var
|
||||
#define VAR_UNUSED_0x40FA 0x40FA // Unused Var
|
||||
#define VAR_UNUSED_0x40FB 0x40FB // Unused Var
|
||||
#define VAR_UNUSED_0x40FC 0x40FC // Unused Var
|
||||
#define VAR_UNUSED_0x40FD 0x40FD // Unused Var
|
||||
#define VAR_UNUSED_0x40FE 0x40FE // Unused Var
|
||||
#define VAR_UNUSED_0x40FF 0x40FF // Unused Var
|
||||
#define VAR_REGISTER_BIRCH_STATE 0x40DA
|
||||
#define VAR_UNUSED_0x40DB 0x40DB // Unused Var
|
||||
#define VAR_UNUSED_0x40DC 0x40DC // Unused Var
|
||||
#define VAR_GIFT_PICHU_SLOT 0x40DD
|
||||
#define VAR_GIFT_UNUSED_1 0x40DE // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_2 0x40DF // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_3 0x40E0 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_4 0x40E1 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_5 0x40E2 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_6 0x40E3 // Var is written to, but never read
|
||||
#define VAR_GIFT_UNUSED_7 0x40E4 // var is written to, but never read
|
||||
#define VAR_UNUSED_0x40E5 0x40E5 // Unused Var
|
||||
#define VAR_DAILY_SLOTS 0x40E6
|
||||
#define VAR_DAILY_WILDS 0x40E7
|
||||
#define VAR_DAILY_BLENDER 0x40E8
|
||||
#define VAR_DAILY_PLANTED_BERRIES 0x40E9
|
||||
#define VAR_DAILY_PICKED_BERRIES 0x40EA
|
||||
#define VAR_DAILY_ROULETTE 0x40EB
|
||||
#define VAR_SECRET_BASE_STEP_COUNTER 0x40EC // Used by Secret Base TV programs
|
||||
#define VAR_SECRET_BASE_LAST_ITEM_USED 0x40ED // Used by Secret Base TV programs
|
||||
#define VAR_SECRET_BASE_LOW_TV_FLAGS 0x40EE // Used by Secret Base TV programs
|
||||
#define VAR_SECRET_BASE_HIGH_TV_FLAGS 0x40EF // Used by Secret Base TV programs
|
||||
#define VAR_SECRET_BASE_IS_NOT_LOCAL 0x40F0 // Set to TRUE while in another player's secret base.
|
||||
#define VAR_DAILY_BP 0x40F1
|
||||
#define VAR_WALLY_CALL_STEP_COUNTER 0x40F2
|
||||
#define VAR_SCOTT_FORTREE_CALL_STEP_COUNTER 0x40F3
|
||||
#define VAR_ROXANNE_CALL_STEP_COUNTER 0x40F4
|
||||
#define VAR_SCOTT_BF_CALL_STEP_COUNTER 0x40F5
|
||||
#define VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER 0x40F6
|
||||
#define VAR_UNUSED_0x40F7 0x40F7 // Unused Var
|
||||
#define VAR_UNUSED_0x40F8 0x40F8 // Unused Var
|
||||
#define VAR_UNUSED_0x40F9 0x40F9 // Unused Var
|
||||
#define VAR_UNUSED_0x40FA 0x40FA // Unused Var
|
||||
#define VAR_UNUSED_0x40FB 0x40FB // Unused Var
|
||||
#define VAR_UNUSED_0x40FC 0x40FC // Unused Var
|
||||
#define VAR_UNUSED_0x40FD 0x40FD // Unused Var
|
||||
#define VAR_UNUSED_0x40FE 0x40FE // Unused Var
|
||||
#define VAR_UNUSED_0x40FF 0x40FF // Unused Var
|
||||
|
||||
#define VARS_END 0x40FF
|
||||
#define VARS_COUNT (VARS_END - VARS_START + 1)
|
||||
#define VARS_END 0x40FF
|
||||
#define VARS_COUNT (VARS_END - VARS_START + 1)
|
||||
|
||||
#define SPECIAL_VARS_START 0x8000
|
||||
// special vars
|
||||
@@ -304,4 +304,10 @@
|
||||
|
||||
#define SPECIAL_VARS_END 0x8015
|
||||
|
||||
// If an overworld trigger uses this pseudo-variable as the trigger check,
|
||||
// then the script will be run using RunScriptImmediately instead of in the
|
||||
// global script context. This means it will run faster, but cannot do any
|
||||
// cutscenes nor call a wait command. Used for weather effects in vanilla.
|
||||
#define TRIGGER_RUN_IMMEDIATELY 0
|
||||
|
||||
#endif // GUARD_CONSTANTS_VARS_H
|
||||
|
||||
@@ -3,6 +3,28 @@
|
||||
|
||||
#include "constants/event_object_movement.h"
|
||||
|
||||
// Palette slots for overworld NPCs.
|
||||
// The same standard set of palettes for overworld objects are normally always loaded at the same
|
||||
// time while walking around the overworld. The only exceptions are the palettes for the player and
|
||||
// the "special" NPC, which can be swapped out. This also means that e.g. two "special" NPCs
|
||||
// with competing palettes cannot be properly loaded at the same time.
|
||||
enum {
|
||||
PALSLOT_PLAYER,
|
||||
PALSLOT_PLAYER_REFLECTION,
|
||||
PALSLOT_NPC_1,
|
||||
PALSLOT_NPC_2,
|
||||
PALSLOT_NPC_3,
|
||||
PALSLOT_NPC_4,
|
||||
PALSLOT_NPC_1_REFLECTION,
|
||||
PALSLOT_NPC_2_REFLECTION,
|
||||
PALSLOT_NPC_3_REFLECTION,
|
||||
PALSLOT_NPC_4_REFLECTION,
|
||||
PALSLOT_NPC_SPECIAL,
|
||||
PALSLOT_NPC_SPECIAL_REFLECTION,
|
||||
OBJ_PALSLOT_COUNT
|
||||
// the remaining sprite palette slots (12-15) are used by field effects, the interface, etc.
|
||||
};
|
||||
|
||||
enum SpinnerRunnerFollowPatterns
|
||||
{
|
||||
RUNFOLLOW_ANY,
|
||||
@@ -63,7 +85,7 @@ struct PairedPalettes
|
||||
|
||||
struct LockedAnimObjectEvents
|
||||
{
|
||||
u8 objectEventIds[OBJECT_EVENTS_COUNT];
|
||||
u8 localIds[OBJECT_EVENTS_COUNT];
|
||||
u8 count;
|
||||
};
|
||||
|
||||
@@ -77,55 +99,55 @@ extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[];
|
||||
extern const u8 *const gBerryTreePaletteSlotTablePointers[];
|
||||
|
||||
void ResetObjectEvents(void);
|
||||
u8 GetMoveDirectionAnimNum(u8);
|
||||
u8 GetObjectEventIdByLocalIdAndMap(u8, u8, u8);
|
||||
bool8 TryGetObjectEventIdByLocalIdAndMap(u8, u8, u8, u8 *);
|
||||
u8 GetObjectEventIdByXY(s16, s16);
|
||||
void SetObjectEventDirection(struct ObjectEvent *, u8);
|
||||
u8 GetMoveDirectionAnimNum(u8 direction);
|
||||
u8 GetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId);
|
||||
bool8 TryGetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId, u8 *objectEventId);
|
||||
u8 GetObjectEventIdByXY(s16 x, s16 y);
|
||||
void SetObjectEventDirection(struct ObjectEvent *objectEvent, u8 direction);
|
||||
u8 GetFirstInactiveObjectEventId(void);
|
||||
void RemoveObjectEventByLocalIdAndMap(u8, u8, u8);
|
||||
void LoadPlayerObjectReflectionPalette(u16, u8);
|
||||
void LoadSpecialObjectReflectionPalette(u16, u8);
|
||||
void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16);
|
||||
void PatchObjectPalette(u16, u8);
|
||||
void SpawnObjectEventsOnReturnToField(s16, s16);
|
||||
void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup);
|
||||
void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot);
|
||||
void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot);
|
||||
void TryMoveObjectEventToMapCoords(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
|
||||
void PatchObjectPalette(u16 paletteTag, u8 paletteSlot);
|
||||
void SpawnObjectEventsOnReturnToField(s16 x, s16 y);
|
||||
void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat);
|
||||
void GetMapCoordsFromSpritePos(s16, s16, s16 *, s16 *);
|
||||
u8 GetFaceDirectionAnimNum(u8);
|
||||
void SetSpritePosToOffsetMapCoords(s16 *, s16 *, s16, s16);
|
||||
void GetMapCoordsFromSpritePos(s16 x, s16 y, s16 *destX, s16 *destY);
|
||||
u8 GetFaceDirectionAnimNum(u8 direction);
|
||||
void SetSpritePosToOffsetMapCoords(s16 *x, s16 *y, s16 dx, s16 dy);
|
||||
void ObjectEventClearHeldMovement(struct ObjectEvent *);
|
||||
void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *);
|
||||
void TrySpawnObjectEvents(s16, s16);
|
||||
void TrySpawnObjectEvents(s16 cameraX, s16 cameraY);
|
||||
u8 CreateObjectGraphicsSprite(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority);
|
||||
u8 TrySpawnObjectEvent(u8, u8, u8);
|
||||
u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup);
|
||||
u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation);
|
||||
u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *);
|
||||
void SetSpritePosToMapCoords(s16, s16, s16 *, s16 *);
|
||||
void SetSpritePosToMapCoords(s16 mapX, s16 mapY, s16 *destX, s16 *destY);
|
||||
void CameraObjectReset1(void);
|
||||
void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId);
|
||||
void ObjectEventTurn(struct ObjectEvent *, u8);
|
||||
void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8);
|
||||
void ObjectEventTurn(struct ObjectEvent *, u8 direction);
|
||||
void ObjectEventTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction);
|
||||
const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId);
|
||||
void SetObjectInvisibility(u8, u8, u8, bool8);
|
||||
void SetObjectInvisibility(u8 localId, u8 mapNum, u8 mapGroup, bool8 invisible);
|
||||
void FreeAndReserveObjectSpritePalettes(void);
|
||||
void SetObjectEventSpritePosByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
|
||||
void ResetObjectSubpriority(u8, u8, u8);
|
||||
void SetObjectSubpriority(u8, u8, u8, u8);
|
||||
void AllowObjectAtPosTriggerGroundEffects(s16, s16);
|
||||
void ResetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup);
|
||||
void SetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority);
|
||||
void AllowObjectAtPosTriggerGroundEffects(s16 x, s16 y);
|
||||
void ObjectEventGetLocalIdAndMap(struct ObjectEvent *objectEvent, void *localId, void *mapNum, void *mapGroup);
|
||||
void ShiftObjectEventCoords(struct ObjectEvent *, s16, s16);
|
||||
void MoveObjectEventToMapCoords(struct ObjectEvent *, s16, s16);
|
||||
void TryOverrideObjectEventTemplateCoords(u8, u8, u8);
|
||||
void ShiftObjectEventCoords(struct ObjectEvent *, s16 x, s16 y);
|
||||
void MoveObjectEventToMapCoords(struct ObjectEvent *, s16 x, s16 y);
|
||||
void TryOverrideObjectEventTemplateCoords(u8 localId, u8 mapNum, u8 mapGroup);
|
||||
void InitObjectEventPalettes(u8 palSlot);
|
||||
void UpdateObjectEventCurrentMovement(struct ObjectEvent *, struct Sprite *, bool8(struct ObjectEvent *, struct Sprite *));
|
||||
u8 ObjectEventFaceOppositeDirection(struct ObjectEvent *, u8);
|
||||
u8 GetOppositeDirection(u8);
|
||||
u8 ObjectEventFaceOppositeDirection(struct ObjectEvent *, u8 direction);
|
||||
u8 GetOppositeDirection(u8 direction);
|
||||
u8 GetWalkInPlaceFasterMovementAction(u32);
|
||||
u8 GetWalkInPlaceFastMovementAction(u32);
|
||||
u8 GetWalkInPlaceNormalMovementAction(u32);
|
||||
u8 GetWalkInPlaceSlowMovementAction(u32);
|
||||
u8 GetCollisionAtCoords(struct ObjectEvent *, s16, s16, u32);
|
||||
void MoveCoords(u8, s16 *, s16 *);
|
||||
u8 GetCollisionAtCoords(struct ObjectEvent *, s16 x, s16 y, u32 dir);
|
||||
void MoveCoords(u8 direction, s16 *x, s16 *y);
|
||||
bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *);
|
||||
u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *);
|
||||
u8 GetObjectEventIdByPosition(u16 x, u16 y, u8 elevation);
|
||||
@@ -168,22 +190,22 @@ u8 AddCameraObject(u8 linkedSpriteId);
|
||||
void UpdateObjectEventsForCameraUpdate(s16 x, s16 y);
|
||||
u8 GetWalkSlowMovementAction(u32);
|
||||
u8 GetJumpMovementAction(u32);
|
||||
u8 ElevationToPriority(u8);
|
||||
u8 ElevationToPriority(u8 elevation);
|
||||
void ObjectEventUpdateElevation(struct ObjectEvent *objEvent);
|
||||
void SetObjectSubpriorityByElevation(u8, struct Sprite *, u8);
|
||||
void SetObjectSubpriorityByElevation(u8 elevation, struct Sprite *, u8 subpriority);
|
||||
void UnfreezeObjectEvent(struct ObjectEvent *);
|
||||
u8 FindLockedObjectEventIndex(struct ObjectEvent *);
|
||||
void SetAndStartSpriteAnim(struct Sprite *, u8, u8);
|
||||
void SetAndStartSpriteAnim(struct Sprite *, u8 animNum, u8 animCmdIndex);
|
||||
bool8 SpriteAnimEnded(struct Sprite *);
|
||||
void UnfreezeObjectEvents(void);
|
||||
void FreezeObjectEventsExceptOne(u8 objectEventId);
|
||||
void FreezeObjectEventsExceptTwo(u8 objectEventId1, u8 objectEventId2);
|
||||
void FreezeObjectEvents(void);
|
||||
bool8 FreezeObjectEvent(struct ObjectEvent *objectEvent);
|
||||
u8 GetMoveDirectionFastAnimNum(u8);
|
||||
u8 GetMoveDirectionFasterAnimNum(u8);
|
||||
u8 GetMoveDirectionFastestAnimNum(u8);
|
||||
u8 GetLedgeJumpDirection(s16, s16, u8);
|
||||
u8 GetMoveDirectionFastAnimNum(u8 direction);
|
||||
u8 GetMoveDirectionFasterAnimNum(u8 direction);
|
||||
u8 GetMoveDirectionFastestAnimNum(u8 direction);
|
||||
u8 GetLedgeJumpDirection(s16 x, s16 y, u8 direction);
|
||||
void CameraObjectSetFollowedSpriteId(u8 objectId);
|
||||
u16 GetObjectPaletteTag(u8 palSlot);
|
||||
void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible);
|
||||
@@ -192,7 +214,7 @@ s16 GetFigure8YOffset(s16 idx);
|
||||
void CameraObjectReset2(void);
|
||||
u8 GetObjectEventBerryTreeId(u8 objectEventId);
|
||||
void SetBerryTreeJustPicked(u8 mapId, u8 mapNumber, u8 mapGroup);
|
||||
bool8 IsBerryTreeSparkling(u8, u8, u8);
|
||||
bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup);
|
||||
|
||||
void MovementType_None(struct Sprite *);
|
||||
void MovementType_LookAround(struct Sprite *);
|
||||
@@ -250,7 +272,6 @@ void MovementType_RunInPlace(struct Sprite *);
|
||||
void MovementType_Invisible(struct Sprite *);
|
||||
void MovementType_WalkSlowlyInPlace(struct Sprite *);
|
||||
u8 GetSlideMovementAction(u32);
|
||||
u8 GetJumpInPlaceMovementAction(u32);
|
||||
u8 GetJumpMovementAction(u32);
|
||||
u8 GetJump2MovementAction(u32);
|
||||
u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority);
|
||||
@@ -262,17 +283,17 @@ u8 MovementType_WanderAround_Step3(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementType_WanderAround_Step4(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementType_WanderAround_Step5(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementType_WanderAround_Step6(struct ObjectEvent *, struct Sprite *);
|
||||
u8 GetVectorDirection(s16, s16, s16, s16);
|
||||
u8 GetLimitedVectorDirection_SouthNorth(s16, s16, s16, s16);
|
||||
u8 GetLimitedVectorDirection_WestEast(s16, s16, s16, s16);
|
||||
u8 GetLimitedVectorDirection_WestNorth(s16, s16, s16, s16);
|
||||
u8 GetLimitedVectorDirection_EastNorth(s16, s16, s16, s16);
|
||||
u8 GetLimitedVectorDirection_WestSouth(s16, s16, s16, s16);
|
||||
u8 GetLimitedVectorDirection_EastSouth(s16, s16, s16, s16);
|
||||
u8 GetLimitedVectorDirection_SouthNorthWest(s16, s16, s16, s16);
|
||||
u8 GetLimitedVectorDirection_SouthNorthEast(s16, s16, s16, s16);
|
||||
u8 GetLimitedVectorDirection_NorthWestEast(s16, s16, s16, s16);
|
||||
u8 GetLimitedVectorDirection_SouthWestEast(s16, s16, s16, s16);
|
||||
u8 GetVectorDirection(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
u8 GetLimitedVectorDirection_SouthNorth(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
u8 GetLimitedVectorDirection_WestEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
u8 GetLimitedVectorDirection_WestNorth(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
u8 GetLimitedVectorDirection_EastNorth(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
u8 GetLimitedVectorDirection_WestSouth(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
u8 GetLimitedVectorDirection_EastSouth(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
u8 GetLimitedVectorDirection_SouthNorthWest(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
u8 GetLimitedVectorDirection_SouthNorthEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
u8 GetLimitedVectorDirection_NorthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
u8 GetLimitedVectorDirection_SouthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
u8 MovementType_LookAround_Step0(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementType_LookAround_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementType_LookAround_Step2(struct ObjectEvent *, struct Sprite *);
|
||||
|
||||
@@ -18,7 +18,7 @@ void FieldEffectStop(struct Sprite *sprite, u8 id);
|
||||
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
|
||||
void FldEff_TeleportWarpOut(void);
|
||||
void FieldEffectActiveListRemove(u8 id);
|
||||
void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
|
||||
void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b);
|
||||
void FieldEffectActiveListAdd(u8 id);
|
||||
void FieldEffectScript_LoadTiles(u8 **script);
|
||||
void FieldEffectScript_LoadFadedPalette(u8 **script);
|
||||
|
||||
@@ -38,7 +38,7 @@ void PlayerFreeze(void);
|
||||
void StopPlayerAvatar(void);
|
||||
void SetSpinStartFacingDir(u8);
|
||||
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
|
||||
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
|
||||
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender);
|
||||
void SetPlayerAvatarFieldMove(void);
|
||||
u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
|
||||
void SetPlayerAvatarStateMask(u8 flags);
|
||||
|
||||
@@ -19,6 +19,8 @@ enum {
|
||||
PALTAG_WEATHER_2
|
||||
};
|
||||
|
||||
#define NUM_WEATHER_COLOR_MAPS 19
|
||||
|
||||
struct Weather
|
||||
{
|
||||
union
|
||||
@@ -39,12 +41,12 @@ struct Weather
|
||||
struct Sprite *sandstormSprites2[NUM_SWIRL_SANDSTORM_SPRITES];
|
||||
} s2;
|
||||
} sprites;
|
||||
u8 gammaShifts[19][32];
|
||||
u8 altGammaShifts[19][32];
|
||||
s8 gammaIndex;
|
||||
s8 gammaTargetIndex;
|
||||
u8 gammaStepDelay;
|
||||
u8 gammaStepFrameCounter;
|
||||
u8 darkenedContrastColorMaps[NUM_WEATHER_COLOR_MAPS][32];
|
||||
u8 contrastColorMaps[NUM_WEATHER_COLOR_MAPS][32];
|
||||
s8 colorMapIndex;
|
||||
s8 targetColorMapIndex;
|
||||
u8 colorMapStepDelay;
|
||||
u8 colorMapStepCounter;
|
||||
u16 fadeDestColor;
|
||||
u8 palProcessingState;
|
||||
u8 fadeScreenCounter;
|
||||
@@ -59,7 +61,7 @@ struct Weather
|
||||
u8 weatherGfxLoaded;
|
||||
bool8 weatherChangeComplete;
|
||||
u8 weatherPicSpritePalIndex;
|
||||
u8 altGammaSpritePalIndex;
|
||||
u8 contrastColorMapSpritePalIndex;
|
||||
// Rain
|
||||
u16 rainSpriteVisibleCounter;
|
||||
u8 curRainSpriteIndex;
|
||||
@@ -75,12 +77,12 @@ struct Weather
|
||||
u8 snowflakeSpriteCount;
|
||||
u8 targetSnowflakeSpriteCount;
|
||||
// Thunderstorm
|
||||
u16 thunderDelay;
|
||||
u16 thunderCounter;
|
||||
u16 thunderTimer; // general-purpose timer for state transitions
|
||||
u16 thunderSETimer; // timer for thunder sound effect
|
||||
bool8 thunderAllowEnd;
|
||||
bool8 thunderSkipShort;
|
||||
u8 thunderShortRetries;
|
||||
bool8 thunderTriggered;
|
||||
bool8 thunderLongBolt; // true if this cycle will end in a long lightning bolt
|
||||
u8 thunderShortBolts; // the number of short bolts this cycle
|
||||
bool8 thunderEnqueued;
|
||||
// Horizontal fog
|
||||
u16 fogHScrollPosX;
|
||||
u16 fogHScrollCounter;
|
||||
@@ -146,12 +148,12 @@ void StartWeather(void);
|
||||
void SetNextWeather(u8 weather);
|
||||
void SetCurrentAndNextWeather(u8 weather);
|
||||
void SetCurrentAndNextWeatherNoDelay(u8 weather);
|
||||
void ApplyWeatherGammaShiftIfIdle(s8 gammaIndex);
|
||||
void ApplyWeatherGammaShiftIfIdle_Gradual(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay);
|
||||
void ApplyWeatherColorMapIfIdle(s8 colorMapIndex);
|
||||
void ApplyWeatherColorMapIfIdle_Gradual(u8 colorMapIndex, u8 targetColorMapIndex, u8 colorMapStepDelay);
|
||||
void FadeScreen(u8 mode, s8 delay);
|
||||
bool8 IsWeatherNotFadingIn(void);
|
||||
void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex);
|
||||
void ApplyWeatherGammaShiftToPal(u8 paletteIndex);
|
||||
void ApplyWeatherColorMapToPal(u8 paletteIndex);
|
||||
void LoadCustomWeatherSpritePalette(const u16 *palette);
|
||||
void ResetDroughtWeatherPaletteLoading(void);
|
||||
bool8 LoadDroughtWeatherPalettes(void);
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#define NUM_PALS_TOTAL 13
|
||||
#define MAX_MAP_DATA_SIZE 10240
|
||||
|
||||
#define NUM_TILES_PER_METATILE 8
|
||||
|
||||
// Map coordinates are offset by 7 when using the map
|
||||
// buffer because it needs to load sufficient border
|
||||
// metatiles to fill the player's view (the player has
|
||||
@@ -47,7 +49,7 @@ void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout);
|
||||
void CopyPrimaryTilesetToVram(const struct MapLayout *);
|
||||
void CopySecondaryTilesetToVram(const struct MapLayout *);
|
||||
struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection);
|
||||
struct MapConnection *GetConnectionAtCoords(s16 x, s16 y);
|
||||
struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y);
|
||||
void MapGridSetMetatileImpassabilityAt(int x, int y, bool32 impassable);
|
||||
|
||||
// field_region_map.c
|
||||
|
||||
@@ -67,11 +67,8 @@
|
||||
#define DISPLAY_WIDTH 240
|
||||
#define DISPLAY_HEIGHT 160
|
||||
|
||||
#define PLTT_SIZEOF(n) ((n) * sizeof(u16))
|
||||
#define PLTT_SIZE_4BPP PLTT_SIZEOF(16)
|
||||
#define PLTT_SIZE_8BPP PLTT_SIZEOF(256)
|
||||
|
||||
#define PLTT_OFFSET_4BPP(n) ((n) * PLTT_SIZE_4BPP)
|
||||
#define DISPLAY_TILE_WIDTH (DISPLAY_WIDTH / 8)
|
||||
#define DISPLAY_TILE_HEIGHT (DISPLAY_HEIGHT / 8)
|
||||
|
||||
#define TILE_SIZE_4BPP 32
|
||||
#define TILE_SIZE_8BPP 64
|
||||
@@ -81,4 +78,10 @@
|
||||
|
||||
#define TOTAL_OBJ_TILE_COUNT 1024
|
||||
|
||||
#define PLTT_SIZEOF(n) ((n) * sizeof(u16))
|
||||
#define PLTT_SIZE_4BPP PLTT_SIZEOF(16)
|
||||
#define PLTT_SIZE_8BPP PLTT_SIZEOF(256)
|
||||
|
||||
#define PLTT_OFFSET_4BPP(n) ((n) * PLTT_SIZE_4BPP)
|
||||
|
||||
#endif // GUARD_GBA_DEFINES_H
|
||||
|
||||
@@ -1,50 +1,68 @@
|
||||
#ifndef GUARD_GBA_ISAGBPRINT_H
|
||||
#define GUARD_GBA_ISAGBPRINT_H
|
||||
|
||||
#include "gba/types.h"
|
||||
|
||||
#define MGBA_LOG_FATAL (0)
|
||||
#define MGBA_LOG_ERROR (1)
|
||||
#define MGBA_LOG_WARN (2)
|
||||
#define MGBA_LOG_INFO (3)
|
||||
#define MGBA_LOG_DEBUG (4)
|
||||
|
||||
#ifdef NDEBUG
|
||||
#define DebugPrintf(pBuf, ...)
|
||||
#define DebugPrintfLevel(level, pBuf, ...)
|
||||
#define MgbaOpen()
|
||||
#define MgbaClose()
|
||||
#define AGBPrintInit()
|
||||
#define AGBPutc(cChr)
|
||||
#define AGBPrint(pBuf)
|
||||
#define AGBPrintf(pBuf, ...)
|
||||
#define AGBPrintFlush1Block()
|
||||
#define AGBPrintFlush()
|
||||
#define AGBAssert(pFile, nLine, pExpression, nStopProgram)
|
||||
#define DebugAssert(pFile, nLine, pExpression, nStopProgram)
|
||||
#else
|
||||
void AGBPrintInit(void);
|
||||
void AGBPutc(const char cChr);
|
||||
void AGBPrint(const char *pBuf);
|
||||
|
||||
bool32 MgbaOpen(void);
|
||||
void MgbaClose(void);
|
||||
void MgbaPrintf(s32 level, const char *pBuf, ...);
|
||||
void MgbaAssert(const char *pFile, s32 nLine, const char *pExpression, bool32 nStopProgram);
|
||||
void NoCashGBAPrintf(const char *pBuf, ...);
|
||||
void NoCashGBAAssert(const char *pFile, s32 nLine, const char *pExpression, bool32 nStopProgram);
|
||||
void AGBPrintf(const char *pBuf, ...);
|
||||
void AGBPrintFlush1Block(void);
|
||||
void AGBPrintFlush(void);
|
||||
void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram);
|
||||
void AGBPrintInit(void);
|
||||
|
||||
#if (LOG_HANDLER == LOG_HANDLER_MGBA_PRINT)
|
||||
|
||||
#define DebugPrintf(pBuf, ...) MgbaPrintf(MGBA_LOG_INFO, pBuf, ## __VA_ARGS__)
|
||||
#define DebugAssert(pFile, nLine, pExpression, nStopProgram) MgbaAssert(pFile, nLine, pExpression, nStopProgram)
|
||||
#define DebugPrintfLevel(level, pBuf, ...) MgbaPrintf(level, pBuf, ## __VA_ARGS__)
|
||||
|
||||
#elif (LOG_HANDLER == LOG_HANDLER_NOCASH_PRINT)
|
||||
|
||||
#define DebugPrintf(pBuf, ...) NoCashGBAPrintf(pBuf, ## __VA_ARGS__)
|
||||
#define DebugAssert(pFile, nLine, pExpression, nStopProgram) NoCashGBAAssert(pFile, nLine, pExpression, nStopProgram)
|
||||
#define DebugPrintfLevel(level, pBuf, ...) NoCashGBAPrintf(pBuf, ## __VA_ARGS__)
|
||||
|
||||
#else // Default to AGBPrint
|
||||
|
||||
#define DebugPrintf(pBuf, ...) AGBPrintf(pBuf, ## __VA_ARGS__)
|
||||
#define DebugAssert(pFile, nLine, pExpression, nStopProgram) AGBAssert(pFile, nLine, pExpression, nStopProgram)
|
||||
#define DebugPrintfLevel(level, pBuf, ...) AGBPrintf(pBuf, ## __VA_ARGS__)
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#undef AGB_ASSERT
|
||||
#ifdef NDEBUG
|
||||
|
||||
#define AGB_ASSERT(exp)
|
||||
#else
|
||||
#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);
|
||||
#endif
|
||||
#define AGB_ASSERT_EX(exp, file, line)
|
||||
#define AGB_WARNING_EX(exp, file, line)
|
||||
|
||||
// for matching purposes
|
||||
|
||||
#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);
|
||||
#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_ASSERT(exp) (exp) ? ((void*)0) : DebugAssert(__FILE__, __LINE__, #exp, TRUE)
|
||||
#define AGB_WARNING(exp) (exp) ? ((void*)0) : DebugAssert(__FILE__, __LINE__, #exp, FALSE)
|
||||
|
||||
#define AGB_WARNING_EX(exp, file, line) (exp) ? ((void *)0) : DebugAssert(file, line, #exp, FALSE);
|
||||
#define AGB_ASSERT_EX(exp, file, line) (exp) ? ((void *)0) : DebugAssert(file, line, #exp, TRUE);
|
||||
#endif
|
||||
|
||||
#endif // GUARD_GBA_ISAGBPRINT_H
|
||||
|
||||
@@ -10,7 +10,7 @@ struct MultiBootParam
|
||||
{
|
||||
u32 system_work[5]; // 00
|
||||
u8 handshake_data; // 14
|
||||
u8 padding; // 15
|
||||
//u8 padding; // 15
|
||||
u16 handshake_timeout; // 16
|
||||
u8 probe_count; // 18
|
||||
u8 client_data[MULTIBOOT_NCHILD]; // 19
|
||||
|
||||
@@ -40,6 +40,7 @@ struct Berry2
|
||||
u8 bitter;
|
||||
u8 sour;
|
||||
u8 smoothness;
|
||||
//u8 padding;
|
||||
};
|
||||
|
||||
struct EnigmaBerry
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
// Masks/shifts for blocks in the map grid
|
||||
// Map grid blocks consist of a 10 bit metatile id, a 2 bit collision value, and a 4 bit elevation value
|
||||
// This is the data stored in each data/layouts/*/map.bin file
|
||||
#define MAPGRID_METATILE_ID_MASK 0x03FF // Bits 1-10
|
||||
#define MAPGRID_COLLISION_MASK 0x0C00 // Bits 11-12
|
||||
#define MAPGRID_ELEVATION_MASK 0xF000 // Bits 13-16
|
||||
#define MAPGRID_METATILE_ID_MASK 0x03FF // Bits 0-9
|
||||
#define MAPGRID_COLLISION_MASK 0x0C00 // Bits 10-11
|
||||
#define MAPGRID_ELEVATION_MASK 0xF000 // Bits 12-15
|
||||
#define MAPGRID_COLLISION_SHIFT 10
|
||||
#define MAPGRID_ELEVATION_SHIFT 12
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
// Masks/shifts for metatile attributes
|
||||
// Metatile attributes consist of an 8 bit behavior value, 4 unused bits, and a 4 bit layer type value
|
||||
// This is the data stored in each data/tilesets/*/*/metatile_attributes.bin file
|
||||
#define METATILE_ATTR_BEHAVIOR_MASK 0x00FF // Bits 1-8
|
||||
#define METATILE_ATTR_LAYER_MASK 0xF000 // Bits 13-16
|
||||
#define METATILE_ATTR_BEHAVIOR_MASK 0x00FF // Bits 0-7
|
||||
#define METATILE_ATTR_LAYER_MASK 0xF000 // Bits 12-15
|
||||
#define METATILE_ATTR_LAYER_SHIFT 12
|
||||
|
||||
enum {
|
||||
@@ -39,10 +39,10 @@ struct Tileset
|
||||
{
|
||||
/*0x00*/ bool8 isCompressed;
|
||||
/*0x01*/ bool8 isSecondary;
|
||||
/*0x04*/ void *tiles;
|
||||
/*0x08*/ void *palettes;
|
||||
/*0x0c*/ u16 *metatiles;
|
||||
/*0x10*/ u16 *metatileAttributes;
|
||||
/*0x04*/ const u32 *tiles;
|
||||
/*0x08*/ const u16 (*palettes)[16];
|
||||
/*0x0C*/ const u16 *metatiles;
|
||||
/*0x10*/ const u16 *metatileAttributes;
|
||||
/*0x14*/ TilesetCB callback;
|
||||
};
|
||||
|
||||
@@ -51,7 +51,7 @@ struct MapLayout
|
||||
/*0x00*/ s32 width;
|
||||
/*0x04*/ s32 height;
|
||||
/*0x08*/ u16 *border;
|
||||
/*0x0c*/ u16 *map;
|
||||
/*0x0C*/ u16 *map;
|
||||
/*0x10*/ struct Tileset *primaryTileset;
|
||||
/*0x14*/ struct Tileset *secondaryTileset;
|
||||
};
|
||||
@@ -68,16 +68,19 @@ struct ObjectEventTemplate
|
||||
/*0x00*/ u8 localId;
|
||||
/*0x01*/ u8 graphicsId;
|
||||
/*0x02*/ u8 inConnection; // Leftover from FRLG
|
||||
/*0x03*/ //u8 padding1;
|
||||
/*0x04*/ s16 x;
|
||||
/*0x06*/ s16 y;
|
||||
/*0x08*/ u8 elevation;
|
||||
/*0x09*/ u8 movementType;
|
||||
/*0x0A*/ u16 movementRangeX:4;
|
||||
u16 movementRangeY:4;
|
||||
//u16 padding2:8;
|
||||
/*0x0C*/ u16 trainerType;
|
||||
/*0x0E*/ u16 trainerRange_berryTreeId;
|
||||
/*0x10*/ const u8 *script;
|
||||
/*0x14*/ u16 flagId;
|
||||
/*0x16*/ //u8 padding3[2];
|
||||
};
|
||||
|
||||
struct WarpEvent
|
||||
@@ -192,6 +195,7 @@ struct ObjectEvent
|
||||
u32 disableJumpLandingGroundEffect:1;
|
||||
u32 fixedPriority:1;
|
||||
u32 hideReflection:1;
|
||||
//u32 padding:4;
|
||||
/*0x04*/ u8 spriteId;
|
||||
/*0x05*/ u8 graphicsId;
|
||||
/*0x06*/ u8 movementType;
|
||||
@@ -217,6 +221,7 @@ struct ObjectEvent
|
||||
/*0x20*/ u8 previousMovementDirection;
|
||||
/*0x21*/ u8 directionSequenceIndex;
|
||||
/*0x22*/ u8 playerCopyableMovement; // COPY_MOVE_*
|
||||
/*0x23*/ //u8 padding2;
|
||||
/*size = 0x24*/
|
||||
};
|
||||
|
||||
|
||||
@@ -246,9 +246,11 @@ struct ApprenticeMon
|
||||
struct Apprentice
|
||||
{
|
||||
u8 id:5;
|
||||
u8 lvlMode:2; // + 1
|
||||
u8 lvlMode:2;
|
||||
//u8 padding1:1;
|
||||
u8 numQuestions;
|
||||
u8 number;
|
||||
//u8 padding2;
|
||||
struct ApprenticeMon party[MULTI_PARTY_SIZE];
|
||||
u16 speechWon[EASY_CHAT_BATTLE_WORDS_COUNT];
|
||||
u8 playerId[TRAINER_ID_LENGTH];
|
||||
@@ -296,6 +298,7 @@ struct EmeraldBattleTowerRecord
|
||||
/*0x28*/ u16 speechLost[EASY_CHAT_BATTLE_WORDS_COUNT];
|
||||
/*0x34*/ struct BattleTowerPokemon party[MAX_FRONTIER_PARTY_SIZE];
|
||||
/*0xE4*/ u8 language;
|
||||
/*0xE7*/ //u8 padding[3];
|
||||
/*0xE8*/ u32 checksum;
|
||||
};
|
||||
|
||||
@@ -328,14 +331,17 @@ struct DomeMonData
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
u8 evs[NUM_STATS];
|
||||
u8 nature;
|
||||
//u8 padding;
|
||||
};
|
||||
|
||||
struct RentalMon
|
||||
{
|
||||
u16 monId;
|
||||
//u8 padding1[2];
|
||||
u32 personality;
|
||||
u8 ivs;
|
||||
u8 abilityNum;
|
||||
//u8 padding2[2];
|
||||
};
|
||||
|
||||
struct BattleDomeTrainer
|
||||
@@ -357,8 +363,9 @@ struct BattleFrontier
|
||||
/*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer;
|
||||
/*0xCA8*/ u8 challengeStatus;
|
||||
/*0xCA9*/ u8 lvlMode:2;
|
||||
/*0xCA9*/ u8 challengePaused:1;
|
||||
/*0xCA9*/ u8 disableRecordBattle:1;
|
||||
u8 challengePaused:1;
|
||||
u8 disableRecordBattle:1;
|
||||
//u8 padding1:4;
|
||||
/*0xCAA*/ u16 selectedPartyMons[MAX_FRONTIER_PARTY_SIZE];
|
||||
/*0xCB2*/ u16 curChallengeBattleNum; // Battle number / room number (Pike) / floor number (Pyramid)
|
||||
/*0xCB4*/ u16 trainerIds[20];
|
||||
@@ -402,16 +409,19 @@ struct BattleFrontier
|
||||
/*0xE08*/ u16 pikeRecordStreaks[FRONTIER_LVL_MODE_COUNT];
|
||||
/*0xE0C*/ u16 pikeTotalStreaks[FRONTIER_LVL_MODE_COUNT];
|
||||
/*0xE10*/ u8 pikeHintedRoomIndex:3;
|
||||
/*0xE10*/ u8 pikeHintedRoomType:4;
|
||||
/*0xE10*/ u8 pikeHealingRoomsDisabled:1;
|
||||
u8 pikeHintedRoomType:4;
|
||||
u8 pikeHealingRoomsDisabled:1;
|
||||
/*0xE11*/ //u8 padding2;
|
||||
/*0xE12*/ u16 pikeHeldItemsBackup[FRONTIER_PARTY_SIZE];
|
||||
/*0xE18*/ u16 pyramidPrize;
|
||||
/*0xE1A*/ u16 pyramidWinStreaks[FRONTIER_LVL_MODE_COUNT];
|
||||
/*0xE1E*/ u16 pyramidRecordStreaks[FRONTIER_LVL_MODE_COUNT];
|
||||
/*0xE22*/ u16 pyramidRandoms[4];
|
||||
/*0xE2A*/ u8 pyramidTrainerFlags; // 1 bit for each trainer (MAX_PYRAMID_TRAINERS)
|
||||
/*0xE2B*/ //u8 padding3;
|
||||
/*0xE2C*/ struct PyramidBag pyramidBag;
|
||||
/*0xE68*/ u8 pyramidLightRadius;
|
||||
/*0xE69*/ //u8 padding4;
|
||||
/*0xE6A*/ u16 verdanturfTentPrize;
|
||||
/*0xE6C*/ u16 fallarborTentPrize;
|
||||
/*0xE6E*/ u16 slateportTentPrize;
|
||||
@@ -436,6 +446,7 @@ struct ApprenticeQuestion
|
||||
u8 monId:2;
|
||||
u8 moveSlot:2;
|
||||
u8 suggestedChange:2; // TRUE if told to use held item or second move, FALSE if told to use no item or first move
|
||||
//u8 padding;
|
||||
u16 data; // used both as an itemId and a moveId
|
||||
};
|
||||
|
||||
@@ -446,9 +457,11 @@ struct PlayersApprentice
|
||||
/*0xB1*/ u8 questionsAnswered:4;
|
||||
/*0xB1*/ u8 leadMonId:2;
|
||||
/*0xB2*/ u8 party:3;
|
||||
/*0xB2*/ u8 saveId:2;
|
||||
u8 saveId:2;
|
||||
//u8 padding1:3;
|
||||
/*0xB3*/ u8 unused;
|
||||
/*0xB4*/ u8 speciesIds[MULTI_PARTY_SIZE];
|
||||
/*0xB7*/ //u8 padding2;
|
||||
/*0xB8*/ struct ApprenticeQuestion questions[APPRENTICE_MAX_QUESTIONS];
|
||||
};
|
||||
|
||||
@@ -458,6 +471,7 @@ struct RankingHall1P
|
||||
u16 winStreak;
|
||||
u8 name[PLAYER_NAME_LENGTH + 1];
|
||||
u8 language;
|
||||
//u8 padding;
|
||||
};
|
||||
|
||||
struct RankingHall2P
|
||||
@@ -468,6 +482,7 @@ struct RankingHall2P
|
||||
u8 name1[PLAYER_NAME_LENGTH + 1];
|
||||
u8 name2[PLAYER_NAME_LENGTH + 1];
|
||||
u8 language;
|
||||
//u8 padding;
|
||||
};
|
||||
|
||||
struct SaveBlock2
|
||||
@@ -487,6 +502,8 @@ struct SaveBlock2
|
||||
u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET]
|
||||
u16 optionsBattleSceneOff:1; // whether battle animations are disabled
|
||||
u16 regionMapZoom:1; // whether the map is zoomed in
|
||||
//u16 padding1:4;
|
||||
//u16 padding2;
|
||||
/*0x18*/ struct Pokedex pokedex;
|
||||
/*0x90*/ u8 filler_90[0x8];
|
||||
/*0x98*/ struct Time localTimeOffset;
|
||||
@@ -531,6 +548,7 @@ struct SecretBase
|
||||
/*0x1AAD*/ u8 unused;
|
||||
/*0x1AAE*/ u8 decorations[DECOR_MAX_SECRET_BASE];
|
||||
/*0x1ABE*/ u8 decorationPositions[DECOR_MAX_SECRET_BASE];
|
||||
/*0x1ACE*/ //u8 padding[2];
|
||||
/*0x1AD0*/ struct SecretBaseParty party;
|
||||
};
|
||||
|
||||
@@ -545,6 +563,7 @@ struct WarpData
|
||||
s8 mapGroup;
|
||||
s8 mapNum;
|
||||
s8 warpId;
|
||||
//u8 padding;
|
||||
s16 x, y;
|
||||
};
|
||||
|
||||
@@ -589,6 +608,7 @@ struct RamScriptData
|
||||
u8 mapNum;
|
||||
u8 objectId;
|
||||
u8 script[995];
|
||||
//u8 padding;
|
||||
};
|
||||
|
||||
struct RamScript
|
||||
@@ -603,6 +623,7 @@ struct DewfordTrend
|
||||
u16 trendiness:7;
|
||||
u16 maxTrendiness:7;
|
||||
u16 gainingTrendiness:1;
|
||||
//u16 padding:1;
|
||||
u16 rand;
|
||||
u16 words[2];
|
||||
}; /*size = 0x8*/
|
||||
@@ -615,6 +636,7 @@ struct MauvilleManCommon
|
||||
struct MauvilleManBard
|
||||
{
|
||||
/*0x00*/ u8 id;
|
||||
/*0x01*/ //u8 padding1;
|
||||
/*0x02*/ u16 songLyrics[BARD_SONG_LENGTH];
|
||||
/*0x0E*/ u16 temporaryLyrics[BARD_SONG_LENGTH];
|
||||
/*0x1A*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
@@ -622,6 +644,7 @@ struct MauvilleManBard
|
||||
/*0x25*/ u8 playerTrainerId[TRAINER_ID_LENGTH];
|
||||
/*0x29*/ bool8 hasChangedSong;
|
||||
/*0x2A*/ u8 language;
|
||||
/*0x2B*/ //u8 padding2;
|
||||
}; /*size = 0x2C*/
|
||||
|
||||
struct MauvilleManStoryteller
|
||||
@@ -640,9 +663,11 @@ struct MauvilleManGiddy
|
||||
/*0x00*/ u8 id;
|
||||
/*0x01*/ u8 taleCounter;
|
||||
/*0x02*/ u8 questionNum;
|
||||
/*0x03*/ //u8 padding1;
|
||||
/*0x04*/ u16 randomWords[GIDDY_MAX_TALES];
|
||||
/*0x18*/ u8 questionList[GIDDY_MAX_QUESTIONS];
|
||||
/*0x20*/ u8 language;
|
||||
/*0x21*/ //u8 padding2;
|
||||
}; /*size = 0x2C*/
|
||||
|
||||
struct MauvilleManHipster
|
||||
@@ -687,6 +712,7 @@ struct LinkBattleRecords
|
||||
{
|
||||
struct LinkBattleRecord entries[LINK_B_RECORDS_COUNT];
|
||||
u8 languages[LINK_B_RECORDS_COUNT];
|
||||
//u8 padding;
|
||||
};
|
||||
|
||||
struct RecordMixingGiftData
|
||||
@@ -712,6 +738,7 @@ struct ContestWinner
|
||||
u8 monName[POKEMON_NAME_LENGTH + 1];
|
||||
u8 trainerName[PLAYER_NAME_LENGTH + 1];
|
||||
u8 contestRank;
|
||||
//u8 padding;
|
||||
};
|
||||
|
||||
struct Mail
|
||||
@@ -744,6 +771,7 @@ struct DayCare
|
||||
struct DaycareMon mons[DAYCARE_MON_COUNT];
|
||||
u32 offspringPersonality;
|
||||
u8 stepCounter;
|
||||
//u8 padding[3];
|
||||
};
|
||||
|
||||
struct LilycoveLadyQuiz
|
||||
@@ -756,10 +784,10 @@ struct LilycoveLadyQuiz
|
||||
/*0x018*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x020*/ u16 playerTrainerId[TRAINER_ID_LENGTH];
|
||||
/*0x028*/ u16 prize;
|
||||
/*0x02a*/ bool8 waitingForChallenger;
|
||||
/*0x02b*/ u8 questionId;
|
||||
/*0x02c*/ u8 prevQuestionId;
|
||||
/*0x02d*/ u8 language;
|
||||
/*0x02A*/ bool8 waitingForChallenger;
|
||||
/*0x02B*/ u8 questionId;
|
||||
/*0x02C*/ u8 prevQuestionId;
|
||||
/*0x02D*/ u8 language;
|
||||
};
|
||||
|
||||
struct LilycoveLadyFavor
|
||||
@@ -769,10 +797,12 @@ struct LilycoveLadyFavor
|
||||
/*0x002*/ bool8 likedItem;
|
||||
/*0x003*/ u8 numItemsGiven;
|
||||
/*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x00c*/ u8 favorId;
|
||||
/*0x00e*/ u16 itemId;
|
||||
/*0x00C*/ u8 favorId;
|
||||
/*0x00D*/ //u8 padding1;
|
||||
/*0x00E*/ u16 itemId;
|
||||
/*0x010*/ u16 bestItem;
|
||||
/*0x012*/ u8 language;
|
||||
/*0x013*/ //u8 padding2;
|
||||
};
|
||||
|
||||
struct LilycoveLadyContest
|
||||
@@ -782,9 +812,9 @@ struct LilycoveLadyContest
|
||||
/*0x002*/ u8 numGoodPokeblocksGiven;
|
||||
/*0x003*/ u8 numOtherPokeblocksGiven;
|
||||
/*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x00c*/ u8 maxSheen;
|
||||
/*0x00d*/ u8 category;
|
||||
/*0x00e*/ u8 language;
|
||||
/*0x00C*/ u8 maxSheen;
|
||||
/*0x00D*/ u8 category;
|
||||
/*0x00E*/ u8 language;
|
||||
};
|
||||
|
||||
typedef union // 3b58
|
||||
@@ -793,7 +823,7 @@ typedef union // 3b58
|
||||
struct LilycoveLadyFavor favor;
|
||||
struct LilycoveLadyContest contest;
|
||||
u8 id;
|
||||
u8 pad[0x40];
|
||||
u8 filler[0x40];
|
||||
} LilycoveLady;
|
||||
|
||||
struct WaldaPhrase
|
||||
@@ -803,6 +833,7 @@ struct WaldaPhrase
|
||||
u8 iconId;
|
||||
u8 patternId;
|
||||
bool8 patternUnlocked;
|
||||
//u8 padding;
|
||||
};
|
||||
|
||||
struct TrainerNameRecord
|
||||
@@ -818,20 +849,22 @@ struct TrainerHillSave
|
||||
/*0x3D6C*/ u8 unk_3D6C;
|
||||
/*0x3D6D*/ u8 unused;
|
||||
/*0x3D6E*/ u16 receivedPrize:1;
|
||||
/*0x3D6E*/ u16 checkedFinalTime:1;
|
||||
/*0x3D6E*/ u16 spokeToOwner:1;
|
||||
/*0x3D6E*/ u16 hasLost:1;
|
||||
/*0x3D6E*/ u16 maybeECardScanDuringChallenge:1;
|
||||
/*0x3D6E*/ u16 field_3D6E_0f:1;
|
||||
/*0x3D6E*/ u16 mode:2; // HILL_MODE_*
|
||||
u16 checkedFinalTime:1;
|
||||
u16 spokeToOwner:1;
|
||||
u16 hasLost:1;
|
||||
u16 maybeECardScanDuringChallenge:1;
|
||||
u16 field_3D6E_0f:1;
|
||||
u16 mode:2; // HILL_MODE_*
|
||||
//u16 padding:8;
|
||||
};
|
||||
|
||||
struct WonderNewsMetadata
|
||||
{
|
||||
u8 newsType:2;
|
||||
u8 sentCounter:3;
|
||||
u8 getCounter:3;
|
||||
u8 rand;
|
||||
u8 sentRewardCounter:3;
|
||||
u8 rewardCounter:3;
|
||||
u8 berry;
|
||||
//u8 padding[2];
|
||||
};
|
||||
|
||||
struct WonderNews
|
||||
@@ -857,6 +890,7 @@ struct WonderCard
|
||||
u8 bodyText[WONDER_CARD_BODY_TEXT_LINES][WONDER_CARD_TEXT_LENGTH];
|
||||
u8 footerLine1Text[WONDER_CARD_TEXT_LENGTH];
|
||||
u8 footerLine2Text[WONDER_CARD_TEXT_LENGTH];
|
||||
//u8 padding[2];
|
||||
};
|
||||
|
||||
struct WonderCardMetadata
|
||||
@@ -878,7 +912,7 @@ struct MysteryGiftSave
|
||||
struct WonderCardMetadata cardMetadata;
|
||||
u16 questionnaireWords[NUM_QUESTIONNAIRE_WORDS];
|
||||
struct WonderNewsMetadata newsMetadata;
|
||||
u32 trainerIds[2][5]; // Saved ids for 10 trainers, 5 each for battles and trades
|
||||
u32 trainerIds[2][5]; // Saved ids for 10 trainers, 5 each for battles and trades
|
||||
}; // 0x36C 0x3598
|
||||
|
||||
// For external event data storage. The majority of these may have never been used.
|
||||
@@ -903,7 +937,7 @@ struct ExternalEventFlags
|
||||
{
|
||||
u8 usedBoxRS:1; // Set by Pokémon Box: Ruby & Sapphire; denotes whether this save has connected to it and triggered the free False Swipe Swablu Egg giveaway.
|
||||
u8 boxRSEggsUnlocked:2; // Set by Pokémon Box: Ruby & Sapphire; denotes the number of Eggs unlocked from deposits; 1 for ExtremeSpeed Zigzagoon (at 100 deposited), 2 for Pay Day Skitty (at 500 deposited), 3 for Surf Pichu (at 1499 deposited)
|
||||
u8 padding:5;
|
||||
//u8 padding:5;
|
||||
u8 unknownFlag1;
|
||||
u8 receivedGCNJirachi; // Both the US Colosseum Bonus Disc and PAL/AUS Pokémon Channel use this field. One cannot receive a WISHMKR Jirachi and CHANNEL Jirachi with the same savefile.
|
||||
u8 unknownFlag3;
|
||||
@@ -939,9 +973,11 @@ struct SaveBlock1
|
||||
/*0x2E*/ u8 weather;
|
||||
/*0x2F*/ u8 weatherCycleStage;
|
||||
/*0x30*/ u8 flashLevel;
|
||||
/*0x31*/ //u8 padding1;
|
||||
/*0x32*/ u16 mapLayoutId;
|
||||
/*0x34*/ u16 mapView[0x100];
|
||||
/*0x234*/ u8 playerPartyCount;
|
||||
/*0x235*/ //u8 padding2[3];
|
||||
/*0x238*/ struct Pokemon playerParty[PARTY_SIZE];
|
||||
/*0x490*/ u32 money;
|
||||
/*0x494*/ u16 coins;
|
||||
@@ -958,6 +994,7 @@ struct SaveBlock1
|
||||
/*0x9C2*/ u8 unused_9C2[6];
|
||||
/*0x9C8*/ u16 trainerRematchStepCounter;
|
||||
/*0x9CA*/ u8 trainerRematches[MAX_REMATCH_ENTRIES];
|
||||
/*0xA2E*/ //u8 padding3[2];
|
||||
/*0xA30*/ struct ObjectEvent objectEvents[OBJECT_EVENTS_COUNT];
|
||||
/*0xC70*/ struct ObjectEventTemplate objectEventTemplates[OBJECT_EVENT_TEMPLATES_COUNT];
|
||||
/*0x1270*/ u8 flags[NUM_FLAG_BYTES];
|
||||
@@ -975,6 +1012,7 @@ struct SaveBlock1
|
||||
/*0x278E*/ u8 decorationPosters[10];
|
||||
/*0x2798*/ u8 decorationDolls[40];
|
||||
/*0x27C0*/ u8 decorationCushions[10];
|
||||
/*0x27CA*/ //u8 padding4[2];
|
||||
/*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT];
|
||||
/*0x2B50*/ PokeNews pokeNews[POKE_NEWS_COUNT];
|
||||
/*0x2B90*/ u16 outbreakPokemonSpecies;
|
||||
@@ -994,6 +1032,7 @@ struct SaveBlock1
|
||||
/*0x2BD4*/ u16 easyChatBattleLost[EASY_CHAT_BATTLE_WORDS_COUNT];
|
||||
/*0x2BE0*/ struct Mail mail[MAIL_COUNT];
|
||||
/*0x2E20*/ u8 additionalPhrases[NUM_ADDITIONAL_PHRASE_BYTES]; // bitfield for 33 additional phrases in easy chat system
|
||||
/*0x2E25*/ //u8 padding5[3];
|
||||
/*0x2E28*/ OldMan oldMan;
|
||||
/*0x2e64*/ struct DewfordTrend dewfordTrends[SAVED_TRENDS_COUNT];
|
||||
/*0x2e90*/ struct ContestWinner contestWinners[NUM_CONTEST_WINNERS]; // see CONTEST_WINNER_*
|
||||
|
||||
@@ -36,6 +36,7 @@ typedef union // size = 0x24
|
||||
/*0x04*/ u16 words[6];
|
||||
/*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x18*/ u8 language;
|
||||
/*0x19*/ //u8 padding;
|
||||
} fanclubLetter;
|
||||
|
||||
// TVSHOW_RECENT_HAPPENINGS
|
||||
@@ -46,6 +47,7 @@ typedef union // size = 0x24
|
||||
/*0x04*/ u16 words[6];
|
||||
/*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x18*/ u8 language;
|
||||
/*0x19*/ //u8 padding;
|
||||
} recentHappenings;
|
||||
|
||||
// TVSHOW_PKMN_FAN_CLUB_OPINIONS
|
||||
@@ -54,7 +56,7 @@ typedef union // size = 0x24
|
||||
/*0x01*/ bool8 active;
|
||||
/*0x02*/ u16 species;
|
||||
/*0x04*/ u8 friendshipHighNybble:4;
|
||||
/*0x04*/ u8 questionAsked:4;
|
||||
u8 questionAsked:4;
|
||||
/*0x05*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x0D*/ u8 language;
|
||||
/*0x0E*/ u8 pokemonNameLanguage;
|
||||
@@ -70,8 +72,8 @@ typedef union // size = 0x24
|
||||
/*0x01*/ bool8 active;
|
||||
/*0x02*/ u16 words[2];
|
||||
/*0x06*/ u16 species;
|
||||
/*0x08*/ u8 pad_08[3];
|
||||
/*0x0b*/ u8 name[12];
|
||||
/*0x08*/ u8 filler_08[3];
|
||||
/*0x0B*/ u8 name[12];
|
||||
/*0x17*/ u8 language;
|
||||
} dummy;
|
||||
|
||||
@@ -98,8 +100,9 @@ typedef union // size = 0x24
|
||||
/*0x04*/ u16 words[2];
|
||||
/*0x08*/ u8 pokemonNickname[POKEMON_NAME_LENGTH + 1];
|
||||
/*0x13*/ u8 contestCategory:3;
|
||||
/*0x13*/ u8 contestRank:2;
|
||||
/*0x13*/ u8 contestResult:2;
|
||||
u8 contestRank:2;
|
||||
u8 contestResult:2;
|
||||
//u8 padding:1;
|
||||
/*0x14*/ u16 move;
|
||||
/*0x16*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1E*/ u8 language;
|
||||
@@ -121,6 +124,7 @@ typedef union // size = 0x24
|
||||
/*0x1C*/ bool8 wonTheChallenge;
|
||||
/*0x1D*/ u8 language;
|
||||
/*0x1E*/ u8 pokemonNameLanguage;
|
||||
/*0x1F*/ //u8 padding;
|
||||
} bravoTrainerTower;
|
||||
|
||||
// TVSHOW_CONTEST_LIVE_UPDATES
|
||||
@@ -131,14 +135,15 @@ typedef union // size = 0x24
|
||||
/*0x04*/ u8 losingTrainerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x0C*/ u8 loserAppealFlag;
|
||||
/*0x0D*/ u8 round1Placing;
|
||||
/*0x0e*/ u8 round2Placing;
|
||||
/*0x0f*/ u8 winnerAppealFlag;
|
||||
/*0x0E*/ u8 round2Placing;
|
||||
/*0x0F*/ u8 winnerAppealFlag;
|
||||
/*0x10*/ u16 move;
|
||||
/*0x12*/ u16 winningSpecies;
|
||||
/*0x14*/ u8 winningTrainerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1C*/ u8 category;
|
||||
/*0x1D*/ u8 winningTrainerLanguage;
|
||||
/*0x1E*/ u8 losingTrainerLanguage;
|
||||
/*0x1F*/ //u8 padding;
|
||||
} contestLiveUpdates;
|
||||
|
||||
// TVSHOW_3_CHEERS_FOR_POKEBLOCKS
|
||||
@@ -147,7 +152,8 @@ typedef union // size = 0x24
|
||||
/*0x01*/ bool8 active;
|
||||
/*0x02*/ u8 sheen;
|
||||
/*0x03*/ u8 flavor:3;
|
||||
/*0x03*/ u8 color:2;
|
||||
u8 color:2;
|
||||
//u8 padding:3;
|
||||
/*0x04*/ u8 worstBlenderName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x0C*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x14*/ u8 language;
|
||||
@@ -166,6 +172,7 @@ typedef union // size = 0x24
|
||||
/*0x18*/ u8 battleType;
|
||||
/*0x19*/ u8 language;
|
||||
/*0x1A*/ u8 linkOpponentLanguage;
|
||||
/*0x1B*/ //u8 padding;
|
||||
} battleUpdate;
|
||||
|
||||
// TVSHOW_FAN_CLUB_SPECIAL
|
||||
@@ -173,13 +180,14 @@ typedef union // size = 0x24
|
||||
/*0x00*/ u8 kind;
|
||||
/*0x01*/ bool8 active;
|
||||
/*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x0a*/ u8 idLo;
|
||||
/*0x0b*/ u8 idHi;
|
||||
/*0x0c*/ u8 idolName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x0A*/ u8 idLo;
|
||||
/*0x0B*/ u8 idHi;
|
||||
/*0x0C*/ u8 idolName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x14*/ u16 words[1];
|
||||
/*0x16*/ u8 score;
|
||||
/*0x17*/ u8 language;
|
||||
/*0x18*/ u8 idolNameLanguage;
|
||||
/*0x19*/ //u8 padding;
|
||||
} fanClubSpecial;
|
||||
|
||||
// TVSHOW_LILYCOVE_CONTEST_LADY
|
||||
@@ -187,8 +195,8 @@ typedef union // size = 0x24
|
||||
/*0x00*/ u8 kind;
|
||||
/*0x01*/ bool8 active;
|
||||
/*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x0a*/ u8 contestCategory;
|
||||
/*0x0b*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
|
||||
/*0x0A*/ u8 contestCategory;
|
||||
/*0x0B*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
|
||||
/*0x16*/ u8 pokeblockState;
|
||||
/*0x17*/ u8 language;
|
||||
/*0x18*/ u8 pokemonNameLanguage;
|
||||
@@ -206,6 +214,7 @@ typedef union // size = 0x24
|
||||
/*0x10*/ u16 species;
|
||||
/*0x12*/ u8 nBallsUsed;
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} pokemonToday;
|
||||
|
||||
// TVSHOW_SMART_SHOPPER
|
||||
@@ -214,11 +223,12 @@ typedef union // size = 0x24
|
||||
/*0x01*/ bool8 active;
|
||||
/*0x02*/ u8 priceReduced;
|
||||
/*0x03*/ u8 language;
|
||||
/*0x04*/ u8 pad04[2];
|
||||
/*0x04*/ u8 filler_04[2];
|
||||
/*0x06*/ u16 itemIds[SMARTSHOPPER_NUM_ITEMS];
|
||||
/*0x0C*/ u16 itemAmounts[SMARTSHOPPER_NUM_ITEMS];
|
||||
/*0x12*/ u8 shopLocation;
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} smartshopperShow;
|
||||
|
||||
// TVSHOW_POKEMON_TODAY_FAILED
|
||||
@@ -226,13 +236,14 @@ typedef union // size = 0x24
|
||||
/*0x00*/ u8 kind;
|
||||
/*0x01*/ bool8 active;
|
||||
/*0x02*/ u8 language;
|
||||
/*0x03*/ u8 pad03[9];
|
||||
/*0x0c*/ u16 species;
|
||||
/*0x0e*/ u16 species2;
|
||||
/*0x03*/ u8 filler_03[9];
|
||||
/*0x0C*/ u16 species;
|
||||
/*0x0E*/ u16 species2;
|
||||
/*0x10*/ u8 nBallsUsed;
|
||||
/*0x11*/ u8 outcome;
|
||||
/*0x12*/ u8 location;
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} pokemonTodayFailed;
|
||||
|
||||
// TVSHOW_FISHING_ADVICE
|
||||
@@ -243,8 +254,9 @@ typedef union // size = 0x24
|
||||
/*0x03*/ u8 nFails;
|
||||
/*0x04*/ u16 species;
|
||||
/*0x06*/ u8 language;
|
||||
/*0x07*/ u8 pad07[12];
|
||||
/*0x07*/ u8 filler_07[12];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} pokemonAngler;
|
||||
|
||||
// TVSHOW_WORLD_OF_MASTERS
|
||||
@@ -255,10 +267,11 @@ typedef union // size = 0x24
|
||||
/*0x04*/ u16 caughtPoke;
|
||||
/*0x06*/ u16 steps;
|
||||
/*0x08*/ u16 species;
|
||||
/*0x0a*/ u8 location;
|
||||
/*0x0b*/ u8 language;
|
||||
/*0x0c*/ u8 pad0c[7];
|
||||
/*0x0A*/ u8 location;
|
||||
/*0x0B*/ u8 language;
|
||||
/*0x0C*/ u8 filler_0C[7];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding2;
|
||||
} worldOfMasters;
|
||||
|
||||
// TVSHOW_TODAYS_RIVAL_TRAINER
|
||||
@@ -271,10 +284,11 @@ typedef union // size = 0x24
|
||||
/*0x06*/ u8 nGoldSymbols;
|
||||
/*0x07*/ u8 location;
|
||||
/*0x08*/ u16 battlePoints;
|
||||
/*0x0a*/ u16 mapLayoutId;
|
||||
/*0x0c*/ u8 language;
|
||||
/*0x0d*/ u8 filler_0d[6];
|
||||
/*0x0A*/ u16 mapLayoutId;
|
||||
/*0x0C*/ u8 language;
|
||||
/*0x0D*/ u8 filler_0D[6];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding2;
|
||||
} rivalTrainer;
|
||||
|
||||
// TVSHOW_TREND_WATCHER
|
||||
@@ -285,8 +299,9 @@ typedef union // size = 0x24
|
||||
/*0x04*/ u16 words[2];
|
||||
/*0x08*/ u8 gender;
|
||||
/*0x09*/ u8 language;
|
||||
/*0x0a*/ u8 filler_0a[9];
|
||||
/*0x0A*/ u8 filler_0a[9];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} trendWatcher;
|
||||
|
||||
// TVSHOW_TREASURE_INVESTIGATORS
|
||||
@@ -299,6 +314,7 @@ typedef union // size = 0x24
|
||||
/*0x06*/ u16 mapLayoutId;
|
||||
/*0x08*/ u8 filler_08[11];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} treasureInvestigators;
|
||||
|
||||
// TVSHOW_FIND_THAT_GAMER
|
||||
@@ -312,6 +328,7 @@ typedef union // size = 0x24
|
||||
/*0x08*/ u8 language;
|
||||
/*0x09*/ u8 filler_09[10];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} findThatGamer;
|
||||
|
||||
// TVSHOW_BREAKING_NEWS
|
||||
@@ -323,11 +340,12 @@ typedef union // size = 0x24
|
||||
/*0x05*/ u8 outcome;
|
||||
/*0x06*/ u16 caughtMonBall;
|
||||
/*0x08*/ u16 balls;
|
||||
/*0x0a*/ u16 poke1Species;
|
||||
/*0x0c*/ u16 lastUsedMove;
|
||||
/*0x0e*/ u8 language;
|
||||
/*0x0f*/ u8 filler_0f[4];
|
||||
/*0x0A*/ u16 poke1Species;
|
||||
/*0x0C*/ u16 lastUsedMove;
|
||||
/*0x0E*/ u8 language;
|
||||
/*0x0F*/ u8 filler_0f[4];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} breakingNews;
|
||||
|
||||
// TVSHOW_SECRET_BASE_VISIT
|
||||
@@ -338,10 +356,11 @@ typedef union // size = 0x24
|
||||
/*0x03*/ u8 numDecorations;
|
||||
/*0x04*/ u8 decorations[4];
|
||||
/*0x08*/ u16 species;
|
||||
/*0x0a*/ u16 move;
|
||||
/*0x0c*/ u8 language;
|
||||
/*0x0d*/ u8 filler_0d[6];
|
||||
/*0x0A*/ u16 move;
|
||||
/*0x0C*/ u8 language;
|
||||
/*0x0D*/ u8 filler_0d[6];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} secretBaseVisit;
|
||||
|
||||
// TVSHOW_LOTTO_WINNER
|
||||
@@ -353,6 +372,7 @@ typedef union // size = 0x24
|
||||
/*0x05*/ u8 language;
|
||||
/*0x06*/ u8 filler_06[13];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} lottoWinner;
|
||||
|
||||
// TVSHOW_BATTLE_SEMINAR
|
||||
@@ -363,11 +383,12 @@ typedef union // size = 0x24
|
||||
/*0x04*/ u16 foeSpecies;
|
||||
/*0x06*/ u16 species;
|
||||
/*0x08*/ u16 otherMoves[3];
|
||||
/*0x0e*/ u16 betterMove;
|
||||
/*0x0E*/ u16 betterMove;
|
||||
/*0x10*/ u8 nOtherMoves;
|
||||
/*0x11*/ u8 language;
|
||||
/*0x12*/ u8 filler_12[1];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} battleSeminar;
|
||||
|
||||
// TVSHOW_TRAINER_FAN_CLUB
|
||||
@@ -379,6 +400,7 @@ typedef union // size = 0x24
|
||||
/*0x08*/ u8 language;
|
||||
/*0x09*/ u8 filler_09[10];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} trainerFanClub;
|
||||
|
||||
// TVSHOW_CUTIES
|
||||
@@ -388,7 +410,7 @@ typedef union // size = 0x24
|
||||
/*0x02*/ u8 nRibbons;
|
||||
/*0x03*/ u8 selectedRibbon;
|
||||
/*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
|
||||
/*0x0f*/ u8 language;
|
||||
/*0x0F*/ u8 language;
|
||||
/*0x10*/ u8 pokemonNameLanguage;
|
||||
/*0x11*/ u8 filler_12[2];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
@@ -402,11 +424,12 @@ typedef union // size = 0x24
|
||||
/*0x04*/ u16 species1;
|
||||
/*0x06*/ u16 species2;
|
||||
/*0x08*/ u16 species3;
|
||||
/*0x0a*/ u16 species4;
|
||||
/*0x0c*/ u8 language;
|
||||
/*0x0d*/ u8 facilityAndMode;
|
||||
/*0x0e*/ u8 filler_0e[5];
|
||||
/*0x0A*/ u16 species4;
|
||||
/*0x0C*/ u8 language;
|
||||
/*0x0D*/ u8 facilityAndMode;
|
||||
/*0x0E*/ u8 filler_0e[5];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} frontier;
|
||||
|
||||
// TVSHOW_NUMBER_ONE
|
||||
@@ -418,6 +441,7 @@ typedef union // size = 0x24
|
||||
/*0x05*/ u8 language;
|
||||
/*0x06*/ u8 filler_06[13];
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1B*/ //u8 padding;
|
||||
} numberOne;
|
||||
|
||||
// TVSHOW_SECRET_BASE_SECRETS
|
||||
@@ -426,12 +450,13 @@ typedef union // size = 0x24
|
||||
/*0x01*/ bool8 active;
|
||||
/*0x02*/ u16 stepsInBase;
|
||||
/*0x04*/ u8 baseOwnersName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x0c*/ u32 flags;
|
||||
/*0x0C*/ u32 flags;
|
||||
/*0x10*/ u16 item;
|
||||
/*0x12*/ u8 savedState;
|
||||
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x1b*/ u8 language;
|
||||
/*0x1c*/ u8 baseOwnersNameLanguage;
|
||||
/*0x1B*/ u8 language;
|
||||
/*0x1C*/ u8 baseOwnersNameLanguage;
|
||||
/*0x1D*/ //u8 padding[3];
|
||||
} secretBaseSecrets;
|
||||
|
||||
// TVSHOW_SAFARI_FAN_CLUB
|
||||
@@ -463,6 +488,7 @@ typedef union // size = 0x24
|
||||
/*0x15*/ u8 unused5;
|
||||
/*0x16*/ u16 daysLeft;
|
||||
/*0x18*/ u8 language;
|
||||
/*0x19*/ //u8 padding;
|
||||
} massOutbreak;
|
||||
} TVShow;
|
||||
|
||||
@@ -475,23 +501,23 @@ typedef struct
|
||||
|
||||
struct GabbyAndTyData
|
||||
{
|
||||
/*2ba4*/ u16 mon1;
|
||||
/*2ba6*/ u16 mon2;
|
||||
/*2ba8*/ u16 lastMove;
|
||||
/*2baa*/ u16 quote[1];
|
||||
/*2bac*/ u8 mapnum;
|
||||
/*2bad*/ u8 battleNum;
|
||||
/*2bae*/ u8 battleTookMoreThanOneTurn:1;
|
||||
/*2bae*/ u8 playerLostAMon:1;
|
||||
/*2bae*/ u8 playerUsedHealingItem:1;
|
||||
/*2bae*/ u8 playerThrewABall:1;
|
||||
/*2bae*/ u8 onAir:1;
|
||||
/*2bae*/ u8 valA_5:3;
|
||||
/*2baf*/ u8 battleTookMoreThanOneTurn2:1;
|
||||
/*2baf*/ u8 playerLostAMon2:1;
|
||||
/*2baf*/ u8 playerUsedHealingItem2:1;
|
||||
/*2baf*/ u8 playerThrewABall2:1;
|
||||
/*2baf*/ u8 valB_4:4;
|
||||
/*2BA4*/ u16 mon1;
|
||||
/*2BA6*/ u16 mon2;
|
||||
/*2BA8*/ u16 lastMove;
|
||||
/*2BAA*/ u16 quote[1];
|
||||
/*2BAC*/ u8 mapnum;
|
||||
/*2BAD*/ u8 battleNum;
|
||||
/*2BAE*/ u8 battleTookMoreThanOneTurn:1;
|
||||
u8 playerLostAMon:1;
|
||||
u8 playerUsedHealingItem:1;
|
||||
u8 playerThrewABall:1;
|
||||
u8 onAir:1;
|
||||
u8 valA_5:3;
|
||||
/*2BAF*/ u8 battleTookMoreThanOneTurn2:1;
|
||||
u8 playerLostAMon2:1;
|
||||
u8 playerUsedHealingItem2:1;
|
||||
u8 playerThrewABall2:1;
|
||||
u8 valB_4:4;
|
||||
};
|
||||
|
||||
#endif //GUARD_GLOBAL_TV_H
|
||||
|
||||
@@ -4138,8 +4138,8 @@ extern const u16 gTilesetAnims_BattleDomePals0_1[];
|
||||
extern const u16 gTilesetAnims_BattleDomePals0_2[];
|
||||
extern const u16 gTilesetAnims_BattleDomePals0_3[];
|
||||
|
||||
extern const u32 gBattleArenaJudgementSymbolsGfx[];
|
||||
extern const u32 gBattleArenaJudgementSymbolsPalette[];
|
||||
extern const u32 gBattleArenaJudgmentSymbolsGfx[];
|
||||
extern const u32 gBattleArenaJudgmentSymbolsPalette[];
|
||||
|
||||
extern const u32 gBattleWindowTextPalette[];
|
||||
|
||||
@@ -4949,9 +4949,9 @@ extern const u16 gContestResultsTitle_Tough_Tilemap[];
|
||||
extern const u16 gContestResultsTitle_Tilemap[];
|
||||
|
||||
// Trainer Card.
|
||||
extern const u16 gHoennTrainerCard0Star_Pal[];
|
||||
extern const u16 gHoennTrainerCardGreen_Pal[];
|
||||
extern const u32 gHoennTrainerCard_Gfx[];
|
||||
extern const u16 gKantoTrainerCard0Star_Pal[];
|
||||
extern const u16 gKantoTrainerCardBlue_Pal[];
|
||||
extern const u32 gKantoTrainerCard_Gfx[];
|
||||
extern const u32 gKantoTrainerCardBg_Tilemap[];
|
||||
extern const u32 gHoennTrainerCardBack_Tilemap[];
|
||||
|
||||
@@ -62,13 +62,11 @@ u16 CountTotalItemQuantityInBag(u16 itemId);
|
||||
bool8 AddPyramidBagItem(u16 itemId, u16 count);
|
||||
bool8 RemovePyramidBagItem(u16 itemId, u16 count);
|
||||
const u8 *ItemId_GetName(u16 itemId);
|
||||
u16 ItemId_GetId(u16 itemId);
|
||||
u16 ItemId_GetPrice(u16 itemId);
|
||||
u8 ItemId_GetHoldEffect(u16 itemId);
|
||||
u8 ItemId_GetHoldEffectParam(u16 itemId);
|
||||
const u8 *ItemId_GetDescription(u16 itemId);
|
||||
u8 ItemId_GetImportance(u16 itemId);
|
||||
u8 ItemId_GetRegistrability(u16 itemId);
|
||||
u8 ItemId_GetPocket(u16 itemId);
|
||||
u8 ItemId_GetType(u16 itemId);
|
||||
ItemUseFunc ItemId_GetFieldFunc(u16 itemId);
|
||||
|
||||
@@ -100,8 +100,8 @@
|
||||
#define LINKTYPE_BERRY_BLENDER_SETUP 0x4411
|
||||
#define LINKTYPE_BERRY_BLENDER 0x4422
|
||||
#define LINKTYPE_MYSTERY_EVENT 0x5501
|
||||
#define LINKTYPE_UNUSED_EREADER 0x5502 // Unused, inferred from gap
|
||||
#define LINKTYPE_EREADER 0x5503
|
||||
#define LINKTYPE_EREADER_FRLG 0x5502
|
||||
#define LINKTYPE_EREADER_EM 0x5503
|
||||
#define LINKTYPE_CONTEST_GMODE 0x6601
|
||||
#define LINKTYPE_CONTEST_EMODE 0x6602
|
||||
|
||||
@@ -284,7 +284,7 @@ void SerialCB(void);
|
||||
bool32 InUnionRoom(void);
|
||||
void LoadWirelessStatusIndicatorSpriteGfx(void);
|
||||
bool8 IsLinkTaskFinished(void);
|
||||
void CreateWirelessStatusIndicatorSprite(u8, u8);
|
||||
void CreateWirelessStatusIndicatorSprite(u8 x, u8 y);
|
||||
void SetLinkStandbyCallback(void);
|
||||
void SetWirelessCommType1(void);
|
||||
void CheckShouldAdvanceLinkState(void);
|
||||
|
||||
@@ -97,19 +97,19 @@ struct RfuGameCompatibilityData
|
||||
// wireless play (the kind the Pokémon games use) the gname data can be used for
|
||||
// anything the developers want. This struct is what GF decided to use it for.
|
||||
// It can be up to 13 bytes in size (RFU_GAME_NAME_LENGTH).
|
||||
// The player's name is sent separately as the username ("uname"), and does not
|
||||
// The player's name is sent separately as the username ("uname"), and does not
|
||||
// use a struct (gHostRfuUsername).
|
||||
struct __attribute__((packed, aligned(2))) RfuGameData
|
||||
{
|
||||
struct RfuGameCompatibilityData compatibility;
|
||||
u8 partnerInfo[RFU_CHILD_MAX];
|
||||
u8 partnerInfo[RFU_CHILD_MAX];
|
||||
u16 tradeSpecies:10;
|
||||
u16 tradeType:6;
|
||||
u8 activity:7;
|
||||
u8 startedActivity:1;
|
||||
u8 playerGender:1;
|
||||
u8 tradeLevel:7;
|
||||
u8 padding;
|
||||
u8 filler;
|
||||
};
|
||||
|
||||
// Constants for getting/setting information in 'partnerInfo' of RfuGameData.
|
||||
@@ -118,7 +118,7 @@ struct __attribute__((packed, aligned(2))) RfuGameData
|
||||
// Bits 0-2 are a shortened trainerId
|
||||
// Bit 3 is the player's gender
|
||||
// Bits 4-6 are unknown/unused
|
||||
// Bit 7 is an 'active' flag
|
||||
// Bit 7 is an 'active' flag
|
||||
#define PINFO_TID_MASK 0x7
|
||||
#define PINFO_GENDER_SHIFT 3
|
||||
#define PINFO_ACTIVE_FLAG (1 << 7)
|
||||
|
||||
@@ -7,12 +7,20 @@
|
||||
#define LIST_CANCEL -2
|
||||
#define LIST_HEADER -3
|
||||
|
||||
#define LIST_NO_MULTIPLE_SCROLL 0
|
||||
#define LIST_MULTIPLE_SCROLL_DPAD 1
|
||||
#define LIST_MULTIPLE_SCROLL_L_R 2
|
||||
enum {
|
||||
LIST_NO_MULTIPLE_SCROLL,
|
||||
LIST_MULTIPLE_SCROLL_DPAD,
|
||||
LIST_MULTIPLE_SCROLL_L_R,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
enum {
|
||||
CURSOR_BLACK_ARROW,
|
||||
CURSOR_INVISIBLE,
|
||||
CURSOR_RED_OUTLINE,
|
||||
CURSOR_RED_ARROW,
|
||||
};
|
||||
|
||||
enum {
|
||||
SCROLL_ARROW_LEFT,
|
||||
SCROLL_ARROW_RIGHT,
|
||||
SCROLL_ARROW_UP,
|
||||
|
||||
@@ -10,24 +10,24 @@
|
||||
* toolchains. If this is not done, the ClearSav functions will end up erasing
|
||||
* the wrong memory leading to various glitches.
|
||||
*/
|
||||
struct SaveBlock2DMA {
|
||||
struct SaveBlock2ASLR {
|
||||
struct SaveBlock2 block;
|
||||
u8 dma[SAVEBLOCK_MOVE_RANGE];
|
||||
u8 aslr[SAVEBLOCK_MOVE_RANGE];
|
||||
};
|
||||
|
||||
struct SaveBlock1DMA {
|
||||
struct SaveBlock1ASLR {
|
||||
struct SaveBlock1 block;
|
||||
u8 dma[SAVEBLOCK_MOVE_RANGE];
|
||||
u8 aslr[SAVEBLOCK_MOVE_RANGE];
|
||||
};
|
||||
|
||||
struct PokemonStorageDMA {
|
||||
struct PokemonStorageASLR {
|
||||
struct PokemonStorage block;
|
||||
u8 dma[SAVEBLOCK_MOVE_RANGE];
|
||||
u8 aslr[SAVEBLOCK_MOVE_RANGE];
|
||||
};
|
||||
|
||||
extern struct SaveBlock1DMA gSaveblock1;
|
||||
extern struct SaveBlock2DMA gSaveblock2;
|
||||
extern struct PokemonStorageDMA gPokemonStorage;
|
||||
extern struct SaveBlock1ASLR gSaveblock1;
|
||||
extern struct SaveBlock2ASLR gSaveblock2;
|
||||
extern struct PokemonStorageASLR gPokemonStorage;
|
||||
|
||||
extern bool32 gFlashMemoryPresent;
|
||||
extern struct SaveBlock1 *gSaveBlock1Ptr;
|
||||
|
||||
@@ -92,7 +92,7 @@ void PrintMenuActionGrid(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth
|
||||
u8 InitMenuActionGrid(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos);
|
||||
u8 ChangeMenuGridCursorPosition(s8 deltaX, s8 deltaY);
|
||||
u8 GetStartMenuWindowId(void);
|
||||
void ListMenuLoadStdPalAt(u8, u8);
|
||||
void ListMenuLoadStdPalAt(u8 palOffset, u8 palId);
|
||||
u8 Menu_MoveCursor(s8 cursorDelta);
|
||||
u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta);
|
||||
void DrawStdWindowFrame(u8 windowId, bool8 CopyToVram);
|
||||
|
||||
52
include/mini_printf.h
Normal file
52
include/mini_printf.h
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* The Minimal snprintf() implementation
|
||||
*
|
||||
* Copyright (c) 2013 Michal Ludvig <michal@logix.cz>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the auhor nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Courtey of https://github.com/mludvig/mini-printf
|
||||
* stripped to reduce file size for agb needs
|
||||
*/
|
||||
|
||||
#ifndef __MINI_PRINTF__
|
||||
#define __MINI_PRINTF__
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "gba/types.h"
|
||||
|
||||
#ifdef NDEBUG
|
||||
|
||||
#define mini_vsnprintf(buffer, buffer_len, fmt, va)
|
||||
#define mini_vpprintf(buf, fmt, va)
|
||||
|
||||
#else
|
||||
|
||||
s32 mini_vsnprintf(char* buffer, u32 buffer_len, const char *fmt, va_list va);
|
||||
s32 mini_vpprintf(void* buf, const char *fmt, va_list va);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
@@ -59,22 +59,22 @@ extern u8 gPaletteDecompressionBuffer[];
|
||||
extern u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE];
|
||||
extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE];
|
||||
|
||||
void LoadCompressedPalette(const u32 *, u16, u16);
|
||||
void LoadPalette(const void *, u16, u16);
|
||||
void FillPalette(u16, u16, u16);
|
||||
void LoadCompressedPalette(const u32 *src, u16 offset, u16 size);
|
||||
void LoadPalette(const void *src, u16 offset, u16 size);
|
||||
void FillPalette(u16 value, u16 offset, u16 size);
|
||||
void TransferPlttBuffer(void);
|
||||
u8 UpdatePaletteFade(void);
|
||||
void ResetPaletteFade(void);
|
||||
bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16);
|
||||
void PaletteStruct_ResetById(u16);
|
||||
bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, u16 blendColor);
|
||||
void PaletteStruct_ResetById(u16 id);
|
||||
void ResetPaletteFadeControl(void);
|
||||
void InvertPlttBuffer(u32);
|
||||
void TintPlttBuffer(u32, s8, s8, s8);
|
||||
void UnfadePlttBuffer(u32);
|
||||
void BeginFastPaletteFade(u8);
|
||||
void BeginHardwarePaletteFade(u8, u8, u8, u8, u8);
|
||||
void InvertPlttBuffer(u32 selectedPalettes);
|
||||
void TintPlttBuffer(u32 selectedPalettes, s8 r, s8 g, s8 b);
|
||||
void UnfadePlttBuffer(u32 selectedPalettes);
|
||||
void BeginFastPaletteFade(u8 submode);
|
||||
void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 shouldResetBlendRegisters);
|
||||
void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color);
|
||||
void BlendPalettesUnfaded(u32, u8, u16);
|
||||
void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color);
|
||||
void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id);
|
||||
void TintPalette_GrayScale(u16 *palette, u16 count);
|
||||
void TintPalette_GrayScale2(u16 *palette, u16 count);
|
||||
|
||||
@@ -287,7 +287,7 @@ struct BattlePokemon
|
||||
/*0x54*/ u32 otId;
|
||||
};
|
||||
|
||||
struct BaseStats
|
||||
struct SpeciesInfo
|
||||
{
|
||||
/* 0x00 */ u8 baseHP;
|
||||
/* 0x01 */ u8 baseAttack;
|
||||
@@ -295,8 +295,7 @@ struct BaseStats
|
||||
/* 0x03 */ u8 baseSpeed;
|
||||
/* 0x04 */ u8 baseSpAttack;
|
||||
/* 0x05 */ u8 baseSpDefense;
|
||||
/* 0x06 */ u8 type1;
|
||||
/* 0x07 */ u8 type2;
|
||||
/* 0x06 */ u8 types[2];
|
||||
/* 0x08 */ u8 catchRate;
|
||||
/* 0x09 */ u8 expYield;
|
||||
/* 0x0A */ u16 evYield_HP:2;
|
||||
@@ -311,8 +310,7 @@ struct BaseStats
|
||||
/* 0x11 */ u8 eggCycles;
|
||||
/* 0x12 */ u8 friendship;
|
||||
/* 0x13 */ u8 growthRate;
|
||||
/* 0x14 */ u8 eggGroup1;
|
||||
/* 0x15 */ u8 eggGroup2;
|
||||
/* 0x14 */ u8 eggGroups[2];
|
||||
/* 0x16 */ u8 abilities[2];
|
||||
/* 0x18 */ u8 safariZoneFleeRate;
|
||||
/* 0x19 */ u8 bodyColor : 7;
|
||||
@@ -363,7 +361,7 @@ struct Evolution
|
||||
| (((personality) & 0x00000003) >> 0) \
|
||||
) % NUM_UNOWN_FORMS)
|
||||
|
||||
#define GET_SHINY_VALUE(otId, personality)HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality)
|
||||
#define GET_SHINY_VALUE(otId, personality) (HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality))
|
||||
|
||||
extern u8 gPlayerPartyCount;
|
||||
extern struct Pokemon gPlayerParty[PARTY_SIZE];
|
||||
@@ -374,7 +372,7 @@ extern struct SpriteTemplate gMultiuseSpriteTemplate;
|
||||
extern const struct BattleMove gBattleMoves[];
|
||||
extern const u8 gFacilityClassToPicIndex[];
|
||||
extern const u8 gFacilityClassToTrainerClass[];
|
||||
extern const struct BaseStats gBaseStats[];
|
||||
extern const struct SpeciesInfo gSpeciesInfo[];
|
||||
extern const u8 *const gItemEffectTable[];
|
||||
extern const u32 gExperienceTables[][MAX_LEVEL + 1];
|
||||
extern const u16 *const gLevelUpLearnsets[];
|
||||
@@ -382,7 +380,7 @@ extern const u8 gPPUpGetMask[];
|
||||
extern const u8 gPPUpClearMask[];
|
||||
extern const u8 gPPUpAddValues[];
|
||||
extern const u8 gStatStageRatios[MAX_STAT_STAGE + 1][2];
|
||||
extern const u16 gLinkPlayerFacilityClasses[];
|
||||
extern const u16 gUnionRoomFacilityClasses[];
|
||||
extern const struct SpriteTemplate gBattlerSpriteTemplates[];
|
||||
extern const s8 gNatureStatTable[][5];
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ extern const u8 *const gNatureNamePointers[];
|
||||
|
||||
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
|
||||
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove);
|
||||
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
|
||||
void ShowPokemonSummaryScreenHandleDeoxys(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
|
||||
u8 GetMoveSlotToReplace(void);
|
||||
void SummaryScreen_SetAnimDelayTaskId(u8 taskId);
|
||||
|
||||
|
||||
@@ -116,21 +116,21 @@ enum
|
||||
#define POKENAV_MENU_IDS_START 100000
|
||||
enum
|
||||
{
|
||||
POKENAV_MAIN_MENU = POKENAV_MENU_IDS_START, // The main menu where the player selects Hoenn Map/Condition/Match Call/Ribbons
|
||||
POKENAV_MAIN_MENU_CURSOR_ON_MAP,
|
||||
POKENAV_CONDITION_MENU, // The first Condition screen where the player selects Party or Search
|
||||
POKENAV_CONDITION_SEARCH_MENU, // The Condition search menu where the player selects a search parameter
|
||||
POKENAV_MAIN_MENU_CURSOR_ON_MATCH_CALL,
|
||||
POKENAV_MAIN_MENU_CURSOR_ON_RIBBONS,
|
||||
POKENAV_REGION_MAP,
|
||||
POKENAV_CONDITION_GRAPH_PARTY, // The Condition graph screen when Party has been selected
|
||||
POKENAV_CONDITION_SEARCH_RESULTS, // The list of results from a Condition search
|
||||
POKENAV_CONDITION_GRAPH_SEARCH, // The Condition graph screen when a search result has been selected
|
||||
POKENAV_RETURN_CONDITION_SEARCH, // Exited the graph screen back to the list of Condition search results
|
||||
POKENAV_MATCH_CALL,
|
||||
POKENAV_RIBBONS_MON_LIST, // The list of Pokémon with ribbons
|
||||
POKENAV_RIBBONS_SUMMARY_SCREEN, // The ribbon summary screen shown when a Pokémon has been selected
|
||||
POKENAV_RIBBONS_RETURN_TO_MON_LIST, // Exited the summary screen back to the ribbon list
|
||||
POKENAV_MAIN_MENU = POKENAV_MENU_IDS_START, // The main menu where the player selects Hoenn Map/Condition/Match Call/Ribbons
|
||||
POKENAV_MAIN_MENU_CURSOR_ON_MAP,
|
||||
POKENAV_CONDITION_MENU, // The first Condition screen where the player selects Party or Search
|
||||
POKENAV_CONDITION_SEARCH_MENU, // The Condition search menu where the player selects a search parameter
|
||||
POKENAV_MAIN_MENU_CURSOR_ON_MATCH_CALL,
|
||||
POKENAV_MAIN_MENU_CURSOR_ON_RIBBONS,
|
||||
POKENAV_REGION_MAP,
|
||||
POKENAV_CONDITION_GRAPH_PARTY, // The Condition graph screen when Party has been selected
|
||||
POKENAV_CONDITION_SEARCH_RESULTS, // The list of results from a Condition search
|
||||
POKENAV_CONDITION_GRAPH_SEARCH, // The Condition graph screen when a search result has been selected
|
||||
POKENAV_RETURN_CONDITION_SEARCH, // Exited the graph screen back to the list of Condition search results
|
||||
POKENAV_MATCH_CALL,
|
||||
POKENAV_RIBBONS_MON_LIST, // The list of Pokémon with ribbons
|
||||
POKENAV_RIBBONS_SUMMARY_SCREEN, // The ribbon summary screen shown when a Pokémon has been selected
|
||||
POKENAV_RIBBONS_RETURN_TO_MON_LIST, // Exited the summary screen back to the ribbon list
|
||||
};
|
||||
|
||||
enum
|
||||
@@ -185,28 +185,28 @@ enum
|
||||
|
||||
enum
|
||||
{
|
||||
MC_HEADER_MR_STONE,
|
||||
MC_HEADER_PROF_BIRCH,
|
||||
MC_HEADER_BRENDAN,
|
||||
MC_HEADER_MAY,
|
||||
MC_HEADER_WALLY,
|
||||
MC_HEADER_NORMAN,
|
||||
MC_HEADER_MOM,
|
||||
MC_HEADER_STEVEN,
|
||||
MC_HEADER_SCOTT,
|
||||
MC_HEADER_ROXANNE,
|
||||
MC_HEADER_BRAWLY,
|
||||
MC_HEADER_WATTSON,
|
||||
MC_HEADER_FLANNERY,
|
||||
MC_HEADER_WINONA,
|
||||
MC_HEADER_TATE_LIZA,
|
||||
MC_HEADER_JUAN,
|
||||
MC_HEADER_SIDNEY,
|
||||
MC_HEADER_PHOEBE,
|
||||
MC_HEADER_GLACIA,
|
||||
MC_HEADER_DRAKE,
|
||||
MC_HEADER_WALLACE,
|
||||
MC_HEADER_COUNT
|
||||
MC_HEADER_MR_STONE,
|
||||
MC_HEADER_PROF_BIRCH,
|
||||
MC_HEADER_BRENDAN,
|
||||
MC_HEADER_MAY,
|
||||
MC_HEADER_WALLY,
|
||||
MC_HEADER_NORMAN,
|
||||
MC_HEADER_MOM,
|
||||
MC_HEADER_STEVEN,
|
||||
MC_HEADER_SCOTT,
|
||||
MC_HEADER_ROXANNE,
|
||||
MC_HEADER_BRAWLY,
|
||||
MC_HEADER_WATTSON,
|
||||
MC_HEADER_FLANNERY,
|
||||
MC_HEADER_WINONA,
|
||||
MC_HEADER_TATE_LIZA,
|
||||
MC_HEADER_JUAN,
|
||||
MC_HEADER_SIDNEY,
|
||||
MC_HEADER_PHOEBE,
|
||||
MC_HEADER_GLACIA,
|
||||
MC_HEADER_DRAKE,
|
||||
MC_HEADER_WALLACE,
|
||||
MC_HEADER_COUNT
|
||||
};
|
||||
|
||||
enum
|
||||
|
||||
@@ -3,47 +3,6 @@
|
||||
|
||||
extern EWRAM_DATA struct ItemSlot gMartPurchaseHistory[3];
|
||||
|
||||
enum
|
||||
{
|
||||
MART_TYPE_NORMAL, // normal mart
|
||||
MART_TYPE_DECOR,
|
||||
MART_TYPE_DECOR2,
|
||||
};
|
||||
|
||||
// shop view window NPC info enum
|
||||
enum
|
||||
{
|
||||
OBJ_EVENT_ID,
|
||||
X_COORD,
|
||||
Y_COORD,
|
||||
ANIM_NUM,
|
||||
LAYER_TYPE
|
||||
};
|
||||
|
||||
struct MartInfo
|
||||
{
|
||||
/*0x0*/ void (*callback)(void);
|
||||
/*0x4*/ const struct MenuAction *menuActions;
|
||||
/*0x8*/ const u16 *itemList;
|
||||
/*0xC*/ u16 itemCount;
|
||||
/*0xE*/ u8 windowId;
|
||||
/*0xF*/ u8 martType;
|
||||
};
|
||||
|
||||
struct ShopData
|
||||
{
|
||||
/*0x0000*/ u16 tilemapBuffers[4][0x400];
|
||||
/*0x2000*/ u32 totalCost;
|
||||
/*0x2004*/ u16 itemsShowed;
|
||||
/*0x2006*/ u16 selectedRow;
|
||||
/*0x2008*/ u16 scrollOffset;
|
||||
/*0x200A*/ u8 maxQuantity;
|
||||
/*0x200B*/ u8 scrollIndicatorsTaskId;
|
||||
/*0x200C*/ u8 iconSlot;
|
||||
/*0x200D*/ u8 itemSpriteIds[2];
|
||||
/*0x2010*/ s16 viewportObjects[OBJECT_EVENTS_COUNT][5];
|
||||
};
|
||||
|
||||
void CreatePokemartMenu(const u16 *);
|
||||
void CreateDecorationShop1Menu(const u16 *);
|
||||
void CreateDecorationShop2Menu(const u16 *);
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#ifndef GUARD_STARTER_CHOOSE_H
|
||||
#define GUARD_STARTER_CHOOSE_H
|
||||
|
||||
extern const u16 gBirchBagGrassPal[2][16];
|
||||
extern const u16 gBirchBagGrass_Pal[];
|
||||
extern const u32 gBirchBagTilemap[];
|
||||
extern const u32 gBirchGrassTilemap[];
|
||||
extern const u32 gBirchHelpGfx[];
|
||||
extern const u32 gBirchBagGrass_Gfx[];
|
||||
extern const u32 gPokeballSelection_Gfx[];
|
||||
|
||||
u16 GetStarterPokemon(u16 chosenStarterId);
|
||||
|
||||
@@ -2152,9 +2152,7 @@ extern const u8 gText_Switch2[];
|
||||
extern const u8 gText_Item[];
|
||||
extern const u8 gText_NotPkmnOtherTrainerWants[];
|
||||
extern const u8 gText_ThatIsntAnEgg[];
|
||||
extern const u8 gText_PkmnCantBeTradedNow[];
|
||||
extern const u8 gText_OtherTrainersPkmnCantBeTraded[];
|
||||
extern const u8 gText_EggCantBeTradedNow[];
|
||||
extern const u8 gText_OtherTrainerCantAcceptPkmn[];
|
||||
extern const u8 gText_CantTradeWithTrainer[];
|
||||
|
||||
|
||||
@@ -6,4 +6,30 @@ void InitSecondaryTilesetAnimation(void);
|
||||
void UpdateTilesetAnimations(void);
|
||||
void TransferTilesetAnimsBuffer(void);
|
||||
|
||||
void InitTilesetAnim_General(void);
|
||||
void InitTilesetAnim_Petalburg(void);
|
||||
void InitTilesetAnim_Rustboro(void);
|
||||
void InitTilesetAnim_Dewford(void);
|
||||
void InitTilesetAnim_Slateport(void);
|
||||
void InitTilesetAnim_Mauville(void);
|
||||
void InitTilesetAnim_Lavaridge(void);
|
||||
void InitTilesetAnim_Fallarbor(void);
|
||||
void InitTilesetAnim_Fortree(void);
|
||||
void InitTilesetAnim_Lilycove(void);
|
||||
void InitTilesetAnim_Mossdeep(void);
|
||||
void InitTilesetAnim_EverGrande(void);
|
||||
void InitTilesetAnim_Pacifidlog(void);
|
||||
void InitTilesetAnim_Sootopolis(void);
|
||||
void InitTilesetAnim_BattleFrontierOutsideWest(void);
|
||||
void InitTilesetAnim_BattleFrontierOutsideEast(void);
|
||||
void InitTilesetAnim_Building(void);
|
||||
void InitTilesetAnim_Cave(void);
|
||||
void InitTilesetAnim_BikeShop(void);
|
||||
void InitTilesetAnim_Underwater(void);
|
||||
void InitTilesetAnim_SootopolisGym(void);
|
||||
void InitTilesetAnim_MauvilleGym(void);
|
||||
void InitTilesetAnim_EliteFour(void);
|
||||
void InitTilesetAnim_BattleDome(void);
|
||||
void InitTilesetAnim_BattlePyramid(void);
|
||||
|
||||
#endif // GUARD_TILESET_ANIMS_H
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
#ifndef GUARD_tilesets_H
|
||||
#define GUARD_tilesets_H
|
||||
|
||||
// Exported type declarations
|
||||
extern const u32 gTilesetTiles_General[];
|
||||
extern const u16 gTilesetPalettes_General[][16];
|
||||
|
||||
// Exported RAM declarations
|
||||
|
||||
// Exported ROM declarations
|
||||
|
||||
extern struct Tileset *gTilesetPointer_SecretBase;
|
||||
extern struct Tileset *gTilesetPointer_SecretBaseRedCave;
|
||||
extern const struct Tileset * const gTilesetPointer_SecretBase;
|
||||
extern const struct Tileset * const gTilesetPointer_SecretBaseRedCave;
|
||||
|
||||
#endif //GUARD_tilesets_H
|
||||
|
||||
@@ -54,7 +54,7 @@ struct TrainerCard
|
||||
/*0x4C*/ bool8 shouldDrawStickers; // FRLG only
|
||||
/*0x4D*/ u8 unused;
|
||||
/*0x4E*/ u8 monIconTint; // FRLG only
|
||||
/*0x4F*/ u8 facilityClass;
|
||||
/*0x4F*/ u8 unionRoomClass;
|
||||
/*0x50*/ u8 stickers[TRAINER_CARD_STICKER_TYPES]; // FRLG only
|
||||
/*0x54*/ u16 monSpecies[PARTY_SIZE]; // FRLG only
|
||||
// Note: Link players use linkHasAllFrontierSymbols, not the field below,
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
// In the Union Room the player is only ever connected to ≤ 4 other players.
|
||||
// However, there can be up to MAX_UNION_ROOM_LEADERS (8) object events to
|
||||
// represent leaders of recently discovered link groups, and each of those groups
|
||||
// represent leaders of recently discovered link groups, and each of those groups
|
||||
// may have up to MAX_RFU_PLAYERS (5) players in it including the leader.
|
||||
// These players are represented on-screen by NPC sprites drawn around the leader.
|
||||
// Thus there can be 40 sprites of other players on-screen, in 8 groups of 5.
|
||||
@@ -16,7 +16,7 @@
|
||||
// The maximum number of recently connected players that can be tracked.
|
||||
// Note that this is significantly less than NUM_UNION_ROOM_SPRITES, i.e. not
|
||||
// every player that can be shown in the Union Room can be tracked at once.
|
||||
// Information such as a group member's gender can instead be read from partnerInfo
|
||||
// Information such as a group member's gender can instead be read from partnerInfo
|
||||
// of the leader's RfuGameData by tracking at least all of the group leaders.
|
||||
#define MAX_RFU_PLAYER_LIST_SIZE 16
|
||||
|
||||
|
||||
@@ -8,8 +8,7 @@ enum {
|
||||
WONDER_NEWS_SENT,
|
||||
};
|
||||
|
||||
|
||||
void InitSavedWonderNews(void);
|
||||
void GenerateRandomWonderNews(u32 newsType);
|
||||
void WonderNews_Reset(void);
|
||||
void WonderNews_SetReward(u32 newsType);
|
||||
|
||||
#endif //GUARD_WONDER_NEWS_H
|
||||
|
||||
Reference in New Issue
Block a user