diff options
Diffstat (limited to 'include')
127 files changed, 9101 insertions, 699 deletions
| diff --git a/include/battle.h b/include/battle.h index 4093f55d1..3328c691f 100644 --- a/include/battle.h +++ b/include/battle.h @@ -1,8 +1,36 @@  #ifndef GUARD_BATTLE_H  #define GUARD_BATTLE_H +// should they be included here or included individually by every file? +#include "battle_util.h" +#include "battle_script_commands.h" +#include "battle_2.h" +#include "battle_ai_switch_items.h" + +/* +    Banks are a name given to what could be called a 'battlerId' or 'monControllerId'. +    Each bank has a value consisting of two bits. +    0x1 bit is responsible for the side, 0 = player's side, 1 = opponent's side. +    0x2 bit is responsible for the id of sent out pokemon. 0 means it's the first sent out pokemon, 1 it's the second one. (Triple battle didn't exist at the time yet.) +*/ +  #define BATTLE_BANKS_COUNT  4 +#define IDENTITY_PLAYER_MON1        0 +#define IDENTITY_OPPONENT_MON1      1 +#define IDENTITY_PLAYER_MON2        2 +#define IDENTITY_OPPONENT_MON2      3 + +#define SIDE_PLAYER     0x0 +#define SIDE_OPPONENT   0x1 + +#define BIT_SIDE        0x1 +#define BIT_MON         0x2 + +#define GET_BANK_IDENTITY(bank)((gBanksByIdentity[bank])) +#define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & BIT_SIDE)) +#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE)) +  #define BATTLE_TYPE_DOUBLE          0x0001  #define BATTLE_TYPE_LINK            0x0002  #define BATTLE_TYPE_WILD            0x0004 @@ -34,14 +62,16 @@  #define BATTLE_TYPE_GROUDON         0x10000000  #define BATTLE_TYPE_KYORGE          0x20000000  #define BATTLE_TYPE_RAYQUAZA        0x40000000 +#define BATTLE_TYPE_x80000000       0x80000000 +#define TRAINER_OPPONENT_3FE        0x3FE +#define TRAINER_OPPONENT_C00        0xC00 +#define TRAINER_OPPONENT_800        0x800  #define STEVEN_PARTNER_ID           0xC03  #define SECRET_BASE_OPPONENT        0x400 -#define BATTLE_TYPE_FRONTIER        (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID) - -#define SIDE_PLAYER     0x0 -#define SIDE_OPPONENT   0x1 +#define BATTLE_TYPE_FRONTIER                (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | 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_x100000)  #define BATTLE_WON                  0x1  #define BATTLE_LOST                 0x2 @@ -50,8 +80,12 @@  #define BATTLE_PLAYER_TELEPORTED    0x5  #define BATTLE_POKE_FLED            0x6  #define BATTLE_CAUGHT               0x7 +#define BATTLE_SAFARI_OUT_OF_BALLS  0x8 +#define BATTLE_FORFEITED            0x9  #define BATTLE_OPPONENT_TELEPORTED  0xA +#define BATTLE_OUTCOME_BIT_x80      0x80 +  #define STATUS_SLEEP            0x7  #define STATUS_POISON           0x8  #define STATUS_BURN             0x10 @@ -66,11 +100,12 @@  #define STATUS2_CONFUSION           0x00000007  #define STATUS2_FLINCHED            0x00000008  #define STATUS2_UPROAR              0x00000070 -#define STATUS2_BIDE                0x00000300  //two bits 0x100 0x200 +#define STATUS2_BIDE                0x00000300  // two bits 0x100, 0x200  #define STATUS2_LOCK_CONFUSE        0x00000C00  #define STATUS2_MULTIPLETURNS       0x00001000  #define STATUS2_WRAPPED             0x0000E000 -#define STATUS2_INFATUATION         0x000F0000 +#define STATUS2_INFATUATION         0x000F0000  // 4 bits, one for every bank +#define STATUS2_INFATUATED_WITH(bank)((gBitTable[bank] << 16))  #define STATUS2_FOCUS_ENERGY        0x00100000  #define STATUS2_TRANSFORMED         0x00200000  #define STATUS2_RECHARGE            0x00400000 @@ -86,15 +121,15 @@  #define STATUS3_LEECHSEED_BANK          0x3  #define STATUS3_LEECHSEED               0x4 -#define STATUS3_ALWAYS_HITS             0x18    //two bits +#define STATUS3_ALWAYS_HITS             0x18    // two bits  #define STATUS3_PERISH_SONG             0x20  #define STATUS3_ON_AIR                  0x40  #define STATUS3_UNDERGROUND             0x80  #define STATUS3_MINIMIZED               0x100  #define STATUS3_ROOTED                  0x400  #define STATUS3_CHARGED_UP              0x200 -#define STATUS3_YAWN                    0x1800  //two bits -#define STATUS3_IMPRISIONED             0x2000 +#define STATUS3_YAWN                    0x1800  // two bits +#define STATUS3_IMPRISONED_OTHERS       0x2000  #define STATUS3_GRUDGE                  0x4000  #define STATUS3_CANT_SCORE_A_CRIT       0x8000  #define STATUS3_MUDSPORT                0x10000 @@ -105,6 +140,7 @@  #define STATUS3_SEMI_INVULNERABLE       ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)) +#define HITMARKER_x10                   0x00000010  #define HITMARKER_x20                   0x00000020  #define HITMARKER_DESTINYBOND           0x00000040  #define HITMARKER_NO_ANIMATIONS         0x00000080 @@ -115,6 +151,7 @@  #define HITMARKER_PURSUIT_TRAP          0x00001000  #define HITMARKER_IGNORE_SAFEGUARD      0x00002000  #define HITMARKER_SYNCHRONISE_EFFECT    0x00004000 +#define HITMARKER_RUN                   0x00008000  #define HITMARKER_IGNORE_ON_AIR         0x00010000  #define HITMARKER_IGNORE_UNDERGROUND    0x00020000  #define HITMARKER_IGNORE_UNDERWATER     0x00040000 @@ -125,6 +162,7 @@  #define HITMARKER_x800000               0x00800000  #define HITMARKER_GRUDGE                0x01000000  #define HITMARKER_OBEYS                 0x02000000 +#define HITMARKER_x4000000              0x04000000  #define HITMARKER_x8000000              0x08000000  #define HITMARKER_FAINTED(bank)         ((gBitTable[bank] << 0x1C))  #define HITMARKER_UNK(bank)             ((0x10000000 << bank)) @@ -138,28 +176,21 @@  #define SIDE_STATUS_MIST             (1 << 8)  #define SIDE_STATUS_SPIKES_DAMAGED   (1 << 9) -#define ABILITYEFFECT_ON_SWITCHIN               0x0 -#define ABILITYEFFECT_ENDTURN                   0x1 -#define ABILITYEFFECT_MOVES_BLOCK               0x2 -#define ABILITYEFFECT_ABSORBING                 0x3 -#define ABILITYEFFECT_CONTACT                   0x4 -#define ABILITYEFFECT_IMMUNITY                  0x5 -#define ABILITYEFFECT_FORECAST                  0x6 -#define ABILITYEFFECT_SYNCHRONIZE               0x7 -#define ABILITYEFFECT_ATK_SYNCHRONIZE           0x8 -#define ABILITYEFFECT_INTIMIDATE1               0x9 -#define ABILITYEFFECT_INTIMIDATE2               0xA -#define ABILITYEFFECT_TRACE                     0xB -#define ABILITYEFFECT_CHECK_OTHER_SIDE          0xC -#define ABILITYEFFECT_CHECK_BANK_SIDE           0xD -#define ABILITYEFFECT_FIELD_SPORT               0xE -#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK   0xF -#define ABILITYEFFECT_COUNT_OTHER_SIZE          0x10 -#define ABILITYEFFECT_COUNT_BANK_SIDE           0x11 -#define ABILITYEFFECT_COUNT_ON_FIELD            0x12 -#define ABILITYEFFECT_CHECK_ON_FIELD            0x13 - -#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) +#define ACTION_USE_MOVE             0 +#define ACTION_USE_ITEM             1 +#define ACTION_SWITCH               2 +#define ACTION_RUN                  3 +#define ACTION_WATCHES_CAREFULLY    4 +#define ACTION_SAFARI_ZONE_BALL     5 +#define ACTION_POKEBLOCK_CASE       6 +#define ACTION_GO_NEAR              7 +#define ACTION_SAFARI_ZONE_RUN      8 +#define ACTION_9                    9 +#define ACTION_RUN_BATTLESCRIPT     10 // when executing an action +#define ACTION_CANCEL_PARTNER       12 // when choosing an action +#define ACTION_FINISHED             12 // when executing an action +#define ACTION_NOTHING_FAINTED      13 // when choosing an action +#define ACTION_INIT_VALUE           0xFF  #define MOVESTATUS_MISSED             (1 << 0)  #define MOVESTATUS_SUPEREFFECTIVE     (1 << 1) @@ -187,27 +218,105 @@  #define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT))  #define WEATHER_HAIL                (1 << 7)  #define WEATHER_HAIL_ANY ((WEATHER_HAIL)) - -#define REQUEST_ALL_BATTLE      0x0 -#define REQUEST_SPECIES_BATTLE  0x1 -#define REQUEST_HELDITEM_BATTLE 0x2 -#define REQUEST_MOVES_PP_BATTLE 0x3 -#define REQUEST_PPMOVE1_BATTLE  0x9 -#define REQUEST_PPMOVE2_BATTLE  0xA -#define REQUEST_PPMOVE3_BATTLE  0xB -#define REQUEST_PPMOVE4_BATTLE  0xC -#define REQUEST_STATUS_BATTLE   0x28 -#define REQUEST_HP_BATTLE 0x2A +#define WEATHER_ANY ((WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)) + +#define BATTLE_TERRAIN_GRASS        0 +#define BATTLE_TERRAIN_LONG_GRASS   1 +#define BATTLE_TERRAIN_SAND         2 +#define BATTLE_TERRAIN_UNDERWATER   3 +#define BATTLE_TERRAIN_WATER        4 +#define BATTLE_TERRAIN_POND         5 +#define BATTLE_TERRAIN_ROCK         6 +#define BATTLE_TERRAIN_CAVE         7 +#define BATTLE_TERRAIN_INSIDE       8  // array entries for battle communication -#define MOVE_EFFECT_BYTE    0x3 -#define MULTISTRING_CHOOSER 0x5 -#define MSG_DISPLAY         0x7 +#define MULTIUSE_STATE          0x0 +#define CURSOR_POSITION         0x1 +#define TASK_ID                 0x1 // task Id and cursor position share the same field +#define SPRITES_INIT_STATE1     0x1 // shares the Id as well +#define SPRITES_INIT_STATE2     0x2 +#define MOVE_EFFECT_BYTE        0x3 +#define ACTIONS_CONFIRMED_COUNT 0x4 +#define MULTISTRING_CHOOSER     0x5 +#define MSG_DISPLAY             0x7 +#define BATTLE_COMMUNICATION_ENTRIES_COUNT  0x8 + +#define MOVE_TARGET_SELECTED        0x0 +#define MOVE_TARGET_DEPENDS         0x1 +#define MOVE_TARGET_USER            0x2 +#define MOVE_TARGET_RANDOM          0x4 +#define MOVE_TARGET_x10             0x10 +#define MOVE_TARGET_BOTH            0x8 +#define MOVE_TARGET_FOES_AND_ALLY   0x20 +#define MOVE_TARGET_OPPONENTS_FIELD 0x40 + +#define TYPE_MUL_NO_EFFECT          0 +#define TYPE_MUL_NOT_EFFECTIVE      5 +#define TYPE_MUL_NORMAL             10 +#define TYPE_MUL_SUPER_EFFECTIVE    20 + +#define BS_GET_TARGET                   0 +#define BS_GET_ATTACKER                 1 +#define BS_GET_EFFECT_BANK              2 +#define BS_ATTACKER_WITH_PARTNER        4 // for atk98_status_icon_update +#define BS_GET_ATTACKER_SIDE            8 // for atk1E_jumpifability +#define BS_GET_NOT_ATTACKER_SIDE        9 // for atk1E_jumpifability +#define BS_GET_SCRIPTING_BANK           10 +#define BS_GET_OPPONENT1                12 +#define BS_GET_PLAYER2                  13 +#define BS_GET_OPPONENT2                14 + +// for battle script commands +#define CMP_EQUAL               0x0 +#define CMP_NOT_EQUAL           0x1 +#define CMP_GREATER_THAN        0x2 +#define CMP_LESS_THAN           0x3 +#define CMP_COMMON_BITS         0x4 +#define CMP_NO_COMMON_BITS      0x5 + +struct TrainerMonNoItemDefaultMoves +{ +    u16 iv; +    u8 lvl; +    u16 species; +}; -// functions +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); +u8 GetBankSide(u8 bank); + +struct TrainerMonItemDefaultMoves +{ +    u16 iv; +    u8 lvl; +    u16 species; +    u16 heldItem; +}; + +struct TrainerMonNoItemCustomMoves +{ +    u16 iv; +    u8 lvl; +    u16 species; +    u16 moves[4]; +}; -extern u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); -extern u8 GetBankSide(u8 bank); +struct TrainerMonItemCustomMoves +{ +    u16 iv; +    u8 lvl; +    u16 species; +    u16 heldItem; +    u16 moves[4]; +}; + +union TrainerMonPtr +{ +    struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves; +    struct TrainerMonNoItemCustomMoves* NoItemCustomMoves; +    struct TrainerMonItemDefaultMoves* ItemDefaultMoves; +    struct TrainerMonItemCustomMoves* ItemCustomMoves; +};  struct Trainer  { @@ -220,9 +329,12 @@ struct Trainer      /*0x18*/ bool8 doubleBattle;      /*0x1C*/ u32 aiFlags;      /*0x20*/ u8 partySize; -    /*0x24*/ void *party; +    /*0x24*/ union TrainerMonPtr party;  }; +#define PARTY_FLAG_CUSTOM_MOVES     0x1 +#define PARTY_FLAG_HAS_ITEM         0x2 +  extern const struct Trainer gTrainers[];  #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) @@ -251,8 +363,8 @@ struct DisableStruct      /*0x0F*/ u8 perishSong1 : 4;      /*0x0F*/ u8 perishSong2 : 4;      /*0x10*/ u8 furyCutterCounter; -    /*0x11*/ u8 rolloutTimer1 : 4; -    /*0x11*/ u8 rolloutTimer2 : 4; +    /*0x11*/ u8 rolloutCounter1 : 4; +    /*0x11*/ u8 rolloutCounter2 : 4;      /*0x12*/ u8 chargeTimer1 : 4;      /*0x12*/ u8 chargeTimer2 : 4;      /*0x13*/ u8 tauntTimer1:4; @@ -262,7 +374,8 @@ struct DisableStruct      /*0x16*/ u8 isFirstTurn;      /*0x17*/ u8 unk17;      /*0x18*/ u8 truantCounter : 1; -    /*0x18*/ u8 unk18_a : 3; +    /*0x18*/ u8 truantUnknownBit : 1; +    /*0x18*/ u8 unk18_a_2 : 2;      /*0x18*/ u8 unk18_b : 4;      /*0x19*/ u8 rechargeCounter;      /*0x1A*/ u8 unk1A[2]; @@ -283,7 +396,7 @@ struct ProtectStruct      u32 prlzImmobility:1;      /* field_1 */      u32 confusionSelfDmg:1; -    u32 notEffective:1; +    u32 targetNotAffected:1;      u32 chargingTurn:1;      u32 fleeFlag:2; // for RunAway and Smoke Ball      u32 usedImprisionedMove:1; @@ -312,11 +425,11 @@ extern struct ProtectStruct gProtectStructs[BATTLE_BANKS_COUNT];  struct SpecialStatus  { -    u8 statLowered : 1; -    u8 lightningRodRedirected : 1; -    u8 restoredBankSprite: 1; -    u8 intimidatedPoke : 1; -    u8 traced : 1; +    u8 statLowered : 1;             // 0x1 +    u8 lightningRodRedirected : 1;  // 0x2 +    u8 restoredBankSprite: 1;       // 0x4 +    u8 intimidatedPoke : 1;         // 0x8 +    u8 traced : 1;                  // 0x10      u8 flag20 : 1;      u8 flag40 : 1;      u8 focusBanded : 1; @@ -359,7 +472,7 @@ struct WishFutureKnock      u8 wishCounter[BATTLE_BANKS_COUNT];      u8 wishUserID[BATTLE_BANKS_COUNT];      u8 weatherDuration; -    u16 knockedOffPokes; +    u8 knockedOffPokes[2];  };  extern struct WishFutureKnock gWishFutureKnock; @@ -389,7 +502,7 @@ struct BattleHistory      struct UsedMoves usedMoves[BATTLE_BANKS_COUNT];      u8 abilities[BATTLE_BANKS_COUNT];      u8 itemEffects[BATTLE_BANKS_COUNT]; -    u16 TrainerItems[BATTLE_BANKS_COUNT]; +    u16 trainerItems[BATTLE_BANKS_COUNT];      u8 itemsNo;  }; @@ -405,13 +518,23 @@ struct BattleCallbacksStack      u8 size;  }; +struct StatsArray +{ +    u16 hp; +    u16 atk; +    u16 def; +    u16 spd; +    u16 spAtk; +    u16 spDef; +}; +  struct BattleResources  {      struct SecretBaseRecord* secretBase;      struct UnknownFlags *flags;      struct BattleScriptsStack* battleScriptsStack;      struct BattleCallbacksStack* battleCallbackStack; -    void* statsBeforeLvlUp; +    struct StatsArray* statsBeforeLvlUp;      struct AI_ThinkingStruct *ai;      struct BattleHistory *battleHistory;      struct BattleScriptsStack *AI_ScriptsStack; @@ -421,31 +544,33 @@ extern struct BattleResources* gBattleResources;  #define BATTLESCRIPTS_STACK     (gBattleResources->battleScriptsStack)  #define BATTLE_CALLBACKS_STACK  (gBattleResources->battleCallbackStack) +#define BATTLE_LVLUP_STATS      (gBattleResources->statsBeforeLvlUp)  struct BattleResults  {      u8 playerFaintCounter;    // 0x0      u8 opponentFaintCounter;  // 0x1 -    u8 unk2;                  // 0x2 +    u8 playerSwitchesCounter; // 0x2      u8 unk3;                  // 0x3      u8 unk4;                  // 0x4      u8 unk5_0:1;              // 0x5 -    u8 unk5_1:1;              // 0x5 -    u16 poke1Species;         // 0x6 -    u8 pokeString1[10];       // 0x8 -    u8 unk12; +    u8 usedMasterBall:1;      // 0x5 +    u8 caughtMonBall:4;       // 0x5 +    u8 unk5_6:1;              // 0x5 +    u8 unk5_7:1;              // 0x5 +    u16 playerMon1Species;    // 0x6 +    u8 playerMon1Name[11];    // 0x8      u8 battleTurnCounter;     // 0x13 -    u8 pokeString2[10];       // 0x14 -    u8 field_1E;              // 0x1E +    u8 playerMon2Name[11];    // 0x14      u8 field_1F;              // 0x1F      u16 lastOpponentSpecies;  // 0x20 -    u16 lastUsedMove;         // 0x22 -    u16 opponentMove;         // 0x24 -    u16 opponentSpecies;      // 0x26 -    u16 caughtPoke;           // 0x28 -    u8 caughtNick[10];        // 0x2A +    u16 lastUsedMovePlayer;   // 0x22 +    u16 lastUsedMoveOpponent; // 0x24 +    u16 playerMon2Species;    // 0x26 +    u16 caughtMonSpecies;     // 0x28 +    u8 caughtMonNick[10];     // 0x2A      u8 filler34[2]; -    u8 unk36[10];  // usedBalls? +    u8 catchAttempts[11];     // 0x36  };  extern struct BattleResults gBattleResults; @@ -463,46 +588,7 @@ struct BattleStruct      u8 wildVictorySong;      u8 dynamicMoveType;      u8 wrappedBy[4]; -    u8 field_18; -    u8 field_19; -    u8 field_1A; -    u8 field_1B; -    u8 field_1C; -    u8 field_1D; -    u8 field_1E; -    u8 field_1F; -    u8 field_20; -    u8 field_21; -    u8 field_22; -    u8 field_23; -    u8 field_24; -    u8 field_25; -    u8 field_26; -    u8 field_27; -    u8 field_28; -    u8 field_29; -    u8 field_2A; -    u8 field_2B; -    u8 field_2C; -    u8 field_2D; -    u8 field_2E; -    u8 field_2F; -    u8 field_30; -    u8 field_31; -    u8 field_32; -    u8 field_33; -    u8 field_34; -    u8 field_35; -    u8 field_36; -    u8 field_37; -    u8 field_38; -    u8 field_39; -    u8 field_3A; -    u8 field_3B; -    u8 field_3C; -    u8 field_3D; -    u8 field_3E; -    u8 field_3F; +    u16 assistPossibleMoves[5 * 4]; // 5 mons, each of them knowing 4 moves      u8 field_40;      u8 field_41;      u8 field_42; @@ -511,51 +597,23 @@ struct BattleStruct      u8 field_45;      u8 field_46;      u8 field_47; -    u8 field_48; +    u8 focusPunchBank;      u8 field_49;      u8 moneyMultiplier;      u8 field_4B; -    u8 field_4C; +    u8 switchInAbilitiesCounter;      u8 field_4D;      u8 field_4E;      u8 field_4F; -    u8 field_50; -    u8 field_51; +    u16 expValue;      u8 field_52; -    u8 field_53; -    u8 field_54; -    u8 field_55; -    u8 field_56; -    u8 field_57; -    u8 field_58; -    u8 field_59; -    u8 field_5A; -    u8 field_5B; +    u8 sentInPokes; +    bool8 selectionScriptFinished[BATTLE_BANKS_COUNT]; +    u8 field_58[4];      u8 field_5C[4]; -    u8 field_60; -    u8 field_61; -    u8 field_62; -    u8 field_63; -    u8 field_64; -    u8 field_65; -    u8 field_66; -    u8 field_67; -    u8 field_68; -    u8 field_69; -    u8 field_6A; -    u8 field_6B; -    u8 field_6C; -    u8 field_6D; -    u8 field_6E; -    u8 field_6F; -    u8 field_70; -    u8 field_71; -    u8 field_72; -    u8 field_73; -    u8 field_74; -    u8 field_75; -    u8 field_76; -    u8 field_77; +    u8 field_60[4][3]; +    u8 runTries; +    u8 caughtMonNick[11];      u8 field_78;      u8 field_79;      u8 field_7A; @@ -564,18 +622,15 @@ struct BattleStruct      u8 field_7D;      u8 field_7E;      u8 formToChangeInto; -    u8 chosenMovesIds[4]; -    u8 field_84; -    u8 field_85; -    u8 field_86; -    u8 field_87; +    u8 chosenMovePositions[BATTLE_BANKS_COUNT]; +    u8 stateIdAfterSelScript[BATTLE_BANKS_COUNT];      u8 field_88;      u8 field_89;      u8 field_8A;      u8 field_8B;      u8 field_8C;      u8 field_8D; -    u8 field_8E; +    u8 stringMoveType;      u8 expGetterBank;      u8 field_90;      u8 field_91; @@ -585,14 +640,7 @@ struct BattleStruct      u8 field_95;      u8 field_96;      u8 field_97; -    u8 field_98; -    u8 field_99; -    u8 field_9A; -    u8 field_9B; -    u8 field_9C; -    u8 field_9D; -    u8 field_9E; -    u8 field_9F; +    u8 mirrorMoves[8]; // ask gamefreak why they declared it that way      u8 field_A0;      u8 field_A1;      u8 field_A2; @@ -601,30 +649,44 @@ struct BattleStruct      u8 field_A5;      u8 field_A6;      u8 field_A7; -    u16 hpOnSwitchout[4]; +    u16 hpOnSwitchout[2]; +    u32 savedBattleTypeFlags;      u8 field_B0;      u8 hpScale;      u8 synchronizeMoveEffect;      u8 field_B3; -    u8 field_B4; -    u8 field_B5; -    u8 field_B6; -    u8 field_B7; -    u16 usedHeldItems[4]; -    u8 field_C0[8]; -    u16 choicedMove[4]; -    u8 field_D0[8]; +    void (*savedCallback)(void); +    u16 usedHeldItems[BATTLE_BANKS_COUNT]; +    u8 field_C0[4]; +    u8 AI_itemType[2]; +    u8 AI_itemFlags[2]; +    u16 choicedMove[BATTLE_BANKS_COUNT]; +    u16 changedItems[BATTLE_BANKS_COUNT];      u8 intimidateBank; -    u8 fillerD9[0xDA-0xD9]; +    u8 switchInItemsCounter;      u8 field_DA;      u8 turnSideTracker;      u8 fillerDC[0xDF-0xDC];      u8 field_DF; -    u8 fillerE0[0x1A0-0xE0]; +    u8 mirrorMoveArrays[32]; +    u16 castformPalette[4][16]; +    u8 field_180; +    u8 field_181; +    u8 field_182; +    u8 field_183; +    struct BattleEnigmaBerry battleEnigmaBerry;      u8 field_1A0;      u8 field_1A1; -    u8 filler1A2; +    bool8 overworldWeatherDone;      u8 atkCancellerTracker; +    u8 field_1A4[96]; +    u8 field_204[104]; +    u8 field_26C[40]; +    u8 field_294[4]; +    u8 field_298[8]; +    u8 field_2A0; +    u8 field_2A1; +    u8 field_2A2;  };  extern struct BattleStruct* gBattleStruct; @@ -636,19 +698,125 @@ extern struct BattleStruct* gBattleStruct;      var2[offsetof(struct structName, offsetField)] = value;                     \  } +#define GET_MOVE_TYPE(move, typeArg)                        \ +{                                                           \ +    if (gBattleStruct->dynamicMoveType)                     \ +        typeArg = gBattleStruct->dynamicMoveType & 0x3F;    \ +    else                                                    \ +        typeArg = gBattleMoves[move].type;                  \ +} + +#define MOVE_EFFECT_SLEEP               0x1 +#define MOVE_EFFECT_POISON              0x2 +#define MOVE_EFFECT_BURN                0x3 +#define MOVE_EFFECT_FREEZE              0x4 +#define MOVE_EFFECT_PARALYSIS           0x5 +#define MOVE_EFFECT_TOXIC               0x6 +#define MOVE_EFFECT_CONFUSION           0x7 +#define MOVE_EFFECT_FLINCH              0x8 +#define MOVE_EFFECT_TRI_ATTACK          0x9 +#define MOVE_EFFECT_UPROAR              0xA +#define MOVE_EFFECT_PAYDAY              0xB +#define MOVE_EFFECT_CHARGING            0xC +#define MOVE_EFFECT_WRAP                0xD +#define MOVE_EFFECT_RECOIL_25           0xE +#define MOVE_EFFECT_ATK_PLUS_1          0xF +#define MOVE_EFFECT_DEF_PLUS_1          0x10 +#define MOVE_EFFECT_SPD_PLUS_1          0x11 +#define MOVE_EFFECT_SP_ATK_PLUS_1       0x12 +#define MOVE_EFFECT_SP_DEF_PLUS_1       0x13 +#define MOVE_EFFECT_ACC_PLUS_1          0x14 +#define MOVE_EFFECT_EVS_PLUS_1          0x15 +#define MOVE_EFFECT_ATK_MINUS_1         0x16 +#define MOVE_EFFECT_DEF_MINUS_1         0x17 +#define MOVE_EFFECT_SPD_MINUS_1         0x18 +#define MOVE_EFFECT_SP_ATK_MINUS_1      0x19 +#define MOVE_EFFECT_SP_DEF_MINUS_1      0x1A +#define MOVE_EFFECT_ACC_MINUS_1         0x1B +#define MOVE_EFFECT_EVS_MINUS_1         0x1C +#define MOVE_EFFECT_RECHARGE            0x1D +#define MOVE_EFFECT_RAGE                0x1E +#define MOVE_EFFECT_STEAL_ITEM          0x1F +#define MOVE_EFFECT_PREVENT_ESCAPE      0x20 +#define MOVE_EFFECT_NIGHTMARE           0x21 +#define MOVE_EFFECT_ALL_STATS_UP        0x22 +#define MOVE_EFFECT_RAPIDSPIN           0x23 +#define MOVE_EFFECT_REMOVE_PARALYSIS    0x24 +#define MOVE_EFFECT_ATK_DEF_DOWN        0x25 +#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26 +#define MOVE_EFFECT_ATK_PLUS_2          0x27 +#define MOVE_EFFECT_DEF_PLUS_2          0x28 +#define MOVE_EFFECT_SPD_PLUS_2          0x29 +#define MOVE_EFFECT_SP_ATK_PLUS_2       0x2A +#define MOVE_EFFECT_SP_DEF_PLUS_2       0x2B +#define MOVE_EFFECT_ACC_PLUS_2          0x2C +#define MOVE_EFFECT_EVS_PLUS_2          0x2D +#define MOVE_EFFECT_ATK_MINUS_2         0x2E +#define MOVE_EFFECT_DEF_MINUS_2         0x2F +#define MOVE_EFFECT_SPD_MINUS_2         0x30 +#define MOVE_EFFECT_SP_ATK_MINUS_2      0x31 +#define MOVE_EFFECT_SP_DEF_MINUS_2      0x32 +#define MOVE_EFFECT_ACC_MINUS_2         0x33 +#define MOVE_EFFECT_EVS_MINUS_2         0x34 +#define MOVE_EFFECT_THRASH              0x35 +#define MOVE_EFFECT_KNOCK_OFF           0x36 +#define MOVE_EFFECT_NOTHING_37          0x37 +#define MOVE_EFFECT_NOTHING_38          0x38 +#define MOVE_EFFECT_NOTHING_39          0x39 +#define MOVE_EFFECT_NOTHING_3A          0x3A +#define MOVE_EFFECT_SP_ATK_TWO_DOWN     0x3B +#define MOVE_EFFECT_NOTHING_3C          0x3C +#define MOVE_EFFECT_NOTHING_3D          0x3D +#define MOVE_EFFECT_NOTHING_3E          0x3E +#define MOVE_EFFECT_NOTHING_3F          0x3F +#define MOVE_EFFECT_AFFECTS_USER        0x40 +#define MOVE_EFFECT_CERTAIN             0x80 + +// battle animations ids + +#define B_ANIM_CASTFORM_CHANGE      0x0 +#define B_ANIM_STATS_CHANGE         0x1 +#define B_ANIM_SUBSTITUTE_FADE      0x2 +#define B_ANIM_SUBSTITUTE_APPEAR    0x3 +#define B_ANIM_x4                   0x4 +#define B_ANIM_ITEM_KNOCKOFF        0x5 +#define B_ANIM_TURN_TRAP            0x6 +#define B_ANIM_ITEM_EFFECT          0x7 +#define B_ANIM_SMOKEBALL_ESCAPE     0x8 +#define B_ANIM_HANGED_ON            0x9 +#define B_ANIM_RAIN_CONTINUES       0xA +#define B_ANIM_SUN_CONTINUES        0xB +#define B_ANIM_SANDSTORM_CONTINUES  0xC +#define B_ANIM_HAIL_CONTINUES       0xD +#define B_ANIM_LEECH_SEED_DRAIN     0xE +#define B_ANIM_MON_HIT              0xF +#define B_ANIM_ITEM_STEAL           0x10 +#define B_ANIM_SNATCH_MOVE          0x11 +#define B_ANIM_FUTURE_SIGHT_HIT     0x12 +#define B_ANIM_x13                  0x13 +#define B_ANIM_x14                  0x14 +#define B_ANIM_INGRAIN_HEAL         0x15 +#define B_ANIM_WISH_HEAL            0x16 +#define B_ANIM_x17                  0x17 +#define B_ANIM_x18                  0x18 +#define B_ANIM_x19                  0x19 +#define B_ANIM_x1A                  0x1A +#define B_ANIM_x1B                  0x1B +#define B_ANIM_x1C                  0x1C +#define B_ANIM_x1D                  0x1D + +#define GET_STAT_BUFF_ID(n)((n & 0xF))              // first four bits 0x1, 0x2, 0x4, 0x8 +#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7))      // 0x10, 0x20, 0x40 +#define STAT_BUFF_NEGATIVE 0x80                     // 0x80, the sign bit + +#define SET_STAT_BUFF_ID(n)((n & 0xF)) +#define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0)) +  struct BattleScripting  { -    u8 field_0; -    u8 field_1; -    u8 field_2; -    u8 field_3; -    u32 bideDmg; -    u8 field_8; -    u8 field_9; -    u8 field_A; -    u8 field_B; -    u8 field_C; -    u8 field_D; +    s32 painSplitHp; +    s32 bideDmg; +    u8 multihitString[6];      u8 dmgMultiplier;      u8 field_F;      u8 animArg1; @@ -659,22 +827,165 @@ struct BattleScripting      u8 field_15;      u8 field_16;      u8 bank; -    u8 field_18; -    u8 field_19; +    u8 animTurn; +    u8 animTargetsHit;      u8 statChanger; +    u8 field_1B; +    u8 atk23_state; +    u8 battleStyle; +    u8 atk6C_state; +    u8 learnMoveState; +    u8 field_20; +    u8 reshowMainState; +    u8 reshowHelperState; +    u8 field_23; +    u8 field_24; +    u8 multiplayerId;  };  extern struct BattleScripting gBattleScripting; +// functions + +// battle_1 +void LoadBattleTextboxAndBackground(void); +void LoadBattleEntryBackground(void); +void ApplyPlayerChosenFrameToBattleMenu(void); +bool8 LoadChosenBattleElement(u8 caseId); +void DrawMainBattleBackground(void); +void task00_0800F6FC(u8 taskId); + +// battle_5 +void AllocateBattleResrouces(void); +void FreeBattleResources(void); +void AdjustFriendshipOnBattleFaint(u8 bank); +void sub_80571DC(u8 bank, u8 arg1); +u32 sub_805725C(u8 bank); + +// battle 7 +void AllocateBattleSpritesData(void); +void FreeBattleSpritesData(void); +void AllocateMonSpritesGfx(void); +void FreeMonSpritesGfx(void); +void BattleMusicStop(void); +void sub_805E990(struct Pokemon *mon, u8 bank); +void sub_805EF14(void); +bool8 BattleInitAllSprites(u8 *state1, u8 *state2); +void sub_805E350(void); +bool8 BattleLoadAllHealthBoxesGfx(u8 state); +void LoadAndCreateEnemyShadowSprites(void); +void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species); +void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank); +void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank); +void BattleLoadSubstituteSpriteGfx(u8 bank, bool8 arg1); + +enum +{ +    BACK_PIC_BRENDAN, +    BACK_PIC_MAY, +    BACK_PIC_RED, +    BACK_PIC_LEAF, +    BACK_PIC_RS_BRENDAN, +    BACK_PIC_RS_MAY, +    BACK_PIC_WALLY, +    BACK_PIC_STEVEN +}; +void LoadBackTrainerBankSpriteGfx(u8 backPicId, u8 bank); + +// rom_80A5C6C +u8 GetBankSide(u8 bank); +u8 GetBankIdentity(u8 bank); +u8 GetBankByIdentity(u8 bank); + +struct BattleSpriteInfo +{ +    u16 invisible : 1; // 0x1 +    u16 flag_x2 : 1; // 0x2 +    u16 behindSubstitute : 1; // 0x4 +    u16 flag_x8 : 1; // 0x8 +    u16 hpNumbersNoBars : 1; // 0x10 +    u16 transformSpecies; +}; + +struct BattleAnimationInfo +{ +    u16 field; // to fill up later +    u8 field_2; +    u8 field_3; +    u8 field_4; +    u8 field_5; +    u8 field_6; +    u8 field_7; +    u8 field_8; +    u8 field_9_x1 : 1; +    u8 field_9_x2 : 1; +    u8 field_9_x1C : 3; +    u8 field_9_x20 : 1; +    u8 field_9_x40 : 1; +    u8 field_9_x80 : 1; +}; + +struct BattleHealthboxInfo +{ +    u8 flag_x1 : 1; +    u8 flag_x2 : 1; +    u8 flag_x4 : 1; +    u8 flag_x8 : 1; +    u8 flag_x10 : 1; +    u8 field_1; +    u8 field_2; +    u8 field_3; +    u8 field_4; +    u8 field_5; +    u8 field_6; +    u8 field_7; +    u8 field_8; +    u8 field_9; +    u8 field_A; +    u8 field_B; +}; + +struct BattleBarInfo +{ +    u8 healthboxSpriteId; +    s32 maxValue; +    s32 currentValue; +    s32 field_C; +    s32 field_10; +}; + +struct BattleSpriteData +{ +    struct BattleSpriteInfo *bankData; +    struct BattleHealthboxInfo *healthBoxesData; +    struct BattleAnimationInfo *animationData; +    struct BattleBarInfo *battleBars; +}; + +extern struct BattleSpriteData *gBattleSpritesDataPtr; + +#define BATTLE_BUFFER_LINK_SIZE 0x1000 + +extern u8 *gLinkBattleSendBuffer; +extern u8 *gLinkBattleRecvBuffer; + +// Move this somewhere else +  #include "sprite.h" -struct BattleSpritesGfx +struct MonSpritesGfx  {      void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon      void* sprites[4];      struct SpriteTemplate templates[4]; +    u8 field_74[0x100]; +    u8 *fontPixels;  }; -extern struct BattleSpritesGfx* gBattleSpritesGfx; +extern struct BattleSpritesGfx* gMonSpritesGfx; +extern u8 gBattleOutcome; +extern u16 gLastUsedItem; +extern u32 gBattleTypeFlags; +extern struct MonSpritesGfx* gMonSpritesGfxPtr;  #endif // GUARD_BATTLE_H diff --git a/include/battle_2.h b/include/battle_2.h new file mode 100644 index 000000000..ceec2aa00 --- /dev/null +++ b/include/battle_2.h @@ -0,0 +1,33 @@ +#ifndef GUARD_BATTLE_2_H +#define GUARD_BATTLE_2_H + +void CB2_InitBattle(void); +void CB2_QuitRecordedBattle(void); +void FaintClearSetData(void); +void SwitchInClearSetData(void); +void sub_803BDA0(u8 bank); +void BattleMainCB2(void); +void VBlankCB_Battle(void); +bool8 TryRunFromBattle(u8 bank); +u8 IsRunningFromBattleImpossible(void); +u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); +void SwapTurnOrder(u8 id1, u8 id2); +void BattleTurnPassed(void); +void RunBattleScriptCommands_PopCallbacksStack(void); +void RunBattleScriptCommands(void); +u32 sub_80397C4(u32 setId, u32 tableId); +void sub_8039E9C(struct Sprite *sprite); +void nullsub_20(void); +void BeginBattleIntro(void); + +extern const u8 gStatusConditionString_PoisonJpn[8]; +extern const u8 gStatusConditionString_SleepJpn[8]; +extern const u8 gStatusConditionString_ParalysisJpn[8]; +extern const u8 gStatusConditionString_BurnJpn[8]; +extern const u8 gStatusConditionString_IceJpn[8]; +extern const u8 gStatusConditionString_ConfusionJpn[8]; +extern const u8 gStatusConditionString_LoveJpn[8]; + +extern const u8 * const gStatusConditionStringsTable[7][2]; + +#endif // GUARD_BATTLE_2_H diff --git a/include/battle_ai.h b/include/battle_ai_script_commands.h index 2a315059b..5fb422b41 100644 --- a/include/battle_ai.h +++ b/include/battle_ai_script_commands.h @@ -1,5 +1,5 @@ -#ifndef GUARD_BATTLE_AI_H -#define GUARD_BATTLE_AI_H +#ifndef GUARD_BATTLE_AI_SCRIPT_COMMANDS_H +#define GUARD_BATTLE_AI_SCRIPT_COMMANDS_H  void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves);  void BattleAI_SetupAIData(u8 defaultScoreMoves); @@ -10,4 +10,4 @@ void ClearBankAbilityHistory(u8 bank);  void RecordItemEffectBattle(u8 bank, u8 itemEffect);  void ClearBankItemEffectHistory(u8 bank); -#endif // GUARD_BATTLE_AI_H +#endif // GUARD_BATTLE_AI_SCRIPT_COMMANDS_H diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h new file mode 100644 index 000000000..0a230e7f6 --- /dev/null +++ b/include/battle_ai_switch_items.h @@ -0,0 +1,17 @@ +#ifndef GUARD_BATTLE_AI_SWITCH_ITEMS_H +#define GUARD_BATTLE_AI_SWITCH_ITEMS_H + +enum +{ +    AI_ITEM_FULL_RESTORE = 1, +    AI_ITEM_HEAL_HP, +    AI_ITEM_CURE_CONDITION, +    AI_ITEM_X_STAT, +    AI_ITEM_GUARD_SPECS, +    AI_ITEM_NOT_RECOGNIZABLE +}; + +void AI_TrySwitchOrUseItem(void); +u8 GetMostSuitableMonToSwitchInto(void); + +#endif // GUARD_BATTLE_AI_SWITCH_ITEMS_H diff --git a/include/battle_anim.h b/include/battle_anim.h new file mode 100644 index 000000000..5282916c0 --- /dev/null +++ b/include/battle_anim.h @@ -0,0 +1,79 @@ +#ifndef GUARD_BATTLE_ANIM_H +#define GUARD_BATTLE_ANIM_H + +enum +{ +    ANIM_BANK_ATTACKER, +    ANIM_BANK_TARGET, +    ANIM_BANK_ATK_PARTNER, +    ANIM_BANK_DEF_PARTNER, +}; + +enum +{ +    BG_ANIM_SCREEN_SIZE, +    BG_ANIM_AREA_OVERFLOW_MODE, +    BG_ANIM2, +    BG_ANIM3, +    BG_ANIM_PRIORITY, +    BG_ANIM_5, +    BG_ANIM_6 +}; + +struct UnknownAnimStruct2 +{ +    void *unk0; +    u16 *unk4; +    u8 unk8; +    u8 unk9; +    u16 unkA; +    u16 unkC; +}; + +struct BattleAnimBackground +{ +    void *image; +    void *palette; +    void *tilemap; +}; + +#define ANIM_ARGS_COUNT 8 + +#define PAN_SIDE_PLAYER     -64 +#define PAN_SIDE_OPPONENT   63 + +extern void (*gAnimScriptCallback)(void); +extern bool8 gAnimScriptActive; +extern u8 gAnimVisualTaskCount; +extern u8 gAnimSoundTaskCount; +extern struct DisableStruct *gAnimDisableStructPtr; +extern u32 gAnimMoveDmg; +extern u16 gAnimMovePower; +extern u8 gAnimFriendship; +extern u16 gWeatherMoveAnim; +extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT]; +extern u8 gAnimMoveTurn; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT]; +extern u8 gUnknown_02038440; + +void ClearBattleAnimationVars(void); +void DoMoveAnim(u16 move); +void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim); +void DestroyAnimSprite(struct Sprite *sprite); +void DestroyAnimVisualTask(u8 taskId); +void DestroyAnimSoundTask(u8 taskId); +bool8 IsAnimBankSpriteVisible(u8 bank); +void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible); +bool8 IsContest(void); +s8 BattleAnimAdjustPanning(s8 pan); +s8 BattleAnimAdjustPanning2(s8 pan); +s16 sub_80A52EC(s16 a); +s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); + +// battle_anim_80FE840.s +void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); +void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 bankIdentity, u8 arg4, void *arg5, u16 *arg6, u16 arg7); + +#endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_controllers.h b/include/battle_controllers.h new file mode 100644 index 000000000..4bc6b7b84 --- /dev/null +++ b/include/battle_controllers.h @@ -0,0 +1,207 @@ +#ifndef GUARD_BATTLE_CONTROLLERS_H +#define GUARD_BATTLE_CONTROLLERS_H + +#define REQUEST_ALL_BATTLE      0x0 +#define REQUEST_SPECIES_BATTLE  0x1 +#define REQUEST_HELDITEM_BATTLE 0x2 +#define REQUEST_MOVES_PP_BATTLE 0x3 +#define REQUEST_PPMOVE1_BATTLE  0x9 +#define REQUEST_PPMOVE2_BATTLE  0xA +#define REQUEST_PPMOVE3_BATTLE  0xB +#define REQUEST_PPMOVE4_BATTLE  0xC +#define REQUEST_STATUS_BATTLE   0x28 +#define REQUEST_HP_BATTLE       0x2A + +#define RESET_ACTION_MOVE_SELECTION     0 +#define RESET_ACTION_SELECTION          1 +#define RESET_MOVE_SELECTION            2 + +#define BALL_NO_SHAKES          0 +#define BALL_1_SHAKE            1 +#define BALL_2_SHAKES           2 +#define BALL_3_SHAKES_FAIL      3 +#define BALL_3_SHAKES_SUCCESS   4 +#define BALL_TRAINER_BLOCK      5 + +struct HpAndStatus +{ +    u16 hp; +    u32 status; +}; + +struct MovePpInfo +{ +    u16 move[4]; +    u8 pp[4]; +    u8 ppBonuses; +}; + +struct ChooseMoveStruct +{ +    u16 moves[4]; +    u8 currentPp[4]; +    u8 maxPp[4]; +    u16 species; +    u8 monType1; +    u8 monType2; +}; + +enum +{ +    CONTROLLER_GETMONDATA, +    CONTROLLER_GETRAWMONDATA, +    CONTROLLER_SETMONDATA, +    CONTROLLER_SETRAWMONDATA, +    CONTROLLER_LOADMONSPRITE, +    CONTROLLER_SWITCHINANIM, +    CONTROLLER_RETURNMONTOBALL, +    CONTROLLER_DRAWTRAINERPIC, +    CONTROLLER_TRAINERSLIDE, +    CONTROLLER_TRAINERSLIDEBACK, +    CONTROLLER_FAINTANIMATION, +    CONTROLLER_11, +    CONTROLLER_12, +    CONTROLLER_BALLTHROW, +    CONTROLLER_PAUSE, +    CONTROLLER_MOVEANIMATION, +    CONTROLLER_PRINTSTRING, +    CONTROLLER_PRINTSTRINGPLAYERONLY, +    CONTROLLER_CHOOSEACTION, +    CONTROLLER_19, +    CONTROLLER_CHOOSEMOVE, +    CONTROLLER_OPENBAG, +    CONTROLLER_CHOOSEPOKEMON, +    CONTROLLER_23, +    CONTROLLER_HEALTHBARUPDATE, +    CONTROLLER_EXPUPDATE, +    CONTROLLER_STATUSICONUPDATE, +    CONTROLLER_STATUSANIMATION, +    CONTROLLER_STATUSXOR, +    CONTROLLER_DATATRANSFER, +    CONTROLLER_DMA3TRANSFER, +    CONTROLLER_31, +    CONTROLLER_32, +    CONTROLLER_33, +    CONTROLLER_34, +    CONTROLLER_35, +    CONTROLLER_36, +    CONTROLLER_37, +    CONTROLLER_38, +    CONTROLLER_39, +    CONTROLLER_40, +    CONTROLLER_HITANIMATION, +    CONTROLLER_42, +    CONTROLLER_EFFECTIVENESSSOUND, +    CONTROLLER_PLAYFANFAREORBGM, +    CONTROLLER_FAINTINGCRY, +    CONTROLLER_INTROSLIDE, +    CONTROLLER_INTROTRAINERBALLTHROW, +    CONTROLLER_DRAWPARTYSTATUSSUMMARY, +    CONTROLLER_49, +    CONTROLLER_50, +    CONTROLLER_SPRITEINVISIBILITY, +    CONTROLLER_BATTLEANIMATION, +    CONTROLLER_LINKSTANDBYMSG, +    CONTROLLER_RESETACTIONMOVESELECTION, +    CONTROLLER_55, +    CONTROLLER_56 +}; + +#define LAST_CONTROLLER_CMD_ID CONTROLLER_56 + 1 + +// general functions +void HandleLinkBattleSetup(void); +void SetUpBattleVarsAndBirchZigzagoon(void); +void sub_8032768(void); +void sub_8033648(void); +void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data); + +// emitters +void EmitGetMonData(u8 bufferId, u8 arg1, u8 arg2); +void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused +void EmitSetMonData(u8 bufferId, u8 request, u8 c, u8 bytes, void *data); +void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused +void EmitLoadMonSprite(u8 bufferId); +void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); +void EmitReturnMonToBall(u8 bufferId, u8 arg1); +void EmitDrawTrainerPic(u8 bufferId); +void EmitTrainerSlide(u8 bufferId); +void EmitTrainerSlideBack(u8 bufferId); +void EmitFaintAnimation(u8 bufferId); +void EmitCmd11(u8 bufferId); // unused +void EmitCmd12(u8 bufferId); // unused +void EmitBallThrow(u8 bufferId, u8 caseId); +void EmitPause(u8 bufferId, u8 toWait, void *data); // unused +void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit); +void EmitPrintString(u8 bufferId, u16 stringId); +void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId); +void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); +void EmitCmd19(u8 bufferId); +void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); +void EmitOpenBag(u8 bufferId, u8* arg1); +void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4); +void EmitCmd23(u8 bufferId); // unused +void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); +void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); +void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); +void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); +void EmitStatusXor(u8 bufferId, u8 b); // unused +void EmitDataTransfer(u8 bufferId, u16 size, void *data); +void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused +void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused +void EmitCmd32(u8 bufferId, u16 size, void *c); // unused +void EmitCmd33(u8 bufferId, u8 arg1, u16 arg2); +void EmitCmd34(u8 bufferId, u8 b, u8 *c); +void EmitCmd35(u8 bufferId, u16 b); +void EmitCmd36(u8 bufferId, u16 b); +void EmitCmd37(u8 bufferId); +void EmitCmd38(u8 bufferId, u8 b); +void EmitCmd39(u8 bufferId); +void EmitCmd40(u8 bufferId); +void EmitHitAnimation(u8 bufferId); +void EmitCmd42(u8 bufferId); +void EmitEffectivenessSound(u8 bufferId, u16 songId); +void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM); +void EmitFaintingCry(u8 bufferId); +void EmitIntroSlide(u8 bufferId, u8 terrainId); +void EmitIntroTrainerBallThrow(u8 bufferId); +void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); +void EmitCmd49(u8 bufferId); +void EmitCmd50(u8 bufferId); +void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); +void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); +void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2); +void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); +void EmitCmd55(u8 bufferId, u8 arg1); + +// player controller +void SetBankFuncToPlayerBufferRunCommand(void); +void nullsub_21(void); +void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused); +void ActionSelectionDestroyCursorAt(u8 cursorPos); + +// recorded player controller +void SetBankFuncToRecordedPlayerBufferRunCommand(void); + +// opponent controller +void SetBankFuncToOpponentBufferRunCommand(void); + +// player partner controller +void SetBankFuncToPlayerPartnerBufferRunCommand(void); + +// safari controller +void SetBankFuncToSafariBufferRunCommand(void); + +// wally controller +void SetBankFuncToWallyBufferRunCommand(void); + +// recorded opponent controller +void SetBankFuncToRecordedOpponentBufferRunCommand(void); + +// link opponent +void SetBankFuncToLinkOpponentBufferRunCommand(void); + +// link partner +void SetBankFuncToLinkPartnerBufferRunCommand(void); + +#endif // GUARD_BATTLE_CONTROLLERS_H diff --git a/include/battle_frontier_2.h b/include/battle_frontier_2.h new file mode 100644 index 000000000..4f37248cc --- /dev/null +++ b/include/battle_frontier_2.h @@ -0,0 +1,9 @@ +#ifndef GUARD_BATTLE_FRONTIER_2_H +#define GUARD_BATTLE_FRONTIER_2_H + +void sub_81A8934(u8); +void sub_81A895C(void); +u16 sub_81A89A0(u8); +void sub_81A8AF8(void); + +#endif // GUARD_BATTLE_FRONTIER_2_H diff --git a/include/battle_interface.h b/include/battle_interface.h new file mode 100644 index 000000000..05ea1c021 --- /dev/null +++ b/include/battle_interface.h @@ -0,0 +1,54 @@ +#ifndef GUARD_BATTLE_INTERFACE_H +#define GUARD_BATTLE_INTERFACE_H + +#include "battle_controllers.h" + +#define TAG_HEALTHBOX_PLAYER1_TILE      0xD6FF +#define TAG_HEALTHBOX_PLAYER2_TILE      0xD700 +#define TAG_HEALTHBOX_OPPONENT1_TILE    0xD701 +#define TAG_HEALTHBOX_OPPONENT2_TILE    0xD702 + +#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_STATUS_SUMMARY_BAR_PAL      0xD710 +#define TAG_STATUS_SUMMARY_BALLS_PAL    0xD712 + +enum +{ +    HEALTHBOX_ALL, +    HEALTHBOX_CURRENT_HP, +    HEALTHBOX_MAX_HP, +    HEALTHBOX_LEVEL, +    HEALTHBOX_NICK, +    HEALTHBOX_HEALTH_BAR, +    HEALTHBOX_EXP_BAR, +    HEALTHBOX_UNUSED_7, +    HEALTHBOX_UNUSED_8, +    HEALTHBOX_STATUS_ICON, +    HEALTHBOX_SAFARI_ALL_TEXT, +    HEALTHBOX_SAFARI_BALLS_TEXT +}; + +u8 CreateBankHealthboxSprites(u8 bank); +u8 CreateSafariPlayerHealthboxSprites(void); +void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 field_C); +void SetHealthboxSpriteInvisible(u8 healthboxSpriteId); +void SetHealthboxSpriteVisible(u8 healthboxSpriteId); +void DestoryHealthboxSprite(u8 healthboxSpriteId); +void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); +void UpdateOamPriorityInAllHealthboxes(u8 priority); +void SetBankHealthboxSpritePos(u8 bank); +void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); +void SwapHpBarsWithHpText(void); +u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart); +void sub_8073C30(u8 taskId); +void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId); +s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3); +u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); +u8 GetHPBarLevel(s16 hp, s16 maxhp); + +#endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/battle_message.h b/include/battle_message.h index ca310ae6f..3b154c5a6 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -1,6 +1,191 @@  #ifndef GUARD_BATTLE_MESSAGE_H  #define GUARD_BATTLE_MESSAGE_H +// for 0xFD + +#define B_TXT_BUFF1 0x0 +#define B_TXT_BUFF2 0x1 +#define B_TXT_COPY_VAR_1 0x2 +#define B_TXT_COPY_VAR_2 0x3 +#define B_TXT_COPY_VAR_3 0x4 +#define B_TXT_PLAYER_MON1_NAME 0x5 +#define B_TXT_OPPONENT_MON1_NAME 0x6 +#define B_TXT_PLAYER_MON2_NAME 0x7 +#define B_TXT_OPPONENT_MON2_NAME 0x8 +#define B_TXT_LINK_PLAYER_MON1_NAME 0x9 +#define B_TXT_LINK_OPPONENT_MON1_NAME 0xA +#define B_TXT_LINK_PLAYER_MON2_NAME 0xB +#define B_TXT_LINK_OPPONENT_MON2_NAME 0xC +#define B_TXT_ATK_NAME_WITH_PREFIX_MON1 0xD +#define B_TXT_ATK_PARTNER_NAME 0xE +#define B_TXT_ATK_NAME_WITH_PREFIX 0xF +#define B_TXT_DEF_NAME_WITH_PREFIX 0x10 +#define B_TXT_EFF_NAME_WITH_PREFIX 0x11 // EFF = short for gEffectBank +#define B_TXT_ACTIVE_NAME_WITH_PREFIX 0x12 +#define B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX 0x13 +#define B_TXT_CURRENT_MOVE 0x14 +#define B_TXT_LAST_MOVE 0x15 +#define B_TXT_LAST_ITEM 0x16 +#define B_TXT_LAST_ABILITY 0x17 +#define B_TXT_ATK_ABILITY 0x18 +#define B_TXT_DEF_ABILITY 0x19 +#define B_TXT_SCR_ACTIVE_ABILITY 0x1A +#define B_TXT_EFF_ABILITY 0x1B +#define B_TXT_TRAINER1_CLASS 0x1C +#define B_TXT_TRAINER1_NAME 0x1D +#define B_TXT_1E 0x1E // trainer name for a link player +#define B_TXT_1F 0x1F // trainer name for a link player +#define B_TXT_20 0x20 // trainer name for a link player +#define B_TXT_21 0x21 // trainer name for a link player +#define B_TXT_22 0x22 // trainer name for a link player +#define B_TXT_PLAYER_NAME 0x23 +#define B_TXT_TRAINER1_LOSE_TEXT 0x24 +#define B_TXT_TRAINER1_WIN_TEXT 0x25 +#define B_TXT_26 0x26 +#define B_TXT_PC_CREATOR_NAME 0x27 +#define B_TXT_ATK_PREFIX1 0x28 +#define B_TXT_DEF_PREFIX1 0x29 +#define B_TXT_ATK_PREFIX2 0x2A +#define B_TXT_DEF_PREFIX2 0x2B +#define B_TXT_ATK_PREFIX3 0x2C +#define B_TXT_DEF_PREFIX3 0x2D +#define B_TXT_TRAINER2_CLASS 0x2E +#define B_TXT_TRAINER2_NAME 0x2F +#define B_TXT_TRAINER2_LOSE_TEXT 0x30 +#define B_TXT_TRAINER2_WIN_TEXT 0x31 +#define B_TXT_PARTNER_CLASS 0x32 +#define B_TXT_PARTNER_NAME 0x33 +#define B_TXT_BUFF3 0x34 + +// for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3 + +#define B_BUFF_STRING                   0 +#define B_BUFF_NUMBER                   1 +#define B_BUFF_MOVE                     2 +#define B_BUFF_TYPE                     3 +#define B_BUFF_MON_NICK_WITH_PREFIX     4 +#define B_BUFF_STAT                     5 +#define B_BUFF_SPECIES                  6 +#define B_BUFF_MON_NICK                 7 +#define B_BUFF_NEGATIVE_FLAVOUR         8 +#define B_BUFF_ABILITY                  9 +#define B_BUFF_ITEM                     10 + +#define B_BUFF_PLACEHOLDER_BEGIN        0xFD +#define B_BUFF_EOS                      0xFF + +#define PREPARE_STAT_BUFFER(textVar, statId)                                \ +{                                                                           \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                                  \ +    textVar[1] = B_BUFF_STAT;                                               \ +    textVar[2] = statId;                                                    \ +    textVar[3] = B_BUFF_EOS;                                                \ +} + +#define PREPARE_ABILITY_BUFFER(textVar, abilityId)                          \ +{                                                                           \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                                  \ +    textVar[1] = B_BUFF_ABILITY;                                            \ +    textVar[2] = abilityId;                                                 \ +    textVar[3] = B_BUFF_EOS;                                                \ +} + +#define PREPARE_TYPE_BUFFER(textVar, typeId)                                \ +{                                                                           \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                                  \ +    textVar[1] = B_BUFF_TYPE;                                               \ +    textVar[2] = typeId;                                                    \ +    textVar[3] = B_BUFF_EOS;                                                \ +} + +#define PREPARE_BYTE_NUMBER_BUFFER(textVar, maxDigits, number)  \ +{                                                               \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                      \ +    textVar[1] = B_BUFF_NUMBER;                                 \ +    textVar[2] = 1;                                             \ +    textVar[3] = maxDigits;                                     \ +    textVar[4] = (number);                                      \ +    textVar[5] = B_BUFF_EOS;                                    \ +} + +#define PREPARE_HWORD_NUMBER_BUFFER(textVar, maxDigits, number)             \ +{                                                                           \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                                  \ +    textVar[1] = B_BUFF_NUMBER;                                             \ +    textVar[2] = 2;                                                         \ +    textVar[3] = maxDigits;                                                 \ +    textVar[4] = (number);                                                  \ +    textVar[5] = (number & 0x0000FF00) >> 8;                                \ +    textVar[6] = B_BUFF_EOS;                                                \ +} + +#define PREPARE_WORD_NUMBER_BUFFER(textVar, maxDigits, number)  \ +{                                                               \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                      \ +    textVar[1] = B_BUFF_NUMBER;                                 \ +    textVar[2] = 4;                                             \ +    textVar[3] = maxDigits;                                     \ +    textVar[4] = (number);                                      \ +    textVar[5] = (number & 0x0000FF00) >> 8;                    \ +    textVar[6] = (number & 0x00FF0000) >> 16;                   \ +    textVar[7] = (number & 0xFF000000) >> 24;                   \ +    textVar[8] = B_BUFF_EOS;                                    \ +} + +#define PREPARE_STRING_BUFFER(textVar, stringId)                \ +{                                                               \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                      \ +    textVar[1] = B_BUFF_STRING;                                 \ +    textVar[2] = stringId;                                      \ +    textVar[3] = (stringId & 0xFF00) >> 8;                      \ +    textVar[4] = B_BUFF_EOS;                                    \ +} + +#define PREPARE_MOVE_BUFFER(textVar, move)                      \ +{                                                               \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                      \ +    textVar[1] = B_BUFF_MOVE;                                   \ +    textVar[2] = move;                                          \ +    textVar[3] = (move & 0xFF00) >> 8;                          \ +    textVar[4] = B_BUFF_EOS;                                    \ +} + +#define PREPARE_ITEM_BUFFER(textVar, item)                      \ +{                                                               \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                      \ +    textVar[1] = B_BUFF_ITEM;                                   \ +    textVar[2] = item;                                          \ +    textVar[3] = (item & 0xFF00) >> 8;                          \ +    textVar[4] = B_BUFF_EOS;                                    \ +} + +#define PREPARE_SPECIES_BUFFER(textVar, species)                \ +{                                                               \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                      \ +    textVar[1] = B_BUFF_SPECIES;                                \ +    textVar[2] = species;                                       \ +    textVar[3] = (species & 0xFF00) >> 8;                       \ +    textVar[4] = B_BUFF_EOS;                                    \ +} + +#define PREPARE_MON_NICK_WITH_PREFIX_BUFFER(textVar, bank, partyId)         \ +{                                                                           \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                                  \ +    textVar[1] = B_BUFF_MON_NICK_WITH_PREFIX;                               \ +    textVar[2] = bank;                                                      \ +    textVar[3] = partyId;                                                   \ +    textVar[4] = B_BUFF_EOS;                                                \ +} + +#define PREPARE_MON_NICK_BUFFER(textVar, bank, partyId)         \ +{                                                               \ +    textVar[0] = B_BUFF_PLACEHOLDER_BEGIN;                      \ +    textVar[1] = B_BUFF_MON_NICK;                               \ +    textVar[2] = bank;                                          \ +    textVar[3] = partyId;                                       \ +    textVar[4] = B_BUFF_EOS;                                    \ +} +  struct StringInfoBattle  {      u16 currentMove; @@ -17,12 +202,25 @@ struct StringInfoBattle  };  void BufferStringBattle(u16 stringID); -u32 StrCpyDecodeToDisplayedStringBattle(const u8* src); -u32 StrCpyDecodeBattle(const u8* src, u8* dst); +u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src); +u32 BattleStringExpandPlaceholders(const u8* src, u8* dst); +void sub_814F9EC(const u8* text, u8 arg1); +void SetPpNumbersPaletteInMoveSelection(void); +u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp); + +#define TEXT_BUFF_ARRAY_COUNT   16 + +extern u8 gDisplayedStringBattle[300]; +extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT]; +extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT]; +extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT]; + +extern const u8* const gStatNamesTable[]; +extern const u8* const gPokeblockWasTooXStringTable[]; +extern const u8* const gRefereeStringsTable[]; +extern const u8* const gStatNamesTable2[]; -extern u8 gBattleTextBuff1[]; -extern u8 gBattleTextBuff2[]; -extern u8 gBattleTextBuff3[]; -extern u8 gDisplayedStringBattle[]; +extern const u16 gMissStringIds[]; +extern const u16 gTrappingMoves[];  #endif // GUARD_BATTLE_MESSAGE_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h new file mode 100644 index 000000000..590944f02 --- /dev/null +++ b/include/battle_script_commands.h @@ -0,0 +1,58 @@ +#ifndef GUARD_BATTLE_SCRIPT_COMMANDS_H +#define GUARD_BATTLE_SCRIPT_COMMANDS_H + +#define CMP_EQUAL               0x0 +#define CMP_NOT_EQUAL           0x1 +#define CMP_GREATER_THAN        0x2 +#define CMP_LESS_THAN           0x3 +#define CMP_COMMON_BITS         0x4 +#define CMP_NO_COMMON_BITS      0x5 + +#define BS_ATTACKER_WITH_PARTNER        4 // for atk98_status_icon_update +#define BS_GET_ATTACKER_SIDE            8 // for atk1E_jumpifability +#define BS_GET_NOT_ATTACKER_SIDE        9 // for atk1E_jumpifability + +#define ATK48_STAT_NEGATIVE         0x1 +#define ATK48_STAT_BY_TWO           0x2 +#define ATK48_BIT_x4                0x4 +#define ATK48_LOWER_FAIL_CHECK      0x8 + +#define ATK4F_DONT_CHECK_STATUSES   0x80 + +#define VARIOUS_CANCEL_MULTI_TURN_MOVES         0 +#define VARIOUS_SET_MAGIC_COAT_TARGET           1 +#define VARIOUS_CAN_RUN_FROM_BATTLE             2 +#define VARIOUS_GET_MOVE_TARGET                 3 +#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS     5 +#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP    6 +#define VARIOUS_WAIT_CRY                        18 +#define VARIOUS_RETURN_OPPONENT_MON1            19 +#define VARIOUS_RETURN_OPPONENT_MON2            20 +#define VARIOUS_SET_TELEPORT_OUTCOME            25 +#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC     26 + +#define ATK80_DMG_CHANGE_SIGN                               0 +#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP     1 +#define ATK80_DMG_DOUBLED                                   2 + +#define STAT_CHANGE_BS_PTR                  0x1 +#define STAT_CHANGE_NOT_PROTECT_AFFECTED    0x20 + +#define STAT_CHANGE_WORKED      0 +#define STAT_CHANGE_DIDNT_WORK  1 + +void AI_CalcDmg(u8 bankAtk, u8 bankDef); +u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); +u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility); +u8 BankGetTurnOrder(u8 bank); +void SetMoveEffect(bool8 primary, u8 certain); +void BattleDestroyCursorAt(u8 cursorPosition); +void BattleCreateCursorAt(u8 cursorPosition); +void BufferMoveToLearnIntoBattleTextBuff2(void); +void sub_8056A3C(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); +bool8 UproarWakeUpCheck(u8 bank); + +extern void (* const gBattleScriptingCommandsTable[])(void); +extern const u8 gUnknown_0831C494[]; + +#endif // GUARD_BATTLE_SCRIPT_COMMANDS_H diff --git a/include/battle_setup.h b/include/battle_setup.h new file mode 100644 index 000000000..e4acd8601 --- /dev/null +++ b/include/battle_setup.h @@ -0,0 +1,15 @@ +#ifndef GUARD_BATTLE_SETUP_H +#define GUARD_BATTLE_SETUP_H + +void BattleSetup_StartScriptedWildBattle(void); +u8 BattleSetup_GetTerrainId(void); +u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); + +u8 HasTrainerAlreadyBeenFought(u16); +void trainer_flag_set(u16); +void trainer_flag_clear(u16); +void BattleSetup_StartTrainerBattle(void); +u8 *BattleSetup_GetScriptAddrAfterBattle(void); +u8 *BattleSetup_GetTrainerPostBattleScript(void); + +#endif // GUARD_BATTLE_SETUP_H diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h new file mode 100644 index 000000000..f242284b0 --- /dev/null +++ b/include/battle_string_ids.h @@ -0,0 +1,387 @@ +#ifndef GUARD_BATTLE_STRING_IDS_H +#define GUARD_BATTLE_STRING_IDS_H + +#define BATTLESTRINGS_COUNT     369 + +#define BATTLESTRINGS_ID_ADDER  12 // all battlestrings have its ID + 12, because first 5 are reserved + +#define STRINGID_INTROMSG   0 +#define STRINGID_INTROSENDOUT   1 +#define STRINGID_RETURNMON  2 +#define STRINGID_SWITCHINMON    3 +#define STRINGID_USEDMOVE   4 +#define STRINGID_BATTLEEND  5 + + +// todo: make some of those names less vague: attacker/target vs pkmn, etc. +#define	STRINGID_TRAINER1LOSETEXT	12 +#define	STRINGID_PKMNGAINEDEXP	13 +#define	STRINGID_PKMNGREWTOLV	14 +#define	STRINGID_PKMNLEARNEDMOVE	15 +#define	STRINGID_TRYTOLEARNMOVE1	16 +#define	STRINGID_TRYTOLEARNMOVE2	17 +#define	STRINGID_TRYTOLEARNMOVE3	18 +#define	STRINGID_PKMNFORGOTMOVE	19 +#define	STRINGID_STOPLEARNINGMOVE	20 +#define	STRINGID_DIDNOTLEARNMOVE	21 +#define	STRINGID_PKMNLEARNEDMOVE2	22 +#define	STRINGID_ATTACKMISSED	23 +#define	STRINGID_PKMNPROTECTEDITSELF	24 +#define	STRINGID_STATSWONTINCREASE2	25 +#define	STRINGID_AVOIDEDDAMAGE	26 +#define	STRINGID_ITDOESNTAFFECT	27 +#define	STRINGID_ATTACKERFAINTED	28 +#define	STRINGID_TARGETFAINTED	29 +#define	STRINGID_PLAYERGOTMONEY	30 +#define	STRINGID_PLAYERWHITEOUT	31 +#define	STRINGID_PLAYERWHITEOUT2	32 +#define	STRINGID_PREVENTSESCAPE	33 +#define	STRINGID_HITXTIMES	34 +#define	STRINGID_PKMNFELLASLEEP	35 +#define	STRINGID_PKMNMADESLEEP	36 +#define	STRINGID_PKMNALREADYASLEEP	37 +#define	STRINGID_PKMNALREADYASLEEP2	38 +#define	STRINGID_PKMNWASNTAFFECTED	39 +#define	STRINGID_PKMNWASPOISONED	40 +#define	STRINGID_PKMNPOISONEDBY	41 +#define	STRINGID_PKMNHURTBYPOISON	42 +#define	STRINGID_PKMNALREADYPOISONED	43 +#define	STRINGID_PKMNBADLYPOISONED	44 +#define	STRINGID_PKMNENERGYDRAINED	45 +#define	STRINGID_PKMNWASBURNED	46 +#define	STRINGID_PKMNBURNEDBY	47 +#define	STRINGID_PKMNHURTBYBURN	48 +#define	STRINGID_PKMNWASFROZEN	49 +#define	STRINGID_PKMNFROZENBY	50 +#define	STRINGID_PKMNISFROZEN	51 +#define	STRINGID_PKMNWASDEFROSTED	52 +#define	STRINGID_PKMNWASDEFROSTED2	53 +#define	STRINGID_PKMNWASDEFROSTEDBY	54 +#define	STRINGID_PKMNWASPARALYZED	55 +#define	STRINGID_PKMNWASPARALYZEDBY	56 +#define	STRINGID_PKMNISPARALYZED	57 +#define	STRINGID_PKMNISALREADYPARALYZED	58 +#define	STRINGID_PKMNHEALEDPARALYSIS	59 +#define	STRINGID_PKMNDREAMEATEN	60 +#define	STRINGID_STATSWONTINCREASE	61 +#define	STRINGID_STATSWONTDECREASE	62 +#define	STRINGID_TEAMSTOPPEDWORKING	63 +#define	STRINGID_FOESTOPPEDWORKING	64 +#define	STRINGID_PKMNISCONFUSED	65 +#define	STRINGID_PKMNHEALEDCONFUSION	66 +#define	STRINGID_PKMNWASCONFUSED	67 +#define	STRINGID_PKMNALREADYCONFUSED	68 +#define	STRINGID_PKMNFELLINLOVE	69 +#define	STRINGID_PKMNINLOVE	70 +#define	STRINGID_PKMNIMMOBILIZEDBYLOVE	71 +#define	STRINGID_PKMNBLOWNAWAY	72 +#define	STRINGID_PKMNCHANGEDTYPE	73 +#define	STRINGID_PKMNFLINCHED	74 +#define	STRINGID_PKMNREGAINEDHEALTH	75 +#define	STRINGID_PKMNHPFULL	76 +#define	STRINGID_PKMNRAISEDSPDEF	77 +#define	STRINGID_PKMNRAISEDDEF	78 +#define	STRINGID_PKMNCOVEREDBYVEIL	79 +#define	STRINGID_PKMNUSEDSAFEGUARD	80 +#define	STRINGID_PKMNSAFEGUARDEXPIRED	81 +#define	STRINGID_PKMNWENTTOSLEEP	82 +#define	STRINGID_PKMNSLEPTHEALTHY	83 +#define	STRINGID_PKMNWHIPPEDWHIRLWIND	84 +#define	STRINGID_PKMNTOOKSUNLIGHT	85 +#define	STRINGID_PKMNLOWEREDHEAD	86 +#define	STRINGID_PKMNISGLOWING	87 +#define	STRINGID_PKMNFLEWHIGH	88 +#define	STRINGID_PKMNDUGHOLE	89 +#define	STRINGID_PKMNSQUEEZEDBYBIND	90 +#define	STRINGID_PKMNTRAPPEDINVORTEX	91 +#define	STRINGID_PKMNWRAPPEDBY	92 +#define	STRINGID_PKMNCLAMPED	93 +#define	STRINGID_PKMNHURTBY	94 +#define	STRINGID_PKMNFREEDFROM	95 +#define	STRINGID_PKMNCRASHED	96 +#define	STRINGID_PKMNSHROUDEDINMIST	97 +#define	STRINGID_PKMNPROTECTEDBYMIST	98 +#define	STRINGID_PKMNGETTINGPUMPED	99 +#define	STRINGID_PKMNHITWITHRECOIL	100 +#define	STRINGID_PKMNPROTECTEDITSELF2	101 +#define	STRINGID_PKMNBUFFETEDBYSANDSTORM	102 +#define	STRINGID_PKMNPELTEDBYHAIL	103 +#define	STRINGID_PKMNSEEDED	104 +#define	STRINGID_PKMNEVADEDATTACK	105 +#define	STRINGID_PKMNSAPPEDBYLEECHSEED	106 +#define	STRINGID_PKMNFASTASLEEP	107 +#define	STRINGID_PKMNWOKEUP	108 +#define	STRINGID_PKMNUPROARKEPTAWAKE	109 +#define	STRINGID_PKMNWOKEUPINUPROAR	110 +#define	STRINGID_PKMNCAUSEDUPROAR	111 +#define	STRINGID_PKMNMAKINGUPROAR	112 +#define	STRINGID_PKMNCALMEDDOWN	113 +#define	STRINGID_PKMNCANTSLEEPINUPROAR	114 +#define	STRINGID_PKMNSTOCKPILED	115 +#define	STRINGID_PKMNCANTSTOCKPILE	116 +#define	STRINGID_PKMNCANTSLEEPINUPROAR2	117 +#define	STRINGID_UPROARKEPTPKMNAWAKE	118 +#define	STRINGID_PKMNSTAYEDAWAKEUSING	119 +#define	STRINGID_PKMNSTORINGENERGY	120 +#define	STRINGID_PKMNUNLEASHEDENERGY	121 +#define	STRINGID_PKMNFATIGUECONFUSION	122 +#define	STRINGID_PKMNPICKEDUPITEM	123 +#define	STRINGID_PKMNUNAFFECTED	124 +#define	STRINGID_PKMNTRANSFORMEDINTO	125 +#define	STRINGID_PKMNMADESUBSTITUTE	126 +#define	STRINGID_PKMNHASSUBSTITUTE	127 +#define	STRINGID_SUBSTITUTEDAMAGED	128 +#define	STRINGID_PKMNSUBSTITUTEFADED	129 +#define	STRINGID_PKMNMUSTRECHARGE	130 +#define	STRINGID_PKMNRAGEBUILDING	131 +#define	STRINGID_PKMNMOVEWASDISABLED	132 +#define	STRINGID_PKMNMOVEISDISABLED	133 +#define	STRINGID_PKMNMOVEDISABLEDNOMORE	134 +#define	STRINGID_PKMNGOTENCORE	135 +#define	STRINGID_PKMNENCOREENDED	136 +#define	STRINGID_PKMNTOOKAIM	137 +#define	STRINGID_PKMNSKETCHEDMOVE	138 +#define	STRINGID_PKMNTRYINGTOTAKEFOE	139 +#define	STRINGID_PKMNTOOKFOE	140 +#define	STRINGID_PKMNREDUCEDPP	141 +#define	STRINGID_PKMNSTOLEITEM	142 +#define	STRINGID_TARGETCANTESCAPENOW	143 +#define	STRINGID_PKMNFELLINTONIGHTMARE	144 +#define	STRINGID_PKMNLOCKEDINNIGHTMARE	145 +#define	STRINGID_PKMNLAIDCURSE	146 +#define	STRINGID_PKMNAFFLICTEDBYCURSE	147 +#define	STRINGID_SPIKESSCATTERED	148 +#define	STRINGID_PKMNHURTBYSPIKES	149 +#define	STRINGID_PKMNIDENTIFIED	150 +#define	STRINGID_PKMNPERISHCOUNTFELL	151 +#define	STRINGID_PKMNBRACEDITSELF	152 +#define	STRINGID_PKMNENDUREDHIT	153 +#define	STRINGID_MAGNITUDESTRENGTH	154 +#define	STRINGID_PKMNCUTHPMAXEDATTACK	155 +#define	STRINGID_PKMNCOPIEDSTATCHANGES	156 +#define	STRINGID_PKMNGOTFREE	157 +#define	STRINGID_PKMNSHEDLEECHSEED	158 +#define	STRINGID_PKMNBLEWAWAYSPIKES	159 +#define	STRINGID_PKMNFLEDFROMBATTLE	160 +#define	STRINGID_PKMNFORESAWATTACK	161 +#define	STRINGID_PKMNTOOKATTACK	162 +#define	STRINGID_PKMNATTACK	163 +#define	STRINGID_PKMNCENTERATTENTION	164 +#define	STRINGID_PKMNCHARGINGPOWER	165 +#define	STRINGID_NATUREPOWERTURNEDINTO	166 +#define	STRINGID_PKMNSTATUSNORMAL	167 +#define	STRINGID_PKMNHASNOMOVESLEFT	168 +#define	STRINGID_PKMNSUBJECTEDTOTORMENT	169 +#define	STRINGID_PKMNCANTUSEMOVETORMENT	170 +#define	STRINGID_PKMNTIGHTENINGFOCUS	171 +#define	STRINGID_PKMNFELLFORTAUNT	172 +#define	STRINGID_PKMNCANTUSEMOVETAUNT	173 +#define	STRINGID_PKMNREADYTOHELP	174 +#define	STRINGID_PKMNSWITCHEDITEMS	175 +#define	STRINGID_PKMNCOPIEDFOE	176 +#define	STRINGID_PKMNMADEWISH	177 +#define	STRINGID_PKMNWISHCAMETRUE	178 +#define	STRINGID_PKMNPLANTEDROOTS	179 +#define	STRINGID_PKMNABSORBEDNUTRIENTS	180 +#define	STRINGID_PKMNANCHOREDITSELF	181 +#define	STRINGID_PKMNWASMADEDROWSY	182 +#define	STRINGID_PKMNKNOCKEDOFF	183 +#define	STRINGID_PKMNSWAPPEDABILITIES	184 +#define	STRINGID_PKMNSEALEDOPPONENTMOVE	185 +#define	STRINGID_PKMNCANTUSEMOVESEALED	186 +#define	STRINGID_PKMNWANTSGRUDGE	187 +#define	STRINGID_PKMNLOSTPPGRUDGE	188 +#define	STRINGID_PKMNSHROUDEDITSELF	189 +#define	STRINGID_PKMNMOVEBOUNCED	190 +#define	STRINGID_PKMNWAITSFORTARGET	191 +#define	STRINGID_PKMNSNATCHEDMOVE	192 +#define	STRINGID_PKMNMADEITRAIN	193 +#define	STRINGID_PKMNRAISEDSPEED	194 +#define	STRINGID_PKMNPROTECTEDBY	195 +#define	STRINGID_PKMNPREVENTSUSAGE	196 +#define	STRINGID_PKMNRESTOREDHPUSING	197 +#define	STRINGID_PKMNCHANGEDTYPEWITH	198 +#define	STRINGID_PKMNPREVENTSPARALYSISWITH	199 +#define	STRINGID_PKMNPREVENTSROMANCEWITH	200 +#define	STRINGID_PKMNPREVENTSPOISONINGWITH	201 +#define	STRINGID_PKMNPREVENTSCONFUSIONWITH	202 +#define	STRINGID_PKMNRAISEDFIREPOWERWITH	203 +#define	STRINGID_PKMNANCHORSITSELFWITH	204 +#define	STRINGID_PKMNCUTSATTACKWITH	205 +#define	STRINGID_PKMNPREVENTSSTATLOSSWITH	206 +#define	STRINGID_PKMNHURTSWITH	207 +#define	STRINGID_PKMNTRACED	208 +#define	STRINGID_STATSHARPLY	209 +#define	STRINGID_STATROSE	210 +#define	STRINGID_STATHARSHLY	211 +#define	STRINGID_STATFELL	212 +#define	STRINGID_PKMNSSTATCHANGED	213 +#define	STRINGID_PKMNSSTATCHANGED2	214 +#define	STRINGID_PKMNSSTATCHANGED3	215 +#define	STRINGID_PKMNSSTATCHANGED4	216 +#define	STRINGID_CRITICALHIT	217 +#define	STRINGID_ONEHITKO	218 +#define	STRINGID_123POOF	219 +#define	STRINGID_ANDELLIPSIS	220 +#define	STRINGID_NOTVERYEFFECTIVE	221 +#define	STRINGID_SUPEREFFECTIVE	222 +#define	STRINGID_GOTAWAYSAFELY	223 +#define	STRINGID_WILDPKMNFLED	224 +#define	STRINGID_NORUNNINGFROMTRAINERS	225 +#define	STRINGID_CANTESCAPE	226 +#define	STRINGID_DONTLEAVEBIRCH	227 +#define	STRINGID_BUTNOTHINGHAPPENED	228 +#define	STRINGID_BUTITFAILED	229 +#define	STRINGID_ITHURTCONFUSION	230 +#define	STRINGID_MIRRORMOVEFAILED	231 +#define	STRINGID_STARTEDTORAIN	232 +#define	STRINGID_DOWNPOURSTARTED	233 +#define	STRINGID_RAINCONTINUES	234 +#define	STRINGID_DOWNPOURCONTINUES	235 +#define	STRINGID_RAINSTOPPED	236 +#define	STRINGID_SANDSTORMBREWED	237 +#define	STRINGID_SANDSTORMRAGES	238 +#define	STRINGID_SANDSTORMSUBSIDED	239 +#define	STRINGID_SUNLIGHTGOTBRIGHT	240 +#define	STRINGID_SUNLIGHTSTRONG	241 +#define	STRINGID_SUNLIGHTFADED	242 +#define	STRINGID_STARTEDHAIL	243 +#define	STRINGID_HAILCONTINUES	244 +#define	STRINGID_HAILSTOPPED	245 +#define	STRINGID_FAILEDTOSPITUP	246 +#define	STRINGID_FAILEDTOSWALLOW	247 +#define	STRINGID_WINDBECAMEHEATWAVE	248 +#define	STRINGID_STATCHANGESGONE	249 +#define	STRINGID_COINSSCATTERED	250 +#define	STRINGID_TOOWEAKFORSUBSTITUTE	251 +#define	STRINGID_SHAREDPAIN	252 +#define	STRINGID_BELLCHIMED	253 +#define	STRINGID_FAINTINTHREE	254 +#define	STRINGID_NOPPLEFT	255 +#define	STRINGID_BUTNOPPLEFT	256 +#define	STRINGID_PLAYERUSEDITEM	257 +#define	STRINGID_WALLYUSEDITEM	258 +#define	STRINGID_TRAINERBLOCKEDBALL	259 +#define	STRINGID_DONTBEATHIEF	260 +#define	STRINGID_ITDODGEDBALL	261 +#define	STRINGID_YOUMISSEDPKMN	262 +#define	STRINGID_PKMNBROKEFREE	263 +#define	STRINGID_ITAPPEAREDCAUGHT	264 +#define	STRINGID_AARGHALMOSTHADIT	265 +#define	STRINGID_SHOOTSOCLOSE	266 +#define	STRINGID_GOTCHAPKMNCAUGHT	267 +#define	STRINGID_GOTCHAPKMNCAUGHT2	268 +#define	STRINGID_GIVENICKNAMECAPTURED	269 +#define	STRINGID_PKMNSENTTOPC	270 +#define	STRINGID_PKMNDATAADDEDTODEX	271 +#define	STRINGID_ITISRAINING	272 +#define	STRINGID_SANDSTORMISRAGING	273 +#define	STRINGID_CANTESCAPE2	274 +#define	STRINGID_PKMNIGNORESASLEEP	275 +#define	STRINGID_PKMNIGNOREDORDERS	276 +#define	STRINGID_PKMNBEGANTONAP	277 +#define	STRINGID_PKMNLOAFING	278 +#define	STRINGID_PKMNWONTOBEY	279 +#define	STRINGID_PKMNTURNEDAWAY	280 +#define	STRINGID_PKMNPRETENDNOTNOTICE	281 +#define	STRINGID_ENEMYABOUTTOSWITCHPKMN	282 +#define	STRINGID_CREPTCLOSER	283 +#define	STRINGID_CANTGETCLOSER	284 +#define	STRINGID_PKMNWATCHINGCAREFULLY	285 +#define	STRINGID_PKMNCURIOUSABOUTX	286 +#define	STRINGID_PKMNENTHRALLEDBYX	287 +#define	STRINGID_PKMNIGNOREDX	288 +#define	STRINGID_THREWPOKEBLOCKATPKMN	289 +#define	STRINGID_OUTOFSAFARIBALLS	290 +#define	STRINGID_PKMNSITEMCUREDPARALYSIS	291 +#define	STRINGID_PKMNSITEMCUREDPOISON	292 +#define	STRINGID_PKMNSITEMHEALEDBURN	293 +#define	STRINGID_PKMNSITEMDEFROSTEDIT	294 +#define	STRINGID_PKMNSITEMWOKEIT	295 +#define	STRINGID_PKMNSITEMSNAPPEDOUT	296 +#define	STRINGID_PKMNSITEMCUREDPROBLEM	297 +#define	STRINGID_PKMNSITEMRESTOREDHEALTH	298 +#define	STRINGID_PKMNSITEMRESTOREDPP	299 +#define	STRINGID_PKMNSITEMRESTOREDSTATUS	300 +#define	STRINGID_PKMNSITEMRESTOREDHPALITTLE	301 +#define	STRINGID_ITEMALLOWSONLYYMOVE	302 +#define	STRINGID_PKMNHUNGONWITHX	303 +#define	STRINGID_EMPTYSTRING3	304 +#define	STRINGID_PKMNSXPREVENTSBURNS	305 +#define	STRINGID_PKMNSXBLOCKSY	306 +#define	STRINGID_PKMNSXRESTOREDHPALITTLE2	307 +#define	STRINGID_PKMNSXWHIPPEDUPSANDSTORM	308 +#define	STRINGID_PKMNSXPREVENTSYLOSS	309 +#define	STRINGID_PKMNSXINFATUATEDY	310 +#define	STRINGID_PKMNSXMADEYINEFFECTIVE	311 +#define	STRINGID_PKMNSXCUREDYPROBLEM	312 +#define	STRINGID_ITSUCKEDLIQUIDOOZE	313 +#define	STRINGID_PKMNTRANSFORMED	314 +#define	STRINGID_ELECTRICITYWEAKENED	315 +#define	STRINGID_FIREWEAKENED	316 +#define	STRINGID_PKMNHIDUNDERWATER	317 +#define	STRINGID_PKMNSPRANGUP	318 +#define	STRINGID_HMMOVESCANTBEFORGOTTEN	319 +#define	STRINGID_XFOUNDONEY	320 +#define	STRINGID_PLAYERDEFEATEDTRAINER1	321 +#define	STRINGID_SOOTHINGAROMA	322 +#define	STRINGID_ITEMSCANTBEUSEDNOW	323 +#define	STRINGID_FORXCOMMAYZ	324 +#define	STRINGID_USINGXTHEYOFZN	325 +#define	STRINGID_PKMNUSEDXTOGETPUMPED	326 +#define	STRINGID_PKMNSXMADEYUSELESS	327 +#define	STRINGID_PKMNTRAPPEDBYSANDTOMB	328 +#define	STRINGID_EMPTYSTRING4	329 +#define	STRINGID_ABOOSTED	330 +#define	STRINGID_PKMNSXINTENSIFIEDSUN	331 +#define	STRINGID_PKMNMAKESGROUNDMISS	332 +#define	STRINGID_YOUTHROWABALLNOWRIGHT	333 +#define	STRINGID_PKMNSXTOOKATTACK	334 +#define	STRINGID_PKMNCHOSEXASDESTINY	335 +#define	STRINGID_PKMNLOSTFOCUS	336 +#define	STRINGID_USENEXTPKMN	337 +#define	STRINGID_PKMNFLEDUSINGITS	338 +#define	STRINGID_PKMNFLEDUSING	339 +#define	STRINGID_PKMNWASDRAGGEDOUT	340 +#define	STRINGID_PREVENTEDFROMWORKING	341 +#define	STRINGID_PKMNSITEMNORMALIZEDSTATUS	342 +#define	STRINGID_TRAINER1USEDITEM	343 +#define	STRINGID_BOXISFULL	344 +#define	STRINGID_PKMNAVOIDEDATTACK	345 +#define	STRINGID_PKMNSXMADEITINEFFECTIVE	346 +#define	STRINGID_PKMNSXPREVENTSFLINCHING	347 +#define	STRINGID_PKMNALREADYHASBURN	348 +#define	STRINGID_STATSWONTDECREASE2	349 +#define	STRINGID_PKMNSXBLOCKSY2	350 +#define	STRINGID_PKMNSXWOREOFF	351 +#define	STRINGID_PKMNRAISEDDEFALITTLE	352 +#define	STRINGID_PKMNRAISEDSPDEFALITTLE	353 +#define	STRINGID_THEWALLSHATTERED	354 +#define	STRINGID_PKMNSXPREVENTSYSZ	355 +#define	STRINGID_PKMNSXCUREDITSYPROBLEM	356 +#define	STRINGID_ATTACKERCANTESCAPE	357 +#define	STRINGID_PKMNOBTAINEDX	358 +#define	STRINGID_PKMNOBTAINEDX2	359 +#define	STRINGID_PKMNOBTAINEDXYOBTAINEDZ	360 +#define	STRINGID_BUTNOEFFECT	361 +#define	STRINGID_PKMNSXHADNOEFFECTONY	362 +#define	STRINGID_TWOENEMIESDEFEATED	363 +#define	STRINGID_TRAINER2LOSETEXT	364 +#define	STRINGID_PKMNINCAPABLEOFPOWER	365 +#define	STRINGID_GLINTAPPEARSINEYE	366 +#define	STRINGID_PKMNGETTINGINTOPOSITION	367 +#define	STRINGID_PKMNBEGANGROWLINGDEEPLY	368 +#define	STRINGID_PKMNEAGERFORMORE	369 +#define	STRINGID_DEFEATEDOPPONENTBYREFEREE	370 +#define	STRINGID_LOSTTOOPPONENTBYREFEREE	371 +#define	STRINGID_TIEDOPPONENTBYREFEREE	372 +#define	STRINGID_QUESTIONFORFEITMATCH	373 +#define	STRINGID_FORFEITEDMATCH	374 +#define	STRINGID_PKMNTRANSFERREDSOMEONESPC	375 +#define	STRINGID_PKMNTRANSFERREDLANETTESPC	376 +#define	STRINGID_PKMNBOXSOMEONESPCFULL	377 +#define	STRINGID_PKMNBOXLANETTESPCFULL	378 +#define	STRINGID_TRAINER1WINTEXT	379 +#define	STRINGID_TRAINER2WINTEXT	380 + +#endif // GUARD_BATTLE_STRING_IDS_H diff --git a/include/battle_tower.h b/include/battle_tower.h new file mode 100644 index 000000000..25b439c1b --- /dev/null +++ b/include/battle_tower.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BATTLE_TOWER_H +#define GUARD_BATTLE_TOWER_H + +u16 sub_8164FCC(u8, u8); + +#endif //GUARD_BATTLE_TOWER_H diff --git a/include/battle_transition.h b/include/battle_transition.h new file mode 100644 index 000000000..1603f5c93 --- /dev/null +++ b/include/battle_transition.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BATTLE_TRANSITION_H +#define GUARD_BATTLE_TRANSITION_H + +void sub_8149DFC(u8 a1); + +#endif // GUARD_BATTLE_TRANSITION_H diff --git a/include/battle_util.h b/include/battle_util.h new file mode 100644 index 000000000..b21b250c4 --- /dev/null +++ b/include/battle_util.h @@ -0,0 +1,84 @@ +#ifndef GUARD_BATTLE_UTIL_H +#define GUARD_BATTLE_UTIL_H + +#define MOVE_LIMITATION_ZEROMOVE                (1 << 0) +#define MOVE_LIMITATION_PP                      (1 << 1) +#define MOVE_LIMITATION_DISABLED                (1 << 2) +#define MOVE_LIMITATION_TORMENTED               (1 << 3) +#define MOVE_LIMITATION_TAUNT                   (1 << 4) +#define MOVE_LIMITATION_IMPRISION               (1 << 5) + +#define ABILITYEFFECT_ON_SWITCHIN               0x0 +#define ABILITYEFFECT_ENDTURN                   0x1 +#define ABILITYEFFECT_MOVES_BLOCK               0x2 +#define ABILITYEFFECT_ABSORBING                 0x3 +#define ABILITYEFFECT_CONTACT                   0x4 +#define ABILITYEFFECT_IMMUNITY                  0x5 +#define ABILITYEFFECT_FORECAST                  0x6 +#define ABILITYEFFECT_SYNCHRONIZE               0x7 +#define ABILITYEFFECT_ATK_SYNCHRONIZE           0x8 +#define ABILITYEFFECT_INTIMIDATE1               0x9 +#define ABILITYEFFECT_INTIMIDATE2               0xA +#define ABILITYEFFECT_TRACE                     0xB +#define ABILITYEFFECT_CHECK_OTHER_SIDE          0xC +#define ABILITYEFFECT_CHECK_BANK_SIDE           0xD +#define ABILITYEFFECT_FIELD_SPORT               0xE +#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK   0xF +#define ABILITYEFFECT_COUNT_OTHER_SIDE          0x10 +#define ABILITYEFFECT_COUNT_BANK_SIDE           0x11 +#define ABILITYEFFECT_COUNT_ON_FIELD            0x12 +#define ABILITYEFFECT_CHECK_ON_FIELD            0x13 +#define ABILITYEFFECT_SWITCH_IN_WEATHER         0xFF + +#define ITEMEFFECT_ON_SWITCH_IN                 0x0 + +#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) +#define WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0))) + +#define BS_GET_TARGET                   0 +#define BS_GET_ATTACKER                 1 +#define BS_GET_EFFECT_BANK              2 +#define BS_GET_SCRIPTING_BANK           10 +#define BS_GET_PLAYER1                  11 +#define BS_GET_OPPONENT1                12 +#define BS_GET_PLAYER2                  13 +#define BS_GET_OPPONENT2                14 + +u8 GetBattleBank(u8 caseId); +void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move); +void PressurePPLoseOnUsingPerishSong(u8 bankAtk); +void PressurePPLoseOnUsingImprision(u8 bankAtk); +void MarkAllBufferBanksForExecution(void); // unused +void MarkBufferBankForExecution(u8 bank); +void sub_803F850(u8 arg0); +void CancelMultiTurnMoves(u8 bank); +bool8 WasUnableToUseMove(u8 bank); +void PrepareStringBattle(u16 stringId, u8 bank); +void ResetSentPokesToOpponentValue(void); +void sub_803F9EC(u8 bank); +void sub_803FA70(u8 bank); +void BattleScriptPush(const u8* bsPtr); +void BattleScriptPushCursor(void); +void BattleScriptPop(void); +u8 TrySetCantSelectMoveBattleScript(void); +u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); +bool8 AreAllMovesUnusable(void); +u8 GetImprisonedMovesCount(u8 bank, u16 move); +u8 UpdateTurnCounters(void); +u8 TurnBasedEffects(void); +bool8 sub_8041364(void); +bool8 sub_8041728(void); +void TryClearRageStatuses(void); +u8 AtkCanceller_UnableToUseMove(void); +bool8 sub_80423F4(u8 bank, u8 r1, u8 r2); +u8 CastformDataTypeChange(u8 bank); +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); +void BattleScriptExecute(const u8* BS_ptr); +void BattleScriptPushCursorAndCallback(const u8* BS_ptr); +u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); +void ClearFuryCutterDestinyBondGrudge(u8 bank); +void HandleAction_RunBattleScript(void); +u8 GetMoveTarget(u16 move, u8 useMoveTarget); +u8 IsPokeDisobedient(void); + +#endif // GUARD_BATTLE_UTIL_H diff --git a/include/bg.h b/include/bg.h index 0dcb84a34..0c6b4ac26 100644 --- a/include/bg.h +++ b/include/bg.h @@ -1,6 +1,16 @@  #ifndef GUARD_BG_H  #define GUARD_BG_H +struct BGCntrlBitfield // for the I/O registers +{ +    volatile u16 priority:2; +    volatile u16 charBaseBlock:2; +    volatile u16 field_0_2:4; +    volatile u16 field_1_0:5; +    volatile u16 areaOverflowMode:1; +    volatile u16 screenSize:2; +}; +  enum  {      BG_CTRL_ATTR_VISIBLE = 1, diff --git a/include/blend_palette.h b/include/blend_palette.h new file mode 100644 index 000000000..1db3f4eb0 --- /dev/null +++ b/include/blend_palette.h @@ -0,0 +1,12 @@ +#ifndef GUARD_BLEND_PALETTE_H +#define GUARD_BLEND_PALETTE_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +void BlendPalette(u16, u16, u8, u16); + +#endif //GUARD_BLEND_PALETTE_H diff --git a/include/calculate_base_damage.h b/include/calculate_base_damage.h new file mode 100644 index 000000000..e9146c188 --- /dev/null +++ b/include/calculate_base_damage.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CALCULATE_BASE_DAMAGE_H +#define GUARD_CALCULATE_BASE_DAMAGE_H + +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef); + +#endif // GUARD_CALCULATE_BASE_DAMAGE_H diff --git a/include/clock.h b/include/clock.h new file mode 100644 index 000000000..4e6560c91 --- /dev/null +++ b/include/clock.h @@ -0,0 +1,8 @@ +#ifndef GUARD_CLOCK_H +#define GUARD_CLOCK_H + +// TODO: time of day and seconds in a day defines + +void DoTimeBasedEvents(void); + +#endif diff --git a/include/coins.h b/include/coins.h index 43434b227..996519605 100644 --- a/include/coins.h +++ b/include/coins.h @@ -6,7 +6,7 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y);  void HideCoinsWindow(void);  u16 GetCoins(void);  void SetCoins(u16 coinAmount); -bool8 AddCoins(u16 toAdd); -bool8 SubtractCoins(u16 toSub); +bool8 GiveCoins(u16 toAdd); +bool8 TakeCoins(u16 toSub);  #endif // GUARD_COINS_H diff --git a/include/contest.h b/include/contest.h new file mode 100644 index 000000000..7dcde7da2 --- /dev/null +++ b/include/contest.h @@ -0,0 +1,41 @@ +#ifndef GUARD_CONTEST_H +#define GUARD_CONTEST_H + +struct ContestStruct_02039E00 +{ +    u16 unk_00; +    u8 unk_02[11]; +    u8 unk_0d[8]; +    u8 filler_15[9]; +    u8 filler_1E[34]; +}; + +extern struct ContestStruct_02039E00 gUnknown_02039E00[4]; +extern u8 gUnknown_02039F24; +extern u16 gScriptContestCategory; +extern u8 gUnknown_02039F2E; +extern u8 gUnknown_02039F30; + +struct ContestStruct_field_18 +{ +    // unknown size +    u16 field_0; +}; + +struct ContestResources +{ +    void *field_0; +    void *field_4; +    void *field_8; +    void *field_C; +    void *field_10; +    void *field_14; +    struct ContestStruct_field_18 *field_18; +}; + +extern struct ContestResources *gContestResources; + +bool8 IsSpeciesNotUnown(u16 species); +void LoadContestBgAfterMoveAnim(void); + +#endif //GUARD_CONTEST_H diff --git a/include/contest_link_80F57C4.h b/include/contest_link_80F57C4.h new file mode 100644 index 000000000..98523c175 --- /dev/null +++ b/include/contest_link_80F57C4.h @@ -0,0 +1,8 @@ +#ifndef GUARD_CONTEST_LINK_80F57C4_H +#define GUARD_CONTEST_LINK_80F57C4_H + +void sub_80F840C(void); +void sub_80F8484(void); +void sub_80F84C4(u8); + +#endif // GUARD_CONTEST_LINK_80F57C4_H diff --git a/include/contest_painting.h b/include/contest_painting.h new file mode 100644 index 000000000..f8366a997 --- /dev/null +++ b/include/contest_painting.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CONTESTPAINTING_H +#define GUARD_CONTESTPAINTING_H + +void sub_812FDA8(u32); + +#endif diff --git a/include/data/decoration/description.h b/include/data/decoration/description.h new file mode 100644 index 000000000..ba4c3dd54 --- /dev/null +++ b/include/data/decoration/description.h @@ -0,0 +1,581 @@ +// +// Created by scott on 10/21/2017. +// + +#ifndef GUARD_DATA_DECORATION_DESCRIPTION_H +#define GUARD_DATA_DECORATION_DESCRIPTION_H + +const u8 DecorDesc_SMALL_DESK[] = _( +    "A small desk built\n" +        "for one."); + +const u8 DecorDesc_POKEMON_DESK[] = _( +    "A small desk built in\n" +        "the shape of a POKé\n" +        "BALL."); + +const u8 DecorDesc_HEAVY_DESK[] = _( +    "A large desk made\n" +        "of steel. Put some\n" +        "decorations on it."); + +const u8 DecorDesc_RAGGED_DESK[] = _( +    "A large desk made\n" +        "of wood. Put some\n" +        "decorations on it."); + +const u8 DecorDesc_COMFORT_DESK[] = _( +    "A large desk made\n" +        "of leaves. Put some\n" +        "decorations on it."); + +const u8 DecorDesc_PRETTY_DESK[] = _( +    "A huge desk made\n" +        "of glass. Holds lots\n" +        "of decorations."); + +const u8 DecorDesc_BRICK_DESK[] = _( +    "A huge desk made\n" +        "of brick. Holds lots\n" +        "of decorations."); + +const u8 DecorDesc_CAMP_DESK[] = _( +    "A huge desk made\n" +        "of logs. Put lots of\n" +        "decorations on it."); + +const u8 DecorDesc_HARD_DESK[] = _( +    "A huge desk made\n" +        "of rocks. Holds\n" +        "many decorations."); + +const u8 DecorDesc_SMALL_CHAIR[] = _( +    "A small chair made\n" +        "for one."); + +const u8 DecorDesc_POKEMON_CHAIR[] = _( +    "A small chair built\n" +        "in the shape of a\n" +        "POKé BALL."); + +const u8 DecorDesc_HEAVY_CHAIR[] = _( +    "A small chair made\n" +        "of steel."); + +const u8 DecorDesc_PRETTY_CHAIR[] = _( +    "A small chair made\n" +        "of glass."); + +const u8 DecorDesc_COMFORT_CHAIR[] = _( +    "A small chair made\n" +        "of leaves."); + +const u8 DecorDesc_RAGGED_CHAIR[] = _( +    "A small chair made\n" +        "of wood."); + +const u8 DecorDesc_BRICK_CHAIR[] = _( +    "A small chair made\n" +        "of brick."); + +const u8 DecorDesc_CAMP_CHAIR[] = _( +    "A small chair made\n" +        "of logs."); + +const u8 DecorDesc_HARD_CHAIR[] = _( +    "A small chair made\n" +        "of rock."); + +const u8 DecorDesc_RED_PLANT[] = _( +    "A vivid red potted\n" +        "plant."); + +const u8 DecorDesc_TROPICAL_PLANT[] = _( +    "A flowering tropical\n" +        "plant in a pot."); + +const u8 DecorDesc_PRETTY_FLOWERS[] = _( +    "A pot of cute\n" +        "flowers."); + +const u8 DecorDesc_COLORFUL_PLANT[] = _( +    "A large pot with\n" +        "many colorful\n" +        "flowers."); + +const u8 DecorDesc_BIG_PLANT[] = _( +    "A large, umbrella-\n" +        "shaped plant in a\n" +        "big pot."); + +const u8 DecorDesc_GORGEOUS_PLANT[] = _( +    "A large, impressive\n" +        "plant in a big pot."); + +const u8 DecorDesc_RED_BRICK[] = _( +    "A red-colored brick.\n" +        "Decorations can be\n" +        "placed on top."); + +const u8 DecorDesc_YELLOW_BRICK[] = _( +    "A yellow-colored\n" +        "brick. Put some\n" +        "decorations on top."); + +const u8 DecorDesc_BLUE_BRICK[] = _( +    "A blue-colored\n" +        "brick. Put some\n" +        "decorations on top."); + +const u8 DecorDesc_RED_BALLOON[] = _( +    "A red balloon filled\n" +        "with water. Bursts\n" +        "if stepped on."); + +const u8 DecorDesc_BLUE_BALLOON[] = _( +    "A blue balloon filled\n" +        "with water. Bursts\n" +        "if stepped on."); + +const u8 DecorDesc_YELLOW_BALLOON[] = _( +    "A yellow balloon\n" +        "filled with water.\n" +        "Pops if stepped on."); + +const u8 DecorDesc_RED_TENT[] = _( +    "A large red tent.\n" +        "You can hide inside\n" +        "it."); + +const u8 DecorDesc_BLUE_TENT[] = _( +    "A large blue tent.\n" +        "You can hide inside\n" +        "it."); + +const u8 DecorDesc_SOLID_BOARD[] = _( +    "Place over a hole to\n" +        "cross to the other\n" +        "side."); + +const u8 DecorDesc_SLIDE[] = _( +    "Use to slide down\n" +        "from the platform."); + +const u8 DecorDesc_FENCE_LENGTH[] = _( +    "A small fence that\n" +        "blocks passage."); + +const u8 DecorDesc_FENCE_WIDTH[] = _( +    "A small fence that\n" +        "blocks passage."); + +const u8 DecorDesc_TIRE[] = _( +    "An old large tire.\n" +        "Decorations can be\n" +        "placed on top."); + +const u8 DecorDesc_STAND[] = _( +    "A large pedestal\n" +        "with steps."); + +const u8 DecorDesc_MUD_BALL[] = _( +    "A large ball of mud.\n" +        "Crumbles if stepped\n" +        "on."); + +const u8 DecorDesc_BREAKABLE_DOOR[] = _( +    "A weird door that\n" +        "people can walk\n" +        "right through."); + +const u8 DecorDesc_SAND_ORNAMENT[] = _( +    "An ornament made\n" +        "of sand. Crumbles if\n" +        "touched."); + +const u8 DecorDesc_SILVER_SHIELD[] = _( +    "Awarded for 50\n" +        "straight wins at\n" +        "the BATTLE TOWER."); + +const u8 DecorDesc_GOLD_SHIELD[] = _( +    "Awarded for 100\n" +        "straight wins at\n" +        "the BATTLE TOWER."); + +const u8 DecorDesc_GLASS_ORNAMENT[] = _( +    "A glass replica of\n" +        "a famous sculpture\n" +        "at the ART MUSEUM."); + +const u8 DecorDesc_TV[] = _( +    "A small, gray-\n" +        "colored toy TV."); + +const u8 DecorDesc_ROUND_TV[] = _( +    "A toy TV modeled\n" +        "in the image of a\n" +        "SEEDOT."); + +const u8 DecorDesc_CUTE_TV[] = _( +    "A toy TV modeled\n" +        "in the image of a\n" +        "SKITTY."); + +const u8 DecorDesc_GLITTER_MAT[] = _( +    "An odd mat that\n" +        "glitters if stepped\n" +        "on."); + +const u8 DecorDesc_JUMP_MAT[] = _( +    "A trick mat that\n" +        "jumps when it is\n" +        "stepped on."); + +const u8 DecorDesc_SPIN_MAT[] = _( +    "A trick mat that\n" +        "spins around when\n" +        "stepped on."); + +const u8 DecorDesc_C_LOW_NOTE_MAT[] = _( +    "A mat that plays\n" +        "a low C note when\n" +        "stepped on."); + +const u8 DecorDesc_D_NOTE_MAT[] = _( +    "A mat that plays\n" +        "a D note when\n" +        "stepped on."); + +const u8 DecorDesc_E_NOTE_MAT[] = _( +    "A mat that plays\n" +        "an E note when\n" +        "stepped on."); + +const u8 DecorDesc_F_NOTE_MAT[] = _( +    "A mat that plays\n" +        "an F note when\n" +        "stepped on."); + +const u8 DecorDesc_G_NOTE_MAT[] = _( +    "A mat that plays\n" +        "a G note when\n" +        "stepped on."); + +const u8 DecorDesc_A_NOTE_MAT[] = _( +    "A mat that plays\n" +        "an A note when\n" +        "stepped on."); + +const u8 DecorDesc_B_NOTE_MAT[] = _( +    "A mat that plays\n" +        "a B note when\n" +        "stepped on."); + +const u8 DecorDesc_C_HIGH_NOTE_MAT[] = _( +    "A mat that plays\n" +        "a high C note when\n" +        "stepped on."); + +const u8 DecorDesc_SURF_MAT[] = _( +    "A mat designed with\n" +        "a SURF image.\n" +        "Put items on top."); + +const u8 DecorDesc_THUNDER_MAT[] = _( +    "A mat designed with\n" +        "a THUNDER image.\n" +        "Put items on top."); + +const u8 DecorDesc_FIRE_BLAST_MAT[] = _( +    "A mat designed with\n" +        "a FIRE BLAST image.\n" +        "Put items on top."); + +const u8 DecorDesc_POWDER_SNOW_MAT[] = _( +    "A mat with a POWDER\n" +        "SNOW image design.\n" +        "Put items on top."); + +const u8 DecorDesc_ATTRACT_MAT[] = _( +    "A mat designed with\n" +        "an ATTRACT image.\n" +        "Put items on top."); + +const u8 DecorDesc_FISSURE_MAT[] = _( +    "A mat designed with\n" +        "a FISSURE image.\n" +        "Put items on top."); + +const u8 DecorDesc_SPIKES_MAT[] = _( +    "A mat designed with\n" +        "a SPIKES image.\n" +        "Put items on top."); + +const u8 DecorDesc_BALL_POSTER[] = _( +    "A small poster\n" +        "printed with POKé\n" +        "BALLS."); + +const u8 DecorDesc_GREEN_POSTER[] = _( +    "A small poster with\n" +        "a TREECKO print."); + +const u8 DecorDesc_RED_POSTER[] = _( +    "A small poster with\n" +        "a TORCHIC print."); + +const u8 DecorDesc_BLUE_POSTER[] = _( +    "A small poster with\n" +        "a MUDKIP print."); + +const u8 DecorDesc_CUTE_POSTER[] = _( +    "A small poster with\n" +        "an AZURILL print."); + +const u8 DecorDesc_PIKA_POSTER[] = _( +    "A large poster with\n" +        "a PIKACHU and\n" +        "PICHU print."); + +const u8 DecorDesc_LONG_POSTER[] = _( +    "A large poster with\n" +        "a SEVIPER print."); + +const u8 DecorDesc_SEA_POSTER[] = _( +    "A large poster with\n" +        "a RELICANTH print."); + +const u8 DecorDesc_SKY_POSTER[] = _( +    "A large poster with\n" +        "a WINGULL print."); + +const u8 DecorDesc_KISS_POSTER[] = _( +    "A large poster with\n" +        "a SMOOCHUM print."); + +const u8 DecorDesc_PICHU_DOLL[] = _( +    "A PICHU doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_PIKACHU_DOLL[] = _( +    "A PIKACHU doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_MARILL_DOLL[] = _( +    "A MARILL doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_TOGEPI_DOLL[] = _( +    "A TOGEPI doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_CYNDAQUIL_DOLL[] = _( +    "A CYNDAQUIL doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_CHIKORITA_DOLL[] = _( +    "A CHIKORITA doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_TOTODILE_DOLL[] = _( +    "A TOTODILE doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_JIGGLYPUFF_DOLL[] = _( +    "A JIGGLYPUFF doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_MEOWTH_DOLL[] = _( +    "A MEOWTH doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_CLEFAIRY_DOLL[] = _( +    "A CLEFAIRY doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_DITTO_DOLL[] = _( +    "A DITTO doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_SMOOCHUM_DOLL[] = _( +    "A SMOOCHUM doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_TREECKO_DOLL[] = _( +    "A TREECKO doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_TORCHIC_DOLL[] = _( +    "A TORCHIC doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_MUDKIP_DOLL[] = _( +    "A MUDKIP doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_DUSKULL_DOLL[] = _( +    "A DUSKULL doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_WYNAUT_DOLL[] = _( +    "A WYNAUT doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_BALTOY_DOLL[] = _( +    "A BALTOY doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_KECLEON_DOLL[] = _( +    "A KECLEON doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_AZURILL_DOLL[] = _( +    "An AZURILL doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_SKITTY_DOLL[] = _( +    "A SKITTY doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_SWABLU_DOLL[] = _( +    "A SWABLU doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_GULPIN_DOLL[] = _( +    "A GULPIN doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_LOTAD_DOLL[] = _( +    "A LOTAD doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_SEEDOT_DOLL[] = _( +    "A SEEDOT doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_PIKA_CUSHION[] = _( +    "A PIKACHU cushion.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_ROUND_CUSHION[] = _( +    "A MARILL cushion.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_KISS_CUSHION[] = _( +    "A SMOOCHUM\n" +        "cushion. Place it on\n" +        "a mat or a desk."); + +const u8 DecorDesc_ZIGZAG_CUSHION[] = _( +    "A ZIGZAGOON\n" +        "cushion. Place it on\n" +        "a mat or a desk."); + +const u8 DecorDesc_SPIN_CUSHION[] = _( +    "A SPINDA cushion.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_DIAMOND_CUSHION[] = _( +    "A SABLEYE cushion.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_BALL_CUSHION[] = _( +    "A BALL cushion.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_GRASS_CUSHION[] = _( +    "A grass-mark\n" +        "cushion. Place it on\n" +        "a mat or a desk."); + +const u8 DecorDesc_FIRE_CUSHION[] = _( +    "A fire-mark\n" +        "cushion. Place it on\n" +        "a mat or a desk."); + +const u8 DecorDesc_WATER_CUSHION[] = _( +    "A water-mark\n" +        "cushion. Place it on\n" +        "a mat or a desk."); + +const u8 DecorDesc_SNORLAX_DOLL[] = _( +    "A large doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_RHYDON_DOLL[] = _( +    "A large doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_LAPRAS_DOLL[] = _( +    "A large doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_VENUSAUR_DOLL[] = _( +    "A large doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_CHARIZARD_DOLL[] = _( +    "A large doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_BLASTOISE_DOLL[] = _( +    "A large doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_WAILMER_DOLL[] = _( +    "A large doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_REGIROCK_DOLL[] = _( +    "A large doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_REGICE_DOLL[] = _( +    "A large doll.\n" +        "Place it on a mat\n" +        "or a desk."); + +const u8 DecorDesc_REGISTEEL_DOLL[] = _( +    "A large doll.\n" +        "Place it on a mat\n" +        "or a desk."); +#endif //GUARD_DATA_DECORATION_DESCRIPTION_H diff --git a/include/data/decoration/header.h b/include/data/decoration/header.h new file mode 100644 index 000000000..64bed1c7e --- /dev/null +++ b/include/data/decoration/header.h @@ -0,0 +1,1100 @@ +// +// Created by scott on 10/21/2017. +// + +#ifndef GUARD_DATA_DECORATION_HEADER_H +#define GUARD_DATA_DECORATION_HEADER_H + +const struct Decoration gDecorations[] = { +    { +        DECOR_NONE, +        _("SMALL DESK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_DESK, +        0, +        DecorDesc_SMALL_DESK, +        DecorGfx_SMALL_DESK +    }, { +        DECOR_SMALL_DESK, +        _("SMALL DESK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_DESK, +        3000, +        DecorDesc_SMALL_DESK, +        DecorGfx_SMALL_DESK +    }, { +        DECOR_POKEMON_DESK, +        _("POKéMON DESK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_DESK, +        3000, +        DecorDesc_POKEMON_DESK, +        DecorGfx_POKEMON_DESK +    }, { +        DECOR_HEAVY_DESK, +        _("HEAVY DESK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_3x2, +        DECORCAT_DESK, +        6000, +        DecorDesc_HEAVY_DESK, +        DecorGfx_HEAVY_DESK +    }, { +        DECOR_RAGGED_DESK, +        _("RAGGED DESK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_3x2, +        DECORCAT_DESK, +        6000, +        DecorDesc_RAGGED_DESK, +        DecorGfx_RAGGED_DESK +    }, { +        DECOR_COMFORT_DESK, +        _("COMFORT DESK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_3x2, +        DECORCAT_DESK, +        6000, +        DecorDesc_COMFORT_DESK, +        DecorGfx_COMFORT_DESK +    }, { +        DECOR_PRETTY_DESK, +        _("PRETTY DESK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_DESK, +        9000, +        DecorDesc_PRETTY_DESK, +        DecorGfx_PRETTY_DESK +    }, { +        DECOR_BRICK_DESK, +        _("BRICK DESK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_DESK, +        9000, +        DecorDesc_BRICK_DESK, +        DecorGfx_BRICK_DESK +    }, { +        DECOR_CAMP_DESK, +        _("CAMP DESK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_DESK, +        9000, +        DecorDesc_CAMP_DESK, +        DecorGfx_CAMP_DESK +    }, { +        DECOR_HARD_DESK, +        _("HARD DESK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_DESK, +        9000, +        DecorDesc_HARD_DESK, +        DecorGfx_HARD_DESK +    }, { +        DECOR_SMALL_CHAIR, +        _("SMALL CHAIR"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_CHAIR, +        2000, +        DecorDesc_SMALL_CHAIR, +        DecorGfx_SMALL_CHAIR +    }, { +        DECOR_POKEMON_CHAIR, +        _("POKéMON CHAIR"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_CHAIR, +        2000, +        DecorDesc_POKEMON_CHAIR, +        DecorGfx_POKEMON_CHAIR +    }, { +        DECOR_HEAVY_CHAIR, +        _("HEAVY CHAIR"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_CHAIR, +        2000, +        DecorDesc_HEAVY_CHAIR, +        DecorGfx_HEAVY_CHAIR +    }, { +        DECOR_PRETTY_CHAIR, +        _("PRETTY CHAIR"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_CHAIR, +        2000, +        DecorDesc_PRETTY_CHAIR, +        DecorGfx_PRETTY_CHAIR +    }, { +        DECOR_COMFORT_CHAIR, +        _("COMFORT CHAIR"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_CHAIR, +        2000, +        DecorDesc_COMFORT_CHAIR, +        DecorGfx_COMFORT_CHAIR +    }, { +        DECOR_RAGGED_CHAIR, +        _("RAGGED CHAIR"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_CHAIR, +        2000, +        DecorDesc_RAGGED_CHAIR, +        DecorGfx_RAGGED_CHAIR +    }, { +        DECOR_BRICK_CHAIR, +        _("BRICK CHAIR"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_CHAIR, +        2000, +        DecorDesc_BRICK_CHAIR, +        DecorGfx_BRICK_CHAIR +    }, { +        DECOR_CAMP_CHAIR, +        _("CAMP CHAIR"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_CHAIR, +        2000, +        DecorDesc_CAMP_CHAIR, +        DecorGfx_CAMP_CHAIR +    }, { +        DECOR_HARD_CHAIR, +        _("HARD CHAIR"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_CHAIR, +        2000, +        DecorDesc_HARD_CHAIR, +        DecorGfx_HARD_CHAIR +    }, { +        DECOR_RED_PLANT, +        _("RED PLANT"), +        DECORPERM_BEHIND_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_PLANT, +        3000, +        DecorDesc_RED_PLANT, +        DecorGfx_RED_PLANT +    }, { +        DECOR_TROPICAL_PLANT, +        _("TROPICAL PLANT"), +        DECORPERM_BEHIND_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_PLANT, +        3000, +        DecorDesc_TROPICAL_PLANT, +        DecorGfx_TROPICAL_PLANT +    }, { +        DECOR_PRETTY_FLOWERS, +        _("PRETTY FLOWERS"), +        DECORPERM_BEHIND_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_PLANT, +        3000, +        DecorDesc_PRETTY_FLOWERS, +        DecorGfx_PRETTY_FLOWERS +    }, { +        DECOR_COLORFUL_PLANT, +        _("COLORFUL PLANT"), +        DECORPERM_BEHIND_FLOOR, +        DECORSHAPE_2x2, +        DECORCAT_PLANT, +        5000, +        DecorDesc_COLORFUL_PLANT, +        DecorGfx_COLORFUL_PLANT +    }, { +        DECOR_BIG_PLANT, +        _("BIG PLANT"), +        DECORPERM_BEHIND_FLOOR, +        DECORSHAPE_2x2, +        DECORCAT_PLANT, +        5000, +        DecorDesc_BIG_PLANT, +        DecorGfx_BIG_PLANT +    }, { +        DECOR_GORGEOUS_PLANT, +        _("GORGEOUS PLANT"), +        DECORPERM_BEHIND_FLOOR, +        DECORSHAPE_2x2, +        DECORCAT_PLANT, +        5000, +        DecorDesc_GORGEOUS_PLANT, +        DecorGfx_GORGEOUS_PLANT +    }, { +        DECOR_RED_BRICK, +        _("RED BRICK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_ORNAMENT, +        500, +        DecorDesc_RED_BRICK, +        DecorGfx_RED_BRICK +    }, { +        DECOR_YELLOW_BRICK, +        _("YELLOW BRICK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_ORNAMENT, +        500, +        DecorDesc_YELLOW_BRICK, +        DecorGfx_YELLOW_BRICK +    }, { +        DECOR_BLUE_BRICK, +        _("BLUE BRICK"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_ORNAMENT, +        500, +        DecorDesc_BLUE_BRICK, +        DecorGfx_BLUE_BRICK +    }, { +        DECOR_RED_BALLOON, +        _("RED BALLOON"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_ORNAMENT, +        500, +        DecorDesc_RED_BALLOON, +        DecorGfx_RED_BALLOON +    }, { +        DECOR_BLUE_BALLOON, +        _("BLUE BALLOON"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_ORNAMENT, +        500, +        DecorDesc_BLUE_BALLOON, +        DecorGfx_BLUE_BALLOON +    }, { +        DECOR_YELLOW_BALLOON, +        _("YELLOW BALLOON"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_ORNAMENT, +        500, +        DecorDesc_YELLOW_BALLOON, +        DecorGfx_YELLOW_BALLOON +    }, { +        DECOR_RED_TENT, +        _("RED TENT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_ORNAMENT, +        10000, +        DecorDesc_RED_TENT, +        DecorGfx_RED_TENT +    }, { +        DECOR_BLUE_TENT, +        _("BLUE TENT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_ORNAMENT, +        10000, +        DecorDesc_BLUE_TENT, +        DecorGfx_BLUE_TENT +    }, { +        DECOR_SOLID_BOARD, +        _("SOLID BOARD"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_ORNAMENT, +        3000, +        DecorDesc_SOLID_BOARD, +        DecorGfx_SOLID_BOARD +    }, { +        DECOR_SLIDE, +        _("SLIDE"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_2x4, +        DECORCAT_ORNAMENT, +        8000, +        DecorDesc_SLIDE, +        DecorGfx_SLIDE +    }, { +        DECOR_FENCE_LENGTH, +        _("FENCE LENGTH"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_ORNAMENT, +        500, +        DecorDesc_FENCE_LENGTH, +        DecorGfx_FENCE_LENGTH +    }, { +        DECOR_FENCE_WIDTH, +        _("FENCE WIDTH"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_ORNAMENT, +        500, +        DecorDesc_FENCE_WIDTH, +        DecorGfx_FENCE_WIDTH +    }, { +        DECOR_TIRE, +        _("TIRE"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_2x2, +        DECORCAT_ORNAMENT, +        800, +        DecorDesc_TIRE, +        DecorGfx_TIRE +    }, { +        DECOR_STAND, +        _("STAND"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_4x2, +        DECORCAT_ORNAMENT, +        7000, +        DecorDesc_STAND, +        DecorGfx_STAND +    }, { +        DECOR_MUD_BALL, +        _("MUD BALL"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_ORNAMENT, +        200, +        DecorDesc_MUD_BALL, +        DecorGfx_MUD_BALL +    }, { +        DECOR_BREAKABLE_DOOR, +        _("BREAKABLE DOOR"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_ORNAMENT, +        3000, +        DecorDesc_BREAKABLE_DOOR, +        DecorGfx_BREAKABLE_DOOR +    }, { +        DECOR_SAND_ORNAMENT, +        _("SAND ORNAMENT"), +        DECORPERM_BEHIND_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_ORNAMENT, +        3000, +        DecorDesc_SAND_ORNAMENT, +        DecorGfx_SAND_ORNAMENT +    }, { +        DECOR_SILVER_SHIELD, +        _("SILVER SHIELD"), +        DECORPERM_BEHIND_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_ORNAMENT, +        0, +        DecorDesc_SILVER_SHIELD, +        DecorGfx_SILVER_SHIELD +    }, { +        DECOR_GOLD_SHIELD, +        _("GOLD SHIELD"), +        DECORPERM_BEHIND_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_ORNAMENT, +        0, +        DecorDesc_GOLD_SHIELD, +        DecorGfx_GOLD_SHIELD +    }, { +        DECOR_GLASS_ORNAMENT, +        _("GLASS ORNAMENT"), +        DECORPERM_BEHIND_FLOOR, +        DECORSHAPE_1x2, +        DECORCAT_ORNAMENT, +        0, +        DecorDesc_GLASS_ORNAMENT, +        DecorGfx_GLASS_ORNAMENT +    }, { +        DECOR_TV, +        _("TV"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_ORNAMENT, +        3000, +        DecorDesc_TV, +        DecorGfx_TV +    }, { +        DECOR_ROUND_TV, +        _("ROUND TV"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_ORNAMENT, +        4000, +        DecorDesc_ROUND_TV, +        DecorGfx_ROUND_TV +    }, { +        DECOR_CUTE_TV, +        _("CUTE TV"), +        DECORPERM_SOLID_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_ORNAMENT, +        4000, +        DecorDesc_CUTE_TV, +        DecorGfx_CUTE_TV +    }, { +        DECOR_GLITTER_MAT, +        _("GLITTER MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_MAT, +        2000, +        DecorDesc_GLITTER_MAT, +        DecorGfx_GLITTER_MAT +    }, { +        DECOR_JUMP_MAT, +        _("JUMP MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_MAT, +        2000, +        DecorDesc_JUMP_MAT, +        DecorGfx_JUMP_MAT +    }, { +        DECOR_SPIN_MAT, +        _("SPIN MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_MAT, +        2000, +        DecorDesc_SPIN_MAT, +        DecorGfx_SPIN_MAT +    }, { +        DECOR_C_LOW_NOTE_MAT, +        _("C Low NOTE MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_MAT, +        500, +        DecorDesc_C_LOW_NOTE_MAT, +        DecorGfx_C_LOW_NOTE_MAT +    }, { +        DECOR_D_NOTE_MAT, +        _("D NOTE MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_MAT, +        500, +        DecorDesc_D_NOTE_MAT, +        DecorGfx_D_NOTE_MAT +    }, { +        DECOR_E_NOTE_MAT, +        _("E NOTE MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_MAT, +        500, +        DecorDesc_E_NOTE_MAT, +        DecorGfx_E_NOTE_MAT +    }, { +        DECOR_F_NOTE_MAT, +        _("F NOTE MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_MAT, +        500, +        DecorDesc_F_NOTE_MAT, +        DecorGfx_F_NOTE_MAT +    }, { +        DECOR_G_NOTE_MAT, +        _("G NOTE MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_MAT, +        500, +        DecorDesc_G_NOTE_MAT, +        DecorGfx_G_NOTE_MAT +    }, { +        DECOR_A_NOTE_MAT, +        _("A NOTE MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_MAT, +        500, +        DecorDesc_A_NOTE_MAT, +        DecorGfx_A_NOTE_MAT +    }, { +        DECOR_B_NOTE_MAT, +        _("B NOTE MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_MAT, +        500, +        DecorDesc_B_NOTE_MAT, +        DecorGfx_B_NOTE_MAT +    }, { +        DECOR_C_HIGH_NOTE_MAT, +        _("C High NOTE MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_1x1, +        DECORCAT_MAT, +        500, +        DecorDesc_C_HIGH_NOTE_MAT, +        DecorGfx_C_HIGH_NOTE_MAT +    }, { +        DECOR_SURF_MAT, +        _("SURF MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_MAT, +        4000, +        DecorDesc_SURF_MAT, +        DecorGfx_SURF_MAT +    }, { +        DECOR_THUNDER_MAT, +        _("THUNDER MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_MAT, +        4000, +        DecorDesc_THUNDER_MAT, +        DecorGfx_THUNDER_MAT +    }, { +        DECOR_FIRE_BLAST_MAT, +        _("FIRE BLAST MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_MAT, +        4000, +        DecorDesc_FIRE_BLAST_MAT, +        DecorGfx_FIRE_BLAST_MAT +    }, { +        DECOR_POWDER_SNOW_MAT, +        _("POWDER SNOW MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_MAT, +        4000, +        DecorDesc_POWDER_SNOW_MAT, +        DecorGfx_POWDER_SNOW_MAT +    }, { +        DECOR_ATTRACT_MAT, +        _("ATTRACT MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_MAT, +        4000, +        DecorDesc_ATTRACT_MAT, +        DecorGfx_ATTRACT_MAT +    }, { +        DECOR_FISSURE_MAT, +        _("FISSURE MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_MAT, +        4000, +        DecorDesc_FISSURE_MAT, +        DecorGfx_FISSURE_MAT +    }, { +        DECOR_SPIKES_MAT, +        _("SPIKES MAT"), +        DECORPERM_PASS_FLOOR, +        DECORSHAPE_3x3, +        DECORCAT_MAT, +        4000, +        DecorDesc_SPIKES_MAT, +        DecorGfx_SPIKES_MAT +    }, { +        DECOR_BALL_POSTER, +        _("BALL POSTER"), +        DECORPERM_NA_WALL, +        DECORSHAPE_1x1, +        DECORCAT_POSTER, +        1000, +        DecorDesc_BALL_POSTER, +        DecorGfx_BALL_POSTER +    }, { +        DECOR_GREEN_POSTER, +        _("GREEN POSTER"), +        DECORPERM_NA_WALL, +        DECORSHAPE_1x1, +        DECORCAT_POSTER, +        1000, +        DecorDesc_GREEN_POSTER, +        DecorGfx_GREEN_POSTER +    }, { +        DECOR_RED_POSTER, +        _("RED POSTER"), +        DECORPERM_NA_WALL, +        DECORSHAPE_1x1, +        DECORCAT_POSTER, +        1000, +        DecorDesc_RED_POSTER, +        DecorGfx_RED_POSTER +    }, { +        DECOR_BLUE_POSTER, +        _("BLUE POSTER"), +        DECORPERM_NA_WALL, +        DECORSHAPE_1x1, +        DECORCAT_POSTER, +        1000, +        DecorDesc_BLUE_POSTER, +        DecorGfx_BLUE_POSTER +    }, { +        DECOR_CUTE_POSTER, +        _("CUTE POSTER"), +        DECORPERM_NA_WALL, +        DECORSHAPE_1x1, +        DECORCAT_POSTER, +        1000, +        DecorDesc_CUTE_POSTER, +        DecorGfx_CUTE_POSTER +    }, { +        DECOR_PIKA_POSTER, +        _("PIKA POSTER"), +        DECORPERM_NA_WALL, +        DECORSHAPE_2x1, +        DECORCAT_POSTER, +        1500, +        DecorDesc_PIKA_POSTER, +        DecorGfx_PIKA_POSTER +    }, { +        DECOR_LONG_POSTER, +        _("LONG POSTER"), +        DECORPERM_NA_WALL, +        DECORSHAPE_2x1, +        DECORCAT_POSTER, +        1500, +        DecorDesc_LONG_POSTER, +        DecorGfx_LONG_POSTER +    }, { +        DECOR_SEA_POSTER, +        _("SEA POSTER"), +        DECORPERM_NA_WALL, +        DECORSHAPE_2x1, +        DECORCAT_POSTER, +        1500, +        DecorDesc_SEA_POSTER, +        DecorGfx_SEA_POSTER +    }, { +        DECOR_SKY_POSTER, +        _("SKY POSTER"), +        DECORPERM_NA_WALL, +        DECORSHAPE_2x1, +        DECORCAT_POSTER, +        1500, +        DecorDesc_SKY_POSTER, +        DecorGfx_SKY_POSTER +    }, { +        DECOR_KISS_POSTER, +        _("KISS POSTER"), +        DECORPERM_NA_WALL, +        DECORSHAPE_2x1, +        DECORCAT_POSTER, +        1500, +        DecorDesc_KISS_POSTER, +        DecorGfx_KISS_POSTER +    }, { +        DECOR_PICHU_DOLL, +        _("PICHU DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_PICHU_DOLL, +        DecorGfx_PICHU_DOLL +    }, { +        DECOR_PIKACHU_DOLL, +        _("PIKACHU DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_PIKACHU_DOLL, +        DecorGfx_PIKACHU_DOLL +    }, { +        DECOR_MARILL_DOLL, +        _("MARILL DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_MARILL_DOLL, +        DecorGfx_MARILL_DOLL +    }, { +        DECOR_TOGEPI_DOLL, +        _("TOGEPI DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_TOGEPI_DOLL, +        DecorGfx_TOGEPI_DOLL +    }, { +        DECOR_CYNDAQUIL_DOLL, +        _("CYNDAQUIL DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_CYNDAQUIL_DOLL, +        DecorGfx_CYNDAQUIL_DOLL +    }, { +        DECOR_CHIKORITA_DOLL, +        _("CHIKORITA DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_CHIKORITA_DOLL, +        DecorGfx_CHIKORITA_DOLL +    }, { +        DECOR_TOTODILE_DOLL, +        _("TOTODILE DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_TOTODILE_DOLL, +        DecorGfx_TOTODILE_DOLL +    }, { +        DECOR_JIGGLYPUFF_DOLL, +        _("JIGGLYPUFF DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_JIGGLYPUFF_DOLL, +        DecorGfx_JIGGLYPUFF_DOLL +    }, { +        DECOR_MEOWTH_DOLL, +        _("MEOWTH DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_MEOWTH_DOLL, +        DecorGfx_MEOWTH_DOLL +    }, { +        DECOR_CLEFAIRY_DOLL, +        _("CLEFAIRY DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_CLEFAIRY_DOLL, +        DecorGfx_CLEFAIRY_DOLL +    }, { +        DECOR_DITTO_DOLL, +        _("DITTO DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_DITTO_DOLL, +        DecorGfx_DITTO_DOLL +    }, { +        DECOR_SMOOCHUM_DOLL, +        _("SMOOCHUM DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_SMOOCHUM_DOLL, +        DecorGfx_SMOOCHUM_DOLL +    }, { +        DECOR_TREECKO_DOLL, +        _("TREECKO DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_TREECKO_DOLL, +        DecorGfx_TREECKO_DOLL +    }, { +        DECOR_TORCHIC_DOLL, +        _("TORCHIC DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_TORCHIC_DOLL, +        DecorGfx_TORCHIC_DOLL +    }, { +        DECOR_MUDKIP_DOLL, +        _("MUDKIP DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_MUDKIP_DOLL, +        DecorGfx_MUDKIP_DOLL +    }, { +        DECOR_DUSKULL_DOLL, +        _("DUSKULL DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_DUSKULL_DOLL, +        DecorGfx_DUSKULL_DOLL +    }, { +        DECOR_WYNAUT_DOLL, +        _("WYNAUT DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_WYNAUT_DOLL, +        DecorGfx_WYNAUT_DOLL +    }, { +        DECOR_BALTOY_DOLL, +        _("BALTOY DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_BALTOY_DOLL, +        DecorGfx_BALTOY_DOLL +    }, { +        DECOR_KECLEON_DOLL, +        _("KECLEON DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_KECLEON_DOLL, +        DecorGfx_KECLEON_DOLL +    }, { +        DECOR_AZURILL_DOLL, +        _("AZURILL DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_AZURILL_DOLL, +        DecorGfx_AZURILL_DOLL +    }, { +        DECOR_SKITTY_DOLL, +        _("SKITTY DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_SKITTY_DOLL, +        DecorGfx_SKITTY_DOLL +    }, { +        DECOR_SWABLU_DOLL, +        _("SWABLU DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_SWABLU_DOLL, +        DecorGfx_SWABLU_DOLL +    }, { +        DECOR_GULPIN_DOLL, +        _("GULPIN DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_GULPIN_DOLL, +        DecorGfx_GULPIN_DOLL +    }, { +        DECOR_LOTAD_DOLL, +        _("LOTAD DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_LOTAD_DOLL, +        DecorGfx_LOTAD_DOLL +    }, { +        DECOR_SEEDOT_DOLL, +        _("SEEDOT DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_DOLL, +        3000, +        DecorDesc_SEEDOT_DOLL, +        DecorGfx_SEEDOT_DOLL +    }, { +        DECOR_PIKA_CUSHION, +        _("PIKA CUSHION"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_CUSHION, +        2000, +        DecorDesc_PIKA_CUSHION, +        DecorGfx_PIKA_CUSHION +    }, { +        DECOR_ROUND_CUSHION, +        _("ROUND CUSHION"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_CUSHION, +        2000, +        DecorDesc_ROUND_CUSHION, +        DecorGfx_ROUND_CUSHION +    }, { +        DECOR_KISS_CUSHION, +        _("KISS CUSHION"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_CUSHION, +        2000, +        DecorDesc_KISS_CUSHION, +        DecorGfx_KISS_CUSHION +    }, { +        DECOR_ZIGZAG_CUSHION, +        _("ZIGZAG CUSHION"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_CUSHION, +        2000, +        DecorDesc_ZIGZAG_CUSHION, +        DecorGfx_ZIGZAG_CUSHION +    }, { +        DECOR_SPIN_CUSHION, +        _("SPIN CUSHION"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_CUSHION, +        2000, +        DecorDesc_SPIN_CUSHION, +        DecorGfx_SPIN_CUSHION +    }, { +        DECOR_DIAMOND_CUSHION, +        _("DIAMOND CUSHION"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_CUSHION, +        2000, +        DecorDesc_DIAMOND_CUSHION, +        DecorGfx_DIAMOND_CUSHION +    }, { +        DECOR_BALL_CUSHION, +        _("BALL CUSHION"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_CUSHION, +        2000, +        DecorDesc_BALL_CUSHION, +        DecorGfx_BALL_CUSHION +    }, { +        DECOR_GRASS_CUSHION, +        _("GRASS CUSHION"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_CUSHION, +        2000, +        DecorDesc_GRASS_CUSHION, +        DecorGfx_GRASS_CUSHION +    }, { +        DECOR_FIRE_CUSHION, +        _("FIRE CUSHION"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_CUSHION, +        2000, +        DecorDesc_FIRE_CUSHION, +        DecorGfx_FIRE_CUSHION +    }, { +        DECOR_WATER_CUSHION, +        _("WATER CUSHION"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x1, +        DECORCAT_CUSHION, +        2000, +        DecorDesc_WATER_CUSHION, +        DecorGfx_WATER_CUSHION +    }, { +        DECOR_SNORLAX_DOLL, +        _("SNORLAX DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x2, +        DECORCAT_DOLL, +        10000, +        DecorDesc_SNORLAX_DOLL, +        DecorGfx_SNORLAX_DOLL +    }, { +        DECOR_RHYDON_DOLL, +        _("RHYDON DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x2, +        DECORCAT_DOLL, +        10000, +        DecorDesc_RHYDON_DOLL, +        DecorGfx_RHYDON_DOLL +    }, { +        DECOR_LAPRAS_DOLL, +        _("LAPRAS DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x2, +        DECORCAT_DOLL, +        10000, +        DecorDesc_LAPRAS_DOLL, +        DecorGfx_LAPRAS_DOLL +    }, { +        DECOR_VENUSAUR_DOLL, +        _("VENUSAUR DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x2, +        DECORCAT_DOLL, +        10000, +        DecorDesc_VENUSAUR_DOLL, +        DecorGfx_VENUSAUR_DOLL +    }, { +        DECOR_CHARIZARD_DOLL, +        _("CHARIZARD DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x2, +        DECORCAT_DOLL, +        10000, +        DecorDesc_CHARIZARD_DOLL, +        DecorGfx_CHARIZARD_DOLL +    }, { +        DECOR_BLASTOISE_DOLL, +        _("BLASTOISE DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x2, +        DECORCAT_DOLL, +        10000, +        DecorDesc_BLASTOISE_DOLL, +        DecorGfx_BLASTOISE_DOLL +    }, { +        DECOR_WAILMER_DOLL, +        _("WAILMER DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x2, +        DECORCAT_DOLL, +        10000, +        DecorDesc_WAILMER_DOLL, +        DecorGfx_WAILMER_DOLL +    }, { +        DECOR_REGIROCK_DOLL, +        _("REGIROCK DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x2, +        DECORCAT_DOLL, +        10000, +        DecorDesc_REGIROCK_DOLL, +        DecorGfx_REGIROCK_DOLL +    }, { +        DECOR_REGICE_DOLL, +        _("REGICE DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x2, +        DECORCAT_DOLL, +        10000, +        DecorDesc_REGICE_DOLL, +        DecorGfx_REGICE_DOLL +    }, { +        DECOR_REGISTEEL_DOLL, +        _("REGISTEEL DOLL"), +        DECORPERM_SOLID_MAT, +        DECORSHAPE_1x2, +        DECORCAT_DOLL, +        10000, +        DecorDesc_REGISTEEL_DOLL, +        DecorGfx_REGISTEEL_DOLL} +}; + +#endif //GUARD_DATA_DECORATION_HEADER_H diff --git a/include/data/decoration/icon.h b/include/data/decoration/icon.h new file mode 100644 index 000000000..1f11bc19f --- /dev/null +++ b/include/data/decoration/icon.h @@ -0,0 +1,132 @@ +// +// Created by scott on 10/21/2017. +// + +#ifndef GUARD_ICON_H +#define GUARD_ICON_H + +const u8 *const gUnknown_085A6BE8[][2] = { +    {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, +    {NULL, NULL}, +    {NULL, NULL}, +    {gUnknown_08DB7AA0, gUnknown_08DB7B34}, +    {gUnknown_08DB7B5C, gUnknown_08DB7BEC}, +    {gUnknown_08DB7C08, gUnknown_08DB7CE8}, +    {gUnknown_08DB7D08, gUnknown_08DB7DCC}, +    {gUnknown_08DB7DF4, gUnknown_08DB7EA0}, +    {gUnknown_08DB7EC4, gUnknown_08DB7F60}, +    {gUnknown_08DB7F7C, gUnknown_08DB8070}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {gUnknown_08DB808C, gUnknown_08DB8138}, +    {gUnknown_08DB8160, gUnknown_08DB8218}, +    {gUnknown_08DB823C, gUnknown_08DB8300}, +    {gUnknown_08DB8328, gUnknown_08DB8430}, +    {gUnknown_08DB8458, gUnknown_08DB8528}, +    {gUnknown_08DB854C, gUnknown_08DB862C}, +    {gUnknown_08DB8654, gUnknown_08DB86C4}, +    {gUnknown_08DB86E0, gUnknown_08DB8750}, +    {gUnknown_08DB876C, gUnknown_08DB87DC}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {gUnknown_08DB87F8, gUnknown_08DB88D8}, +    {gUnknown_08DB8900, gUnknown_08DB89E0}, +    {gUnknown_08DB8A08, gUnknown_08DB8A68}, +    {gUnknown_08DB8A84, gUnknown_08DB8B40}, +    {NULL, NULL}, +    {NULL, NULL}, +    {gUnknown_08DB8B68, gUnknown_08DB8C40}, +    {gUnknown_08DB8C5C, gUnknown_08DB8CF4}, +    {NULL, NULL}, +    {gUnknown_08DB8D18, gUnknown_08DB8DB0}, +    {gUnknown_08DB8DD4, gUnknown_08DB8E80}, +    {NULL, NULL}, +    {NULL, NULL}, +    {gUnknown_08DB8EA0, gUnknown_08DB8F58}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {gUnknown_08DB8F7C, gUnknown_08DB9038}, +    {gUnknown_08DB9058, gUnknown_08DB9130}, +    {gUnknown_08DB9154, gUnknown_08DB9218}, +    {gUnknown_08DB9234, gUnknown_08DB92FC}, +    {gUnknown_08DB931C, gUnknown_08DB93E8}, +    {gUnknown_08DB940C, gUnknown_08DB94CC}, +    {gUnknown_08DB94E8, gUnknown_08DB95AC}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {NULL, NULL}, +    {gUnknown_08DB95D0, gUnknown_08DB96C4}, +    {gUnknown_08DB96EC, gUnknown_08DB97F4}, +    {gUnknown_08DB981C, gUnknown_08DB9908}, +    {gUnknown_08DB9930, gUnknown_08DB9A54}, +    {gUnknown_08DB9A7C, gUnknown_08DB9B7C}, +    {gUnknown_08DB9BA4, gUnknown_08DB9CB0}, +    {gUnknown_08DB9CD8, gUnknown_08DB9DAC}, +    {gUnknown_08DB9F08, gUnknown_08DB9FFC}, +    {gUnknown_08DB9DD4, gUnknown_08DB9EE4}, +    {gUnknown_08DBA020, gUnknown_08DBA12C} +}; + +#endif //GUARD_ICON_H diff --git a/include/data/decoration/tilemaps.h b/include/data/decoration/tilemaps.h new file mode 100644 index 000000000..1cca7ae0b --- /dev/null +++ b/include/data/decoration/tilemaps.h @@ -0,0 +1,239 @@ +// +// Created by scott on 10/21/2017. +// + +#ifndef GUARD_TILEMAPS_H +#define GUARD_TILEMAPS_H + +const u8 Unknown_085A6FB0[] = { +    0x00, 0x01, 0x02, 0x03 +}; + +const u8 Unknown_085A6FB4[] = { +    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, +    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d +}; + +const u8 Unknown_085A6FC0[] = { +    0x00, 0x01, 0x02, 0x03, +    0x04, 0x05, 0x06, 0x07, +    0x08, 0x09, 0x0a, 0x0b, +    0x0c, 0x0d, 0x0e, 0x0f +}; + +const u8 Unknown_085A6FD0[] = { +    0x00, 0x01, 0x04, 0x05, +    0x08, 0x09, 0x0c, 0x0d, +    0x10, 0x11, 0x14, 0x15 +}; + +const u8 Unknown_085A6FDC[] = { +    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 +}; + +const u8 Unknown_085A6FE4[] = { +    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, +    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, +    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, +    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f +}; + +const u8 Unknown_085A7004[] = { +    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, +    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, +    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, +    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, +    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, +    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d +}; + +const u8 Unknown_085A7028[] = { +    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, +    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, +    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, +    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d +}; + +const u8 Unknown_085A7040[] = { +    0x00, 0x00, 0x00, 0x00 +}; + +const u8 Unknown_085A7044[] = { +    0x00, 0x00, 0x01, 0x01, +    0x00, 0x00, 0x01, 0x01 +}; + +const u8 Unknown_085A704C[] = { +    0x00, 0x00, 0x01, 0x01, 0x02, 0x02, +    0x00, 0x00, 0x01, 0x01, 0x02, 0x02 +}; + +const u8 Unknown_085A7058[] = { +    0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, +    0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, +    0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07, +    0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07 +}; + +const u8 Unknown_085A7078[] = { +    0x00, 0x00, 0x01, 0x01, +    0x00, 0x00, 0x01, 0x01, +    0x02, 0x02, 0x03, 0x03, +    0x02, 0x02, 0x03, 0x03 +}; + +const u8 Unknown_085A7088[] = { +    0x00, 0x00, 0x00, 0x00, +    0x01, 0x01, 0x01, 0x01 +}; + +const u8 Unknown_085A7090[] = { +    0x00, 0x00, 0x00, 0x00, +    0x01, 0x01, 0x01, 0x01, +    0x02, 0x02, 0x02, 0x02 +}; + +const u8 Unknown_085A709C[] = { +    0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, +    0x02, 0x02, 0x03, 0x03, 0x02, 0x02, 0x03, 0x03, +    0x04, 0x04, 0x05, 0x05, 0x04, 0x04, 0x05, 0x05, +    0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x07, 0x07 +}; + +const u8 Unknown_085A70BC[] = { +    0x00, 0x00, 0x01, 0x01, 0x02, 0x02, +    0x00, 0x00, 0x01, 0x01, 0x02, 0x02, +    0x03, 0x03, 0x04, 0x04, 0x05, 0x05, +    0x03, 0x03, 0x04, 0x04, 0x05, 0x05, +    0x06, 0x06, 0x07, 0x07, 0x08, 0x08, +    0x06, 0x06, 0x07, 0x07, 0x08, 0x08 +}; + +const u8 Unknown_085A70E0[] = { +    0x00, 0x00, 0x01, 0x01, 0x02, 0x02, +    0x00, 0x00, 0x01, 0x01, 0x02, 0x02, +    0x03, 0x03, 0x04, 0x04, 0x05, 0x05, +    0x03, 0x03, 0x04, 0x04, 0x05, 0x05 +}; + +const u8 Unknown_085A70F8[] = { +    0x04, 0x05, 0x06, 0x07 +}; + +const u8 Unknown_085A70FC[] = { +    0x04, 0x05, 0x04, 0x05, +    0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7104[] = { +    0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +    0x06, 0x07, 0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7110[] = { +    0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +    0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +    0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +    0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7130[] = { +    0x04, 0x05, 0x04, 0x05, +    0x06, 0x07, 0x06, 0x07, +    0x04, 0x05, 0x04, 0x05, +    0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7140[] = { +    0x04, 0x05, 0x06, 0x07, +    0x04, 0x05, 0x06, 0x07 +}; + +const u8 Unknown_085A7148[] = { +    0x04, 0x05, 0x06, 0x07, +    0x04, 0x05, 0x06, 0x07, +    0x04, 0x05, 0x06, 0x07 +}; + +const u8 Unknown_085A7154[] = { +    0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07, +    0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07, +    0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07, +    0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7174[] = { +    0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +    0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +    0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +    0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +    0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +    0x06, 0x07, 0x06, 0x07, 0x06, 0x07 +}; + +const u8 Unknown_085A7198[] = { +    0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +    0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +    0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +    0x06, 0x07, 0x06, 0x07, 0x06, 0x07 +}; + +const struct { +    const u8 *tiles; +    const u8 *y; +    const u8 *x; +    u8 size; +} gUnknown_085A71B0[] = { +    { +        Unknown_085A6FB0, +        Unknown_085A7040, +        Unknown_085A70F8, +        0x04 +    }, { +        Unknown_085A6FDC, +        Unknown_085A7044, +        Unknown_085A70FC, +        0x08 +    }, { +        Unknown_085A6FB4, +        Unknown_085A704C, +        Unknown_085A7104, +        0x0c +    }, { +        Unknown_085A6FE4, +        Unknown_085A7058, +        Unknown_085A7110, +        0x20 +    }, { +        Unknown_085A6FC0, +        Unknown_085A7078, +        Unknown_085A7130, +        0x10 +    }, { +        Unknown_085A6FDC, +        Unknown_085A7088, +        Unknown_085A7140, +        0x08 +    }, { +        Unknown_085A6FD0, +        Unknown_085A7090, +        Unknown_085A7148, +        0x0c +    }, { +        Unknown_085A6FE4, +        Unknown_085A709C, +        Unknown_085A7154, +        0x20 +    }, { +        Unknown_085A7004, +        Unknown_085A70BC, +        Unknown_085A7174, +        0x24 +    }, { +        Unknown_085A7028, +        Unknown_085A70E0, +        Unknown_085A7198, +        0x18 +    }}; + +#endif //GUARD_TILEMAPS_H diff --git a/include/data/decoration/tiles.h b/include/data/decoration/tiles.h new file mode 100644 index 000000000..9a3f8a222 --- /dev/null +++ b/include/data/decoration/tiles.h @@ -0,0 +1,646 @@ +#ifndef GUARD_DATA_DECORATION_TILES +#define GUARD_DATA_DECORATION_TILES + +const u16 DecorGfx_SMALL_DESK[] = { +    0x87 +}; + +const u16 DecorGfx_POKEMON_DESK[] = { +    0x8F +}; + +const u16 DecorGfx_HEAVY_DESK[] = { +    0x90, +    0x91, +    0x92, +    0x98, +    0x99, +    0x9A +}; + +const u16 DecorGfx_RAGGED_DESK[] = { +    0x93, +    0x94, +    0x95, +    0x9B, +    0x9C, +    0x9D +}; + +const u16 DecorGfx_COMFORT_DESK[] = { +    0x96, +    0x97, +    0xA3, +    0x9E, +    0x9F, +    0xAB +}; + +const u16 DecorGfx_PRETTY_DESK[] = { +    0xBD, +    0xBE, +    0xBF, +    0xC5, +    0xC6, +    0xC7, +    0xCD, +    0xCE, +    0xCF +}; + +const u16 DecorGfx_BRICK_DESK[] = { +    0xA0, +    0xA1, +    0xA2, +    0xA8, +    0xA9, +    0xAA, +    0xB0, +    0xB1, +    0xB2 +}; + +const u16 DecorGfx_CAMP_DESK[] = { +    0xA4, +    0xA5, +    0xA6, +    0xAC, +    0xAD, +    0xAE, +    0xB4, +    0xB5, +    0xB6 +}; + +const u16 DecorGfx_HARD_DESK[] = { +    0xA7, +    0xBB, +    0xBC, +    0xAF, +    0xC3, +    0xC4, +    0xB7, +    0xCB, +    0xCC +}; + +const u16 DecorGfx_SMALL_CHAIR[] = { +    0xB8 +}; + +const u16 DecorGfx_POKEMON_CHAIR[] = { +    0xB9 +}; + +const u16 DecorGfx_HEAVY_CHAIR[] = { +    0xBA +}; + +const u16 DecorGfx_PRETTY_CHAIR[] = { +    0xC0 +}; + +const u16 DecorGfx_COMFORT_CHAIR[] = { +    0xC1 +}; + +const u16 DecorGfx_RAGGED_CHAIR[] = { +    0xC2 +}; + +const u16 DecorGfx_BRICK_CHAIR[] = { +    0xC8 +}; + +const u16 DecorGfx_CAMP_CHAIR[] = { +    0xC9 +}; + +const u16 DecorGfx_HARD_CHAIR[] = { +    0xCA +}; + +const u16 DecorGfx_RED_PLANT[] = { +    0xD0, +    0xD8 +}; + +const u16 DecorGfx_TROPICAL_PLANT[] = { +    0xD2, +    0xDA +}; + +const u16 DecorGfx_PRETTY_FLOWERS[] = { +    0xD4, +    0xDC +}; + +const u16 DecorGfx_COLORFUL_PLANT[] = { +    0xE0, +    0xE2, +    0xE8, +    0xE9 +}; + +const u16 DecorGfx_BIG_PLANT[] = { +    0xE4, +    0xE6, +    0xEC, +    0xED +}; + +const u16 DecorGfx_GORGEOUS_PLANT[] = { +    0xF0, +    0xF2, +    0xF8, +    0xF9 +}; + +const u16 DecorGfx_RED_BRICK[] = { +    0x25, +    0x2D +}; + +const u16 DecorGfx_YELLOW_BRICK[] = { +    0x26, +    0x2E +}; + +const u16 DecorGfx_BLUE_BRICK[] = { +    0x27, +    0x2F +}; + +const u16 DecorGfx_RED_BALLOON[] = { +    0x138 +}; + +const u16 DecorGfx_BLUE_BALLOON[] = { +    0x13C +}; + +const u16 DecorGfx_YELLOW_BALLOON[] = { +    0x140 +}; + +const u16 DecorGfx_RED_TENT[] = { +    0x30, +    0x31, +    0x32, +    0x38, +    0x39, +    0x3A, +    0x40, +    0x41, +    0x3B +}; + +const u16 DecorGfx_BLUE_TENT[] = { +    0x48, +    0x49, +    0x68, +    0x50, +    0x51, +    0x70, +    0x58, +    0x59, +    0x69 +}; + +const u16 DecorGfx_SOLID_BOARD[] = { +    0x34, +    0x3C +}; + +const u16 DecorGfx_SLIDE[] = { +    0x35, +    0x36, +    0x3D, +    0x3E, +    0x63, +    0x64, +    0x6F, +    0x77 +}; + +const u16 DecorGfx_FENCE_LENGTH[] = { +    0x33 +}; + +const u16 DecorGfx_FENCE_WIDTH[] = { +    0x2C +}; + +const u16 DecorGfx_TIRE[] = { +    0x80, +    0x81, +    0x88, +    0x89 +}; + +const u16 DecorGfx_STAND[] = { +    0x6A, +    0x6B, +    0x6C, +    0x6D, +    0x72, +    0x73, +    0x74, +    0x75 +}; + +const u16 DecorGfx_MUD_BALL[] = { +    0x28 +}; + +const u16 DecorGfx_BREAKABLE_DOOR[] = { +    0x37, +    0x3F +}; + +const u16 DecorGfx_SAND_ORNAMENT[] = { +    0x85, +    0x8D +}; + +const u16 DecorGfx_SILVER_SHIELD[] = { +    0xD6, +    0xDE +}; + +const u16 DecorGfx_GOLD_SHIELD[] = { +    0x12E, +    0x136 +}; + +const u16 DecorGfx_GLASS_ORNAMENT[] = { +    0x82, +    0x8A +}; + +const u16 DecorGfx_TV[] = { +    0xF4 +}; + +const u16 DecorGfx_ROUND_TV[] = { +    0xF5 +}; + +const u16 DecorGfx_CUTE_TV[] = { +    0xF6 +}; + +const u16 DecorGfx_GLITTER_MAT[] = { +    0x60 +}; + +const u16 DecorGfx_JUMP_MAT[] = { +    0x61 +}; + +const u16 DecorGfx_SPIN_MAT[] = { +    0x62 +}; + +const u16 DecorGfx_C_LOW_NOTE_MAT[] = { +    0x78 +}; + +const u16 DecorGfx_D_NOTE_MAT[] = { +    0x79 +}; + +const u16 DecorGfx_E_NOTE_MAT[] = { +    0x7A +}; + +const u16 DecorGfx_F_NOTE_MAT[] = { +    0x7B +}; + +const u16 DecorGfx_G_NOTE_MAT[] = { +    0x7C +}; + +const u16 DecorGfx_A_NOTE_MAT[] = { +    0x7D +}; + +const u16 DecorGfx_B_NOTE_MAT[] = { +    0x7E +}; + +const u16 DecorGfx_C_HIGH_NOTE_MAT[] = { +    0xB3 +}; + +const u16 DecorGfx_SURF_MAT[] = { +    0x42, +    0x43, +    0x44, +    0x4A, +    0x4B, +    0x4C, +    0x52, +    0x53, +    0x54 +}; + +const u16 DecorGfx_THUNDER_MAT[] = { +    0x45, +    0x46, +    0x47, +    0x4D, +    0x4E, +    0x4F, +    0x55, +    0x56, +    0x57 +}; + +const u16 DecorGfx_FIRE_BLAST_MAT[] = { +    0x5A, +    0x5B, +    0x5C, +    0x5D, +    0x5E, +    0x5F, +    0x65, +    0x66, +    0x67 +}; + +const u16 DecorGfx_POWDER_SNOW_MAT[] = { +    0x100, +    0x101, +    0x102, +    0x108, +    0x109, +    0x10A, +    0x110, +    0x111, +    0x112 +}; + +const u16 DecorGfx_ATTRACT_MAT[] = { +    0x103, +    0x104, +    0x105, +    0x10B, +    0x10C, +    0x10D, +    0x113, +    0x114, +    0x115 +}; + +const u16 DecorGfx_FISSURE_MAT[] = { +    0x106, +    0x107, +    0x118, +    0x10E, +    0x10F, +    0x120, +    0x116, +    0x117, +    0x128 +}; + +const u16 DecorGfx_SPIKES_MAT[] = { +    0x119, +    0x11A, +    0x11B, +    0x121, +    0x122, +    0x123, +    0x129, +    0x12A, +    0x12B +}; + +const u16 DecorGfx_BALL_POSTER[] = { +    0x130 +}; + +const u16 DecorGfx_GREEN_POSTER[] = { +    0x131 +}; + +const u16 DecorGfx_RED_POSTER[] = { +    0x132 +}; + +const u16 DecorGfx_BLUE_POSTER[] = { +    0x133 +}; + +const u16 DecorGfx_CUTE_POSTER[] = { +    0x134 +}; + +const u16 DecorGfx_PIKA_POSTER[] = { +    0x11C, +    0x11D +}; + +const u16 DecorGfx_LONG_POSTER[] = { +    0x11E, +    0x11F +}; + +const u16 DecorGfx_SEA_POSTER[] = { +    0x124, +    0x125 +}; + +const u16 DecorGfx_SKY_POSTER[] = { +    0x126, +    0x127 +}; + +const u16 DecorGfx_KISS_POSTER[] = { +    0x12C, +    0x12D +}; + +const u16 DecorGfx_PICHU_DOLL[] = { +    MAP_OBJ_GFX_PICHU_DOLL +}; + +const u16 DecorGfx_PIKACHU_DOLL[] = { +    MAP_OBJ_GFX_PIKACHU_DOLL +}; + +const u16 DecorGfx_MARILL_DOLL[] = { +    MAP_OBJ_GFX_MARILL_DOLL +}; + +const u16 DecorGfx_TOGEPI_DOLL[] = { +    MAP_OBJ_GFX_TOGEPI_DOLL +}; + +const u16 DecorGfx_CYNDAQUIL_DOLL[] = { +    MAP_OBJ_GFX_CYNDAQUIL_DOLL +}; + +const u16 DecorGfx_CHIKORITA_DOLL[] = { +    MAP_OBJ_GFX_CHIKORITA_DOLL +}; + +const u16 DecorGfx_TOTODILE_DOLL[] = { +    MAP_OBJ_GFX_TOTODILE_DOLL +}; + +const u16 DecorGfx_JIGGLYPUFF_DOLL[] = { +    MAP_OBJ_GFX_JIGGLYPUFF_DOLL +}; + +const u16 DecorGfx_MEOWTH_DOLL[] = { +    MAP_OBJ_GFX_MEOWTH_DOLL +}; + +const u16 DecorGfx_CLEFAIRY_DOLL[] = { +    MAP_OBJ_GFX_CLEFAIRY_DOLL +}; + +const u16 DecorGfx_DITTO_DOLL[] = { +    MAP_OBJ_GFX_DITTO_DOLL +}; + +const u16 DecorGfx_SMOOCHUM_DOLL[] = { +    MAP_OBJ_GFX_SMOOCHUM_DOLL +}; + +const u16 DecorGfx_TREECKO_DOLL[] = { +    MAP_OBJ_GFX_TREECKO_DOLL +}; + +const u16 DecorGfx_TORCHIC_DOLL[] = { +    MAP_OBJ_GFX_TORCHIC_DOLL +}; + +const u16 DecorGfx_MUDKIP_DOLL[] = { +    MAP_OBJ_GFX_MUDKIP_DOLL +}; + +const u16 DecorGfx_DUSKULL_DOLL[] = { +    MAP_OBJ_GFX_DUSKULL_DOLL +}; + +const u16 DecorGfx_WYNAUT_DOLL[] = { +    MAP_OBJ_GFX_WYNAUT_DOLL +}; + +const u16 DecorGfx_BALTOY_DOLL[] = { +    MAP_OBJ_GFX_BALTOY_DOLL +}; + +const u16 DecorGfx_KECLEON_DOLL[] = { +    MAP_OBJ_GFX_KECLEON_DOLL +}; + +const u16 DecorGfx_AZURILL_DOLL[] = { +    MAP_OBJ_GFX_AZURILL_DOLL +}; + +const u16 DecorGfx_SKITTY_DOLL[] = { +    MAP_OBJ_GFX_SKITTY_DOLL +}; + +const u16 DecorGfx_SWABLU_DOLL[] = { +    MAP_OBJ_GFX_SWABLU_DOLL +}; + +const u16 DecorGfx_GULPIN_DOLL[] = { +    MAP_OBJ_GFX_GULPIN_DOLL +}; + +const u16 DecorGfx_LOTAD_DOLL[] = { +    MAP_OBJ_GFX_LOTAD_DOLL +}; + +const u16 DecorGfx_SEEDOT_DOLL[] = { +    MAP_OBJ_GFX_SEEDOT_DOLL +}; + +const u16 DecorGfx_PIKA_CUSHION[] = { +    MAP_OBJ_GFX_PIKA_CUSHION +}; + +const u16 DecorGfx_ROUND_CUSHION[] = { +    MAP_OBJ_GFX_ROUND_CUSHION +}; + +const u16 DecorGfx_KISS_CUSHION[] = { +    MAP_OBJ_GFX_KISS_CUSHION +}; + +const u16 DecorGfx_ZIGZAG_CUSHION[] = { +    MAP_OBJ_GFX_ZIGZAG_CUSHION +}; + +const u16 DecorGfx_SPIN_CUSHION[] = { +    MAP_OBJ_GFX_SPIN_CUSHION +}; + +const u16 DecorGfx_DIAMOND_CUSHION[] = { +    MAP_OBJ_GFX_DIAMOND_CUSHION +}; + +const u16 DecorGfx_BALL_CUSHION[] = { +    MAP_OBJ_GFX_BALL_CUSHION +}; + +const u16 DecorGfx_GRASS_CUSHION[] = { +    MAP_OBJ_GFX_GRASS_CUSHION +}; + +const u16 DecorGfx_FIRE_CUSHION[] = { +    MAP_OBJ_GFX_FIRE_CUSHION +}; + +const u16 DecorGfx_WATER_CUSHION[] = { +    MAP_OBJ_GFX_WATER_CUSHION +}; + +const u16 DecorGfx_SNORLAX_DOLL[] = { +    MAP_OBJ_GFX_BIG_SNORLAX_DOLL +}; + +const u16 DecorGfx_RHYDON_DOLL[] = { +    MAP_OBJ_GFX_BIG_RHYDON_DOLL +}; + +const u16 DecorGfx_LAPRAS_DOLL[] = { +    MAP_OBJ_GFX_BIG_LAPRAS_DOLL +}; + +const u16 DecorGfx_VENUSAUR_DOLL[] = { +    MAP_OBJ_GFX_BIG_VENUSAUR_DOLL +}; + +const u16 DecorGfx_CHARIZARD_DOLL[] = { +    MAP_OBJ_GFX_BIG_CHARIZARD_DOLL +}; + +const u16 DecorGfx_BLASTOISE_DOLL[] = { +    MAP_OBJ_GFX_BIG_BLASTOISE_DOLL +}; + +const u16 DecorGfx_WAILMER_DOLL[] = { +    MAP_OBJ_GFX_BIG_WAILMER_DOLL +}; + +const u16 DecorGfx_REGIROCK_DOLL[] = { +    MAP_OBJ_GFX_BIG_REGIROCK_DOLL +}; + +const u16 DecorGfx_REGICE_DOLL[] = { +    MAP_OBJ_GFX_BIG_REGICE_DOLL +}; + +const u16 DecorGfx_REGISTEEL_DOLL[] = { +    MAP_OBJ_GFX_BIG_REGISTEEL_DOLL +}; + +#endif // GUARD_DATA_DECORATION_TILES diff --git a/include/data2.h b/include/data2.h new file mode 100644 index 000000000..db9532811 --- /dev/null +++ b/include/data2.h @@ -0,0 +1,19 @@ +#ifndef GUARD_DATA2_H +#define GUARD_DATA2_H + +struct MonCoords +{ +    // This would use a bitfield, but some function +    // uses it as a u8 and casting won't match. +    u8 coords; // u8 x:4, y:4; +    u8 y_offset; +}; + +extern struct MonCoords gTrainerBackPicCoords[]; + +extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; +extern const u8 gMoveNames[][13]; +extern const u8 gAbilityNames[][13]; +extern const u8 gTypeNames[][7]; + +#endif // GUARD_DATA2_H diff --git a/include/decompress.h b/include/decompress.h index 6c925f730..c3a771893 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -8,7 +8,7 @@ void LZDecompressVram(const void *src, void *dest);  u16 LoadCompressedObjectPic(const struct CompressedSpriteSheet *src);  void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer); -bool8 LoadCompressedObjectPicUsingHeap(struct CompressedSpriteSheet* src); +bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src);  void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src);  void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer); diff --git a/include/decoration.h b/include/decoration.h new file mode 100644 index 000000000..adefb2fd1 --- /dev/null +++ b/include/decoration.h @@ -0,0 +1,195 @@ +#ifndef GUARD_DECORATION_H +#define GUARD_DECORATION_H + +enum DecoId { +    /*000*/ DECOR_NONE, +    /*001*/ DECOR_SMALL_DESK, +    /*002*/ DECOR_POKEMON_DESK, +    /*003*/ DECOR_HEAVY_DESK, +    /*004*/ DECOR_RAGGED_DESK, +    /*005*/ DECOR_COMFORT_DESK, +    /*006*/ DECOR_PRETTY_DESK, +    /*007*/ DECOR_BRICK_DESK, +    /*008*/ DECOR_CAMP_DESK, +    /*009*/ DECOR_HARD_DESK, +    /*010*/ DECOR_SMALL_CHAIR, +    /*011*/ DECOR_POKEMON_CHAIR, +    /*012*/ DECOR_HEAVY_CHAIR, +    /*013*/ DECOR_PRETTY_CHAIR, +    /*014*/ DECOR_COMFORT_CHAIR, +    /*015*/ DECOR_RAGGED_CHAIR, +    /*016*/ DECOR_BRICK_CHAIR, +    /*017*/ DECOR_CAMP_CHAIR, +    /*018*/ DECOR_HARD_CHAIR, +    /*019*/ DECOR_RED_PLANT, +    /*020*/ DECOR_TROPICAL_PLANT, +    /*021*/ DECOR_PRETTY_FLOWERS, +    /*022*/ DECOR_COLORFUL_PLANT, +    /*023*/ DECOR_BIG_PLANT, +    /*024*/ DECOR_GORGEOUS_PLANT, +    /*025*/ DECOR_RED_BRICK, +    /*026*/ DECOR_YELLOW_BRICK, +    /*027*/ DECOR_BLUE_BRICK, +    /*028*/ DECOR_RED_BALLOON, +    /*029*/ DECOR_BLUE_BALLOON, +    /*030*/ DECOR_YELLOW_BALLOON, +    /*031*/ DECOR_RED_TENT, +    /*032*/ DECOR_BLUE_TENT, +    /*033*/ DECOR_SOLID_BOARD, +    /*034*/ DECOR_SLIDE, +    /*035*/ DECOR_FENCE_LENGTH, +    /*036*/ DECOR_FENCE_WIDTH, +    /*037*/ DECOR_TIRE, +    /*038*/ DECOR_STAND, +    /*039*/ DECOR_MUD_BALL, +    /*040*/ DECOR_BREAKABLE_DOOR, +    /*041*/ DECOR_SAND_ORNAMENT, +    /*042*/ DECOR_SILVER_SHIELD, +    /*043*/ DECOR_GOLD_SHIELD, +    /*044*/ DECOR_GLASS_ORNAMENT, +    /*045*/ DECOR_TV, +    /*046*/ DECOR_ROUND_TV, +    /*047*/ DECOR_CUTE_TV, +    /*048*/ DECOR_GLITTER_MAT, +    /*049*/ DECOR_JUMP_MAT, +    /*050*/ DECOR_SPIN_MAT, +    /*051*/ DECOR_C_LOW_NOTE_MAT, +    /*052*/ DECOR_D_NOTE_MAT, +    /*053*/ DECOR_E_NOTE_MAT, +    /*054*/ DECOR_F_NOTE_MAT, +    /*055*/ DECOR_G_NOTE_MAT, +    /*056*/ DECOR_A_NOTE_MAT, +    /*057*/ DECOR_B_NOTE_MAT, +    /*058*/ DECOR_C_HIGH_NOTE_MAT, +    /*059*/ DECOR_SURF_MAT, +    /*060*/ DECOR_THUNDER_MAT, +    /*061*/ DECOR_FIRE_BLAST_MAT, +    /*062*/ DECOR_POWDER_SNOW_MAT, +    /*063*/ DECOR_ATTRACT_MAT, +    /*064*/ DECOR_FISSURE_MAT, +    /*065*/ DECOR_SPIKES_MAT, +    /*066*/ DECOR_BALL_POSTER, +    /*067*/ DECOR_GREEN_POSTER, +    /*068*/ DECOR_RED_POSTER, +    /*069*/ DECOR_BLUE_POSTER, +    /*070*/ DECOR_CUTE_POSTER, +    /*071*/ DECOR_PIKA_POSTER, +    /*072*/ DECOR_LONG_POSTER, +    /*073*/ DECOR_SEA_POSTER, +    /*074*/ DECOR_SKY_POSTER, +    /*075*/ DECOR_KISS_POSTER, +    /*076*/ DECOR_PICHU_DOLL, +    /*077*/ DECOR_PIKACHU_DOLL, +    /*078*/ DECOR_MARILL_DOLL, +    /*079*/ DECOR_TOGEPI_DOLL, +    /*080*/ DECOR_CYNDAQUIL_DOLL, +    /*081*/ DECOR_CHIKORITA_DOLL, +    /*082*/ DECOR_TOTODILE_DOLL, +    /*083*/ DECOR_JIGGLYPUFF_DOLL, +    /*084*/ DECOR_MEOWTH_DOLL, +    /*085*/ DECOR_CLEFAIRY_DOLL, +    /*086*/ DECOR_DITTO_DOLL, +    /*087*/ DECOR_SMOOCHUM_DOLL, +    /*088*/ DECOR_TREECKO_DOLL, +    /*089*/ DECOR_TORCHIC_DOLL, +    /*090*/ DECOR_MUDKIP_DOLL, +    /*091*/ DECOR_DUSKULL_DOLL, +    /*092*/ DECOR_WYNAUT_DOLL, +    /*093*/ DECOR_BALTOY_DOLL, +    /*094*/ DECOR_KECLEON_DOLL, +    /*095*/ DECOR_AZURILL_DOLL, +    /*096*/ DECOR_SKITTY_DOLL, +    /*097*/ DECOR_SWABLU_DOLL, +    /*098*/ DECOR_GULPIN_DOLL, +    /*099*/ DECOR_LOTAD_DOLL, +    /*100*/ DECOR_SEEDOT_DOLL, +    /*101*/ DECOR_PIKA_CUSHION, +    /*102*/ DECOR_ROUND_CUSHION, +    /*103*/ DECOR_KISS_CUSHION, +    /*104*/ DECOR_ZIGZAG_CUSHION, +    /*105*/ DECOR_SPIN_CUSHION, +    /*106*/ DECOR_DIAMOND_CUSHION, +    /*107*/ DECOR_BALL_CUSHION, +    /*108*/ DECOR_GRASS_CUSHION, +    /*109*/ DECOR_FIRE_CUSHION, +    /*110*/ DECOR_WATER_CUSHION, +    /*111*/ DECOR_SNORLAX_DOLL, +    /*112*/ DECOR_RHYDON_DOLL, +    /*113*/ DECOR_LAPRAS_DOLL, +    /*114*/ DECOR_VENUSAUR_DOLL, +    /*115*/ DECOR_CHARIZARD_DOLL, +    /*116*/ DECOR_BLASTOISE_DOLL, +    /*117*/ DECOR_WAILMER_DOLL, +    /*118*/ DECOR_REGIROCK_DOLL, +    /*119*/ DECOR_REGICE_DOLL, +    /*120*/ DECOR_REGISTEEL_DOLL +}; + +enum DecorPerm { +    /* +     * The nomenclature here describes collision and placement permissions, in that order. +     */ +    DECORPERM_SOLID_FLOOR, +    DECORPERM_PASS_FLOOR, +    DECORPERM_BEHIND_FLOOR, +    DECORPERM_NA_WALL, +    DECORPERM_SOLID_MAT +}; + +enum DecorShape { +    /* +     * Width-x-height +     */ +    DECORSHAPE_1x1, +    DECORSHAPE_2x1, +    DECORSHAPE_3x1, // unused +    DECORSHAPE_4x2, +    DECORSHAPE_2x2, +    DECORSHAPE_1x2, +    DECORSHAPE_1x3, // unused +    DECORSHAPE_2x4, +    DECORSHAPE_3x3, +    DECORSHAPE_3x2 +}; + +enum DecorCat { +    /* +     * In which category you can find the decoration in the PC. +     */ +    /*0*/ DECORCAT_DESK, +    /*1*/ DECORCAT_CHAIR, +    /*2*/ DECORCAT_PLANT, +    /*3*/ DECORCAT_ORNAMENT, +    /*4*/ DECORCAT_MAT, +    /*5*/ DECORCAT_POSTER, +    /*6*/ DECORCAT_DOLL, +    /*7*/ DECORCAT_CUSHION +}; + +struct Decoration +{ +    /*0x00*/ u8 id; +    /*0x01*/ u8 name[16]; +    /*0x11*/ u8 permission; +    /*0x12*/ u8 shape; +    /*0x13*/ u8 category; +    /*0x14*/ u16 price; +    /*0x18*/ const u8 *description; +    /*0x1c*/ const u16 *tiles; +}; + +struct DecorPCPointers +{ +    /* 0x00 */ u8 *items; +    /* 0x04 */ u8 *pos; +    /* 0x08 */ u8 size; +    /* 0x09 */ u8 isPlayerRoom; +}; + +extern const struct Decoration gDecorations[]; +extern EWRAM_DATA u8 *gCurDecorInventoryItems; +extern EWRAM_DATA u8 gCurDecorationIndex; + +void sub_8126968(void); + +#endif //GUARD_DECORATION_H diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h new file mode 100644 index 000000000..e1fec36ea --- /dev/null +++ b/include/decoration_inventory.h @@ -0,0 +1,20 @@ +#ifndef GUARD_DECORATION_INVENTORY_H +#define GUARD_DECORATION_INVENTORY_H +struct DecorationInventory { +    u8 *items; +    u8 size; +}; + +extern struct DecorationInventory gDecorationInventories[]; + +void ClearDecorationInventories(void); +s8 GetFirstEmptyDecorSlot(u8 idx); +u8 CheckHasDecoration(u8); +u8 DecorationAdd(u8); +u8 DecorationCheckSpace(u8); +s8 DecorationRemove(u8); +void CondenseDecorationCategoryN(u8); +u8 CountDecorationCategoryN(u8 idx); +u8 CountDecorations(void); + +#endif // GUARD_DECORATION_INVENTORY_H diff --git a/include/diploma.h b/include/diploma.h new file mode 100644 index 000000000..8d730fa05 --- /dev/null +++ b/include/diploma.h @@ -0,0 +1,6 @@ +#ifndef GUARD_DIPLOMA_H +#define GUARD_DIPLOMA_H + +void CB2_ShowDiploma(void); + +#endif // GUARD_DIPLOMA_H diff --git a/include/dma3.h b/include/dma3.h index db75ea9e3..265b47824 100644 --- a/include/dma3.h +++ b/include/dma3.h @@ -1,20 +1,6 @@  #ifndef GUARD_DMA3_H  #define GUARD_DMA3_H -extern u8 gDma3ManagerLocked; -extern u8 gDma3RequestCursor; - -struct DmaRequestsStruct -{ - /* 0x00 */ const u8 *src; - /* 0x04 */ u8 *dest; - /* 0x08 */ u16 size; - /* 0x0A */ u16 mode; - /* 0x0C */ u32 value; -}; - -extern struct DmaRequestsStruct gDma3Requests[128]; -  void ClearDma3Requests(void);  void ProcessDma3Requests(void);  int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode); diff --git a/include/easy_chat.h b/include/easy_chat.h index fc44b6a8a..b0a217320 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -30,7 +30,9 @@ enum  void InitEasyChatPhrases(void);  void easy_chat_input_maybe(void); -void CopyEasyChatWord(u8 *, u16); -bool32 sub_811F8D8(u16); +void CopyEasyChatWord(u8 *dest, u16 word); +bool32 sub_811F8D8(u16 word); +void InitializeEasyChatWordArray(u16 *words, u16 length); +void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);  #endif // GUARD_EASYCHAT_H diff --git a/include/event_data.h b/include/event_data.h index a2a501283..0bd11fdcd 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -27,7 +27,7 @@ bool8 VarSet(u16 id, u16 value);  u8 VarGetFieldObjectGraphicsId(u8 id);  u8 *GetFlagPointer(u16 id);  u8 FlagSet(u16 id); -u8 FlagReset(u16 id); +u8 FlagClear(u16 id);  bool8 FlagGet(u16 id);  extern u16 gSpecialVar_0x8000; diff --git a/include/event_scripts.h b/include/event_scripts.h index f1abdd6f6..ff02a110a 100755 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -5,7 +5,360 @@  #ifndef GUARD_EVENT_SCRIPTS_H  #define GUARD_EVENT_SCRIPTS_H +extern const u8 gUnknown_0823B4E8[]; +extern const u8 gUnknown_08275D0C[]; +extern const u8 gUnknown_08275D1F[]; +extern const u8 gUnknown_08275D2E[];  extern const u8 gUnknown_082766A2[];  extern const u8 gUnknown_082766A6[]; +extern const u8 gTVBravoTrainerText00[]; +extern const u8 gTVBravoTrainerText01[]; +extern const u8 gTVBravoTrainerText02[]; +extern const u8 gTVBravoTrainerText03[]; +extern const u8 gTVBravoTrainerText04[]; +extern const u8 gTVBravoTrainerText05[]; +extern const u8 gTVBravoTrainerText06[]; +extern const u8 gTVBravoTrainerText07[]; +extern const u8 gTVBravoTrainerText08[]; +extern const u8 gTVBravoTrainerBattleTowerText00[]; +extern const u8 gTVBravoTrainerBattleTowerText01[]; +extern const u8 gTVBravoTrainerBattleTowerText02[]; +extern const u8 gTVBravoTrainerBattleTowerText03[]; +extern const u8 gTVBravoTrainerBattleTowerText04[]; +extern const u8 gTVBravoTrainerBattleTowerText05[]; +extern const u8 gTVBravoTrainerBattleTowerText06[]; +extern const u8 gTVBravoTrainerBattleTowerText07[]; +extern const u8 gTVBravoTrainerBattleTowerText08[]; +extern const u8 gTVBravoTrainerBattleTowerText09[]; +extern const u8 gTVBravoTrainerBattleTowerText10[]; +extern const u8 gTVBravoTrainerBattleTowerText11[]; +extern const u8 gTVBravoTrainerBattleTowerText12[]; +extern const u8 gTVBravoTrainerBattleTowerText13[]; +extern const u8 gTVBravoTrainerBattleTowerText14[]; +extern const u8 gTVFanClubOpinionsText00[]; +extern const u8 gTVFanClubOpinionsText01[]; +extern const u8 gTVFanClubOpinionsText02[]; +extern const u8 gTVFanClubOpinionsText03[]; +extern const u8 gTVFanClubOpinionsText04[]; +extern const u8 gTVFanClubText00[]; +extern const u8 gTVFanClubText01[]; +extern const u8 gTVFanClubText02[]; +extern const u8 gTVFanClubText03[]; +extern const u8 gTVFanClubText04[]; +extern const u8 gTVFanClubText05[]; +extern const u8 gTVFanClubText06[]; +extern const u8 gTVFanClubText07[]; +extern const u8 gTVRecentHappeningsText00[]; +extern const u8 gTVRecentHappeningsText01[]; +extern const u8 gTVRecentHappeningsText02[]; +extern const u8 gTVRecentHappeningsText03[]; +extern const u8 gTVRecentHappeningsText04[]; +extern const u8 gTVRecentHappeningsText05[]; +extern const u8 gTVMassOutbreakText00[]; +extern const u8 gTV3CheersForPokeblocksText00[]; +extern const u8 gTV3CheersForPokeblocksText01[]; +extern const u8 gTV3CheersForPokeblocksText02[]; +extern const u8 gTV3CheersForPokeblocksText03[]; +extern const u8 gTV3CheersForPokeblocksText04[]; +extern const u8 gTV3CheersForPokeblocksText05[]; +extern const u8 gTVTrainerFanClubSpecialText00[]; +extern const u8 gTVTrainerFanClubSpecialText01[]; +extern const u8 gTVTrainerFanClubSpecialText02[]; +extern const u8 gTVTrainerFanClubSpecialText03[]; +extern const u8 gTVTrainerFanClubSpecialText04[]; +extern const u8 gTVTrainerFanClubSpecialText05[]; +extern const u8 gTVNameRaterText00[]; +extern const u8 gTVNameRaterText01[]; +extern const u8 gTVNameRaterText02[]; +extern const u8 gTVNameRaterText03[]; +extern const u8 gTVNameRaterText04[]; +extern const u8 gTVNameRaterText05[]; +extern const u8 gTVNameRaterText06[]; +extern const u8 gTVNameRaterText07[]; +extern const u8 gTVNameRaterText08[]; +extern const u8 gTVNameRaterText09[]; +extern const u8 gTVNameRaterText10[]; +extern const u8 gTVNameRaterText11[]; +extern const u8 gTVNameRaterText12[]; +extern const u8 gTVNameRaterText13[]; +extern const u8 gTVNameRaterText14[]; +extern const u8 gTVNameRaterText15[]; +extern const u8 gTVNameRaterText16[]; +extern const u8 gTVNameRaterText17[]; +extern const u8 gTVNameRaterText18[]; +extern const u8 gTVPokemonAnglerText00[]; +extern const u8 gTVPokemonAnglerText01[]; +extern const u8 gTVPokemonTodayFailedText00[]; +extern const u8 gTVPokemonTodayFailedText01[]; +extern const u8 gTVPokemonTodayFailedText02[]; +extern const u8 gTVPokemonTodayFailedText03[]; +extern const u8 gTVPokemonTodayFailedText04[]; +extern const u8 gTVPokemonTodayFailedText05[]; +extern const u8 gTVPokemonTodayFailedText06[]; +extern const u8 gTVPokemonTodaySuccessfulText00[]; +extern const u8 gTVPokemonTodaySuccessfulText01[]; +extern const u8 gTVPokemonTodaySuccessfulText02[]; +extern const u8 gTVPokemonTodaySuccessfulText03[]; +extern const u8 gTVPokemonTodaySuccessfulText04[]; +extern const u8 gTVPokemonTodaySuccessfulText05[]; +extern const u8 gTVPokemonTodaySuccessfulText06[]; +extern const u8 gTVPokemonTodaySuccessfulText07[]; +extern const u8 gTVPokemonTodaySuccessfulText08[]; +extern const u8 gTVPokemonTodaySuccessfulText09[]; +extern const u8 gTVPokemonTodaySuccessfulText10[]; +extern const u8 gTVPokemonTodaySuccessfulText11[]; +extern const u8 gTVTodaysSmartShopperText00[]; +extern const u8 gTVTodaysSmartShopperText01[]; +extern const u8 gTVTodaysSmartShopperText02[]; +extern const u8 gTVTodaysSmartShopperText03[]; +extern const u8 gTVTodaysSmartShopperText04[]; +extern const u8 gTVTodaysSmartShopperText05[]; +extern const u8 gTVTodaysSmartShopperText06[]; +extern const u8 gTVTodaysSmartShopperText07[]; +extern const u8 gTVTodaysSmartShopperText08[]; +extern const u8 gTVTodaysSmartShopperText09[]; +extern const u8 gTVTodaysSmartShopperText10[]; +extern const u8 gTVTodaysSmartShopperText11[]; +extern const u8 gTVTodaysSmartShopperText12[]; +extern const u8 gTVWorldOfMastersText00[]; +extern const u8 gTVWorldOfMastersText01[]; +extern const u8 gTVWorldOfMastersText02[]; +extern const u8 gTVTodaysRivalTrainerText00[]; +extern const u8 gTVTodaysRivalTrainerText07[]; +extern const u8 gTVTodaysRivalTrainerText08[]; +extern const u8 gTVTodaysRivalTrainerText09[]; +extern const u8 gTVTodaysRivalTrainerText10[]; +extern const u8 gTVTodaysRivalTrainerText01[]; +extern const u8 gTVTodaysRivalTrainerText02[]; +extern const u8 gTVTodaysRivalTrainerText03[]; +extern const u8 gTVTodaysRivalTrainerText04[]; +extern const u8 gTVTodaysRivalTrainerText05[]; +extern const u8 gTVTodaysRivalTrainerText06[]; +extern const u8 gTVDewfordTrendWatcherNetworkText00[]; +extern const u8 gTVDewfordTrendWatcherNetworkText01[]; +extern const u8 gTVDewfordTrendWatcherNetworkText02[]; +extern const u8 gTVDewfordTrendWatcherNetworkText03[]; +extern const u8 gTVDewfordTrendWatcherNetworkText04[]; +extern const u8 gTVDewfordTrendWatcherNetworkText05[]; +extern const u8 gTVDewfordTrendWatcherNetworkText06[]; +extern const u8 gTVHoennTreasureInvestigatorsText00[]; +extern const u8 gTVHoennTreasureInvestigatorsText01[]; +extern const u8 gTVHoennTreasureInvestigatorsText02[]; +extern const u8 gTVFindThatGamerText00[]; +extern const u8 gTVFindThatGamerText01[]; +extern const u8 gTVFindThatGamerText02[]; +extern const u8 gTVFindThatGamerText03[]; +extern const u8 gTVBreakingNewsText00[]; +extern const u8 gTVBreakingNewsText01[]; +extern const u8 gTVBreakingNewsText02[]; +extern const u8 gTVBreakingNewsText03[]; +extern const u8 gTVBreakingNewsText04[]; +extern const u8 gTVBreakingNewsText05[]; +extern const u8 gTVBreakingNewsText06[]; +extern const u8 gTVBreakingNewsText07[]; +extern const u8 gTVBreakingNewsText12[]; +extern const u8 gTVBreakingNewsText08[]; +extern const u8 gTVBreakingNewsText09[]; +extern const u8 gTVBreakingNewsText10[]; +extern const u8 gTVBreakingNewsText11[]; +extern const u8 gTVSecretBaseVisitText00[]; +extern const u8 gTVSecretBaseVisitText01[]; +extern const u8 gTVSecretBaseVisitText02[]; +extern const u8 gTVSecretBaseVisitText03[]; +extern const u8 gTVSecretBaseVisitText04[]; +extern const u8 gTVSecretBaseVisitText05[]; +extern const u8 gTVSecretBaseVisitText06[]; +extern const u8 gTVSecretBaseVisitText07[]; +extern const u8 gTVSecretBaseVisitText08[]; +extern const u8 gTVSecretBaseVisitText09[]; +extern const u8 gTVSecretBaseVisitText10[]; +extern const u8 gTVSecretBaseVisitText11[]; +extern const u8 gTVSecretBaseVisitText12[]; +extern const u8 gTVSecretBaseVisitText13[]; +extern const u8 gTVPokemonLotteryWinnerFlashReportText00[]; +extern const u8 gTVThePokemonBattleSeminarText00[]; +extern const u8 gTVThePokemonBattleSeminarText01[]; +extern const u8 gTVThePokemonBattleSeminarText02[]; +extern const u8 gTVThePokemonBattleSeminarText03[]; +extern const u8 gTVThePokemonBattleSeminarText04[]; +extern const u8 gTVThePokemonBattleSeminarText05[]; +extern const u8 gTVThePokemonBattleSeminarText06[]; +extern const u8 gTVTrainerFanClubText00[]; +extern const u8 gTVTrainerFanClubText01[]; +extern const u8 gTVTrainerFanClubText02[]; +extern const u8 gTVTrainerFanClubText03[]; +extern const u8 gTVTrainerFanClubText04[]; +extern const u8 gTVTrainerFanClubText05[]; +extern const u8 gTVTrainerFanClubText06[]; +extern const u8 gTVTrainerFanClubText07[]; +extern const u8 gTVTrainerFanClubText08[]; +extern const u8 gTVTrainerFanClubText09[]; +extern const u8 gTVTrainerFanClubText10[]; +extern const u8 gTVTrainerFanClubText11[]; +extern const u8 gTVCutiesText00[]; +extern const u8 gTVCutiesText01[]; +extern const u8 gTVCutiesText02[]; +extern const u8 gTVCutiesText03[]; +extern const u8 gTVCutiesText04[]; +extern const u8 gTVCutiesText05[]; +extern const u8 gTVCutiesText06[]; +extern const u8 gTVCutiesText07[]; +extern const u8 gTVCutiesText08[]; +extern const u8 gTVCutiesText09[]; +extern const u8 gTVCutiesText10[]; +extern const u8 gTVCutiesText11[]; +extern const u8 gTVCutiesText12[]; +extern const u8 gTVCutiesText13[]; +extern const u8 gTVCutiesText14[]; +extern const u8 gTVCutiesText15[]; +extern const u8 gTVPokemonNewsBattleFrontierText00[]; +extern const u8 gTVPokemonNewsBattleFrontierText01[]; +extern const u8 gTVPokemonNewsBattleFrontierText02[]; +extern const u8 gTVPokemonNewsBattleFrontierText03[]; +extern const u8 gTVPokemonNewsBattleFrontierText04[]; +extern const u8 gTVPokemonNewsBattleFrontierText05[]; +extern const u8 gTVPokemonNewsBattleFrontierText06[]; +extern const u8 gTVPokemonNewsBattleFrontierText07[]; +extern const u8 gTVPokemonNewsBattleFrontierText08[]; +extern const u8 gTVPokemonNewsBattleFrontierText09[]; +extern const u8 gTVPokemonNewsBattleFrontierText10[]; +extern const u8 gTVPokemonNewsBattleFrontierText11[]; +extern const u8 gTVPokemonNewsBattleFrontierText12[]; +extern const u8 gTVPokemonNewsBattleFrontierText13[]; +extern const u8 gTVPokemonNewsBattleFrontierText14[]; +extern const u8 gTVPokemonNewsBattleFrontierText15[]; +extern const u8 gTVPokemonNewsBattleFrontierText16[]; +extern const u8 gTVPokemonNewsBattleFrontierText17[]; +extern const u8 gTVPokemonNewsBattleFrontierText18[]; +extern const u8 gTVWhatsNo1InHoennTodayText00[]; +extern const u8 gTVWhatsNo1InHoennTodayText01[]; +extern const u8 gTVWhatsNo1InHoennTodayText02[]; +extern const u8 gTVWhatsNo1InHoennTodayText03[]; +extern const u8 gTVWhatsNo1InHoennTodayText04[]; +extern const u8 gTVWhatsNo1InHoennTodayText05[]; +extern const u8 gTVWhatsNo1InHoennTodayText06[]; +extern const u8 gTVWhatsNo1InHoennTodayText07[]; +extern const u8 gTVWhatsNo1InHoennTodayText08[]; +extern const u8 gTVSecretBaseSecretsText00[]; +extern const u8 gTVSecretBaseSecretsText01[]; +extern const u8 gTVSecretBaseSecretsText02[]; +extern const u8 gTVSecretBaseSecretsText03[]; +extern const u8 gTVSecretBaseSecretsText04[]; +extern const u8 gTVSecretBaseSecretsText05[]; +extern const u8 gTVSecretBaseSecretsText06[]; +extern const u8 gTVSecretBaseSecretsText07[]; +extern const u8 gTVSecretBaseSecretsText08[]; +extern const u8 gTVSecretBaseSecretsText09[]; +extern const u8 gTVSecretBaseSecretsText10[]; +extern const u8 gTVSecretBaseSecretsText11[]; +extern const u8 gTVSecretBaseSecretsText12[]; +extern const u8 gTVSecretBaseSecretsText13[]; +extern const u8 gTVSecretBaseSecretsText14[]; +extern const u8 gTVSecretBaseSecretsText15[]; +extern const u8 gTVSecretBaseSecretsText16[]; +extern const u8 gTVSecretBaseSecretsText17[]; +extern const u8 gTVSecretBaseSecretsText18[]; +extern const u8 gTVSecretBaseSecretsText19[]; +extern const u8 gTVSecretBaseSecretsText20[]; +extern const u8 gTVSecretBaseSecretsText21[]; +extern const u8 gTVSecretBaseSecretsText22[]; +extern const u8 gTVSecretBaseSecretsText23[]; +extern const u8 gTVSecretBaseSecretsText24[]; +extern const u8 gTVSecretBaseSecretsText25[]; +extern const u8 gTVSecretBaseSecretsText26[]; +extern const u8 gTVSecretBaseSecretsText27[]; +extern const u8 gTVSecretBaseSecretsText28[]; +extern const u8 gTVSecretBaseSecretsText29[]; +extern const u8 gTVSecretBaseSecretsText30[]; +extern const u8 gTVSecretBaseSecretsText31[]; +extern const u8 gTVSecretBaseSecretsText32[]; +extern const u8 gTVSecretBaseSecretsText33[]; +extern const u8 gTVSecretBaseSecretsText34[]; +extern const u8 gTVSecretBaseSecretsText35[]; +extern const u8 gTVSecretBaseSecretsText36[]; +extern const u8 gTVSecretBaseSecretsText37[]; +extern const u8 gTVSecretBaseSecretsText38[]; +extern const u8 gTVSecretBaseSecretsText39[]; +extern const u8 gTVSecretBaseSecretsText40[]; +extern const u8 gTVSecretBaseSecretsText41[]; +extern const u8 gTVSecretBaseSecretsText42[]; +extern const u8 gTVSafariFanClubText00[]; +extern const u8 gTVSafariFanClubText01[]; +extern const u8 gTVSafariFanClubText02[]; +extern const u8 gTVSafariFanClubText03[]; +extern const u8 gTVSafariFanClubText04[]; +extern const u8 gTVSafariFanClubText05[]; +extern const u8 gTVSafariFanClubText06[]; +extern const u8 gTVSafariFanClubText07[]; +extern const u8 gTVSafariFanClubText08[]; +extern const u8 gTVSafariFanClubText09[]; +extern const u8 gTVSafariFanClubText10[]; +extern const u8 gTVContestLiveUpdatesText00[]; +extern const u8 gTVContestLiveUpdatesText01[]; +extern const u8 gTVContestLiveUpdatesText02[]; +extern const u8 gTVContestLiveUpdatesText03[]; +extern const u8 gTVContestLiveUpdatesText04[]; +extern const u8 gTVContestLiveUpdatesText05[]; +extern const u8 gTVContestLiveUpdatesText06[]; +extern const u8 gTVContestLiveUpdatesText07[]; +extern const u8 gTVContestLiveUpdatesText08[]; +extern const u8 gTVContestLiveUpdatesText09[]; +extern const u8 gTVContestLiveUpdatesText10[]; +extern const u8 gTVContestLiveUpdatesText11[]; +extern const u8 gTVContestLiveUpdatesText12[]; +extern const u8 gTVContestLiveUpdatesText13[]; +extern const u8 gTVContestLiveUpdatesText14[]; +extern const u8 gTVContestLiveUpdatesText15[]; +extern const u8 gTVContestLiveUpdatesText16[]; +extern const u8 gTVContestLiveUpdatesText17[]; +extern const u8 gTVContestLiveUpdatesText18[]; +extern const u8 gTVContestLiveUpdatesText19[]; +extern const u8 gTVContestLiveUpdatesText20[]; +extern const u8 gTVContestLiveUpdatesText21[]; +extern const u8 gTVContestLiveUpdatesText22[]; +extern const u8 gTVContestLiveUpdatesText23[]; +extern const u8 gTVContestLiveUpdatesText24[]; +extern const u8 gTVContestLiveUpdatesText25[]; +extern const u8 gTVContestLiveUpdatesText26[]; +extern const u8 gTVContestLiveUpdatesText27[]; +extern const u8 gTVContestLiveUpdatesText28[]; +extern const u8 gTVContestLiveUpdatesText29[]; +extern const u8 gTVContestLiveUpdatesText30[]; +extern const u8 gTVContestLiveUpdatesText31[]; +extern const u8 gTVContestLiveUpdatesText32[]; +extern const u8 gTVPokemonBattleUpdateText00[]; +extern const u8 gTVPokemonBattleUpdateText01[]; +extern const u8 gTVPokemonBattleUpdateText02[]; +extern const u8 gTVPokemonBattleUpdateText03[]; +extern const u8 gTVPokemonBattleUpdateText04[]; +extern const u8 gTVPokemonBattleUpdateText05[]; +extern const u8 gTVPokemonBattleUpdateText06[]; +extern const u8 gTVPokemonBattleUpdateText07[]; +extern const u8 gTVInSearchOfTrainersText00[]; +extern const u8 gTVInSearchOfTrainersText01[]; +extern const u8 gTVInSearchOfTrainersText02[]; +extern const u8 gTVInSearchOfTrainersText03[]; +extern const u8 gTVInSearchOfTrainersText04[]; +extern const u8 gTVInSearchOfTrainersText05[]; +extern const u8 gTVInSearchOfTrainersText06[]; +extern const u8 gTVInSearchOfTrainersText07[]; +extern const u8 gTVInSearchOfTrainersText08[]; +extern const u8 gTVPokemonContestLiveUpdates2Text00[]; +extern const u8 gTVPokemonContestLiveUpdates2Text01[]; +extern const u8 gTVPokemonContestLiveUpdates2Text02[]; +extern const u8 gTVPokemonContestLiveUpdates2Text03[]; +extern const u8 gPokeNewsTextSlateport_Upcoming[]; +extern const u8 gPokeNewsTextSlateport_Ongoing[]; +extern const u8 gPokeNewsTextSlateport_Ending[]; +extern const u8 gPokeNewsTextGameCorner_Upcoming[]; +extern const u8 gPokeNewsTextGameCorner_Ongoing[]; +extern const u8 gPokeNewsTextGameCorner_Ending[]; +extern const u8 gPokeNewsTextLilycove_Upcoming[]; +extern const u8 gPokeNewsTextLilycove_Ongoing[]; +extern const u8 gPokeNewsTextLilycove_Ending[]; +extern const u8 gPokeNewsTextBlendMaster_Upcoming[]; +extern const u8 gPokeNewsTextBlendMaster_Ongoing[]; +extern const u8 gPokeNewsTextBlendMaster_Ending[]; +  #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/evolution_scene.h b/include/evolution_scene.h new file mode 100644 index 000000000..48bd6ebe1 --- /dev/null +++ b/include/evolution_scene.h @@ -0,0 +1,10 @@ +#ifndef GUARD_EVOLUTION_SCENE_H +#define GUARD_EVOLUTION_SCENE_H + +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID); + +extern void (*gCB2_AfterEvolution)(void); + +#endif // GUARD_EVOLUTION_SCENE_H diff --git a/include/field_camera.h b/include/field_camera.h index 9fbaac6a2..f74fadd86 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -22,4 +22,6 @@ extern u16 gUnknown_03005DE8;  // Exported ROM declarations +void DrawWholeMapView(void); +  #endif //GUARD_FIELD_CAMERA_H diff --git a/include/field_door.h b/include/field_door.h new file mode 100644 index 000000000..f1dfc551d --- /dev/null +++ b/include/field_door.h @@ -0,0 +1,11 @@ +#ifndef GUARD_FIELDDOOR_H +#define GUARD_FIELDDOOR_H + +void FieldSetDoorOpened(u32, u32); +void FieldSetDoorClosed(u32, u32); +s8 FieldAnimateDoorClose(u32, u32); +s8 FieldAnimateDoorOpen(u32, u32); +bool8 FieldIsDoorAnimationRunning(void); +u32 GetDoorSoundEffect(u32 x, u32 y); + +#endif diff --git a/include/field_effect.h b/include/field_effect.h index 7ec26b3d7..aa3f7eba0 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -1,7 +1,3 @@ -// -// Created by Scott Norton on 9/15/17. -// -  #ifndef GUARD_FIELD_EFFECTS_H  #define GUARD_FIELD_EFFECTS_H @@ -73,8 +69,9 @@ enum FieldEffectScriptIdx      FLDEFF_USE_TELEPORT  }; -extern u32 gFieldEffectSpawnParams[8]; -  u8 FieldEffectStart(u8); +bool8 FieldEffectActiveListContains(u8 id); + +extern u32 gFieldEffectArguments[8];  #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h new file mode 100644 index 000000000..7c2d16a24 --- /dev/null +++ b/include/field_fadetransition.h @@ -0,0 +1,12 @@ +#ifndef GUARD_FIELD_FADETRANSITION_H +#define GUARD_FIELD_FADETRANSITION_H + +void sub_80AF734(void); +void sp13E_warp_to_last_warp(void); +void sub_80AF7D0(void); +void sp13F_fall_to_last_warp(void); + +void sub_80AF848(void); +void sub_80AF87C(void); + +#endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 40cc64054..038233fe6 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -33,6 +33,7 @@ u8 sub_808D4F4(void);  void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8);  void npc_load_two_palettes__no_record(u16, u8);  void npc_load_two_palettes__and_record(u16, u8); +void sub_808EBA8(u8, u8, u8, s16, s16);  void pal_patch_for_npc(u16, u8);  void sub_808E16C(s16, s16);  void sub_8092FF0(s16, s16, s16 *, s16 *); @@ -63,6 +64,7 @@ void npc_coords_shift(struct MapObject *, s16, s16);  void sub_808EB08(struct MapObject *, s16, s16);  void sub_808F254(u8, u8, u8);  void FieldObjectStep(struct MapObject *, struct Sprite *, bool8(struct MapObject *, struct Sprite *)); +u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8);  u8 GetOppositeDirection(u8);  u8 GetStepInPlaceDelay4AnimId(u32);  u8 GetStepInPlaceDelay8AnimId(u32); @@ -71,6 +73,8 @@ u8 GetStepInPlaceDelay32AnimId(u32);  u8 npc_block_way(struct MapObject *, s16, s16, u32);  void MoveCoords(u8, s16 *, s16 *);  bool8 FieldObjectIsSpecialAnimActive(struct MapObject *); +u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *); +u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z);  // Exported data declarations diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h new file mode 100644 index 000000000..ba797ec98 --- /dev/null +++ b/include/field_map_obj_helpers.h @@ -0,0 +1,7 @@ +#ifndef GUARD_FIELDMAPOBJHELP_H +#define GUARD_FIELDMAPOBJHELP_H + +void UnfreezeMapObjects(void); +void sub_8097B78(u8, u8); + +#endif diff --git a/include/field_message_box.h b/include/field_message_box.h new file mode 100644 index 000000000..432c9078b --- /dev/null +++ b/include/field_message_box.h @@ -0,0 +1,10 @@ +#ifndef GUARD_FIELD_MESSAGE_BOX_H +#define GUARD_FIELD_MESSAGE_BOX_H + +bool8 ShowFieldMessage(const u8 *message); +bool8 sub_8098238(const u8 *message); +bool8 ShowFieldAutoScrollMessage(const u8 *message); +void HideFieldMessageBox(void); +bool8 IsFieldMessageBoxHidden(void); + +#endif // GUARD_FIELD_MESSAGE_BOX_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index a787cf805..5c16e9414 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -1,7 +1,3 @@ -// -// Created by Scott Norton on 9/6/17. -// -  #ifndef GUARD_FIELD_PLAYER_AVATAR_H  #define GUARD_FIELD_PLAYER_AVATAR_H @@ -14,4 +10,6 @@ u8 player_get_direction_lower_nybble(void);  u8 player_get_direction_upper_nybble(void);  u8 player_get_x22(void); +void sub_808D074(u8); +  #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_screen.h b/include/field_screen.h new file mode 100644 index 000000000..b15fdba7d --- /dev/null +++ b/include/field_screen.h @@ -0,0 +1,12 @@ +#ifndef GUARD_FIELD_SCREEN_H +#define GUARD_FIELD_SCREEN_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +void pal_fill_black(void); +bool8 sub_80ABDFC(void); + +#endif //GUARD_FIELD_SCREEN_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h new file mode 100644 index 000000000..ef81c2f9e --- /dev/null +++ b/include/field_screen_effect.h @@ -0,0 +1,8 @@ +#ifndef GUARD_FIELD_SCREEN_EFFECT_H +#define GUARD_FIELD_SCREEN_EFFECT_H + +void sub_80AF79C(void); +void sub_80B009C(u8); +void sub_80B0244(void); + +#endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/field_specials.h b/include/field_specials.h new file mode 100644 index 000000000..1f8fbf147 --- /dev/null +++ b/include/field_specials.h @@ -0,0 +1,6 @@ +#ifndef GUARD_FIELD_SPECIALS_H +#define GUARD_FIELD_SPECIALS_H + +u8 GetLeadMonIndex(void); + +#endif // GUARD_FIELD_SPECIALS_H diff --git a/include/field_tasks.h b/include/field_tasks.h new file mode 100644 index 000000000..2a2a772d8 --- /dev/null +++ b/include/field_tasks.h @@ -0,0 +1,6 @@ +#ifndef GUARD_FIELD_TASKS_H +#define GUARD_FIELD_TASKS_H + +void ActivatePerStepCallback(u8); + +#endif // GUARD_FIELD_TASKS_H diff --git a/include/field_weather.h b/include/field_weather.h new file mode 100644 index 000000000..e12107e70 --- /dev/null +++ b/include/field_weather.h @@ -0,0 +1,12 @@ +#ifndef GUARD_WEATHER_H +#define GUARD_WEATHER_H + +void fade_screen(u8, s8); + +void SetSav1Weather(u32); +u8 GetSav1Weather(void); +void sub_80AEDBC(void); + +void DoCurrentWeather(void); + +#endif // GUARD_WEATHER_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 7174d98cc..06cb7cc77 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -1,19 +1,19 @@ -// -// Created by scott on 9/16/2017. -// -  #ifndef GUARD_FIELDMAP_H  #define GUARD_FIELDMAP_H -// Exported type declarations - -// Exported RAM declarations +extern struct MapCoords { +    int width; +    int height; +} gUnknown_03005DC0; -// Exported ROM declarations -u8 MapGridGetMetatileBehaviorAt(s16, s16); +u32 MapGridGetMetatileIdAt(int, int); +u32 MapGridGetMetatileBehaviorAt(int, int); +void MapGridSetMetatileIdAt(int, int, u16); +void MapGridSetMetatileEntryAt(int, int, u16);  void GetCameraCoords(u16*, u16*);  bool8 MapGridIsImpassableAt(s16, s16);  s32 GetMapBorderIdAt(s16, s16);  bool32 CanCameraMoveInDirection(u8); +u16 GetBehaviorByMetatileId(u16 metatileId);  #endif //GUARD_FIELDMAP_H diff --git a/include/flags.h b/include/flags.h index 19ec01b56..7d825feba 100644 --- a/include/flags.h +++ b/include/flags.h @@ -3,7 +3,7 @@  #define TRAINER_FLAG_START  0x500  #define TRAINERS_FLAG_NO    0x356 -#define CODE_FLAGS          (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) +#define CODE_FLAGS          (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860  // SYSTEM FLAGS @@ -84,6 +84,22 @@  #define SYS_CTRL_OBJ_DELETE  CODE_FLAGS + 0x61  #define SYS_RESET_RTC_ENABLE CODE_FLAGS + 0x62 +#define SYS_TOWER_SILVER    CODE_FLAGS + 0x64 +#define SYS_TOWER_GOLD      CODE_FLAGS + 0x65 +#define SYS_DOME_SILVER     CODE_FLAGS + 0x66 +#define SYS_DOME_GOLD       CODE_FLAGS + 0x67 +#define SYS_PALACE_SILVER   CODE_FLAGS + 0x68 +#define SYS_PALACE_GOLD     CODE_FLAGS + 0x69 +#define SYS_ARENA_SILVER    CODE_FLAGS + 0x6A +#define SYS_ARENA_GOLD      CODE_FLAGS + 0x6B +#define SYS_FACTORY_SILVER  CODE_FLAGS + 0x6C +#define SYS_FACTORY_GOLD    CODE_FLAGS + 0x6D +#define SYS_PIKE_SILVER     CODE_FLAGS + 0x6E +#define SYS_PIKE_GOLD       CODE_FLAGS + 0x6F +#define SYS_PYRAMID_SILVER  CODE_FLAGS + 0x70 +#define SYS_PYRAMID_GOLD    CODE_FLAGS + 0x71 +#define SYS_FRONTIER_PASS   CODE_FLAGS + 0x72 +  #define SYS_STORAGE_UNKNOWN_FLAG    CODE_FLAGS + 0x77  #define SYS_MYSTERY_GIFT_ENABLE     CODE_FLAGS + 0x7B diff --git a/include/game_stat.h b/include/game_stat.h index b8a5c3232..5979c531c 100644 --- a/include/game_stat.h +++ b/include/game_stat.h @@ -56,4 +56,7 @@  #define NUM_GAME_STATS                      64 +void IncrementGameStat(u8); +u32 GetGameStat(u8); +  #endif // GUARD_GAME_STAT_H diff --git a/include/gba/flash_internal.h b/include/gba/flash_internal.h index 6156b6c14..ba84546aa 100644 --- a/include/gba/flash_internal.h +++ b/include/gba/flash_internal.h @@ -65,6 +65,7 @@ u16 ReadFlashId(void);  void StartFlashTimer(u8 phase);  void SetReadFlash1(u16 *dest);  void StopFlashTimer(void); +void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size);  u16 WaitForFlashWrite_Common(u8 phase, u8 *addr, u8 lastData); diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index 5234e5b6c..83a2a123b 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -137,6 +137,8 @@  #define REG_OFFSET_DMA3CNT_H   0xde  #define REG_OFFSET_TMCNT       0x100 +#define REG_OFFSET_TMCNT_L     0x100 +#define REG_OFFSET_TMCNT_H     0x102  #define REG_OFFSET_TM0CNT      0x100  #define REG_OFFSET_TM0CNT_L    0x100  #define REG_OFFSET_TM0CNT_H    0x102 @@ -298,6 +300,8 @@  #define REG_ADDR_DMA3CNT_H   (REG_BASE + REG_OFFSET_DMA3CNT_H)  #define REG_ADDR_TMCNT       (REG_BASE + REG_OFFSET_TMCNT) +#define REG_ADDR_TMCNT_L     (REG_BASE + REG_OFFSET_TMCNT_L) +#define REG_ADDR_TMCNT_H     (REG_BASE + REG_OFFSET_TMCNT_H)  #define REG_ADDR_TM0CNT      (REG_BASE + REG_OFFSET_TM0CNT)  #define REG_ADDR_TM0CNT_L    (REG_BASE + REG_OFFSET_TM0CNT_L)  #define REG_ADDR_TM0CNT_H    (REG_BASE + REG_OFFSET_TM0CNT_H) @@ -458,6 +462,8 @@  #define REG_DMA3CNT_H   (*(vu16 *)REG_ADDR_DMA3CNT_H)  #define REG_TMCNT(n)    (*(vu16 *)(REG_ADDR_TMCNT + ((n) * 4))) +#define REG_TMCNT_L(n)  (*(vu16 *)(REG_ADDR_TMCNT_L + ((n) * 4))) +#define REG_TMCNT_H(n)  (*(vu16 *)(REG_ADDR_TMCNT_H + ((n) * 4)))  #define REG_TM0CNT      (*(vu32 *)REG_ADDR_TM0CNT)  #define REG_TM0CNT_L    (*(vu16 *)REG_ADDR_TM0CNT_L)  #define REG_TM0CNT_H    (*(vu16 *)REG_ADDR_TM0CNT_H) @@ -521,6 +527,8 @@  #define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled  #define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled +// BLDCNT +  // SOUNDCNT_H  #define SOUND_CGB_MIX_QUARTER 0x0000  #define SOUND_CGB_MIX_HALF    0x0001 diff --git a/include/gba/macro.h b/include/gba/macro.h index 0217898e8..7b6b98c06 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -86,4 +86,14 @@      dmaRegs[5];                                                 \  } +#define IntrEnable(flags)                                       \ +{                                                               \ +    u16 imeTemp;                                                \ +                                                                \ +    imeTemp = REG_IME;                                          \ +    REG_IME = 0;                                                \ +    REG_IE |= flags;                                            \ +    REG_IME = imeTemp;                                          \ +}                                                               \ +  #endif // GUARD_GBA_MACRO_H diff --git a/include/gba/types.h b/include/gba/types.h index fd8a20a4c..e9a380023 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -39,18 +39,18 @@ struct PlttData  struct OamData  {      /*0x00*/ u32 y:8; -    /*0x01*/ u32 affineMode:2; -             u32 objMode:2; -             u32 mosaic:1; -             u32 bpp:1; -             u32 shape:2; +    /*0x01*/ u32 affineMode:2;  // 0x1, 0x2 -> 0x4 +             u32 objMode:2;     // 0x4, 0x8 -> 0xC +             u32 mosaic:1;      // 0x10 +             u32 bpp:1;         // 0x20 +             u32 shape:2;       // 0x40, 0x80 -> 0xC0      /*0x02*/ u32 x:9;               u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode               u32 size:2; -    /*0x04*/ u16 tileNum:10; -             u16 priority:2; +    /*0x04*/ u16 tileNum:10;    // 0x33F +             u16 priority:2;    // 0x400, 0x800 -> 0xC00               u16 paletteNum:4;      /*0x06*/ u16 affineParam;  }; diff --git a/include/global.berry.h b/include/global.berry.h index a77da20ba..5c8a43a02 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -1,9 +1,12 @@  #ifndef GUARD_GLOBAL_BERRY_H  #define GUARD_GLOBAL_BERRY_H +#define BERRY_NAME_COUNT 7 +#define BERRY_ITEM_EFFECT_COUNT 18 +  struct Berry  { -    const u8 name[7]; +    const u8 name[BERRY_NAME_COUNT];      u8 firmness;      u16 size;      u8 maxYield; @@ -23,7 +26,7 @@ struct Berry  struct Berry2  { -    u8 name[7]; +    u8 name[BERRY_NAME_COUNT];      u8 firmness;      u16 size;      u8 maxYield; @@ -42,7 +45,7 @@ struct Berry2  struct EnigmaBerry  {      struct Berry2 berry; -    u8 itemEffect[18]; +    u8 itemEffect[BERRY_ITEM_EFFECT_COUNT];      u8 holdEffect;      u8 holdEffectParam;      u32 checksum; @@ -50,9 +53,9 @@ struct EnigmaBerry  struct BattleEnigmaBerry  { -    /*0x00*/ u8 name[7]; +    /*0x00*/ u8 name[BERRY_NAME_COUNT];      /*0x07*/ u8 holdEffect; -    /*0x08*/ u8 itemEffect[18]; +    /*0x08*/ u8 itemEffect[BERRY_ITEM_EFFECT_COUNT];      /*0x1A*/ u8 holdEffectParam;  }; diff --git a/include/global.h b/include/global.h index 9793ddcf2..b1c4add75 100644 --- a/include/global.h +++ b/include/global.h @@ -12,8 +12,10 @@  #define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided")  #if defined (__APPLE__) || defined (__CYGWIN__) -void memset(void *, int, size_t); -void memcpy(void *, const void *, size_t); +void *memset(void *, int, size_t); +void *memcpy(void *, const void *, size_t); +int strcmp(const char *s1, const char *s2); +char* strcpy(char *dst0, const char *src0);  #endif // __APPLE__  #define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) @@ -197,10 +199,24 @@ struct SaveBlock2          // All below could be a one giant struct -    /*0x64C*/ u8 field_64C[1629]; -    /*0xCA9*/ u8 frontierChosenLvl : 2; -    /*0xCA9*/ u8 field_CA9_a : 6; -    /*0xCAA*/ u8 field_CAA[368]; +    /*0x64C*/ u8 field_64C[0x588]; +    /*0xBD4*/ u16 field_BD4; +    /*0xBD6*/ u16 field_BD6; +    /*0xBD8*/ u8 field_BD8[11]; +    /*0xBE3*/ u8 filler_BE3[8]; +    /*0xBEB*/ u8 field_BEB; +    /*0xBE3*/ u8 filler_BEC[189]; +    /*0xCA9*/ u8 frontierChosenLvl : 2; // 0x1, 0x2 -> 0x3 +    /*0xCA9*/ u8 field_CA9_a : 1;   // 0x4 +    /*0xCA9*/ u8 field_CA9_b : 1;   // 0x8 +    /*0xCA9*/ u8 field_CA9_c : 1;   // 0x10 +    /*0xCA9*/ u8 field_CA9_d : 1;   // 0x20 +    /*0xCA9*/ u8 field_CA9_e : 1;   // 0x40 +    /*0xCA9*/ u8 field_CA9_f : 1;   // 0x80 +    /*0xCAA*/ u16 field_CAA[0x2e]; +    /*0xD06*/ u8 field_D06; +    /*0xD07*/ u8 field_D07; +    /*0xd08*/ u8 filler_D08[0x112];      /*0xE1A*/ u16 battlePyramidFloor; // possibly?      /*0xE1C*/ u8 field_E1C[16];      /*0xE2C*/ struct PyramidBag pyramidBag; @@ -220,29 +236,31 @@ extern struct SaveBlock2 *gSaveBlock2Ptr;  struct SecretBaseRecord  { -    /*ID?*/ /*0x1A08*/ u8 sbr_field_0; -    /*0x1A09*/ u8 sbr_field_1_0:4; -    /*0x1A09*/ u8 gender:1; -    /*0x1A09*/ u8 sbr_field_1_5:1; -    /*0x1A09*/ u8 sbr_field_1_6:2; -    /*0x1A0A*/ u8 sbr_field_2[7]; // 0xFF bytes? -    /*0x1A12*/ u8 trainerId[4]; // byte 0 is used for determining trainer class -    /*0x1A16*/ u16 sbr_field_e; -    /*0x1A18*/ u8 sbr_field_10; -    /*0x1A19*/ u8 sbr_field_11; -    /*0x1A1A*/ u8 decorations[16]; -    /*0x1A2A*/ u8 decorationPos[16]; -    /*0x1A3A*/ u32 partyPersonality[6]; -    /*0x1A54*/ u16 partyMoves[6 * 4]; -    /*0x1A84*/ u16 partySpecies[6]; -    /*0x1A90*/ u16 partyHeldItems[6]; -    /*0x1A9C*/ u8 partyLevels[6]; -    /*0x1AA2*/ u8 partyEVs[6]; +    /*ID?*/ /*0x1A9C*/ u8 sbr_field_0; +    /*0x1A9D*/ u8 sbr_field_1_0:4; +    /*0x1A9D*/ u8 gender:1; +    /*0x1A9D*/ u8 sbr_field_1_5:1; +    /*0x1A9D*/ u8 sbr_field_1_6:2; +    /*0x1A9E*/ u8 trainerName[7]; // 0xFF bytes? +    /*0x1AA5*/ u8 trainerId[4]; // byte 0 is used for determining trainer class +    /*0x1AA9*/ u8 language; +    /*0x1AAA*/ u16 sbr_field_e; +    /*0x1AAC*/ u8 sbr_field_10; +    /*0x1AAD*/ u8 sbr_field_11; +    /*0x1AAE*/ u8 decorations[16]; +    /*0x1ABE*/ u8 decorationPos[16]; +    /*0x1ACE*/ u32 partyPersonality[6]; +    /*0x1AE6*/ u16 partyMoves[6 * 4]; +    /*0x1B16*/ u16 partySpecies[6]; +    /*0x1B22*/ u16 partyHeldItems[6]; +    /*0x1B2E*/ u8 partyLevels[6]; +    /*0x1B34*/ u8 partyEVs[6];  };  #include "game_stat.h"  #include "global.fieldmap.h"  #include "global.berry.h" +#include "global.tv.h"  #include "pokemon.h"  struct WarpData @@ -311,218 +329,6 @@ struct EasyChatPair      u16 words[2];  }; /*size = 0x8*/ -struct TVShowCommon -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u8 pad02[20]; -    /*0x16*/ u16 var16[3]; -    /*0x1C*/ u8 srcTrainerId3Lo; -    /*0x1D*/ u8 srcTrainerId3Hi; -    /*0x1E*/ u8 srcTrainerId2Lo; -    /*0x1F*/ u8 srcTrainerId2Hi; -    /*0x20*/ u8 srcTrainerIdLo; -    /*0x21*/ u8 srcTrainerIdHi; -    /*0x22*/ u8 trainerIdLo; -    /*0x23*/ u8 trainerIdHi; -}; - -struct TVShowFanClubLetter -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u16 species; -    /*0x04*/ u16 pad04[6]; -    /*0x10*/ u8 playerName[8]; -    /*0x18*/ u8 language; -}; - -struct TVShowRecentHappenings -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u16 var02; -    /*0x04*/ u16 var04[6]; -    /*0x10*/ u8 playerName[8]; -    /*0x18*/ u8 language; -    /*0x19*/ u8 pad19[10]; -}; - -struct TVShowFanclubOpinions -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u16 var02; -    /*0x04*/ u8 var04A:4; -    /*0x04*/ u8 var04B:4; -    /*0x05*/ u8 playerName[8]; -    /*0x0D*/ u8 language; -    /*0x0E*/ u8 var0E; -    /*0x0F*/ u8 var0F; -    /*0x10*/ u8 var10[8]; -    /*0x18*/ u16 var18[2]; -    /*0x1C*/ u16 var1C[4]; -}; - -struct TVShowUnknownType04 -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u8 pad02[4]; -    /*0x06*/ u16 var06; -}; - -struct TVShowNameRaterShow -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u16 species; -    /*0x04*/ u8 pokemonName[11]; -    /*0x0F*/ u8 trainerName[11]; -    /*0x1A*/ u8 random; -    /*0x1B*/ u8 random2; -    /*0x1C*/ u16 var1C; -    /*0x1E*/ u8 language; -    /*0x1F*/ u8 pokemonNameLanguage; -}; - -struct TVShowBravoTrainerPokemonProfiles -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u16 species; -    /*0x04*/ u16 var04[2]; -    /*0x08*/ u8 pokemonNickname[11]; -    /*0x13*/ u8 contestCategory:3; -    /*0x13*/ u8 contestRank:2; -    /*0x13*/ u8 contestResult:2; -    /*0x13*/ u8 var13_7:1; -    /*0x14*/ u16 var14; -    /*0x16*/ u8 playerName[8]; -    /*0x1E*/ u8 language; -    /*0x1F*/ u8 var1f; -}; - -struct TVShowBravoTrainerBattleTowerSpotlight -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u8 trainerName[8]; -    /*0x0A*/ u16 species; -    /*0x0C*/ u8 pokemonName[8]; -    /*0x14*/ u16 defeatedSpecies; -    /*0x16*/ u16 var16; -    /*0x18*/ u16 var18[1]; -    /*0x1A*/ u8 btLevel; -    /*0x1B*/ u8 var1b; -    /*0x1C*/ u8 var1c; -    /*0x1D*/ u8 language; -}; - -struct TVShowPokemonToday -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u8 language; -    /*0x03*/ u8 language2; -    /*0x04*/ u8 nickname[11]; -    /*0x0F*/ u8 ball; -    /*0x10*/ u16 species; -    /*0x12*/ u8 var12; -    /*0x13*/ u8 playerName[8]; -}; - -struct TVShowSmartShopper -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u8 priceReduced; -    /*0x03*/ u8 language; -    /*0x04*/ u8 pad04[2]; -    /*0x06*/ u16 itemIds[3]; -    /*0x0C*/ u16 itemAmounts[3]; -    /*0x12*/ u8 shopLocation; -    /*0x13*/ u8 playerName[8]; -}; - -struct TVShowPokemonTodayFailed -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u8 language; -    /*0x03*/ u8 pad03[9]; -    /*0x0c*/ u16 species; -    /*0x0e*/ u16 species2; -    /*0x10*/ u8 var10; -    /*0x11*/ u8 var11; -    /*0x12*/ u8 var12; -    /*0x13*/ u8 playerName[8]; -}; - -struct TVShowPokemonAngler -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u8 var02; -    /*0x03*/ u8 var03; -    /*0x04*/ u16 var04; -    /*0x06*/ u8 language; -             u8 pad07[12]; -    /*0x13*/ u8 playerName[8]; -}; - -struct TVShowWorldOfMasters -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u16 var02; -    /*0x04*/ u16 var04; -    /*0x06*/ u16 var06; -    /*0x08*/ u16 var08; -    /*0x0a*/ u8 var0a; -    /*0x0b*/ u8 language; -             u8 pad0c[7]; -    /*0x13*/ u8 playerName[8]; -}; - -struct TVShowMassOutbreak -{ -    /*0x00*/ u8 var00; -    /*0x01*/ u8 var01; -    /*0x02*/ u8 var02; -    /*0x03*/ u8 var03; -    /*0x04*/ u16 moves[4]; -    /*0x0C*/ u16 species; -    /*0x0E*/ u16 var0E; -    /*0x10*/ u8 locationMapNum; -    /*0x11*/ u8 locationMapGroup; -    /*0x12*/ u8 var12; -    /*0x13*/ u8 probability; -    /*0x14*/ u8 level; -    /*0x15*/ u8 var15; -    /*0x16*/ u16 var16; -    /*0x18*/ u8 language; -             u8 pad19[11]; -}; - -typedef union TVShow -{ -    struct TVShowCommon common; -    struct TVShowFanClubLetter fanclubLetter; -    struct TVShowRecentHappenings recentHappenings; -    struct TVShowFanclubOpinions fanclubOpinions; -    struct TVShowUnknownType04 unkShow04; -    struct TVShowNameRaterShow nameRaterShow; -    struct TVShowBravoTrainerPokemonProfiles bravoTrainer; -    struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower; -    struct TVShowPokemonToday pokemonToday; -    struct TVShowSmartShopper smartshopperShow; -    struct TVShowPokemonTodayFailed pokemonTodayFailed; -    struct TVShowPokemonAngler pokemonAngler; -    struct TVShowWorldOfMasters worldOfMasters; -    struct TVShowMassOutbreak massOutbreak; -} TVShow; -  struct MailStruct  {      /*0x00*/ u16 words[9]; @@ -570,35 +376,6 @@ typedef union OldMan      u8 filler[0x40];  } OldMan; -struct UnknownSaveStruct2ABC -{ -    u8 val0; -    u8 val1; -    u16 val2; -}; - -struct GabbyAndTyData -{ -    /*2ba4*/ u16 mon1; -    /*2ba6*/ u16 mon2; -    /*2ba8*/ u16 lastMove; -    /*2baa*/ u16 quote; -    /*2bac*/ u8 mapnum; -    /*2bad*/ u8 battleNum; -    /*2bae*/ u8 valA_0:1; -    /*2bae*/ u8 valA_1:1; -    /*2bae*/ u8 valA_2:1; -    /*2bae*/ u8 valA_3:1; -    /*2bae*/ u8 valA_4:1; -    /*2bae*/ u8 valA_5:3; -    /*2baf*/ u8 valB_0:1; -    /*2baf*/ u8 valB_1:1; -    /*2baf*/ u8 valB_2:1; -    /*2baf*/ u8 valB_3:1; -    /*2baf*/ u8 valB_4:1; -    /*2baf*/ u8 valB_5:3; -}; -  struct RecordMixing_UnknownStructSub  {      u32 unk0; @@ -725,6 +502,16 @@ typedef union // TODO      u8 id;  } LilycoveLady; +struct WaldaPhrase +{ +    u16 field_0; +    u16 field_2; +    u8 text[16]; +    u8 iconId; +    u8 patternId; +    bool8 patternUnlocked; +}; +  struct SaveBlock1  {      /*0x00*/ struct Coords16 pos; @@ -775,17 +562,17 @@ struct SaveBlock1      /*0x????*/ u8 decorCushion[10];      /*0x27CA*/ u8 padding_27CA[2];      /*0x27CC*/ TVShow tvShows[25]; -    /*0x2B50*/ struct UnknownSaveStruct2ABC pokeNews[16]; +    /*0x2B50*/ PokeNews pokeNews[16];      /*0x2B90*/ u16 outbreakPokemonSpecies; -    /*0x????*/ u8 outbreakLocationMapNum; -    /*0x????*/ u8 outbreakLocationMapGroup; -    /*0x????*/ u8 outbreakPokemonLevel; -    /*0x????*/ u8 outbreakUnk1; -    /*0x????*/ u16 outbreakUnk2; -    /*0x????*/ u16 outbreakPokemonMoves[4]; -    /*0x????*/ u8 outbreakUnk4; -    /*0x????*/ u8 outbreakPokemonProbability; -    /*0x????*/ u16 outbreakUnk5; +    /*0x2B92*/ u8 outbreakLocationMapNum; +    /*0x2B93*/ u8 outbreakLocationMapGroup; +    /*0x2B94*/ u8 outbreakPokemonLevel; +    /*0x2B95*/ u8 outbreakUnk1; +    /*0x2B96*/ u16 outbreakUnk2; +    /*0x2B98*/ u16 outbreakPokemonMoves[4]; +    /*0x2BA0*/ u8 outbreakUnk4; +    /*0x2BA1*/ u8 outbreakPokemonProbability; +    /*0x2BA2*/ u16 outbreakDaysLeft;      /*0x2BA4*/ struct GabbyAndTyData gabbyAndTyData;      /*0x2BB0*/ u16 unk2BB0[6];      /*0x2BBC*/ u16 unk2BBC[6]; @@ -800,7 +587,8 @@ struct SaveBlock1      /*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum      /*0x3030*/ struct DaycareData daycare;      /*0x3150*/ struct LinkBattleRecord linkBattleRecords[5]; -    /*0x31A0*/ u8 filler_31A0[8]; +    /*0x31A0*/ u8 unk_31A0; +    /*0x31A1*/ u8 filler_31A1[7];      /*0x31A8*/ u8 giftRibbons[52];      /*0x31DC*/ struct Roamer roamer;      /*0x31F8*/ struct EnigmaBerry enigmaBerry; @@ -810,7 +598,7 @@ struct SaveBlock1      /*0x3B24*/ u8 seen2[52];      /*0x3B58*/ LilycoveLady lilycoveLady;      /*0x3B88*/ u8 filler_3B88[0x1E8]; -    /*0x3D70*/ u8 babyPhrase[24]; // TODO: convert to a struct +    /*0x3D70*/ struct WaldaPhrase waldaPhrase;      // sizeof: 0x3D88  }; diff --git a/include/global.tv.h b/include/global.tv.h new file mode 100644 index 000000000..5f65aa8e0 --- /dev/null +++ b/include/global.tv.h @@ -0,0 +1,535 @@ +#ifndef GUARD_GLOBAL_TV_H +#define GUARD_GLOBAL_TV_H + +enum +{ +    TVSHOW_OFF_AIR, + +    TVSHOW_FAN_CLUB_LETTER = 1, +    TVSHOW_RECENT_HAPPENINGS, +    TVSHOW_PKMN_FAN_CLUB_OPINIONS, +    TVSHOW_UNKN_SHOWTYPE_04, +    TVSHOW_NAME_RATER_SHOW, +    TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE, +    TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE, +    TVSHOW_CONTEST_LIVE_UPDATES, +    TVSHOW_3_CHEERS_FOR_POKEBLOCKS, +    TVSHOW_BATTLE_UPDATE, +    TVSHOW_FAN_CLUB_SPECIAL, +    TVSHOW_CONTEST_LIVE_UPDATES_2, + +    TVSHOW_POKEMON_TODAY_CAUGHT = 21, +    TVSHOW_SMART_SHOPPER, +    TVSHOW_POKEMON_TODAY_FAILED, +    TVSHOW_FISHING_ADVICE, +    TVSHOW_WORLD_OF_MASTERS, +    TVSHOW_TODAYS_RIVAL_TRAINER, +    TVSHOW_TREND_WATCHER, +    TVSHOW_TREASURE_INVESTIGATORS, +    TVSHOW_FIND_THAT_GAMER, +    TVSHOW_BREAKING_NEWS, +    TVSHOW_SECRET_BASE_VISIT, +    TVSHOW_LOTTO_WINNER, +    TVSHOW_BATTLE_SEMINAR, +    TVSHOW_TRAINER_FAN_CLUB, +    TVSHOW_CUTIES, +    TVSHOW_FRONTIER, +    TVSHOW_NUMBER_ONE, +    TVSHOW_SECRET_BASE_SECRETS, +    TVSHOW_SAFARI_FAN_CLUB, + +    TVSHOW_MASS_OUTBREAK = 41, +}; + +typedef union // size = 0x24 +{ +    // Common +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 pad02[26]; +        /*0x1C*/ u8 srcTrainerId3Lo; +        /*0x1D*/ u8 srcTrainerId3Hi; +        /*0x1E*/ u8 srcTrainerId2Lo; +        /*0x1F*/ u8 srcTrainerId2Hi; +        /*0x20*/ u8 srcTrainerIdLo; +        /*0x21*/ u8 srcTrainerIdHi; +        /*0x22*/ u8 trainerIdLo; +        /*0x23*/ u8 trainerIdHi; +    } common; + +    // Local shows +    // TVSHOW_FAN_CLUB_LETTER +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 species; +        /*0x04*/ u16 words[6]; +        /*0x10*/ u8 playerName[8]; +        /*0x18*/ u8 language; +    } fanclubLetter; + +    // TVSHOW_RECENT_HAPPENINGS +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 var02; +        /*0x04*/ u16 words[6]; +        /*0x10*/ u8 playerName[8]; +        /*0x18*/ u8 language; +    } recentHappenings; + +    // TVSHOW_PKMN_FAN_CLUB_OPINIONS +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 species; +        /*0x04*/ u8 friendshipHighNybble:4; +        /*0x04*/ u8 questionAsked:4; +        /*0x05*/ u8 playerName[8]; +        /*0x0D*/ u8 language; +        /*0x0E*/ u8 pokemonNameLanguage; +        /*0x0F*/ u8 filler_0F[1]; +        /*0x10*/ u8 nickname[8]; +        /*0x18*/ u8 filler_18[4]; +        /*0x1C*/ u16 words[4]; +    } fanclubOpinions; + +    // TVSHOW_UNKN_SHOWTYPE_04 (dummied out) +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 pad02[4]; +        /*0x06*/ u16 var06; +        /*0x08*/ u8 pad_08[3]; +        /*0x0b*/ u8 string_0b[12]; +        /*0x17*/ u8 language; +    } unkShow04; + +    // TVSHOW_NAME_RATER_SHOW +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 species; +        /*0x04*/ u8 pokemonName[11]; +        /*0x0F*/ u8 trainerName[11]; +        /*0x1A*/ u8 random; +        /*0x1B*/ u8 random2; +        /*0x1C*/ u16 randomSpecies; +        /*0x1E*/ u8 language; +        /*0x1F*/ u8 pokemonNameLanguage; +    } nameRaterShow; + +    // TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE (contest) +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 species; +        /*0x04*/ u16 words[2]; +        /*0x08*/ u8 pokemonNickname[11]; +        /*0x13*/ u8 contestCategory:3; +        /*0x13*/ u8 contestRank:2; +        /*0x13*/ u8 contestResult:2; +        /*0x14*/ u16 move; +        /*0x16*/ u8 playerName[8]; +        /*0x1E*/ u8 language; +        /*0x1F*/ u8 pokemonNameLanguage; +    } bravoTrainer; + +    // TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 trainerName[8]; +        /*0x0A*/ u16 species; +        /*0x0C*/ u8 pokemonName[8]; +        /*0x14*/ u16 defeatedSpecies; +        /*0x16*/ u16 numFights; +        /*0x18*/ u16 words[1]; +        /*0x1A*/ u8 btLevel; +        /*0x1B*/ u8 interviewResponse; +        /*0x1C*/ bool8 wonTheChallenge; +        /*0x1D*/ u8 language; +        /*0x1E*/ u8 pokemonNameLanguage; +    } bravoTrainerTower; + +    // TVSHOW_CONTEST_LIVE_UPDATES +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 winningSpecies; +        /*0x04*/ u8 winningTrainerName[8]; +        /*0x0C*/ u8 appealFlags2; +        /*0x0D*/ u8 round1Rank; +        /*0x0e*/ u8 round2Rank; +        /*0x0f*/ u8 appealFlags1; +        /*0x10*/ u16 move; +        /*0x12*/ u16 species; +        /*0x14*/ u8 playerName[8]; +        /*0x1C*/ u8 category; +        /*0x1D*/ u8 language; +        /*0x1E*/ u8 winningTrainerLanguage; +    } contestLiveUpdates; + +    // TVSHOW_3_CHEERS_FOR_POKEBLOCKS +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 sheen; +        /*0x03*/ u8 flavor:3; +        /*0x03*/ u8 unk_03_3:2; +        /*0x04*/ u8 worstBlenderName[8]; +        /*0x0C*/ u8 playerName[8]; +        /*0x14*/ u8 language; +        /*0x15*/ u8 worstBlenderLanguage; +    } threeCheers; + +    // TVSHOW_BATTLE_UPDATE +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 species; +        /*0x04*/ u8 playerName[8]; +        /*0x0C*/ u8 linkOpponentName[8]; +        /*0x14*/ u16 move; +        /*0x16*/ u16 species2; +        /*0x18*/ u8 battleType; +        /*0x19*/ u8 language; +        /*0x1A*/ u8 linkOpponentLanguage; +    } battleUpdate; + +    // TVSHOW_FAN_CLUB_SPECIAL +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 playerName[8]; +        /*0x0a*/ u8 idLo; +        /*0x0b*/ u8 idHi; +        /*0x0c*/ u8 idolName[8]; +        /*0x14*/ u16 words[1]; +        /*0x16*/ u8 score; +        /*0x17*/ u8 language; +        /*0x18*/ u8 idolNameLanguage; +    } fanClubSpecial; + +    // TVSHOW_CONTEST_LIVE_UPDATES_2 +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 playerName[8]; +        /*0x0a*/ u8 contestCategory; +        /*0x0b*/ u8 nickname[11]; +        /*0x16*/ u8 pokeblockState; +        /*0x17*/ u8 language; +        /*0x18*/ u8 pokemonNameLanguage; +    } contestLiveUpdates2; + +    // Record Mixing Shows +    // TVSHOW_POKEMON_TODAY_CAUGHT +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 language; +        /*0x03*/ u8 language2; +        /*0x04*/ u8 nickname[11]; +        /*0x0F*/ u8 ball; +        /*0x10*/ u16 species; +        /*0x12*/ u8 nBallsUsed; +        /*0x13*/ u8 playerName[8]; +    } pokemonToday; + +    // TVSHOW_SMART_SHOPPER +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 priceReduced; +        /*0x03*/ u8 language; +        /*0x04*/ u8 pad04[2]; +        /*0x06*/ u16 itemIds[3]; +        /*0x0C*/ u16 itemAmounts[3]; +        /*0x12*/ u8 shopLocation; +        /*0x13*/ u8 playerName[8]; +    } smartshopperShow; + +    // TVSHOW_POKEMON_TODAY_FAILED +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 language; +        /*0x03*/ u8 pad03[9]; +        /*0x0c*/ u16 species; +        /*0x0e*/ u16 species2; +        /*0x10*/ u8 nBallsUsed; +        /*0x11*/ u8 outcome; +        /*0x12*/ u8 location; +        /*0x13*/ u8 playerName[8]; +    } pokemonTodayFailed; + +    // TVSHOW_FISHING_ADVICE +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 nBites; +        /*0x03*/ u8 nFails; +        /*0x04*/ u16 species; +        /*0x06*/ u8 language; +        /*0x07*/ u8 pad07[12]; +        /*0x13*/ u8 playerName[8]; +    } pokemonAngler; + +    // TVSHOW_WORLD_OF_MASTERS +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 numPokeCaught; +        /*0x04*/ u16 caughtPoke; +        /*0x06*/ u16 steps; +        /*0x08*/ u16 species; +        /*0x0a*/ u8 location; +        /*0x0b*/ u8 language; +        /*0x0c*/ u8 pad0c[7]; +        /*0x13*/ u8 playerName[8]; +    } worldOfMasters; + +    // TVSHOW_TODAYS_RIVAL_TRAINER +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 dexCount; +        /*0x04*/ u8 badgeCount; +        /*0x05*/ u8 nSilverSymbols; +        /*0x06*/ u8 nGoldSymbols; +        /*0x07*/ u8 location; +        /*0x08*/ u16 battlePoints; +        /*0x0a*/ u16 mapDataId; +        /*0x0c*/ u8 language; +        /*0x0d*/ u8 filler_0d[6]; +        /*0x13*/ u8 playerName[8]; +    } rivalTrainer; + +    // TVSHOW_TREND_WATCHER +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 filler_02[2]; +        /*0x04*/ u16 words[2]; +        /*0x08*/ u8 gender; +        /*0x09*/ u8 language; +        /*0x0a*/ u8 filler_0a[9]; +        /*0x13*/ u8 playerName[8]; +    } trendWatcher; + +    // TVSHOW_TREASURE_INVESTIGATORS +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 item; +        /*0x04*/ u8 location; +        /*0x05*/ u8 language; +        /*0x06*/ u16 mapDataId; +        /*0x08*/ u8 filler_08[11]; +        /*0x13*/ u8 playerName[8]; +    } treasureInvestigators; + +    // TVSHOW_FIND_THAT_GAMER +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 won; +        /*0x03*/ u8 whichGame; +        /*0x04*/ u16 nCoins; +        /*0x06*/ u8 filler_06[2]; +        /*0x08*/ u8 language; +        /*0x09*/ u8 filler_09[10]; +        /*0x13*/ u8 playerName[8]; +    } findThatGamer; + +    // TVSHOW_BREAKING_NEWS +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 lastOpponentSpecies; +        /*0x04*/ u8 location; +        /*0x05*/ u8 outcome; +        /*0x06*/ u16 caughtMonBall; +        /*0x08*/ u16 balls; +        /*0x0a*/ u16 poke1Species; +        /*0x0c*/ u16 lastUsedMove; +        /*0x0e*/ u8 language; +        /*0x0f*/ u8 filler_0f[4]; +        /*0x13*/ u8 playerName[8]; +    } breakingNews; + +    // TVSHOW_SECRET_BASE_VISIT +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 avgLevel; +        /*0x03*/ u8 nDecorations; +        /*0x04*/ u8 decorations[4]; +        /*0x08*/ u16 species; +        /*0x0a*/ u16 move; +        /*0x0c*/ u8 language; +        /*0x0d*/ u8 filler_0d[6]; +        /*0x13*/ u8 playerName[8]; +    } secretBaseVisit; + +    // TVSHOW_LOTTO_WINNER +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 item; +        /*0x04*/ u8 whichPrize; +        /*0x05*/ u8 language; +        /*0x06*/ u8 filler_06[13]; +        /*0x13*/ u8 playerName[8]; +    } lottoWinner; + +    // TVSHOW_BATTLE_SEMINAR +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 move; +        /*0x04*/ u16 foeSpecies; +        /*0x06*/ u16 species; +        /*0x08*/ u16 otherMoves[3]; +        /*0x0e*/ u16 betterMove; +        /*0x10*/ u8 nOtherMoves; +        /*0x11*/ u8 language; +        /*0x12*/ u8 filler_12[1]; +        /*0x13*/ u8 playerName[8]; +    } battleSeminar; + +    // TVSHOW_TRAINER_FAN_CLUB +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 filler_02[2]; +        /*0x04*/ u16 words[2]; +        /*0x08*/ u8 language; +        /*0x09*/ u8 filler_09[10]; +        /*0x13*/ u8 playerName[8]; +    } trainerFanClub; + +    // TVSHOW_CUTIES +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 nRibbons; +        /*0x03*/ u8 selectedRibbon; +        /*0x04*/ u8 nickname[11]; +        /*0x0f*/ u8 language; +        /*0x10*/ u8 pokemonNameLanguage; +        /*0x11*/ u8 filler_12[2]; +        /*0x13*/ u8 playerName[8]; +    } cuties; + +    // TVSHOW_FRONTIER +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 winStreak; +        /*0x04*/ u16 species1; +        /*0x06*/ u16 species2; +        /*0x08*/ u16 species3; +        /*0x0a*/ u16 species4; +        /*0x0c*/ u8 language; +        /*0x0d*/ u8 facility; +        /*0x0e*/ u8 filler_0e[5]; +        /*0x13*/ u8 playerName[8]; +    } frontier; + +    // TVSHOW_NUMBER_ONE +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 count; +        /*0x04*/ u8 actionIdx; +        /*0x05*/ u8 language; +        /*0x06*/ u8 filler_06[13]; +        /*0x13*/ u8 playerName[8]; +    } numberOne; + +    // TVSHOW_SECRET_BASE_SECRETS +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u16 stepsInBase; +        /*0x04*/ u8 baseOwnersName[8]; +        /*0x0c*/ u32 flags; +        /*0x10*/ u16 item; +        /*0x12*/ u8 savedState; +        /*0x13*/ u8 playerName[8]; +        /*0x1b*/ u8 language; +        /*0x1c*/ u8 baseOwnersNameLanguage; +    } secretBaseSecrets; + +    // TVSHOW_SAFARI_FAN_CLUB +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 nMonsCaught; +        /*0x03*/ u8 nPkblkUsed; +        /*0x04*/ u8 language; +        /*0x05*/ u8 filler_05[14]; +        /*0x13*/ u8 playerName[8]; +    } safariFanClub; + +    // Mass Outbreak +    // TVSHOW_MASS_OUTBREAK +    struct { +        /*0x00*/ u8 kind; +        /*0x01*/ bool8 active; +        /*0x02*/ u8 var02; +        /*0x03*/ u8 var03; +        /*0x04*/ u16 moves[4]; +        /*0x0C*/ u16 species; +        /*0x0E*/ u16 var0E; +        /*0x10*/ u8 locationMapNum; +        /*0x11*/ u8 locationMapGroup; +        /*0x12*/ u8 var12; +        /*0x13*/ u8 probability; +        /*0x14*/ u8 level; +        /*0x15*/ u8 var15; +        /*0x16*/ u16 daysLeft; +        /*0x18*/ u8 language; +    } massOutbreak; +} TVShow; + +enum { +    POKENEWS_NONE, +    POKENEWS_SLATEPORT, +    POKENEWS_GAME_CORNER, +    POKENEWS_LILYCOVE, +    POKENEWS_BLENDMASTER +}; + +typedef struct // 2b50 +{ +    u8 kind; +    u8 state; +    u16 days; +} PokeNews; + +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 playerUsedAnItem:1; +    /*2bae*/ u8 playerThrewABall:1; +    /*2bae*/ u8 onAir:1; +    /*2bae*/ u8 valA_5:3; +    /*2baf*/ u8 battleTookMoreThanOneTurn2:1; +    /*2baf*/ u8 playerLostAMon2:1; +    /*2baf*/ u8 playerUsedAnItem2:1; +    /*2baf*/ u8 playerThrewABall2:1; +    /*2baf*/ u8 valB_4:4; +}; + +#endif //GUARD_GLOBAL_TV_H diff --git a/include/graphics.h b/include/graphics.h new file mode 100644 index 000000000..c50fdef3f --- /dev/null +++ b/include/graphics.h @@ -0,0 +1,95 @@ +// +// Created by scott on 10/21/2017. +// + +#ifndef GUARD_GRAPHICS_H +#define GUARD_GRAPHICS_H + +extern const u8 gItemIcon_QuestionMark[]; +extern const u8 gItemIconPalette_QuestionMark[]; +extern const u8 gUnknown_08DB7AA0[]; +extern const u8 gUnknown_08DB7B34[]; +extern const u8 gUnknown_08DB7B5C[]; +extern const u8 gUnknown_08DB7BEC[]; +extern const u8 gUnknown_08DB7C08[]; +extern const u8 gUnknown_08DB7CE8[]; +extern const u8 gUnknown_08DB7D08[]; +extern const u8 gUnknown_08DB7DCC[]; +extern const u8 gUnknown_08DB7DF4[]; +extern const u8 gUnknown_08DB7EA0[]; +extern const u8 gUnknown_08DB7EC4[]; +extern const u8 gUnknown_08DB7F60[]; +extern const u8 gUnknown_08DB7F7C[]; +extern const u8 gUnknown_08DB8070[]; +extern const u8 gUnknown_08DB808C[]; +extern const u8 gUnknown_08DB8138[]; +extern const u8 gUnknown_08DB8160[]; +extern const u8 gUnknown_08DB8218[]; +extern const u8 gUnknown_08DB823C[]; +extern const u8 gUnknown_08DB8300[]; +extern const u8 gUnknown_08DB8328[]; +extern const u8 gUnknown_08DB8430[]; +extern const u8 gUnknown_08DB8458[]; +extern const u8 gUnknown_08DB8528[]; +extern const u8 gUnknown_08DB854C[]; +extern const u8 gUnknown_08DB862C[]; +extern const u8 gUnknown_08DB8654[]; +extern const u8 gUnknown_08DB86C4[]; +extern const u8 gUnknown_08DB86E0[]; +extern const u8 gUnknown_08DB8750[]; +extern const u8 gUnknown_08DB876C[]; +extern const u8 gUnknown_08DB87DC[]; +extern const u8 gUnknown_08DB87F8[]; +extern const u8 gUnknown_08DB88D8[]; +extern const u8 gUnknown_08DB8900[]; +extern const u8 gUnknown_08DB89E0[]; +extern const u8 gUnknown_08DB8A08[]; +extern const u8 gUnknown_08DB8A68[]; +extern const u8 gUnknown_08DB8A84[]; +extern const u8 gUnknown_08DB8B40[]; +extern const u8 gUnknown_08DB8B68[]; +extern const u8 gUnknown_08DB8C40[]; +extern const u8 gUnknown_08DB8C5C[]; +extern const u8 gUnknown_08DB8CF4[]; +extern const u8 gUnknown_08DB8D18[]; +extern const u8 gUnknown_08DB8DB0[]; +extern const u8 gUnknown_08DB8DD4[]; +extern const u8 gUnknown_08DB8E80[]; +extern const u8 gUnknown_08DB8EA0[]; +extern const u8 gUnknown_08DB8F58[]; +extern const u8 gUnknown_08DB8F7C[]; +extern const u8 gUnknown_08DB9038[]; +extern const u8 gUnknown_08DB9058[]; +extern const u8 gUnknown_08DB9130[]; +extern const u8 gUnknown_08DB9154[]; +extern const u8 gUnknown_08DB9218[]; +extern const u8 gUnknown_08DB9234[]; +extern const u8 gUnknown_08DB92FC[]; +extern const u8 gUnknown_08DB931C[]; +extern const u8 gUnknown_08DB93E8[]; +extern const u8 gUnknown_08DB940C[]; +extern const u8 gUnknown_08DB94CC[]; +extern const u8 gUnknown_08DB94E8[]; +extern const u8 gUnknown_08DB95AC[]; +extern const u8 gUnknown_08DB95D0[]; +extern const u8 gUnknown_08DB96C4[]; +extern const u8 gUnknown_08DB96EC[]; +extern const u8 gUnknown_08DB97F4[]; +extern const u8 gUnknown_08DB981C[]; +extern const u8 gUnknown_08DB9908[]; +extern const u8 gUnknown_08DB9930[]; +extern const u8 gUnknown_08DB9A54[]; +extern const u8 gUnknown_08DB9A7C[]; +extern const u8 gUnknown_08DB9B7C[]; +extern const u8 gUnknown_08DB9BA4[]; +extern const u8 gUnknown_08DB9CB0[]; +extern const u8 gUnknown_08DB9CD8[]; +extern const u8 gUnknown_08DB9DAC[]; +extern const u8 gUnknown_08DB9DD4[]; +extern const u8 gUnknown_08DB9EE4[]; +extern const u8 gUnknown_08DB9F08[]; +extern const u8 gUnknown_08DB9FFC[]; +extern const u8 gUnknown_08DBA020[]; +extern const u8 gUnknown_08DBA12C[]; + +#endif //GUARD_GRAPHICS_H diff --git a/include/international_string_util.h b/include/international_string_util.h new file mode 100644 index 000000000..9d9735a52 --- /dev/null +++ b/include/international_string_util.h @@ -0,0 +1,23 @@ +#ifndef GUARD_INTERNATIONAL_STRING_UTIL_H +#define GUARD_INTERNATIONAL_STRING_UTIL_H + +#include "menu.h" + +void sub_81DB52C(const u8 *src); +void TVShowConvertInternationalString(u8 *dest, const u8 *src, u8 language); +s32 GetStringCenterAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth); +s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth); +s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing); +s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing); +s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1); +s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2); +// sub_81DB41C +// sub_81DB468 +// sub_81DB494 +// sub_81DB4DC +// sub_81DB554 +// sub_81DB5AC +u32 sub_81DB604(const u8 *); +// sub_81DB620 + +#endif // GUARD_INTERNATIONAL_STRING_UTIL_H diff --git a/include/item.h b/include/item.h index eaefa0298..a136f03ec 100644 --- a/include/item.h +++ b/include/item.h @@ -31,6 +31,7 @@ extern struct BagPocket gBagPockets[];  void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity);  void CopyItemName(u16 itemId, u8 *string); +void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity);  bool8 IsBagPocketNonEmpty(u8 pocket);  bool8 CheckBagHasItem(u16 itemId, u16 count);  bool8 CheckBagHasSpace(u16 itemId, u16 count); @@ -58,5 +59,6 @@ ItemUseFunc ItemId_GetFieldFunc(u16 itemId);  u8 ItemId_GetBattleUsage(u16 itemId);  ItemUseFunc ItemId_GetBattleFunc(u16 itemId);  u8 ItemId_GetSecondaryId(u16 itemId); +u16 itemid_get_market_price(u16 itemId);  #endif // ITEM_H diff --git a/include/item_icon.h b/include/item_icon.h new file mode 100644 index 000000000..a43b72f39 --- /dev/null +++ b/include/item_icon.h @@ -0,0 +1,17 @@ +// +// Created by scott on 10/20/2017. +// + +#ifndef GUARD_ITEM_ICON_H +#define GUARD_ITEM_ICON_H + +extern EWRAM_DATA void *gUnknown_0203CEBC; +extern EWRAM_DATA void *gUnknown_0203CEC0; + +extern const struct SpriteTemplate gUnknown_08614FF4; + +bool8 AllocItemIconTemporaryBuffers(void); +void CopyItemIconPicTo4x4Buffer(void *src, void *dest); +void FreeItemIconTemporaryBuffers(void); + +#endif //GUARD_ITEM_ICON_H diff --git a/include/librfu.h b/include/librfu.h new file mode 100644 index 000000000..dbc8a41a6 --- /dev/null +++ b/include/librfu.h @@ -0,0 +1,108 @@ +#include "main.h" + +enum +{ +    RFU_RESET = 0x10, +    RFU_LINK_STATUS, +    RFU_VERSION_STATUS, +    RFU_SYSTEM_STATUS, +    RFU_SLOT_STATUS, +    RFU_CONFIG_STATUS, +    RFU_GAME_CONFIG, +    RFU_SYSTEM_CONFIG, +    RFU_UNK18, +    RFU_SC_START, +    RFU_SC_POLLING, +    RFU_SC_END, +    RFU_SP_START, +    RFU_SP_POLLING, +    RFU_SP_END, +    RFU_CP_START, +    RFU_CP_POLLING, +    RFU_CP_END, +    RFU_UNK22, +    RFU_UNK23, +    RFU_DATA_TX, +    RFU_DATA_TX_AND_CHANGE, +    RFU_DATA_RX, +    RFU_MS_CHANGE, +    RFU_DATA_READY_AND_CHANGE, +    RFU_DISCONNECTED_AND_CHANGE, +    RFU_UNK2A, +    RFU_UNK2B, +    RFU_UNK2C, +    RFU_UNK2D, +    RFU_UNK2E, +    RFU_UNK2F, +    RFU_DISCONNECT, +    RFU_TEST_MODE, +    RFU_CPR_START, +    RFU_CPR_POLLING, +    RFU_CPR_END, +    RFU_UNK35, +    RFU_UNK36, +    RFU_RESUME_RETRANSMIT_AND_CHANGE, +    RFU_UNK38, +    RFU_UNK39, +    RFU_UNK3A, +    RFU_UNK3B, +    RFU_UNK3C, +    RFU_STOP_MODE, //3D +}; + +struct RfuPacket8 +{ +    u8 data[0x74]; +}; + +struct RfuPacket32 +{ +    u32 command; +    u32 data[0x1C]; +}; + +union RfuPacket +{ +    struct RfuPacket32 rfuPacket32; +    struct RfuPacket8 rfuPacket8; +}; + +struct RfuStruct +{ +    vs32 unk_0; +    u8 txParams; +    u8 unk_5; +    u8 activeCommand; +    u8 unk_7; +    u8 unk_8; +    u8 unk_9; +    u8 timerSelect; +    u8 unk_b; +    int timerState; +    vu8 timerActive; +    u8 unk_11; +    vu16 unk_12; +    vu8 msMode; +    u8 unk_15; +    u8 unk_16; +    u8 unk_17; +    void (*callbackM)(); +    void (*callbackS)(); +    u32 callbackID; +    union RfuPacket *txPacket; +    union RfuPacket *rxPacket; +    vu8 unk_2c; +    u8 padding[3]; +}; + +struct RfuIntrStruct +{ +    u8 rxPacketAlloc[0x74]; +    u8 txPacketAlloc[0x74]; +    u8 block1[0x960]; +    u8 block2[0x30]; +}; + +extern struct RfuStruct *gRfuState; + +void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); diff --git a/include/link.h b/include/link.h index 5db3ff3d2..b8835ce04 100644 --- a/include/link.h +++ b/include/link.h @@ -141,9 +141,9 @@ extern u8 gShouldAdvanceLinkState;  extern struct LinkPlayer gLinkPlayers[];  extern u16 word_3002910[];  extern bool8 gReceivedRemoteLinkPlayers; +extern bool8 gLinkVSyncDisabled;  void Task_DestroySelf(u8); -void sub_8007270(u8);  void OpenLink(void);  void CloseLink(void);  u16 LinkMain2(u16 *); @@ -162,24 +162,12 @@ void sub_8007E4C(void);  u8 GetMultiplayerId(void);  u8 bitmask_all_link_players_but_self(void);  bool8 SendBlock(u8, void *, u16); -bool8 sub_8007E9C(u8); -bool8 sub_8007ECC(void);  u8 GetBlockReceivedStatus(void);  void ResetBlockReceivedFlags(void);  void ResetBlockReceivedFlag(u8); -void sub_8007F4C(void);  void SetLinkDebugValues(u32, u32); -u8 sub_8008198(void); -void sub_80081C8(u8); -u8 sub_800820C(void); -u8 sub_8008218(void); -void sub_800826C(void); -void sub_80082EC(void);  u8 GetLinkPlayerCount_2(void);  bool8 IsLinkMaster(void); -void sub_800832C(void); -void sub_8008480(void); -void sub_80084A4(void);  void CB2_LinkError(void);  u8 GetSioMultiSI(void);  bool8 IsLinkConnectionEstablished(void); @@ -190,5 +178,18 @@ u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]);  void LinkVSync(void);  void Timer3Intr(void);  void SerialCB(void); +u8 GetLinkPlayerCount(void); + +void sub_800E0E8(void); +bool8 sub_800A520(void); +bool8 sub_8010500(void); +void sub_800DFB4(u8, u8); +void sub_800ADF8(void); +void sub_800B488(void); +void sub_8009734(void); +void sub_800A620(void); +void sub_8011BD0(void); +u8 sub_800ABAC(void); +u8 sub_800ABBC(void);  #endif // GUARD_LINK_H diff --git a/include/list_menu.h b/include/list_menu.h new file mode 100644 index 000000000..93005e482 --- /dev/null +++ b/include/list_menu.h @@ -0,0 +1,54 @@ +#ifndef GUARD_LIST_MENU_H +#define GUARD_LIST_MENU_H + +// Exported type declarations + +// Exported RAM declarations + +struct ListMenuItem { +    const u8 *unk_00; +    s32 unk_04; +}; + +struct ListMenu; + +struct ListMenuTemplate { +    struct ListMenuItem *unk_00; +    void (* unk_04)(u32, bool8, struct ListMenu *); +    void (* unk_08)(u8, s32, u8); +    u16 unk_0c; +    u16 unk_0e; +    u8 unk_10; +    u8 unk_11; +    u8 unk_12; +    u8 unk_13; +    u32 unk_14_0:4; +    u32 unk_14_4:4; +    u32 unk_15_0:4; +    u32 unk_15_4:4; +    u32 unk_16_0:1; +    u32 unk_16_1:6; +    u32 unk_16_7:1; +    u32 unk_17_0:6; +}; + +struct ListMenu { +    struct ListMenuTemplate _template; +    u16 scrollOffset; +    u16 selectedRow; +    u8 unk_1C; +    u8 unk_1D; +    u8 unk_1E; +    u8 unk_1F; +}; + +extern struct ListMenuTemplate gUnknown_03006310; + +// Exported ROM declarations + +u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2); +s32 ListMenuHandleInput(u8 id); +void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2); +void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2); + +#endif //GUARD_LIST_MENU_H diff --git a/include/load_save.h b/include/load_save.h index 20848e1a7..1f406bbad 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -19,5 +19,6 @@ void LoadSerializedGame(void);  void LoadPlayerBag(void);  void SavePlayerBag(void);  void SetSaveBlocksPointers(u16); +void MoveSaveBlocks_ResetHeap(void);  #endif // GUARD_LOAD_SAVE_H diff --git a/include/mail.h b/include/mail.h new file mode 100644 index 000000000..16ca1f676 --- /dev/null +++ b/include/mail.h @@ -0,0 +1,19 @@ +#ifndef GUARD_MAIL_H +#define GUARD_MAIL_H + +#include "items.h" + +#define IS_ITEM_MAIL(itemId)((itemId == ITEM_ORANGE_MAIL            \ +                              || itemId == ITEM_HARBOR_MAIL         \ +                              || itemId == ITEM_GLITTER_MAIL        \ +                              || itemId == ITEM_MECH_MAIL           \ +                              || itemId == ITEM_WOOD_MAIL           \ +                              || itemId == ITEM_WAVE_MAIL           \ +                              || itemId == ITEM_BEAD_MAIL           \ +                              || itemId == ITEM_SHADOW_MAIL         \ +                              || itemId == ITEM_TROPIC_MAIL         \ +                              || itemId == ITEM_DREAM_MAIL          \ +                              || itemId == ITEM_FAB_MAIL            \ +                              || itemId == ITEM_RETRO_MAIL)) + +#endif // GUARD_MAIL_H diff --git a/include/mail_data.h b/include/mail_data.h new file mode 100644 index 000000000..bf6540bad --- /dev/null +++ b/include/mail_data.h @@ -0,0 +1,12 @@ +#ifndef GUARD_MAIL_DATA_H +#define GUARD_MAIL_DATA_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +u16 sub_80D45E8(u16, u16 *); + +#endif //GUARD_MAIL_DATA_H diff --git a/include/main.h b/include/main.h index e5460b3bf..e283d1754 100644 --- a/include/main.h +++ b/include/main.h @@ -39,6 +39,7 @@ struct Main      /*0x439*/ u8 oamLoadDisabled:1;      /*0x439*/ u8 inBattle:1; +    /*0x439*/ u8 field_439_x4:1;  };  extern u8 gUnknown_3001764; diff --git a/include/malloc.h b/include/malloc.h index 4568e244a..f3a731797 100644 --- a/include/malloc.h +++ b/include/malloc.h @@ -2,7 +2,7 @@  #define GUARD_MALLOC_H  #define malloc Alloc -#define calloc AllocZeroed +#define calloc(ct, sz) AllocZeroed((ct) * (sz))  #define free Free  extern u8 gHeap[]; diff --git a/include/map_constants.h b/include/map_constants.h new file mode 100644 index 000000000..6199793c8 --- /dev/null +++ b/include/map_constants.h @@ -0,0 +1,1342 @@ +#ifndef GUARD_MAP_CONSTANTS_H +#define GUARD_MAP_CONSTANTS_H + +//-------------------------------------------------- +// Map Group 0 +//-------------------------------------------------- + +enum +{ +    MAP_ID_PETALBURG_CITY, +    MAP_ID_SLATEPORT_CITY, +    MAP_ID_MAUVILLE_CITY, +    MAP_ID_RUSTBORO_CITY, +    MAP_ID_FORTREE_CITY, +    MAP_ID_LILYCOVE_CITY, +    MAP_ID_MOSSDEEP_CITY, +    MAP_ID_SOOTOPOLIS_CITY, +    MAP_ID_EVER_GRANDE_CITY, +    MAP_ID_LITTLEROOT_TOWN, +    MAP_ID_OLDALE_TOWN, +    MAP_ID_DEWFORD_TOWN, +    MAP_ID_LAVARIDGE_TOWN, +    MAP_ID_FALLARBOR_TOWN, +    MAP_ID_VERDANTURF_TOWN, +    MAP_ID_PACIFIDLOG_TOWN, +    MAP_ID_ROUTE101, +    MAP_ID_ROUTE102, +    MAP_ID_ROUTE103, +    MAP_ID_ROUTE104, +    MAP_ID_ROUTE105, +    MAP_ID_ROUTE106, +    MAP_ID_ROUTE107, +    MAP_ID_ROUTE108, +    MAP_ID_ROUTE109, +    MAP_ID_ROUTE110, +    MAP_ID_ROUTE111, +    MAP_ID_ROUTE112, +    MAP_ID_ROUTE113, +    MAP_ID_ROUTE114, +    MAP_ID_ROUTE115, +    MAP_ID_ROUTE116, +    MAP_ID_ROUTE117, +    MAP_ID_ROUTE118, +    MAP_ID_ROUTE119, +    MAP_ID_ROUTE120, +    MAP_ID_ROUTE121, +    MAP_ID_ROUTE122, +    MAP_ID_ROUTE123, +    MAP_ID_ROUTE124, +    MAP_ID_ROUTE125, +    MAP_ID_ROUTE126, +    MAP_ID_ROUTE127, +    MAP_ID_ROUTE128, +    MAP_ID_ROUTE129, +    MAP_ID_ROUTE130, +    MAP_ID_ROUTE131, +    MAP_ID_ROUTE132, +    MAP_ID_ROUTE133, +    MAP_ID_ROUTE134, +    MAP_ID_UNDERWATER1, +    MAP_ID_UNDERWATER2, +    MAP_ID_UNDERWATER3, +    MAP_ID_UNDERWATER4, +    MAP_ID_UNDERWATER5, +    MAP_ID_UNDERWATER6, +    MAP_ID_UNDERWATER7, +}; + +#define MAP_GROUP_PETALBURG_CITY   0 +#define MAP_GROUP_SLATEPORT_CITY   0 +#define MAP_GROUP_MAUVILLE_CITY    0 +#define MAP_GROUP_RUSTBORO_CITY    0 +#define MAP_GROUP_FORTREE_CITY     0 +#define MAP_GROUP_LILYCOVE_CITY    0 +#define MAP_GROUP_MOSSDEEP_CITY    0 +#define MAP_GROUP_SOOTOPOLIS_CITY  0 +#define MAP_GROUP_EVER_GRANDE_CITY 0 +#define MAP_GROUP_LITTLEROOT_TOWN  0 +#define MAP_GROUP_OLDALE_TOWN      0 +#define MAP_GROUP_DEWFORD_TOWN     0 +#define MAP_GROUP_LAVARIDGE_TOWN   0 +#define MAP_GROUP_FALLARBOR_TOWN   0 +#define MAP_GROUP_VERDANTURF_TOWN  0 +#define MAP_GROUP_PACIFIDLOG_TOWN  0 +#define MAP_GROUP_ROUTE101         0 +#define MAP_GROUP_ROUTE102         0 +#define MAP_GROUP_ROUTE103         0 +#define MAP_GROUP_ROUTE104         0 +#define MAP_GROUP_ROUTE105         0 +#define MAP_GROUP_ROUTE106         0 +#define MAP_GROUP_ROUTE107         0 +#define MAP_GROUP_ROUTE108         0 +#define MAP_GROUP_ROUTE109         0 +#define MAP_GROUP_ROUTE110         0 +#define MAP_GROUP_ROUTE111         0 +#define MAP_GROUP_ROUTE112         0 +#define MAP_GROUP_ROUTE113         0 +#define MAP_GROUP_ROUTE114         0 +#define MAP_GROUP_ROUTE115         0 +#define MAP_GROUP_ROUTE116         0 +#define MAP_GROUP_ROUTE117         0 +#define MAP_GROUP_ROUTE118         0 +#define MAP_GROUP_ROUTE119         0 +#define MAP_GROUP_ROUTE120         0 +#define MAP_GROUP_ROUTE121         0 +#define MAP_GROUP_ROUTE122         0 +#define MAP_GROUP_ROUTE123         0 +#define MAP_GROUP_ROUTE124         0 +#define MAP_GROUP_ROUTE125         0 +#define MAP_GROUP_ROUTE126         0 +#define MAP_GROUP_ROUTE127         0 +#define MAP_GROUP_ROUTE128         0 +#define MAP_GROUP_ROUTE129         0 +#define MAP_GROUP_ROUTE130         0 +#define MAP_GROUP_ROUTE131         0 +#define MAP_GROUP_ROUTE132         0 +#define MAP_GROUP_ROUTE133         0 +#define MAP_GROUP_ROUTE134         0 +#define MAP_GROUP_UNDERWATER1      0 +#define MAP_GROUP_UNDERWATER2      0 +#define MAP_GROUP_UNDERWATER3      0 +#define MAP_GROUP_UNDERWATER4      0 +#define MAP_GROUP_UNDERWATER5      0 +#define MAP_GROUP_UNDERWATER6      0 +#define MAP_GROUP_UNDERWATER7      0 +//-------------------------------------------------- +// Map Group 1 +//-------------------------------------------------- + +enum +{ +    MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F, +    MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, +    MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F, +    MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F, +    MAP_ID_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB, +}; + +#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F    1 +#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F    1 +#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_1F        1 +#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F        1 +#define MAP_GROUP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB 1 + +//-------------------------------------------------- +// Map Group 2 +//-------------------------------------------------- + +enum +{ +    MAP_ID_OLDALE_TOWN_HOUSE1, +    MAP_ID_OLDALE_TOWN_HOUSE2, +    MAP_ID_OLDALE_TOWN_POKEMON_CENTER_1F, +    MAP_ID_OLDALE_TOWN_POKEMON_CENTER_2F, +    MAP_ID_OLDALE_TOWN_MART, +}; + +#define MAP_GROUP_OLDALE_TOWN_HOUSE1            2 +#define MAP_GROUP_OLDALE_TOWN_HOUSE2            2 +#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_1F 2 +#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_2F 2 +#define MAP_GROUP_OLDALE_TOWN_MART              2 + +//-------------------------------------------------- +// Map Group 3 +//-------------------------------------------------- + +enum +{ +    MAP_ID_DEWFORD_TOWN_HOUSE1, +    MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_1F, +    MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_2F, +    MAP_ID_DEWFORD_TOWN_GYM, +    MAP_ID_DEWFORD_TOWN_HALL, +    MAP_ID_DEWFORD_TOWN_HOUSE2, +}; + +#define MAP_GROUP_DEWFORD_TOWN_HOUSE1            3 +#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_1F 3 +#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_2F 3 +#define MAP_GROUP_DEWFORD_TOWN_GYM               3 +#define MAP_GROUP_DEWFORD_TOWN_HALL              3 +#define MAP_GROUP_DEWFORD_TOWN_HOUSE2            3 + +//-------------------------------------------------- +// Map Group 4 +//-------------------------------------------------- + +enum +{ +    MAP_ID_LAVARIDGE_TOWN_HERB_SHOP, +    MAP_ID_LAVARIDGE_TOWN_GYM_1F, +    MAP_ID_LAVARIDGE_TOWN_GYM_B1F, +    MAP_ID_LAVARIDGE_TOWN_HOUSE, +    MAP_ID_LAVARIDGE_TOWN_MART, +    MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_1F, +    MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_2F, +}; + +#define MAP_GROUP_LAVARIDGE_TOWN_HERB_SHOP         4 +#define MAP_GROUP_LAVARIDGE_TOWN_GYM_1F            4 +#define MAP_GROUP_LAVARIDGE_TOWN_GYM_B1F           4 +#define MAP_GROUP_LAVARIDGE_TOWN_HOUSE             4 +#define MAP_GROUP_LAVARIDGE_TOWN_MART              4 +#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_1F 4 +#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_2F 4 + +//-------------------------------------------------- +// Map Group 5 +//-------------------------------------------------- + +enum +{ +    MAP_ID_FALLARBOR_TOWN_MART, +    MAP_ID_FALLARBOR_TOWN_TENT_LOBBY, +    MAP_ID_FALLARBOR_TOWN_TENT_HALL, +    MAP_ID_FALLARBOR_TOWN_TENT_ARENA, +    MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_1F, +    MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_2F, +    MAP_ID_FALLARBOR_TOWN_HOUSE1, +    MAP_ID_FALLARBOR_TOWN_HOUSE2, +}; + +#define MAP_GROUP_FALLARBOR_TOWN_MART              5 +#define MAP_GROUP_FALLARBOR_TOWN_TENT_LOBBY     5 +#define MAP_GROUP_FALLARBOR_TOWN_TENT_HALL          5 +#define MAP_GROUP_FALLARBOR_TOWN_TENT_ARENA          5 +#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_1F 5 +#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_2F 5 +#define MAP_GROUP_FALLARBOR_TOWN_HOUSE1            5 +#define MAP_GROUP_FALLARBOR_TOWN_HOUSE2            5 + +//-------------------------------------------------- +// Map Group 6 +//-------------------------------------------------- + +enum +{ +    MAP_ID_VERDANTURF_TOWN_TENT_LOBBY, +    MAP_ID_VERDANTURF_TOWN_TENT_HALL, +    MAP_ID_VERDANTURF_TOWN_TENT_ARENA, +    MAP_ID_VERDANTURF_TOWN_MART, +    MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_1F, +    MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_2F, +    MAP_ID_VERDANTURF_TOWN_WANDAS_HOUSE, +    MAP_ID_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE, +    MAP_ID_VERDANTURF_TOWN_HOUSE, +}; + +#define MAP_GROUP_VERDANTURF_TOWN_TENT_LOBBY           6 +#define MAP_GROUP_VERDANTURF_TOWN_TENT_HALL            6 +#define MAP_GROUP_VERDANTURF_TOWN_TENT_ARENA            6 +#define MAP_GROUP_VERDANTURF_TOWN_MART                    6 +#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_1F       6 +#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_2F       6 +#define MAP_GROUP_VERDANTURF_TOWN_WANDAS_HOUSE            6 +#define MAP_GROUP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE 6 +#define MAP_GROUP_VERDANTURF_TOWN_HOUSE                   6 + +//-------------------------------------------------- +// Map Group 7 +//-------------------------------------------------- + +enum +{ +    MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_1F, +    MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_2F, +    MAP_ID_PACIFIDLOG_TOWN_HOUSE1, +    MAP_ID_PACIFIDLOG_TOWN_HOUSE2, +    MAP_ID_PACIFIDLOG_TOWN_HOUSE3, +    MAP_ID_PACIFIDLOG_TOWN_HOUSE4, +    MAP_ID_PACIFIDLOG_TOWN_HOUSE5, +}; + +#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F 7 +#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F 7 +#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE1            7 +#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE2            7 +#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE3            7 +#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE4            7 +#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE5            7 + +//-------------------------------------------------- +// Map Group 8 +//-------------------------------------------------- + +enum +{ +    MAP_ID_PETALBURG_CITY_WALLYS_HOUSE, +    MAP_ID_PETALBURG_CITY_GYM, +    MAP_ID_PETALBURG_CITY_HOUSE1, +    MAP_ID_PETALBURG_CITY_HOUSE2, +    MAP_ID_PETALBURG_CITY_POKEMON_CENTER_1F, +    MAP_ID_PETALBURG_CITY_POKEMON_CENTER_2F, +    MAP_ID_PETALBURG_CITY_MART, +}; + +#define MAP_GROUP_PETALBURG_CITY_WALLYS_HOUSE      8 +#define MAP_GROUP_PETALBURG_CITY_GYM               8 +#define MAP_GROUP_PETALBURG_CITY_HOUSE1            8 +#define MAP_GROUP_PETALBURG_CITY_HOUSE2            8 +#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_1F 8 +#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_2F 8 +#define MAP_GROUP_PETALBURG_CITY_MART              8 + +//-------------------------------------------------- +// Map Group 9 +//-------------------------------------------------- + +enum +{ +    MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_1F, +    MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_2F, +    MAP_ID_SLATEPORT_CITY_TENT_LOBBY, +    MAP_ID_SLATEPORT_CITY_TENT_HALL, +    MAP_ID_SLATEPORT_CITY_TENT_ARENA, +    MAP_ID_SLATEPORT_CITY_HOUSE1, +    MAP_ID_SLATEPORT_CITY_POKEMON_FAN_CLUB, +    MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_1F, +    MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_2F, +    MAP_ID_SLATEPORT_CITY_HARBOR, +    MAP_ID_SLATEPORT_CITY_HOUSE2, +    MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_1F, +    MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_2F, +    MAP_ID_SLATEPORT_CITY_MART, +}; + +#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_1F 9 +#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_2F 9 +#define MAP_GROUP_SLATEPORT_CITY_TENT_LOBBY      9 +#define MAP_GROUP_SLATEPORT_CITY_TENT_HALL       9 +#define MAP_GROUP_SLATEPORT_CITY_TENT_ARENA       9 +#define MAP_GROUP_SLATEPORT_CITY_HOUSE1             9 +#define MAP_GROUP_SLATEPORT_CITY_POKEMON_FAN_CLUB   9 +#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F  9 +#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F  9 +#define MAP_GROUP_SLATEPORT_CITY_HARBOR             9 +#define MAP_GROUP_SLATEPORT_CITY_HOUSE2             9 +#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_1F  9 +#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_2F  9 +#define MAP_GROUP_SLATEPORT_CITY_MART               9 + +//-------------------------------------------------- +// Map Group 10 +//-------------------------------------------------- + +enum +{ +    MAP_ID_MAUVILLE_CITY_GYM, +    MAP_ID_MAUVILLE_CITY_BIKE_SHOP, +    MAP_ID_MAUVILLE_CITY_HOUSE1, +    MAP_ID_MAUVILLE_CITY_GAME_CORNER, +    MAP_ID_MAUVILLE_CITY_HOUSE2, +    MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_1F, +    MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_2F, +    MAP_ID_MAUVILLE_CITY_MART, +}; + +#define MAP_GROUP_MAUVILLE_CITY_GYM               10 +#define MAP_GROUP_MAUVILLE_CITY_BIKE_SHOP         10 +#define MAP_GROUP_MAUVILLE_CITY_HOUSE1            10 +#define MAP_GROUP_MAUVILLE_CITY_GAME_CORNER       10 +#define MAP_GROUP_MAUVILLE_CITY_HOUSE2            10 +#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_1F 10 +#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_2F 10 +#define MAP_GROUP_MAUVILLE_CITY_MART              10 + +//-------------------------------------------------- +// Map Group 11 +//-------------------------------------------------- + +enum +{ +    MAP_ID_RUSTBORO_CITY_DEVON_CORP_1F, +    MAP_ID_RUSTBORO_CITY_DEVON_CORP_2F, +    MAP_ID_RUSTBORO_CITY_DEVON_CORP_3F, +    MAP_ID_RUSTBORO_CITY_GYM, +    MAP_ID_RUSTBORO_CITY_POKEMON_SCHOOL, +    MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_1F, +    MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_2F, +    MAP_ID_RUSTBORO_CITY_MART, +    MAP_ID_RUSTBORO_CITY_FLAT1_1F, +    MAP_ID_RUSTBORO_CITY_FLAT1_2F, +    MAP_ID_RUSTBORO_CITY_HOUSE1, +    MAP_ID_RUSTBORO_CITY_CUTTERS_HOUSE, +    MAP_ID_RUSTBORO_CITY_HOUSE2, +    MAP_ID_RUSTBORO_CITY_FLAT2_1F, +    MAP_ID_RUSTBORO_CITY_FLAT2_2F, +    MAP_ID_RUSTBORO_CITY_FLAT2_3F, +    MAP_ID_RUSTBORO_CITY_HOUSE3, +}; + +#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_1F     11 +#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_2F     11 +#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_3F     11 +#define MAP_GROUP_RUSTBORO_CITY_GYM               11 +#define MAP_GROUP_RUSTBORO_CITY_POKEMON_SCHOOL    11 +#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_1F 11 +#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_2F 11 +#define MAP_GROUP_RUSTBORO_CITY_MART              11 +#define MAP_GROUP_RUSTBORO_CITY_FLAT1_1F          11 +#define MAP_GROUP_RUSTBORO_CITY_FLAT1_2F          11 +#define MAP_GROUP_RUSTBORO_CITY_HOUSE1            11 +#define MAP_GROUP_RUSTBORO_CITY_CUTTERS_HOUSE     11 +#define MAP_GROUP_RUSTBORO_CITY_HOUSE2            11 +#define MAP_GROUP_RUSTBORO_CITY_FLAT2_1F          11 +#define MAP_GROUP_RUSTBORO_CITY_FLAT2_2F          11 +#define MAP_GROUP_RUSTBORO_CITY_FLAT2_3F          11 +#define MAP_GROUP_RUSTBORO_CITY_HOUSE3            11 + +//-------------------------------------------------- +// Map Group 12 +//-------------------------------------------------- + +enum +{ +    MAP_ID_FORTREE_CITY_HOUSE1, +    MAP_ID_FORTREE_CITY_GYM, +    MAP_ID_FORTREE_CITY_POKEMON_CENTER_1F, +    MAP_ID_FORTREE_CITY_POKEMON_CENTER_2F, +    MAP_ID_FORTREE_CITY_MART, +    MAP_ID_FORTREE_CITY_HOUSE2, +    MAP_ID_FORTREE_CITY_HOUSE3, +    MAP_ID_FORTREE_CITY_HOUSE4, +    MAP_ID_FORTREE_CITY_HOUSE5, +    MAP_ID_FORTREE_CITY_DECORATION_SHOP, +}; + +#define MAP_GROUP_FORTREE_CITY_HOUSE1            12 +#define MAP_GROUP_FORTREE_CITY_GYM               12 +#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_1F 12 +#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_2F 12 +#define MAP_GROUP_FORTREE_CITY_MART              12 +#define MAP_GROUP_FORTREE_CITY_HOUSE2            12 +#define MAP_GROUP_FORTREE_CITY_HOUSE3            12 +#define MAP_GROUP_FORTREE_CITY_HOUSE4            12 +#define MAP_GROUP_FORTREE_CITY_HOUSE5            12 +#define MAP_GROUP_FORTREE_CITY_DECORATION_SHOP   12 + +//-------------------------------------------------- +// Map Group 13 +//-------------------------------------------------- + +enum +{ +    MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F, +    MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_2F, +    MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F, +    MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F, +    MAP_ID_LILYCOVE_CITY_CONTEST_LOBBY, +    MAP_ID_LILYCOVE_CITY_CONTEST_HALL, +    MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_1F, +    MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_2F, +    MAP_ID_LILYCOVE_CITY_UNUSED_MART, +    MAP_ID_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB, +    MAP_ID_LILYCOVE_CITY_HARBOR, +    MAP_ID_LILYCOVE_CITY_MOVE_DELETERS_HOUSE, +    MAP_ID_LILYCOVE_CITY_HOUSE1, +    MAP_ID_LILYCOVE_CITY_HOUSE2, +    MAP_ID_LILYCOVE_CITY_HOUSE3, +    MAP_ID_LILYCOVE_CITY_HOUSE4, +    MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_1F, +    MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_2F, +    MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_3F, +    MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_4F, +    MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_5F, +    MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP, +    MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR, +}; + +#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F        13 +#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F        13 +#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F        13 +#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F        13 +#define MAP_GROUP_LILYCOVE_CITY_CONTEST_LOBBY             13 +#define MAP_GROUP_LILYCOVE_CITY_CONTEST_HALL              13 +#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_1F         13 +#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_2F         13 +#define MAP_GROUP_LILYCOVE_CITY_UNUSED_MART               13 +#define MAP_GROUP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB  13 +#define MAP_GROUP_LILYCOVE_CITY_HARBOR                    13 +#define MAP_GROUP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE       13 +#define MAP_GROUP_LILYCOVE_CITY_HOUSE1                    13 +#define MAP_GROUP_LILYCOVE_CITY_HOUSE2                    13 +#define MAP_GROUP_LILYCOVE_CITY_HOUSE3                    13 +#define MAP_GROUP_LILYCOVE_CITY_HOUSE4                    13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_1F       13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_2F       13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_3F       13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_4F       13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_5F       13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP  13 +#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 13 + +//-------------------------------------------------- +// Map Group 14 +//-------------------------------------------------- + +enum +{ +    MAP_ID_MOSSDEEP_CITY_GYM, +    MAP_ID_MOSSDEEP_CITY_HOUSE1, +    MAP_ID_MOSSDEEP_CITY_HOUSE2, +    MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_1F, +    MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_2F, +    MAP_ID_MOSSDEEP_CITY_MART, +    MAP_ID_MOSSDEEP_CITY_HOUSE3, +    MAP_ID_MOSSDEEP_CITY_STEVENS_HOUSE, +    MAP_ID_MOSSDEEP_CITY_HOUSE4, +    MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_1F, +    MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_2F, +    MAP_ID_MOSSDEEP_CITY_GAME_CORNER_1F, +    MAP_ID_MOSSDEEP_CITY_GAME_CORNER_B1F, +}; + +#define MAP_GROUP_MOSSDEEP_CITY_GYM               14 +#define MAP_GROUP_MOSSDEEP_CITY_HOUSE1            14 +#define MAP_GROUP_MOSSDEEP_CITY_HOUSE2            14 +#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_1F 14 +#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_2F 14 +#define MAP_GROUP_MOSSDEEP_CITY_MART              14 +#define MAP_GROUP_MOSSDEEP_CITY_HOUSE3            14 +#define MAP_GROUP_MOSSDEEP_CITY_STEVENS_HOUSE     14 +#define MAP_GROUP_MOSSDEEP_CITY_HOUSE4            14 +#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_1F   14 +#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_2F   14 +#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_1F    14 +#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_B1F   14 + +//-------------------------------------------------- +// Map Group 15 +//-------------------------------------------------- + +enum +{ +    MAP_ID_SOOTOPOLIS_CITY_GYM_1F, +    MAP_ID_SOOTOPOLIS_CITY_GYM_B1F, +    MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_1F, +    MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_2F, +    MAP_ID_SOOTOPOLIS_CITY_MART, +    MAP_ID_SOOTOPOLIS_CITY_HOUSE1, +    MAP_ID_SOOTOPOLIS_CITY_HOUSE2, +    MAP_ID_SOOTOPOLIS_CITY_HOUSE3, +    MAP_ID_SOOTOPOLIS_CITY_HOUSE4, +    MAP_ID_SOOTOPOLIS_CITY_HOUSE5, +    MAP_ID_SOOTOPOLIS_CITY_HOUSE6, +    MAP_ID_SOOTOPOLIS_CITY_HOUSE7, +    MAP_ID_SOOTOPOLIS_CITY_HOUSE8, +    MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_1, +    MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_2, +}; + +#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_1F            15 +#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_B1F           15 +#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F 15 +#define MAP_GROUP_SOOTOPOLIS_CITY_MART              15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE1            15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE2            15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE3            15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE4            15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE5            15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE6            15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE7            15 +#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE8            15 +#define MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_1        15 +#define MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_2        15 +//-------------------------------------------------- +// Map Group 16 +//-------------------------------------------------- + +enum +{ +    MAP_ID_EVER_GRANDE_CITY_SIDNEYS_ROOM, +    MAP_ID_EVER_GRANDE_CITY_PHOEBES_ROOM, +    MAP_ID_EVER_GRANDE_CITY_GLACIAS_ROOM, +    MAP_ID_EVER_GRANDE_CITY_DRAKES_ROOM, +    MAP_ID_EVER_GRANDE_CITY_CHAMPIONS_ROOM, +    MAP_ID_EVER_GRANDE_CITY_CORRIDOR1, +    MAP_ID_EVER_GRANDE_CITY_CORRIDOR2, +    MAP_ID_EVER_GRANDE_CITY_CORRIDOR3, +    MAP_ID_EVER_GRANDE_CITY_CORRIDOR4, +    MAP_ID_EVER_GRANDE_CITY_CORRIDOR5, +    MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F, +    MAP_ID_EVER_GRANDE_CITY_HALL_OF_FAME, +    MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_1F, +    MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_2F, +    MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F, +}; + +#define MAP_GROUP_EVER_GRANDE_CITY_SIDNEYS_ROOM      16 +#define MAP_GROUP_EVER_GRANDE_CITY_PHOEBES_ROOM      16 +#define MAP_GROUP_EVER_GRANDE_CITY_GLACIAS_ROOM      16 +#define MAP_GROUP_EVER_GRANDE_CITY_DRAKES_ROOM       16 +#define MAP_GROUP_EVER_GRANDE_CITY_CHAMPIONS_ROOM    16 +#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR1         16 +#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR2         16 +#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR3         16 +#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR4         16 +#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR5         16 +#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F    16 +#define MAP_GROUP_EVER_GRANDE_CITY_HALL_OF_FAME      16 +#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_1F 16 +#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_2F 16 +#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F    16 + +//-------------------------------------------------- +// Map Group 17 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE104_MR_BRINEYS_HOUSE, +    MAP_ID_ROUTE104_PRETTY_PETAL_FLOWER_SHOP, +}; + +#define MAP_GROUP_ROUTE104_MR_BRINEYS_HOUSE         17 +#define MAP_GROUP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP 17 + +//-------------------------------------------------- +// Map Group 18 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE111_WINSTRATE_FAMILYS_HOUSE, +    MAP_ID_ROUTE111_OLD_LADYS_REST_STOP, +}; + +#define MAP_GROUP_ROUTE111_WINSTRATE_FAMILYS_HOUSE 18 +#define MAP_GROUP_ROUTE111_OLD_LADYS_REST_STOP     18 + +//-------------------------------------------------- +// Map Group 19 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE112_CABLE_CAR_STATION, +    MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION, +}; + +#define MAP_GROUP_ROUTE112_CABLE_CAR_STATION   19 +#define MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION 19 + +//-------------------------------------------------- +// Map Group 20 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE114_FOSSIL_MANIACS_HOUSE, +    MAP_ID_ROUTE114_FOSSIL_MANIACS_TUNNEL, +    MAP_ID_ROUTE114_LANETTES_HOUSE, +}; + +#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_HOUSE  20 +#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_TUNNEL 20 +#define MAP_GROUP_ROUTE114_LANETTES_HOUSE        20 + +//-------------------------------------------------- +// Map Group 21 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE116_TUNNELERS_REST_HOUSE, +}; + +#define MAP_GROUP_ROUTE116_TUNNELERS_REST_HOUSE 21 + +//-------------------------------------------------- +// Map Group 22 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE117_POKEMON_DAY_CARE, +}; + +#define MAP_GROUP_ROUTE117_POKEMON_DAY_CARE 22 + +//-------------------------------------------------- +// Map Group 23 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE121_SAFARI_ZONE_ENTRANCE, +}; + +#define MAP_GROUP_ROUTE121_SAFARI_ZONE_ENTRANCE 23 + +//-------------------------------------------------- +// Map Group 24 +//-------------------------------------------------- + +enum +{ +    MAP_ID_METEOR_FALLS_1F_1R, +    MAP_ID_METEOR_FALLS_1F_2R, +    MAP_ID_METEOR_FALLS_B1F_1R, +    MAP_ID_METEOR_FALLS_B1F_2R, +    MAP_ID_RUSTURF_TUNNEL, +    MAP_ID_UNDERWATER_SOOTOPOLIS_CITY, +    MAP_ID_DESERT_RUINS, +    MAP_ID_GRANITE_CAVE_1F, +    MAP_ID_GRANITE_CAVE_B1F, +    MAP_ID_GRANITE_CAVE_B2F, +    MAP_ID_GRANITE_CAVE_STEVENS_ROOM, +    MAP_ID_PETALBURG_WOODS, +    MAP_ID_MT_CHIMNEY, +    MAP_ID_JAGGED_PASS, +    MAP_ID_FIERY_PATH, +    MAP_ID_MT_PYRE_1F, +    MAP_ID_MT_PYRE_2F, +    MAP_ID_MT_PYRE_3F, +    MAP_ID_MT_PYRE_4F, +    MAP_ID_MT_PYRE_5F, +    MAP_ID_MT_PYRE_6F, +    MAP_ID_MT_PYRE_EXTERIOR, +    MAP_ID_MT_PYRE_SUMMIT, +    MAP_ID_AQUA_HIDEOUT_1F, +    MAP_ID_AQUA_HIDEOUT_B1F, +    MAP_ID_AQUA_HIDEOUT_B2F, +    MAP_ID_UNDERWATER_SEAFLOOR_CAVERN, +    MAP_ID_SEAFLOOR_CAVERN_ENTRANCE, +    MAP_ID_SEAFLOOR_CAVERN_ROOM1, +    MAP_ID_SEAFLOOR_CAVERN_ROOM2, +    MAP_ID_SEAFLOOR_CAVERN_ROOM3, +    MAP_ID_SEAFLOOR_CAVERN_ROOM4, +    MAP_ID_SEAFLOOR_CAVERN_ROOM5, +    MAP_ID_SEAFLOOR_CAVERN_ROOM6, +    MAP_ID_SEAFLOOR_CAVERN_ROOM7, +    MAP_ID_SEAFLOOR_CAVERN_ROOM8, +    MAP_ID_SEAFLOOR_CAVERN_ROOM9, +    MAP_ID_CAVE_OF_ORIGIN_ENTRANCE, +    MAP_ID_CAVE_OF_ORIGIN_1F, +    MAP_ID_CAVE_OF_ORIGIN_B1F, +    MAP_ID_CAVE_OF_ORIGIN_B2F, +    MAP_ID_CAVE_OF_ORIGIN_B3F, +    MAP_ID_CAVE_OF_ORIGIN_B4F, +    MAP_ID_VICTORY_ROAD_1F, +    MAP_ID_VICTORY_ROAD_B1F, +    MAP_ID_VICTORY_ROAD_B2F, +    MAP_ID_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM, +    MAP_ID_SHOAL_CAVE_LOW_TIDE_INNER_ROOM, +    MAP_ID_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM, +    MAP_ID_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM, +    MAP_ID_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM, +    MAP_ID_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM, +    MAP_ID_NEW_MAUVILLE_ENTRANCE, +    MAP_ID_NEW_MAUVILLE_INSIDE, +    MAP_ID_ABANDONED_SHIP_DECK, +    MAP_ID_ABANDONED_SHIP_CORRIDORS_1F, +    MAP_ID_ABANDONED_SHIP_ROOMS_1F, +    MAP_ID_ABANDONED_SHIP_CORRIDORS_B1F, +    MAP_ID_ABANDONED_SHIP_ROOMS_B1F, +    MAP_ID_ABANDONED_SHIP_ROOMS2_B1F, +    MAP_ID_ABANDONED_SHIP_UNDERWATER1, +    MAP_ID_ABANDONED_SHIP_ROOM_B1F, +    MAP_ID_ABANDONED_SHIP_ROOMS2_1F, +    MAP_ID_ABANDONED_SHIP_CAPTAINS_OFFICE, +    MAP_ID_ABANDONED_SHIP_UNDERWATER2, +    MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS, +    MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS, +    MAP_ID_ISLAND_CAVE, +    MAP_ID_ANCIENT_TOMB, +    MAP_ID_UNDERWATER_ROUTE134, +    MAP_ID_UNDERWATER_SEALED_CHAMBER, +    MAP_ID_SEALED_CHAMBER_OUTER_ROOM, +    MAP_ID_SEALED_CHAMBER_INNER_ROOM, +    MAP_ID_SCORCHED_SLAB, +    MAP_ID_UNUSED_AQUA_HIDEOUT_1F, +    MAP_ID_UNUSED_AQUA_HIDEOUT_B1F, +    MAP_ID_UNUSED_AQUA_HIDEOUT_B2F, +    MAP_ID_SKY_PILLAR_ENTRANCE, +    MAP_ID_SKY_PILLAR_OUTSIDE, +    MAP_ID_SKY_PILLAR_1F, +    MAP_ID_SKY_PILLAR_2F, +    MAP_ID_SKY_PILLAR_3F, +    MAP_ID_SKY_PILLAR_4F, +    MAP_ID_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, +    MAP_ID_SKY_PILLAR_5F, +    MAP_ID_SKY_PILLAR_TOP, +    MAP_ID_MAGMA_HIDEOUT_ENTRANCE, +    MAP_ID_MAGMA_HIDEOUT_B1F, +    MAP_ID_MAGMA_HIDEOUT_B2F, +    MAP_ID_MAGMA_HIDEOUT_B3F, +    MAP_ID_MAGMA_HIDEOUT_B4F, +    MAP_ID_MAGMA_HIDEOUT_B5F, +    MAP_ID_MAGMA_HIDEOUT_B6F, +    MAP_ID_MAGMA_HIDEOUT_B7F, +    MAP_ID_MIRAGE_TOWER_1F, +    MAP_ID_MIRAGE_TOWER_2F, +    MAP_ID_MIRAGE_TOWER_3F, +    MAP_ID_MIRAGE_TOWER_4F, +    MAP_ID_DESERT_UNDERPASS, +    MAP_ID_ARTISAN_CAVE_1F, +    MAP_ID_ARTISAN_CAVE_2F, +    MAP_ID_UNKNOWN_UNDERWATER, +    MAP_ID_MARINE_CAVE_1F, +    MAP_ID_MARINE_CAVE_2F, +    MAP_ID_TERRA_CAVE_1F, +    MAP_ID_TERRA_CAVE_2F, +    MAP_ID_ALTERING_CAVE, +    MAP_ID_METEOR_FALLS_B1F_3R, +}; + +#define MAP_GROUP_METEOR_FALLS_1F_1R                    24 +#define MAP_GROUP_METEOR_FALLS_1F_2R                    24 +#define MAP_GROUP_METEOR_FALLS_B1F_1R                   24 +#define MAP_GROUP_METEOR_FALLS_B1F_2R                   24 +#define MAP_GROUP_RUSTURF_TUNNEL                        24 +#define MAP_GROUP_UNDERWATER_SOOTOPOLIS_CITY            24 +#define MAP_GROUP_DESERT_RUINS                          24 +#define MAP_GROUP_GRANITE_CAVE_1F                       24 +#define MAP_GROUP_GRANITE_CAVE_B1F                      24 +#define MAP_GROUP_GRANITE_CAVE_B2F                      24 +#define MAP_GROUP_GRANITE_CAVE_STEVENS_ROOM             24 +#define MAP_GROUP_PETALBURG_WOODS                       24 +#define MAP_GROUP_MT_CHIMNEY                            24 +#define MAP_GROUP_JAGGED_PASS                           24 +#define MAP_GROUP_FIERY_PATH                            24 +#define MAP_GROUP_MT_PYRE_1F                            24 +#define MAP_GROUP_MT_PYRE_2F                            24 +#define MAP_GROUP_MT_PYRE_3F                            24 +#define MAP_GROUP_MT_PYRE_4F                            24 +#define MAP_GROUP_MT_PYRE_5F                            24 +#define MAP_GROUP_MT_PYRE_6F                            24 +#define MAP_GROUP_MT_PYRE_EXTERIOR                      24 +#define MAP_GROUP_MT_PYRE_SUMMIT                        24 +#define MAP_GROUP_AQUA_HIDEOUT_1F                       24 +#define MAP_GROUP_AQUA_HIDEOUT_B1F                      24 +#define MAP_GROUP_AQUA_HIDEOUT_B2F                      24 +#define MAP_GROUP_UNDERWATER_SEAFLOOR_CAVERN            24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ENTRANCE              24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM1                 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM2                 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM3                 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM4                 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM5                 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM6                 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM7                 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM8                 24 +#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM9                 24 +#define MAP_GROUP_CAVE_OF_ORIGIN_ENTRANCE               24 +#define MAP_GROUP_CAVE_OF_ORIGIN_1F                     24 +#define MAP_GROUP_CAVE_OF_ORIGIN_B1F                    24 +#define MAP_GROUP_CAVE_OF_ORIGIN_B2F                    24 +#define MAP_GROUP_CAVE_OF_ORIGIN_B3F                    24 +#define MAP_GROUP_CAVE_OF_ORIGIN_B4F                    24 +#define MAP_GROUP_VICTORY_ROAD_1F                       24 +#define MAP_GROUP_VICTORY_ROAD_B1F                      24 +#define MAP_GROUP_VICTORY_ROAD_B2F                      24 +#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM     24 +#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM        24 +#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM       24 +#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM        24 +#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM    24 +#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM       24 +#define MAP_GROUP_NEW_MAUVILLE_ENTRANCE                 24 +#define MAP_GROUP_NEW_MAUVILLE_INSIDE                   24 +#define MAP_GROUP_ABANDONED_SHIP_DECK                   24 +#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_1F           24 +#define MAP_GROUP_ABANDONED_SHIP_ROOMS_1F               24 +#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_B1F          24 +#define MAP_GROUP_ABANDONED_SHIP_ROOMS_B1F              24 +#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_B1F             24 +#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER1            24 +#define MAP_GROUP_ABANDONED_SHIP_ROOM_B1F               24 +#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F              24 +#define MAP_GROUP_ABANDONED_SHIP_CAPTAINS_OFFICE        24 +#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER2            24 +#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS 24 +#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS     24 +#define MAP_GROUP_ISLAND_CAVE                           24 +#define MAP_GROUP_ANCIENT_TOMB                          24 +#define MAP_GROUP_UNDERWATER_ROUTE134                   24 +#define MAP_GROUP_UNDERWATER_SEALED_CHAMBER             24 +#define MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM             24 +#define MAP_GROUP_SEALED_CHAMBER_INNER_ROOM             24 +#define MAP_GROUP_SCORCHED_SLAB                         24 +#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_1F                24 +#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_B1F               24 +#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_B2F               24 +#define MAP_GROUP_SKY_PILLAR_ENTRANCE                   24 +#define MAP_GROUP_SKY_PILLAR_OUTSIDE                    24 +#define MAP_GROUP_SKY_PILLAR_1F                         24 +#define MAP_GROUP_SKY_PILLAR_2F                         24 +#define MAP_GROUP_SKY_PILLAR_3F                         24 +#define MAP_GROUP_SKY_PILLAR_4F                         24 +#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM          24 +#define MAP_GROUP_SKY_PILLAR_5F                         24 +#define MAP_GROUP_SKY_PILLAR_TOP                        24 +#define MAP_GROUP_MAGMA_HIDEOUT_ENTRANCE                24 +#define MAP_GROUP_MAGMA_HIDEOUT_B1F                     24 +#define MAP_GROUP_MAGMA_HIDEOUT_B2F                     24 +#define MAP_GROUP_MAGMA_HIDEOUT_B3F                     24 +#define MAP_GROUP_MAGMA_HIDEOUT_B4F                     24 +#define MAP_GROUP_MAGMA_HIDEOUT_B5F                     24 +#define MAP_GROUP_MAGMA_HIDEOUT_B6F                     24 +#define MAP_GROUP_MAGMA_HIDEOUT_B7F                     24 +#define MAP_GROUP_MIRAGE_TOWER_1F                       24 +#define MAP_GROUP_MIRAGE_TOWER_2F                       24 +#define MAP_GROUP_MIRAGE_TOWER_3F                       24 +#define MAP_GROUP_MIRAGE_TOWER_4F                       24 +#define MAP_GROUP_DESERT_UNDERPASS                      24 +#define MAP_GROUP_ARTISAN_CAVE_1F                       24 +#define MAP_GROUP_ARTISAN_CAVE_2F                       24 +#define MAP_GROUP_UNKNOWN_UNDERWATER                    24 +#define MAP_GROUP_MARINE_CAVE_1F                        24 +#define MAP_GROUP_MARINE_CAVE_2F                        24 +#define MAP_GROUP_TERRA_CAVE_1F                         24 +#define MAP_GROUP_TERRA_CAVE_2F                         24 +#define MAP_GROUP_ALTERING_CAVE                         24 +#define MAP_GROUP_METEOR_FALLS_B1F_3R                   24 + +//-------------------------------------------------- +// Map Group 25 +//-------------------------------------------------- + +enum +{ +    MAP_ID_SECRET_BASE_RED_CAVE1, +    MAP_ID_SECRET_BASE_BROWN_CAVE1, +    MAP_ID_SECRET_BASE_BLUE_CAVE1, +    MAP_ID_SECRET_BASE_YELLOW_CAVE1, +    MAP_ID_SECRET_BASE_TREE1, +    MAP_ID_SECRET_BASE_SHRUB1, +    MAP_ID_SECRET_BASE_RED_CAVE2, +    MAP_ID_SECRET_BASE_BROWN_CAVE2, +    MAP_ID_SECRET_BASE_BLUE_CAVE2, +    MAP_ID_SECRET_BASE_YELLOW_CAVE2, +    MAP_ID_SECRET_BASE_TREE2, +    MAP_ID_SECRET_BASE_SHRUB2, +    MAP_ID_SECRET_BASE_RED_CAVE3, +    MAP_ID_SECRET_BASE_BROWN_CAVE3, +    MAP_ID_SECRET_BASE_BLUE_CAVE3, +    MAP_ID_SECRET_BASE_YELLOW_CAVE3, +    MAP_ID_SECRET_BASE_TREE3, +    MAP_ID_SECRET_BASE_SHRUB3, +    MAP_ID_SECRET_BASE_RED_CAVE4, +    MAP_ID_SECRET_BASE_BROWN_CAVE4, +    MAP_ID_SECRET_BASE_BLUE_CAVE4, +    MAP_ID_SECRET_BASE_YELLOW_CAVE4, +    MAP_ID_SECRET_BASE_TREE4, +    MAP_ID_SECRET_BASE_SHRUB4, +    MAP_ID_SINGLE_BATTLE_COLOSSEUM, +    MAP_ID_TRADE_CENTER, +    MAP_ID_RECORD_CORNER, +    MAP_ID_DOUBLE_BATTLE_COLOSSEUM, +    MAP_ID_LINK_CONTEST_ROOM1, +    MAP_ID_UNKNOWN_MAP_25_29, +    MAP_ID_UNKNOWN_MAP_25_30, +    MAP_ID_UNKNOWN_MAP_25_31, +    MAP_ID_UNKNOWN_MAP_25_32, +    MAP_ID_UNKNOWN_MAP_25_33, +    MAP_ID_UNKNOWN_MAP_25_34, +    MAP_ID_LINK_CONTEST_ROOM2, +    MAP_ID_LINK_CONTEST_ROOM3, +    MAP_ID_LINK_CONTEST_ROOM4, +    MAP_ID_LINK_CONTEST_ROOM5, +    MAP_ID_LINK_CONTEST_ROOM6, +    MAP_ID_INSIDE_OF_TRUCK, +    MAP_ID_SS_TIDAL_CORRIDOR, +    MAP_ID_SS_TIDAL_LOWER_DECK, +    MAP_ID_SS_TIDAL_ROOMS, +    MAP_ID_TEST_ROOM_1, +    MAP_ID_TEST_ROOM_2, +    MAP_ID_TEST_ROOM_3, +    MAP_ID_TEST_ROOM_4, +    MAP_ID_TEST_ROOM_5, +    MAP_ID_TEST_ROOM_6, +    MAP_ID_TEST_ROOM_7, +    MAP_ID_TEST_ROOM_8, +    MAP_ID_TEST_ROOM_9, +    MAP_ID_TEST_ROOM_10, +    MAP_ID_TEST_ROOM_11, +    MAP_ID_TEST_ROOM_12, +    MAP_ID_TEST_ROOM_13, +    MAP_ID_TEST_ROOM_14, +    MAP_ID_TEST_ROOM_15, +    MAP_ID_TEST_ROOM_16, +    MAP_ID_UNION_ROOM, +}; + +#define MAP_GROUP_SECRET_BASE_RED_CAVE1    25 +#define MAP_GROUP_SECRET_BASE_BROWN_CAVE1  25 +#define MAP_GROUP_SECRET_BASE_BLUE_CAVE1   25 +#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE1 25 +#define MAP_GROUP_SECRET_BASE_TREE1        25 +#define MAP_GROUP_SECRET_BASE_SHRUB1       25 +#define MAP_GROUP_SECRET_BASE_RED_CAVE2    25 +#define MAP_GROUP_SECRET_BASE_BROWN_CAVE2  25 +#define MAP_GROUP_SECRET_BASE_BLUE_CAVE2   25 +#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE2 25 +#define MAP_GROUP_SECRET_BASE_TREE2        25 +#define MAP_GROUP_SECRET_BASE_SHRUB2       25 +#define MAP_GROUP_SECRET_BASE_RED_CAVE3    25 +#define MAP_GROUP_SECRET_BASE_BROWN_CAVE3  25 +#define MAP_GROUP_SECRET_BASE_BLUE_CAVE3   25 +#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE3 25 +#define MAP_GROUP_SECRET_BASE_TREE3        25 +#define MAP_GROUP_SECRET_BASE_SHRUB3       25 +#define MAP_GROUP_SECRET_BASE_RED_CAVE4    25 +#define MAP_GROUP_SECRET_BASE_BROWN_CAVE4  25 +#define MAP_GROUP_SECRET_BASE_BLUE_CAVE4   25 +#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE4 25 +#define MAP_GROUP_SECRET_BASE_TREE4        25 +#define MAP_GROUP_SECRET_BASE_SHRUB4       25 +#define MAP_GROUP_SINGLE_BATTLE_COLOSSEUM  25 +#define MAP_GROUP_TRADE_CENTER             25 +#define MAP_GROUP_RECORD_CORNER            25 +#define MAP_GROUP_DOUBLE_BATTLE_COLOSSEUM  25 +#define MAP_GROUP_LINK_CONTEST_ROOM1       25 +#define MAP_GROUP_UNKNOWN_MAP_25_29        25 +#define MAP_GROUP_UNKNOWN_MAP_25_30        25 +#define MAP_GROUP_UNKNOWN_MAP_25_31        25 +#define MAP_GROUP_UNKNOWN_MAP_25_32        25 +#define MAP_GROUP_UNKNOWN_MAP_25_33        25 +#define MAP_GROUP_UNKNOWN_MAP_25_34        25 +#define MAP_GROUP_LINK_CONTEST_ROOM2       25 +#define MAP_GROUP_LINK_CONTEST_ROOM3       25 +#define MAP_GROUP_LINK_CONTEST_ROOM4       25 +#define MAP_GROUP_LINK_CONTEST_ROOM5       25 +#define MAP_GROUP_LINK_CONTEST_ROOM6       25 +#define MAP_GROUP_INSIDE_OF_TRUCK          25 +#define MAP_GROUP_SS_TIDAL_CORRIDOR        25 +#define MAP_GROUP_SS_TIDAL_LOWER_DECK      25 +#define MAP_GROUP_SS_TIDAL_ROOMS           25 +#define MAP_GROUP_TEST_ROOM_1              25 +#define MAP_GROUP_TEST_ROOM_2              25 +#define MAP_GROUP_TEST_ROOM_3              25 +#define MAP_GROUP_TEST_ROOM_4              25 +#define MAP_GROUP_TEST_ROOM_5              25 +#define MAP_GROUP_TEST_ROOM_6              25 +#define MAP_GROUP_TEST_ROOM_7              25 +#define MAP_GROUP_TEST_ROOM_8              25 +#define MAP_GROUP_TEST_ROOM_9              25 +#define MAP_GROUP_TEST_ROOM_10             25 +#define MAP_GROUP_TEST_ROOM_11             25 +#define MAP_GROUP_TEST_ROOM_12             25 +#define MAP_GROUP_TEST_ROOM_13             25 +#define MAP_GROUP_TEST_ROOM_14             25 +#define MAP_GROUP_TEST_ROOM_15             25 +#define MAP_GROUP_TEST_ROOM_16             25 +#define MAP_GROUP_UNION_ROOM               25 +//-------------------------------------------------- +// Map Group 26 +//-------------------------------------------------- + +enum +{ +    MAP_ID_SAFARI_ZONE_NORTHWEST, +    MAP_ID_SAFARI_ZONE_NORTHEAST, +    MAP_ID_SAFARI_ZONE_SOUTHWEST, +    MAP_ID_SAFARI_ZONE_SOUTHEAST, +    MAP_ID_BATTLE_FRONTIER_OUTSIDE_WEST, +    MAP_ID_BATTLE_TOWER_LOBBY, +    MAP_ID_BATTLE_TOWER_ELEVATOR, +    MAP_ID_BATTLE_TOWER_CORRIDOR, +    MAP_ID_BATTLE_TOWER_BATTLE_ROOM, +    MAP_ID_SOUTHERN_ISLAND_EXTERIOR, +    MAP_ID_SOUTHERN_ISLAND_INTERIOR, +    MAP_ID_SAFARI_ZONE_REST_HOUSE, +    MAP_ID_SAFARI_ZONE_EM_1, +    MAP_ID_SAFARI_ZONE_EM_2, +    MAP_ID_BATTLE_FRONTIER_OUTSIDE_EAST, +    MAP_ID_BATTLE_FRONTIER_TAG_LINK, +    MAP_ID_BATTLE_FRONTIER_TAG_LINK_CORRIDOR, +    MAP_ID_BATTLE_FRONTIER_TAG_LINK_ARENA, +    MAP_ID_BATTLE_DOME_LOBBY, +    MAP_ID_BATTLE_DOME_CORRIDOR, +    MAP_ID_BATTLE_DOME_ROOM, +    MAP_ID_BATTLE_DOME_ARENA, +    MAP_ID_BATTLE_PALACE_LOBBY, +    MAP_ID_BATTLE_PALACE_CORRIDOR, +    MAP_ID_BATTLE_PALACE_1F, +    MAP_ID_BATTLE_PYRAMID_LOBBY, +    MAP_ID_BATTLE_PYRAMID_UNKNOWN, +    MAP_ID_BATTLE_PYRAMID_PEAK, +    MAP_ID_BATTLE_ARENA_LOBBY, +    MAP_ID_BATTLE_ARENA_CORRIDOR, +    MAP_ID_BATTLE_ARENA_ARENA,  +    MAP_ID_BATTLE_FACTORY_LOBBY, +    MAP_ID_BATTLE_FACTORY_CORRIDOR, +    MAP_ID_BATTLE_FACTORY_ARENA, +    MAP_ID_BATTLE_PALACE_2F, +    MAP_ID_BATTLE_PALACE_3F, +    MAP_ID_BATTLE_PALACE_4F, +    MAP_ID_BATTLE_PALACE_5F, +    MAP_ID_BATTLE_PALACE_6F, +    MAP_ID_BATTLE_PALACE_TEST_ROOM, +    MAP_ID_RANKING_HALL, +    MAP_ID_STAT_RATER_HOUSE, +    MAP_ID_BATTLE_FRONTIER_EXCHANGE, +    MAP_ID_BATTLE_FRONTIER_MANIAC_HOUSE, +    MAP_ID_BATTLE_FRONTIER_GAMBLING_HOUSE, +    MAP_ID_BATTLE_FRONTIER_HOUSE1, +    MAP_ID_BATTLE_FRONTIER_SCOTTS_HOUSE, +    MAP_ID_BATTLE_FRONTIER_HOUSE2, +    MAP_ID_BATTLE_FRONTIER_HOUSE3,  +    MAP_ID_BATTLE_FRONTIER_HOUSE4, +    MAP_ID_BATTLE_FRONTIER_ENTRANCE_HALL, +    MAP_ID_BATTLE_FRONTIER_HOUSE5, +    MAP_ID_BATTLE_FRONTIER_UNUSED_HOUSE, +    MAP_ID_BATTLE_FRONTIER_POKEMON_CENTER_1F, +    MAP_ID_BATTLE_FRONTIER_POKEMON_CENTER_2F, +    MAP_ID_BATTLE_FRONTIER_MART, +    MAP_ID_FARAWAY_ISLAND_OUTSIDE, +    MAP_ID_FARAWAY_ISLAND_FOREST, +    MAP_ID_BIRTH_ISLAND_OUTSIDE, +    MAP_ID_BIRTH_ISLAND_DOCKS, +    MAP_ID_TRAINER_HILL_LOBBY, +    MAP_ID_TRAINER_HILL_1F, +    MAP_ID_TRAINER_HILL_2F, +    MAP_ID_TRAINER_HILL_3F, +    MAP_ID_TRAINER_HILL_4F, +    MAP_ID_TRAINER_HILL_5F, +    MAP_ID_NAVEL_ROCK_OUTSIDE, +    MAP_ID_NAVEL_ROCK_DOCKS, +    MAP_ID_NAVEL_ROCK_1F, +    MAP_ID_NAVEL_ROCK_2F, +    MAP_ID_NAVEL_ROCK_3F, +    MAP_ID_NAVEL_ROCK_4F, +    MAP_ID_NAVEL_ROCK_5F, +    MAP_ID_NAVEL_ROCK_6F, +    MAP_ID_NAVEL_ROCK_7F, +    MAP_ID_NAVEL_ROCK_PEAK, +    MAP_ID_NAVEL_ROCK_B1F, +    MAP_ID_NAVEL_ROCK_B2F, +    MAP_ID_NAVEL_ROCK_B3F, +    MAP_ID_NAVEL_ROCK_B4F, +    MAP_ID_NAVEL_ROCK_B5F, +    MAP_ID_NAVEL_ROCK_B6F, +    MAP_ID_NAVEL_ROCK_B7F, +    MAP_ID_NAVEL_ROCK_B8F, +    MAP_ID_NAVEL_ROCK_B9F, +    MAP_ID_NAVEL_ROCK_B10F, +    MAP_ID_NAVEL_ROCK_B11F, +    MAP_ID_NAVEL_ROCK_INNER, +    MAP_ID_TRAINER_HILL_ELEVATOR, +}; + +#define MAP_GROUP_SAFARI_ZONE_NORTHWEST    26 +#define MAP_GROUP_SAFARI_ZONE_NORTHEAST    26 +#define MAP_GROUP_SAFARI_ZONE_SOUTHWEST    26 +#define MAP_GROUP_SAFARI_ZONE_SOUTHEAST    26 +#define MAP_GROUP_BATTLE_FRONTIER_OUTSIDE_WEST     26 +#define MAP_GROUP_BATTLE_TOWER_LOBBY       26 +#define MAP_GROUP_BATTLE_TOWER_ELEVATOR    26 +#define MAP_GROUP_BATTLE_TOWER_CORRIDOR    26 +#define MAP_GROUP_BATTLE_TOWER_BATTLE_ROOM 26 +#define MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR 26 +#define MAP_GROUP_SOUTHERN_ISLAND_INTERIOR 26 +#define MAP_GROUP_SAFARI_ZONE_REST_HOUSE               26 +#define MAP_GROUP_SAFARI_ZONE_EM_1                    26 +#define MAP_GROUP_SAFARI_ZONE_EM_2                    26 +#define MAP_GROUP_BATTLE_FRONTIER_OUTSIDE_EAST         26 +#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK             26 +#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK_CORRIDOR 26 +#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK_ARENA     26 +#define MAP_GROUP_BATTLE_DOME_LOBBY                    26 +#define MAP_GROUP_BATTLE_DOME_CORRIDOR                26 +#define MAP_GROUP_BATTLE_DOME_ROOM                    26 +#define MAP_GROUP_BATTLE_DOME_ARENA                    26 +#define MAP_GROUP_BATTLE_PALACE_LOBBY                26 +#define MAP_GROUP_BATTLE_PALACE_CORRIDOR            26 +#define MAP_GROUP_BATTLE_PALACE_1F                    26 +#define MAP_GROUP_BATTLE_PYRAMID_LOBBY                26 +#define MAP_GROUP_BATTLE_PYRAMID_UNKNOWN            26 +#define MAP_GROUP_BATTLE_PYRAMID_PEAK                26 +#define MAP_GROUP_BATTLE_ARENA_LOBBY                26 +#define MAP_GROUP_BATTLE_ARENA_CORRIDOR                26 +#define MAP_GROUP_BATTLE_ARENA_ARENA                26 // rename  +#define MAP_GROUP_BATTLE_FACTORY_LOBBY                26 +#define MAP_GROUP_BATTLE_FACTORY_CORRIDOR            26 +#define MAP_GROUP_BATTLE_FACTORY_ARENA                26 +#define MAP_GROUP_BATTLE_PALACE_2F                    26 +#define MAP_GROUP_BATTLE_PALACE_3F                    26 +#define MAP_GROUP_BATTLE_PALACE_4F                    26 +#define MAP_GROUP_BATTLE_PALACE_5F                    26 +#define MAP_GROUP_BATTLE_PALACE_6F                    26 +#define MAP_GROUP_BATTLE_PALACE_TEST_ROOM            26 +#define MAP_GROUP_RANKING_HALL                    26 +#define MAP_GROUP_STAT_RATER_HOUSE            26 +#define MAP_GROUP_BATTLE_FRONTIER_EXCHANGE            26 +#define MAP_GROUP_BATTLE_FRONTIER_MANIAC_HOUSE            26 +#define MAP_GROUP_BATTLE_FRONTIER_GAMBLING_HOUSE            26 +#define MAP_GROUP_BATTLE_FRONTIER_HOUSE1            26 +#define MAP_GROUP_BATTLE_FRONTIER_SCOTTS_HOUSE            26 +#define MAP_GROUP_BATTLE_FRONTIER_HOUSE2            26 +#define MAP_GROUP_BATTLE_FRONTIER_HOUSE3            26  +#define MAP_GROUP_BATTLE_FRONTIER_HOUSE4            26 +#define MAP_GROUP_BATTLE_FRONTIER_ENTRANCE_HALL            26 +#define MAP_GROUP_BATTLE_FRONTIER_HOUSE5            26 +#define MAP_GROUP_BATTLE_FRONTIER_UNUSED_HOUSE            26 +#define MAP_GROUP_BATTLE_FRONTIER_POKEMON_CENTER_1F            26 +#define MAP_GROUP_BATTLE_FRONTIER_POKEMON_CENTER_2F            26 +#define MAP_GROUP_BATTLE_FRONTIER_MART            26 +#define MAP_GROUP_FARAWAY_ISLAND_OUTSIDE            26 +#define MAP_GROUP_FARAWAY_ISLAND_FOREST            26 +#define MAP_GROUP_BIRTH_ISLAND_OUTSIDE            26 +#define MAP_GROUP_BIRTH_ISLAND_DOCKS            26 +#define MAP_GROUP_TRAINER_HILL_LOBBY            26 +#define MAP_GROUP_TRAINER_HILL_1F            26 +#define MAP_GROUP_TRAINER_HILL_2F            26 +#define MAP_GROUP_TRAINER_HILL_3F            26 +#define MAP_GROUP_TRAINER_HILL_4F            26 +#define MAP_GROUP_TRAINER_HILL_5F            26 +#define MAP_GROUP_NAVEL_ROCK_OUTSIDE            26 +#define MAP_GROUP_NAVEL_ROCK_DOCKS            26 +#define MAP_GROUP_NAVEL_ROCK_1F            26 +#define MAP_GROUP_NAVEL_ROCK_2F            26 +#define MAP_GROUP_NAVEL_ROCK_3F            26 +#define MAP_GROUP_NAVEL_ROCK_4F            26 +#define MAP_GROUP_NAVEL_ROCK_5F            26 +#define MAP_GROUP_NAVEL_ROCK_6F            26 +#define MAP_GROUP_NAVEL_ROCK_7F            26 +#define MAP_GROUP_NAVEL_ROCK_PEAK            26 +#define MAP_GROUP_NAVEL_ROCK_B1F            26 +#define MAP_GROUP_NAVEL_ROCK_B2F            26 +#define MAP_GROUP_NAVEL_ROCK_B3F            26 +#define MAP_GROUP_NAVEL_ROCK_B4F            26 +#define MAP_GROUP_NAVEL_ROCK_B5F            26 +#define MAP_GROUP_NAVEL_ROCK_B6F            26 +#define MAP_GROUP_NAVEL_ROCK_B7F            26 +#define MAP_GROUP_NAVEL_ROCK_B8F            26 +#define MAP_GROUP_NAVEL_ROCK_B9F            26 +#define MAP_GROUP_NAVEL_ROCK_B10F            26 +#define MAP_GROUP_NAVEL_ROCK_B11F            26 +#define MAP_GROUP_NAVEL_ROCK_INNER            26 +#define MAP_GROUP_TRAINER_HILL_ELEVATOR            26 +//-------------------------------------------------- +// Map Group 27 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE104_PROTOTYPE, +    MAP_ID_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP, +}; + +#define MAP_GROUP_ROUTE104_PROTOTYPE                          27 +#define MAP_GROUP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP 27 + +//-------------------------------------------------- +// Map Group 28 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE109_SEASHORE_HOUSE, +}; + +#define MAP_GROUP_ROUTE109_SEASHORE_HOUSE 28 + +//-------------------------------------------------- +// Map Group 29 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE110_TRICK_HOUSE_ENTRANCE, +    MAP_ID_ROUTE110_TRICK_HOUSE_END, +    MAP_ID_ROUTE110_TRICK_HOUSE_CORRIDOR, +    MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE1, +    MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE2, +    MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE3, +    MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE4, +    MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE5, +    MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE6, +    MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE7, +    MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE8, +    MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE, +    MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE, +}; + +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_ENTRANCE                29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_END                     29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_CORRIDOR                29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE1                 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE2                 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE3                 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE4                 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE5                 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE6                 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE7                 29 +#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE8                 29 +#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE 29 +#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE 29 + +//-------------------------------------------------- +// Map Group 30 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE113_GLASS_WORKSHOP, +}; + +#define MAP_GROUP_ROUTE113_GLASS_WORKSHOP 30 + +//-------------------------------------------------- +// Map Group 31 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE123_BERRY_MASTERS_HOUSE, +}; + +#define MAP_GROUP_ROUTE123_BERRY_MASTERS_HOUSE 31 + +//-------------------------------------------------- +// Map Group 32 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F, +    MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F, +    MAP_ID_ROUTE119_HOUSE, +}; + +#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F 32 +#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_2F 32 +#define MAP_GROUP_ROUTE119_HOUSE                32 + +//-------------------------------------------------- +// Map Group 33 +//-------------------------------------------------- + +enum +{ +    MAP_ID_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE, +}; + +#define MAP_GROUP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE 33 + +#endif // GUARD_MAP_CONSTANTS_H
\ No newline at end of file diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h new file mode 100644 index 000000000..a10648f2f --- /dev/null +++ b/include/map_obj_lock.h @@ -0,0 +1,11 @@ +#ifndef GUARD_MAP_OBJ_LOCK_H +#define GUARD_MAP_OBJ_LOCK_H + +bool8 sub_80983C4(void); +void ScriptFreezeMapObjects(void); +bool8 sub_809847C(void); +void LockSelectedMapObject(void); +void sub_8098630(void); +bool8 sub_8098734(void); + +#endif // GUARD_MAP_OBJ_LOCK_H diff --git a/include/map_object_constants.h b/include/map_object_constants.h new file mode 100644 index 000000000..79482b54a --- /dev/null +++ b/include/map_object_constants.h @@ -0,0 +1,239 @@ +#ifndef GUARD_MAP_OBJECT_CONSTANTS_H +#define GUARD_MAP_OBJECT_CONSTANTS_H + +enum +{ +    MAP_OBJ_GFX_BRENDAN_NORMAL, +    MAP_OBJ_GFX_BRENDAN_MACH_BIKE, +    MAP_OBJ_GFX_BRENDAN_SURFING, +    MAP_OBJ_GFX_BRENDAN_FIELD_MOVE, +    MAP_OBJ_GFX_QUINTY_PLUMP, +    MAP_OBJ_GFX_LITTLE_BOY_1, +    MAP_OBJ_GFX_LITTLE_GIRL_1, +    MAP_OBJ_GFX_BOY_1, +    MAP_OBJ_GFX_GIRL_1, +    MAP_OBJ_GFX_BOY_2, +    MAP_OBJ_GFX_GIRL_2, +    MAP_OBJ_GFX_LITTLE_BOY_2, +    MAP_OBJ_GFX_LITTLE_GIRL_2, +    MAP_OBJ_GFX_BOY_3, +    MAP_OBJ_GFX_GIRL_3, +    MAP_OBJ_GFX_BOY_4, +    MAP_OBJ_GFX_WOMAN_1, +    MAP_OBJ_GFX_FAT_MAN, +    MAP_OBJ_GFX_WOMAN_2, +    MAP_OBJ_GFX_MAN_1, +    MAP_OBJ_GFX_WOMAN_3, +    MAP_OBJ_GFX_OLD_MAN_1, +    MAP_OBJ_GFX_OLD_WOMAN_1, +    MAP_OBJ_GFX_MAN_2, +    MAP_OBJ_GFX_WOMAN_4, +    MAP_OBJ_GFX_MAN_3, +    MAP_OBJ_GFX_WOMAN_5, +    MAP_OBJ_GFX_COOK, +    MAP_OBJ_GFX_WOMAN_6, +    MAP_OBJ_GFX_OLD_MAN_2, +    MAP_OBJ_GFX_OLD_WOMAN_2, +    MAP_OBJ_GFX_CAMPER, +    MAP_OBJ_GFX_PICNICKER, +    MAP_OBJ_GFX_MAN_4, +    MAP_OBJ_GFX_WOMAN_7, +    MAP_OBJ_GFX_YOUNGSTER, +    MAP_OBJ_GFX_BUG_CATCHER, +    MAP_OBJ_GFX_PSYCHIC_M, +    MAP_OBJ_GFX_SCHOOL_KID_M, +    MAP_OBJ_GFX_MANIAC, +    MAP_OBJ_GFX_HEX_MANIAC, +    MAP_OBJ_GFX_WOMAN_8, +    MAP_OBJ_GFX_SWIMMER_M, +    MAP_OBJ_GFX_SWIMMER_F, +    MAP_OBJ_GFX_BLACK_BELT, +    MAP_OBJ_GFX_BEAUTY, +    MAP_OBJ_GFX_SCIENTIST_1, +    MAP_OBJ_GFX_LASS, +    MAP_OBJ_GFX_GENTLEMAN, +    MAP_OBJ_GFX_SAILOR, +    MAP_OBJ_GFX_FISHERMAN, +    MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, +    MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, +    MAP_OBJ_GFX_TUBER_F, +    MAP_OBJ_GFX_TUBER_M, +    MAP_OBJ_GFX_HIKER, +    MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, +    MAP_OBJ_GFX_CYCLING_TRIATHLETE_F, +    MAP_OBJ_GFX_NURSE, +    MAP_OBJ_GFX_ITEM_BALL, +    MAP_OBJ_GFX_BERRY_TREE, +    MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES, +    MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES, +    MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, +    MAP_OBJ_GFX_PROF_BIRCH, +    MAP_OBJ_GFX_MAN_5, +    MAP_OBJ_GFX_MAN_6, +    MAP_OBJ_GFX_REPORTER_M, +    MAP_OBJ_GFX_REPORTER_F, +    MAP_OBJ_GFX_BARD, +    MAP_OBJ_GFX_HIPSTER, +    MAP_OBJ_GFX_TRADER, +    MAP_OBJ_GFX_STORYTELLER, +    MAP_OBJ_GFX_GIDDY, +    MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1, +    MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2, +    MAP_OBJ_GFX_UNUSED_NATU_DOLL, +    MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL, +    MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL, +    MAP_OBJ_GFX_UNUSED_WOOPER_DOLL, +    MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL, +    MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL, +    MAP_OBJ_GFX_CUTTABLE_TREE, +    MAP_OBJ_GFX_MART_EMPLOYEE, +    MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN, +    MAP_OBJ_GFX_TEALA, +    MAP_OBJ_GFX_BREAKABLE_ROCK, +    MAP_OBJ_GFX_PUSHABLE_BOULDER, +    MAP_OBJ_GFX_MR_BRINEYS_BOAT, +    MAP_OBJ_GFX_MAY_NORMAL, +    MAP_OBJ_GFX_MAY_MACH_BIKE, +    MAP_OBJ_GFX_MAY_ACRO_BIKE, +    MAP_OBJ_GFX_MAY_SURFING, +    MAP_OBJ_GFX_MAY_FIELD_MOVE, +    MAP_OBJ_GFX_TRUCK, +    MAP_OBJ_GFX_MACHOKE_CARRYING_BOX, +    MAP_OBJ_GFX_MACHOKE_FACING_AWAY, +    MAP_OBJ_GFX_BIRCHS_BAG, +    MAP_OBJ_GFX_POOCHYENA, +    MAP_OBJ_GFX_ARTIST, +    MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, +    MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE, +    MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE, +    MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING, +    MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE, +    MAP_OBJ_GFX_RIVAL_MAY_NORMAL, +    MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE, +    MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE, +    MAP_OBJ_GFX_RIVAL_MAY_SURFING, +    MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE, +    MAP_OBJ_GFX_CAMERAMAN, +    MAP_OBJ_GFX_BRENDAN_UNDERWATER, +    MAP_OBJ_GFX_MAY_UNDERWATER, +    MAP_OBJ_GFX_MOVING_BOX, +    MAP_OBJ_GFX_CABLE_CAR, +    MAP_OBJ_GFX_SCIENTIST_2, +    MAP_OBJ_GFX_MAN_7, +    MAP_OBJ_GFX_AQUA_MEMBER_M, +    MAP_OBJ_GFX_AQUA_MEMBER_F, +    MAP_OBJ_GFX_MAGMA_MEMBER_M, +    MAP_OBJ_GFX_MAGMA_MEMBER_F, +    MAP_OBJ_GFX_SIDNEY, +    MAP_OBJ_GFX_PHOEBE, +    MAP_OBJ_GFX_GLACIA, +    MAP_OBJ_GFX_DRAKE, +    MAP_OBJ_GFX_ROXANNE, +    MAP_OBJ_GFX_BRAWLY, +    MAP_OBJ_GFX_WATTSON, +    MAP_OBJ_GFX_FLANNERY, +    MAP_OBJ_GFX_NORMAN, +    MAP_OBJ_GFX_WINONA, +    MAP_OBJ_GFX_LIZA, +    MAP_OBJ_GFX_TATE, +    MAP_OBJ_GFX_WALLACE, +    MAP_OBJ_GFX_STEVEN, +    MAP_OBJ_GFX_WALLY, +    MAP_OBJ_GFX_LITTLE_BOY_3, +    MAP_OBJ_GFX_BRENDAN_FISHING, +    MAP_OBJ_GFX_MAY_FISHING, +    MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN, +    MAP_OBJ_GFX_SS_TIDAL, +    MAP_OBJ_GFX_SUBMARINE_SHADOW, +    MAP_OBJ_GFX_PICHU_DOLL, +    MAP_OBJ_GFX_PIKACHU_DOLL, +    MAP_OBJ_GFX_MARILL_DOLL, +    MAP_OBJ_GFX_TOGEPI_DOLL, +    MAP_OBJ_GFX_CYNDAQUIL_DOLL, +    MAP_OBJ_GFX_CHIKORITA_DOLL, +    MAP_OBJ_GFX_TOTODILE_DOLL, +    MAP_OBJ_GFX_JIGGLYPUFF_DOLL, +    MAP_OBJ_GFX_MEOWTH_DOLL, +    MAP_OBJ_GFX_CLEFAIRY_DOLL, +    MAP_OBJ_GFX_DITTO_DOLL, +    MAP_OBJ_GFX_SMOOCHUM_DOLL, +    MAP_OBJ_GFX_TREECKO_DOLL, +    MAP_OBJ_GFX_TORCHIC_DOLL, +    MAP_OBJ_GFX_MUDKIP_DOLL, +    MAP_OBJ_GFX_DUSKULL_DOLL, +    MAP_OBJ_GFX_WYNAUT_DOLL, +    MAP_OBJ_GFX_BALTOY_DOLL, +    MAP_OBJ_GFX_KECLEON_DOLL, +    MAP_OBJ_GFX_AZURILL_DOLL, +    MAP_OBJ_GFX_SKITTY_DOLL, +    MAP_OBJ_GFX_SWABLU_DOLL, +    MAP_OBJ_GFX_GULPIN_DOLL, +    MAP_OBJ_GFX_LOTAD_DOLL, +    MAP_OBJ_GFX_SEEDOT_DOLL, +    MAP_OBJ_GFX_PIKA_CUSHION, +    MAP_OBJ_GFX_ROUND_CUSHION, +    MAP_OBJ_GFX_KISS_CUSHION, +    MAP_OBJ_GFX_ZIGZAG_CUSHION, +    MAP_OBJ_GFX_SPIN_CUSHION, +    MAP_OBJ_GFX_DIAMOND_CUSHION, +    MAP_OBJ_GFX_BALL_CUSHION, +    MAP_OBJ_GFX_GRASS_CUSHION, +    MAP_OBJ_GFX_FIRE_CUSHION, +    MAP_OBJ_GFX_WATER_CUSHION, +    MAP_OBJ_GFX_BIG_SNORLAX_DOLL, +    MAP_OBJ_GFX_BIG_RHYDON_DOLL, +    MAP_OBJ_GFX_BIG_LAPRAS_DOLL, +    MAP_OBJ_GFX_BIG_VENUSAUR_DOLL, +    MAP_OBJ_GFX_BIG_CHARIZARD_DOLL, +    MAP_OBJ_GFX_BIG_BLASTOISE_DOLL, +    MAP_OBJ_GFX_BIG_WAILMER_DOLL, +    MAP_OBJ_GFX_BIG_REGIROCK_DOLL, +    MAP_OBJ_GFX_BIG_REGICE_DOLL, +    MAP_OBJ_GFX_BIG_REGISTEEL_DOLL, +    MAP_OBJ_GFX_LATIAS, +    MAP_OBJ_GFX_LATIOS, +    MAP_OBJ_GFX_BOY_5, +    MAP_OBJ_GFX_CONTEST_JUDGE, +    MAP_OBJ_GFX_BRENDAN_WATERING, +    MAP_OBJ_GFX_MAY_WATERING, +    MAP_OBJ_GFX_BRENDAN_DECORATING, +    MAP_OBJ_GFX_MAY_DECORATING, +    MAP_OBJ_GFX_ARCHIE, +    MAP_OBJ_GFX_MAXIE, +    MAP_OBJ_GFX_KYOGRE_1, +    MAP_OBJ_GFX_GROUDON_1, +    MAP_OBJ_GFX_FOSSIL, +    MAP_OBJ_GFX_REGIROCK, +    MAP_OBJ_GFX_REGICE, +    MAP_OBJ_GFX_REGISTEEL, +    MAP_OBJ_GFX_SKITTY, +    MAP_OBJ_GFX_KECLEON_1, +    MAP_OBJ_GFX_KYOGRE_2, +    MAP_OBJ_GFX_GROUDON_2, +    MAP_OBJ_GFX_RAYQUAZA, +    MAP_OBJ_GFX_ZIGZAGOON, +    MAP_OBJ_GFX_PIKACHU, +    MAP_OBJ_GFX_AZUMARILL, +    MAP_OBJ_GFX_WINGULL, +    MAP_OBJ_GFX_KECLEON_2, +    MAP_OBJ_GFX_TUBER_M_SWIMMING, +    MAP_OBJ_GFX_AZURILL, +    MAP_OBJ_GFX_MOM, +    MAP_OBJ_GFX_LINK_BRENDAN, +    MAP_OBJ_GFX_LINK_MAY, +}; + +enum { +    SHADOW_SIZE_S, +    SHADOW_SIZE_M, +    SHADOW_SIZE_L, +    SHADOW_SIZE_XL +}; + +enum { +    TRACKS_NONE, +    TRACKS_FOOT, +    TRACKS_BIKE_TIRE +}; + +#endif // GUARD_MAP_OBJECT_CONSTANTS_H diff --git a/include/menu.h b/include/menu.h index 9a23401e0..927c3d3d4 100644 --- a/include/menu.h +++ b/include/menu.h @@ -1,20 +1,32 @@  #ifndef GUARD_MENU_H  #define GUARD_MENU_H -#include "text.h" +#include "window.h"  struct MenuAction  { -   const u8 *text; -   u8 (*func)(); -}; - -struct MenuAction2 -{      const u8 *text; -    void (*func)(u8); +    union { +        void (*void_u8)(u8); +        u8 (*u8_void)(void); +    } func;  };  void box_print(u8, u8, u8, u8, const void *, s8, const u8 *); +void sub_8198070(u8 windowId, bool8 copyToVram); +void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); +void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette); +void schedule_bg_copy_tilemap_to_vram(u8 bgNum); +void PrintMenuTable(u8 idx, u8 nstrs, const struct MenuAction *strs); +void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8); +u8 GetMenuCursorPos(void); +s8 ProcessMenuInput(void); +void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y); +void reset_temp_tile_data_buffers(void); +int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode); +bool8 free_temp_tile_data_buffers_if_possible(void); +u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd +void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); +s8 sub_8198C58(void);  #endif // GUARD_MENU_H diff --git a/include/menu_helpers.h b/include/menu_helpers.h new file mode 100644 index 000000000..f083a10e2 --- /dev/null +++ b/include/menu_helpers.h @@ -0,0 +1,20 @@ +#ifndef GUARD_MENU_HELPERS_H +#define GUARD_MENU_HELPERS_H + +// Exported type declarations + +struct YesNoFuncTable { +    TaskFunc yesFunc; +    TaskFunc noFunc; +}; + +// Exported RAM declarations + +// Exported ROM declarations + +void sub_812225C(u16 *, u16 *, u8, u8); +void sub_8122298(u16 *, u16 *, u8, u8, u8); +void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data); +bool8 sub_81221AC(void); + +#endif //GUARD_MENU_HELPERS_H diff --git a/include/menu_indicators.h b/include/menu_indicators.h new file mode 100644 index 000000000..5a3b2e5b8 --- /dev/null +++ b/include/menu_indicators.h @@ -0,0 +1,12 @@ +#ifndef GUARD_MENU_INDICATORS_H +#define GUARD_MENU_INDICATORS_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u8, u8, u16 *); +void RemoveScrollIndicatorArrowPair(u8); + +#endif //GUARD_MENU_INDICATORS_H diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index 5ed36c690..d6743b788 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -1,11 +1,149 @@ -#ifndef GUARD_METATILE_BEHAVIOR_H -#define GUARD_METATILE_BEHAVIOR_H +#ifndef GUARD_METATILE_BEHAVIOR +#define GUARD_METATILE_BEHAVIOR -// Exported type declarations +bool8 ShouldDoJumpLandingDustEffect(u8); +bool8 MetatileBehavior_IsEncounterTile(u8); +bool8 MetatileBehavior_IsJumpEast(u8); +bool8 MetatileBehavior_IsJumpWest(u8); +bool8 MetatileBehavior_IsJumpNorth(u8); +bool8 MetatileBehavior_IsJumpSouth(u8); +bool8 MetatileBehavior_IsPokeGrass(u8); +bool8 MetatileBehavior_IsSandOrDeepSand(u8); +bool8 MetatileBehavior_IsDeepSand(u8); +bool8 MetatileBehavior_IsReflective(u8); +bool8 MetatileBehavior_IsIce(u8); +bool8 MetatileBehavior_IsWarpDoor(u8); +bool8 MetatileBehavior_IsDoor(u8); +bool8 MetatileBehavior_IsEscalator(u8); +bool8 MetatileBehavior_IsMB_04(u8); +bool8 MetatileBehavior_IsLadder(u8); +bool8 MetatileBehavior_IsNonAnimDoor(u8); +bool8 MetatileBehavior_IsDeepSouthWarp(u8); +bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8); +bool8 MetatileBehavior_IsEastArrowWarp(u8); +bool8 MetatileBehavior_IsWestArrowWarp(u8); +bool8 MetatileBehavior_IsNorthArrowWarp(u8); +bool8 MetatileBehavior_IsSouthArrowWarp(u8); +bool8 MetatileBehavior_IsArrowWarp(u8); +bool8 MetatileBehavior_IsMoveTile(u8); +bool8 MetatileBehavior_IsIce_2(u8); +bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8); +bool8 MetatileBehavior_IsMB_05(u8); +bool8 MetatileBehavior_IsWalkNorth(u8); +bool8 MetatileBehavior_IsWalkSouth(u8); +bool8 MetatileBehavior_IsWalkWest(u8); +bool8 MetatileBehavior_IsWalkEast(u8); +bool8 MetatileBehavior_IsNorthwardCurrent(u8); +bool8 MetatileBehavior_IsSouthwardCurrent(u8); +bool8 MetatileBehavior_IsWestwardCurrent(u8); +bool8 MetatileBehavior_IsEastwardCurrent(u8); +bool8 MetatileBehavior_IsSlideNorth(u8); +bool8 MetatileBehavior_IsSlideSouth(u8); +bool8 MetatileBehavior_IsSlideWest(u8); +bool8 MetatileBehavior_IsSlideEast(u8); +bool8 MetatileBehavior_IsCounter(u8); +bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDir); +bool8 MetatileBehavior_IsPC(u8); +bool8 MetatileBehavior_IsCableBoxResults1(u8); +bool8 MetatileBehavior_IsSecretBaseOpen(u8); +bool8 MetatileBehavior_IsSecretBaseCave(u8); +bool8 MetatileBehavior_IsSecretBaseTree(u8); +bool8 MetatileBehavior_IsSecretBaseShrub(u8); +bool8 MetatileBehavior_IsSecretBasePC(u8); +bool8 MetatileBehavior_IsSecretBaseRegisterPC(u8); +bool8 MetatileBehavior_IsMB_B2(u8); +bool8 MetatileBehavior_IsMB_B3(u8); +bool8 MetatileBehavior_IsMB_B9(u8); +bool8 MetatileBehavior_IsMB_C6(u8); +bool8 MetatileBehavior_IsSecretBasePoster(u8); +bool8 MetatileBehavior_IsNormal(u8); +bool8 MetatileBehavior_IsMB_B7(u8); +bool8 MetatileBehavior_IsMB_B2_Duplicate(u8); +bool8 MetatileBehavior_IsMB_B5(u8); +bool8 MetatileBehavior_IsMB_C3(u8); +bool8 MetatileBehavior_IsMB_C2(u8); +bool8 MetatileBehavior_IsSecretBaseBalloon(u8); +bool8 MetatileBehavior_IsMB_BE(u8); +bool8 MetatileBehavior_IsSecretBaseSoundMat(u8); +bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8); +bool8 MetatileBehavior_IsMB_BF(u8); +bool8 MetatileBehavior_IsSecretBaseTvOrShield(u8); +bool8 MetatileBehavior_IsMB_C5(u8); +bool8 MetatileBehavior_HasRipples(u8); +bool8 MetatileBehavior_IsPuddle(u8); +bool8 MetatileBehavior_IsTallGrass(u8); +bool8 MetatileBehavior_IsLongGrass(u8); +bool8 MetatileBehavior_IsBerryTreeSoil(u8); +bool8 MetatileBehavior_IsAsh(u8); +bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8); +bool8 MetatileBehavior_IsBridge(u8); +u8 MetatileBehavior_GetBridgeSth(u8); +u8 MetatileBehavior_8089510(u8); +bool8 MetatileBehavior_IsLandWildEncounter(u8); +bool8 MetatileBehavior_IsWaterWildEncounter(u8); +bool8 MetatileBehavior_IsMB_0B(u8); +bool8 MetatileBehavior_IsMountain(u8); +bool8 MetatileBehavior_IsDiveable(u8); +bool8 MetatileBehavior_IsUnableToEmerge(u8); +bool8 MetatileBehavior_IsShallowFlowingWater(u8); +bool8 MetatileBehavior_IsThinIce(u8); +bool8 MetatileBehavior_IsCrackedIce(u8); +bool8 MetatileBehavior_IsDeepOrOceanWater(u8); +bool8 MetatileBehavior_IsMB_18_OrMB_1A(u8); +bool8 MetatileBehavior_IsSurfableAndNotWaterfall(u8); +bool8 MetatileBehavior_IsEastBlocked(u8); +bool8 MetatileBehavior_IsWestBlocked(u8); +bool8 MetatileBehavior_IsNorthBlocked(u8); +bool8 MetatileBehavior_IsSouthBlocked(u8); +bool8 MetatileBehavior_IsShortGrass(u8); +bool8 MetatileBehavior_IsHotSprings(u8); +bool8 MetatileBehavior_IsWaterfall(u8); +bool8 MetatileBehavior_IsFortreeBridge(u8); +bool8 MetatileBehavior_IsPacifilogVerticalLog1(u8); +bool8 MetatileBehavior_IsPacifilogVerticalLog2(u8); +bool8 MetatileBehavior_IsPacifilogHorizontalLog1(u8); +bool8 MetatileBehavior_IsPacifilogHorizontalLog2(u8); +bool8 MetatileBehavior_IsPacifidlogLog(u8); +bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8); +bool8 MetatileBehavior_IsRegionMap(u8); +bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8); +bool8 MetatileBehavior_IsUnknownClosedDoor(u8); +bool8 MetatileBehavior_IsRoulette(u8); +bool8 MetatileBehavior_IsPokeblockFeeder(u8); +bool8 MetatileBehavior_IsSecretBaseJumpMat(u8); +bool8 MetatileBehavior_IsSecretBaseSpinMat(u8); +bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8); +bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8); +bool8 MetatileBehavior_IsAquaHideoutWarp(u8); +bool8 MetatileBehavior_IsWarpOrBridge(u8); +bool8 MetatileBehavior_IsMossdeepGymWarp(u8); +bool8 MetatileBehavior_IsSurfableFishableWater(u8); +bool8 MetatileBehavior_IsMtPyreHole(u8); +bool8 MetatileBehavior_IsCrackedFloorHole(u8); +bool8 MetatileBehavior_IsCrackedFloor(u8); +bool8 MetatileBehavior_IsMuddySlope(u8); +bool8 MetatileBehavior_IsBumpySlope(u8); +bool8 MetatileBehavior_IsIsolatedVerticalRail(u8); +bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8); +bool8 MetatileBehavior_IsVerticalRail(u8); +bool8 MetatileBehavior_IsHorizontalRail(u8); +bool8 MetatileBehavior_IsSeaweed(u8); +bool8 MetatileBehavior_IsRunningDisallowed(u8); +bool8 MetatileBehavior_IsCuttableGrass(u8); +bool8 MetatileBehavior_IsRunningShoesInstruction(u8); +bool8 MetatileBehavior_IsPictureBookShelf(u8); +bool8 MetatileBehavior_IsBookShelf(u8); +bool8 MetatileBehavior_IsPokeCenterBookShelf(u8); +bool8 MetatileBehavior_IsVase(u8); +bool8 MetatileBehavior_IsTrashCan(u8); +bool8 MetatileBehavior_IsShopShelf(u8); +bool8 MetatileBehavior_IsBlueprint(u8); +bool8 MetatileBehavior_IsBattlePyramidWarp(u8); +bool8 MetatileBehavior_IsPlayerFacingWirelessBoxResults(u8 tile, u8 playerDir); +bool8 MetatileBehavior_IsCableBoxResults2(u8 tile, u8 playerDir); +bool8 MetatileBehavior_IsQuestionnaire(u8); +bool8 MetatileBehavior_IsLongGrass_Duplicate(u8); +bool8 MetatileBehavior_IsLongGrassSouthEdge(u8); +bool8 MetatileBehavior_IsTrainerHillTimer(u8); -// Exported RAM declarations - -// Exported ROM declarations -bool8 sub_8088E64(u8); - -#endif //GUARD_METATILE_BEHAVIOR_H +#endif // GUARD_METATILE_BEHAVIOR diff --git a/include/metatile_behaviors.h b/include/metatile_behaviors.h new file mode 100644 index 000000000..dd3a8b4f4 --- /dev/null +++ b/include/metatile_behaviors.h @@ -0,0 +1,179 @@ +#ifndef GUARD_METATILE_BEHAVIORS +#define GUARD_METATILE_BEHAVIORS + +#define MB_NORMAL 0x00 +#define MB_TALL_GRASS 0x02 +#define MB_LONG_GRASS 0x03 +#define MB_04 0x04 +#define MB_05 0x05 +#define MB_DEEP_SAND 0x06 +#define MB_SHORT_GRASS 0x07 +#define MB_CAVE 0x08 +#define MB_LONG_GRASS_SOUTH_EDGE 0x09 +#define MB_NO_RUNNING 0x0A +#define MB_0B 0x0B +#define MB_MOUNTAIN_TOP 0x0C +#define MB_BATTLE_PYRAMID_WARP 0x0D +#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_DEEP_WATER 0x12 +#define MB_WATERFALL 0x13 +#define MB_SOOTOPOLIS_DEEP_WATER 0x14 +#define MB_OCEAN_WATER 0x15 +#define MB_PUDDLE 0x16 +#define MB_SHALLOW_WATER 0x17 +#define MB_18 0x18 +#define MB_NO_SURFACING 0x19 +#define MB_1A 0x1A +#define MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B +#define MB_SHOAL_CAVE_ENTRANCE 0x1C +#define MB_ICE 0x20 +#define MB_SAND 0x21 +#define MB_SEAWEED 0x22 +#define MB_ASHGRASS 0x24 +#define MB_25 0x25 +#define MB_THIN_ICE 0x26 +#define MB_CRACKED_ICE 0x27 +#define MB_HOT_SPRINGS 0x28 +#define MB_LAVARIDGE_GYM_B1F_WARP 0x29 +#define MB_SEAWEED_NO_SURFACING 0x2A +#define MB_REFLECTION_UNDER_BRIDGE 0x2B +#define MB_IMPASSABLE_EAST 0x30 +#define MB_IMPASSABLE_WEST 0x31 +#define MB_IMPASSABLE_NORTH 0x32 +#define MB_IMPASSABLE_SOUTH 0x33 +#define MB_IMPASSABLE_NORTHEAST 0x34 +#define MB_IMPASSABLE_NORTHWEST 0x35 +#define MB_IMPASSABLE_SOUTHEAST 0x36 +#define MB_IMPASSABLE_SOUTHWEST 0x37 +#define MB_JUMP_EAST 0x38 +#define MB_JUMP_WEST 0x39 +#define MB_JUMP_NORTH 0x3A +#define MB_JUMP_SOUTH 0x3B +#define MB_JUMP_SOUTHEAST 0x3E +#define MB_JUMP_SOUTHWEST 0x3F +#define MB_WALK_EAST 0x40 +#define MB_WALK_WEST 0x41 +#define MB_WALK_NORTH 0x42 +#define MB_WALK_SOUTH 0x43 +#define MB_SLIDE_EAST 0x44 +#define MB_SLIDE_WEST 0x45 +#define MB_SLIDE_NORTH 0x46 +#define MB_SLIDE_SOUTH 0x47 +#define MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48 +#define MB_EASTWARD_CURRENT 0x50 +#define MB_WESTWARD_CURRENT 0x51 +#define MB_NORTHWARD_CURRENT 0x52 +#define MB_SOUTHWARD_CURRENT 0x53 +#define MB_NON_ANIMATED_DOOR 0x60 +#define MB_LADDER 0x61 +#define MB_EAST_ARROW_WARP 0x62 +#define MB_WEST_ARROW_WARP 0x63 +#define MB_NORTH_ARROW_WARP 0x64 +#define MB_SOUTH_ARROW_WARP 0x65 +#define MB_CRACKED_FLOOR_HOLE 0x66 +#define MB_AQUA_HIDEOUT_WARP 0x67 +#define MB_LAVARIDGE_GYM_1F_WARP 0x68 +#define MB_ANIMATED_DOOR 0x69 +#define MB_UP_ESCALATOR 0x6A +#define MB_DOWN_ESCALATOR 0x6B +#define MB_WATER_DOOR 0x6C +#define MB_WATER_SOUTH_ARROW_WARP 0x6D +#define MB_DEEP_SOUTH_WARP 0x6E +#define MB_WARP_OR_BRIDGE 0x70 +#define MB_71 0x71 +#define MB_ROUTE120_NORTH_BRIDGE_1 0x72 +#define MB_ROUTE120_NORTH_BRIDGE_2 0x73 +#define MB_PACIFIDLOG_VERTICAL_LOG_1 0x74 +#define MB_PACIFIDLOG_VERTICAL_LOG_2 0x75 +#define MB_PACIFIDLOG_HORIZONTAL_LOG_1 0x76 +#define MB_PACIFIDLOG_HORIZONTAL_LOG_2 0x77 +#define MB_FORTREE_BRIDGE 0x78 +#define MB_ROUTE120_SOUTH_BRIDGE_1 0x7A +#define MB_ROUTE120_SOUTH_BRIDGE_2 0x7B +#define MB_ROUTE120_NORTH_BRIDGE_3 0x7C +#define MB_ROUTE120_NORTH_BRIDGE_4 0x7D +#define MB_7E 0x7E +#define MB_ROUTE110_BRIDGE 0x7F +#define MB_COUNTER 0x80 +#define MB_PC 0x83 +#define MB_CABLE_BOX_RESULTS_1 0x84 +#define MB_REGION_MAP 0x85 +#define MB_TELEVISION 0x86 +#define MB_POKEBLOCK_FEEDER 0x87 +#define MB_SLOT_MACHINE 0x89 +#define MB_ROULETTE 0x8A +#define MB_CLOSED_SOOTOPOLIS_GYM_DOOR 0x8B +#define MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C +#define MB_8D 0x8D +#define MB_RUNNING_SHOES_INSTRUCTION 0x8E +#define MB_QUESTIONNAIRE 0x8F +#define MB_SECRET_BASE_SPOT_RED_CAVE 0x90 +#define MB_SECRET_BASE_SPOT_RED_CAVE_OPEN 0x91 +#define MB_SECRET_BASE_SPOT_BROWN_CAVE 0x92 +#define MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN 0x93 +#define MB_SECRET_BASE_SPOT_YELLOW_CAVE 0x94 +#define MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN 0x95 +#define MB_SECRET_BASE_SPOT_TREE_LEFT 0x96 +#define MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN 0x97 +#define MB_SECRET_BASE_SPOT_SHRUB 0x98 +#define MB_SECRET_BASE_SPOT_SHRUB_OPEN 0x99 +#define MB_SECRET_BASE_SPOT_BLUE_CAVE 0x9A +#define MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN 0x9B +#define MB_SECRET_BASE_SPOT_TREE_RIGHT 0x9C +#define MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN 0x9D +#define MB_BERRY_TREE_SOIL 0xA0 +#define MB_SECRET_BASE_PC 0xB0 +#define MB_SECRET_BASE_REGISTER_PC 0xB1 +#define MB_B2 0xB2 +#define MB_B3 0xB3 +#define MB_B4 0xB4 +#define MB_B5 0xB5 +#define MB_B6 0xB6 +#define MB_B7 0xB7 +#define MB_SECRET_BASE_BALLOON 0xB8 +#define MB_B9 0xB9 +#define MB_SECRET_BASE_GLITTER_MAT 0xBA +#define MB_SECRET_BASE_JUMP_MAT 0xBB +#define MB_SECRET_BASE_SPIN_MAT 0xBC +#define MB_SECRET_BASE_SOUND_MAT 0xBD +#define MB_BE 0xBE +#define MB_BF 0xBF +#define MB_BED 0xC0 +#define MB_C1 0xC1 +#define MB_C2 0xC2 +#define MB_C3 0xC3 +#define MB_SECRET_BASE_TV_SHIELD 0xC4 +#define MB_C5 0xC5 +#define MB_C6 0xC6 +#define MB_SECRET_BASE_POSTER 0xC7 +#define MB_C8 0xC8 +#define MB_C9 0xC9 +#define MB_CA 0xCA +#define MB_CB 0xCB +#define MB_CC 0xCC +#define MB_CD 0xCD +#define MB_CE 0xCE +#define MB_CF 0xCF +#define MB_MUDDY_SLOPE 0xD0 +#define MB_BUMPY_SLOPE 0xD1 +#define MB_CRACKED_FLOOR 0xD2 +#define MB_ISOLATED_VERTICAL_RAIL 0xD3 +#define MB_ISOLATED_HORIZONTAL_RAIL 0xD4 +#define MB_VERTICAL_RAIL 0xD5 +#define MB_HORIZONTAL_RAIL 0xD6 +#define MB_PICTURE_BOOK_SHELF 0xE0 +#define MB_BOOKSHELF 0xE1 +#define MB_POKEMON_CENTER_BOOKSHELF 0xE2 +#define MB_VASE 0xE3 +#define MB_TRASH_CAN 0xE4 +#define MB_SHOP_SHELF 0xE5 +#define MB_BLUEPRINT 0xE6 +#define MB_CABLE_BOX_RESULTS_2 0xE7 +#define MB_WIRELESS_BOX_RESULTS 0xE8 +#define MB_TRAINER_HILL_TIMER 0xE9 +#define MB_UNKNOWN_CLOSED_DOOR 0xEA + +#endif // GUARD_METATILE_BEHAVIORS diff --git a/include/money.h b/include/money.h index 316dbd697..5c7c1c984 100644 --- a/include/money.h +++ b/include/money.h @@ -5,6 +5,16 @@ u32 GetMoney(u32* moneyPtr);  void SetMoney(u32* moneyPtr, u32 newValue);  bool8 IsEnoughMoney(u32* moneyPtr, u32 cost);  void AddMoney(u32* moneyPtr, u32 toAdd); -void SubtractMoney(u32* moneyPtr, u32 toSub); +void RemoveMoney(u32* moneyPtr, u32 toSub); +bool8 IsEnoughForCostInVar0x8005(void); +void SubtractMoneyFromVar0x8005(void); +void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed); +void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed); +void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount); +void ChangeAmountInMoneyBox(int amount); +void DrawMoneyBox(int amount, u8 x, u8 y); +void HideMoneyBox(void); +void AddMoneyLabelObject(u16 x, u16 y); +void RemoveMoneyLabelObject(void);  #endif // GUARD_MONEY_H diff --git a/include/moves.h b/include/moves.h index e3b6d3113..682f59506 100644 --- a/include/moves.h +++ b/include/moves.h @@ -359,5 +359,8 @@ enum      MOVE_DOOM_DESIRE,      MOVE_PSYCHO_BOOST,  }; +extern const u8 gMoveNames[][13]; -#endif // GUARD_MOVES_H
\ No newline at end of file +#define LAST_MOVE_INDEX     MOVE_PSYCHO_BOOST + +#endif // GUARD_MOVES_H diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h new file mode 100644 index 000000000..ab23a8d00 --- /dev/null +++ b/include/mystery_event_script.h @@ -0,0 +1,8 @@ +#ifndef GUARD_MYSTERY_EVENT_SCRIPT_H +#define GUARD_MYSTERY_EVENT_SCRIPT_H + +u32 RunMysteryEventScript(u8 *); +void SetMysteryEventScriptStatus(u32 val); +u16 GetRecordMixingGift(void); + +#endif // GUARD_MYSTERY_EVENT_SCRIPT_H diff --git a/include/naming_screen.h b/include/naming_screen.h new file mode 100644 index 000000000..3d69b834f --- /dev/null +++ b/include/naming_screen.h @@ -0,0 +1,12 @@ +#ifndef GUARD_NAMING_SCREEN_H +#define GUARD_NAMING_SCREEN_H + +#define NAMING_SCREEN_PLAYER        0 +#define NAMING_SCREEN_BOX           1 +#define NAMING_SCREEN_CAUGHT_MON    2 +#define NAMING_SCREEN_3             3 +#define NAMING_SCREEN_WALDA         4 + +void DoNamingScreen(u8 caseId, u8* dst, u16 monSpecies, u8 monGender, u32 monPersonality, void (*callback)(void)); + +#endif // GUARD_NAMING_SCREEN_H diff --git a/include/new_game.h b/include/new_game.h index 060279c25..2088d1826 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -2,6 +2,7 @@  #define GUARD_NEW_GAME_H  void WriteUnalignedWord(u32 var, u8 *dataPtr); +u32 ReadUnalignedWord(u8* dataPtr);  void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom);  void InitPlayerTrainerId(void);  void SetDefaultOptions(void); diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h new file mode 100644 index 000000000..f588967bf --- /dev/null +++ b/include/new_menu_helpers.h @@ -0,0 +1,16 @@ +#ifndef GUARD_NEW_MENU_HELPERS_H +#define GUARD_NEW_MENU_HELPERS_H + +#include "text.h" +#include "task.h" + +void sub_81973A4(void); +void sub_81973C4(u8, u8); +void sub_819746C(u8 windowId, bool8 copyToVram); +void sub_81973FC(u8, u8); +u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor); +void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback); +void sub_8197434(u8 a0, u8 a1); +void sub_8197930(void); + +#endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/overworld.h b/include/overworld.h new file mode 100644 index 000000000..5ac4cad29 --- /dev/null +++ b/include/overworld.h @@ -0,0 +1,63 @@ +#ifndef GUARD_ROM4_H +#define GUARD_ROM4_H + +#include "main.h" + +struct UnkPlayerStruct +{ +    u8 player_field_0; +    u8 player_field_1; +}; + +struct LinkPlayerMapObject +{ +    u8 active; +    u8 linkPlayerId; +    u8 mapObjId; +    u8 mode; +}; + +struct UCoords32 +{ +    u32 x, y; +}; + +extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; +extern MainCallback gFieldCallback; + +void IncrementGameStat(u8 index); + +void Overworld_SetMapObjTemplateCoords(u8, s16, s16); +void Overworld_SetMapObjTemplateMovementType(u8, u8); + +void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); + +void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void Overworld_SetHealLocationWarp(u8); +void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void sub_8084E2C(s8, s8, s8, s8, s8); +void sub_8084E80(s8, s8, s8, s8, s8); +void sub_8084EBC(s16, s16); + +void player_avatar_init_params_reset(void); + +void Overworld_SetFlashLevel(s32 a1); +//u8 Overworld_GetFlashLevel(void); +void sub_8085524(u16); + +void Overworld_SetSavedMusic(u16); +void Overworld_ChangeMusicToDefault(void); +void Overworld_ChangeMusicTo(u16); + +bool32 is_c1_link_related_active(void); + +void strange_npc_table_clear(void); +const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8); +void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); +void sub_8086230(void); +void c2_exit_to_overworld_2_switch(void); +bool32 sub_8087598(void); +void c2_exit_to_overworld_1_continue_scripts_restart_music(void); +void warp_in(void); + +#endif //GUARD_ROM4_H diff --git a/include/palette.h b/include/palette.h index de2cf0083..d3bcd2271 100644 --- a/include/palette.h +++ b/include/palette.h @@ -8,6 +8,9 @@  #define gPaletteFade_delay            (gPaletteFade.multipurpose2) // normal and hardware fade  #define gPaletteFade_submode          (gPaletteFade.multipurpose2) // fast fade +#define PLTT_BUFFER_SIZE 0x200 +#define PLTT_DECOMP_BUFFER_SIZE (PLTT_BUFFER_SIZE * 2) +  enum  {      FAST_FADE_IN_FROM_WHITE, diff --git a/include/party_menu.h b/include/party_menu.h new file mode 100644 index 000000000..175aba639 --- /dev/null +++ b/include/party_menu.h @@ -0,0 +1,6 @@ +#ifndef GUARD_PARTY_MENU_H +#define GUARD_PARTY_MENU_H + +bool8 pokemon_has_move(struct Pokemon *, u16); + +#endif // GUARD_PARTY_MENU_H diff --git a/include/player_pc.h b/include/player_pc.h new file mode 100644 index 000000000..b14d1ede3 --- /dev/null +++ b/include/player_pc.h @@ -0,0 +1,12 @@ +#ifndef GUARD_PLAYER_PC_H +#define GUARD_PLAYER_PC_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +void sub_816B060(u8 taskId); + +#endif //GUARD_PLAYER_PC_H diff --git a/include/pokedex.h b/include/pokedex.h index 15f819a2a..79721899f 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -6,6 +6,7 @@ const u8 *GetPokemonCategory(u16);  u16 GetPokedexHeightWeight(u16 dexNum, u8 data);  u16 GetNationalPokedexCount(u8);  u16 GetHoennPokedexCount(u8); +u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);  enum  { @@ -15,6 +16,8 @@ enum      FLAG_SET_CAUGHT  }; -u8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); +s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); +u16 pokedex_count(u8); +u16 sub_80C0844(u8);  #endif // GUARD_POKEDEX_H diff --git a/include/pokemon.h b/include/pokemon.h index 9d01c051e..4159a2f96 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -30,7 +30,7 @@  #define MON_DATA_HP_EV             26  #define MON_DATA_ATK_EV            27  #define MON_DATA_DEF_EV            28 -#define MON_DATA_SPD_EV            29 +#define MON_DATA_SPEED_EV          29  #define MON_DATA_SPATK_EV          30  #define MON_DATA_SPDEF_EV          31  #define MON_DATA_FRIENDSHIP        32 @@ -43,7 +43,7 @@  #define MON_DATA_HP_IV             39  #define MON_DATA_ATK_IV            40  #define MON_DATA_DEF_IV            41 -#define MON_DATA_SPD_IV            42 +#define MON_DATA_SPEED_IV          42  #define MON_DATA_SPATK_IV          43  #define MON_DATA_SPDEF_IV          44  #define MON_DATA_IS_EGG            45 @@ -62,7 +62,7 @@  #define MON_DATA_MAX_HP            58  #define MON_DATA_ATK               59  #define MON_DATA_DEF               60 -#define MON_DATA_SPD               61 +#define MON_DATA_SPEED             61  #define MON_DATA_SPATK             62  #define MON_DATA_SPDEF             63  #define MON_DATA_MAIL              64 @@ -87,7 +87,7 @@  #define MON_DATA_RIBBONS           83  #define MON_DATA_ATK2              84  #define MON_DATA_DEF2              85 -#define MON_DATA_SPD2              86 +#define MON_DATA_SPEED2            86  #define MON_DATA_SPATK2            87  #define MON_DATA_SPDEF2            88 @@ -126,6 +126,8 @@  #define TYPE_DRAGON   0x10  #define TYPE_DARK     0x11 +#define NUMBER_OF_MON_TYPES     0x12 +  #define PARTY_SIZE 6  #define MAX_TOTAL_EVS 510  #define NUM_STATS 6 @@ -333,6 +335,8 @@ struct UnknownPokemonStruct      u8 friendship;  }; +#define BATTLE_STATS_NO 8 +  struct BattlePokemon  {      /*0x00*/ u16 species; @@ -350,7 +354,7 @@ struct BattlePokemon      /*0x17*/ u32 spDefenseIV:5;      /*0x17*/ u32 isEgg:1;      /*0x17*/ u32 altAbility:1; -    /*0x18*/ s8 statStages[8]; +    /*0x18*/ s8 statStages[BATTLE_STATS_NO];      /*0x20*/ u8 ability;      /*0x21*/ u8 type1;      /*0x22*/ u8 type2; @@ -435,7 +439,7 @@ struct BattleMove      u8 pp;      u8 secondaryEffectChance;      u8 target; -    u8 priority; +    s8 priority;      u8 flags;  }; @@ -443,6 +447,7 @@ struct BattleMove  #define FLAG_PROTECT_AFFECTED       0x2  #define FLAG_MAGICCOAT_AFFECTED     0x4  #define FLAG_SNATCH_AFFECTED        0x8 +#define FLAG_MIRROR_MOVE_AFFECTED   0x10  #define FLAG_KINGSROCK_AFFECTED     0x20  struct SpindaSpot @@ -520,6 +525,7 @@ extern struct PokemonStorage* gPokemonStoragePtr;  extern const u32 gExperienceTables[][MAX_MON_LEVEL + 1];  extern const u16 *const gLevelUpLearnsets[]; +u8 CountAliveMonsInBattle(u8 caseId);  #define BATTLE_ALIVE_EXCEPT_ACTIVE  0  #define BATTLE_ALIVE_ATK_SIDE       1  #define BATTLE_ALIVE_DEF_SIDE       2 @@ -620,8 +626,28 @@ bool8 IsPokeSpriteNotFlipped(u16 species);  bool8 IsMonShiny(struct Pokemon *mon);  bool8 IsShinyOtIdPersonality(u32 otId, u32 personality); +void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); +bool8 IsTradedMon(struct Pokemon *mon); +void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality); +s32 sub_806D864(u16 a1); +bool16 sub_806D82C(u8 id); +u16 MonTryLearningNewMove(struct Pokemon* mon, bool8); +void sub_8068AA4(void); // sets stats for deoxys +bool8 HasTwoFramesAnimation(u16 species); +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); +void RandomlyGivePartyPokerus(struct Pokemon *party); +u8 CheckPartyPokerus(struct Pokemon *party, u8 selection); +u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); +void UpdatePartyPokerusTime(u16 days); +void PartySpreadPokerus(struct Pokemon *party); +s8 GetMonFlavourRelation(struct Pokemon *mon, u8 a2); +s8 GetFlavourRelationByPersonality(u32 personality, u8 a2); +u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); +  #include "sprite.h"  void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); +void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3); +void BattleAnimateBackSprite(struct Sprite* sprite, u16 species);  #endif // GUARD_POKEMON_H diff --git a/include/pokemon_3.h b/include/pokemon_3.h new file mode 100644 index 000000000..5c9862d57 --- /dev/null +++ b/include/pokemon_3.h @@ -0,0 +1,7 @@ +#ifndef GUARD_POKEMON_3_H +#define GUARD_POKEMON_3_H + +const u8* GetTrainerClassNameFromId(u16 trainerId); +const u8* GetTrainerNameFromId(u16 trainerId); + +#endif // GUARD_POKEMON_3_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h new file mode 100644 index 000000000..b6d21823e --- /dev/null +++ b/include/pokemon_icon.h @@ -0,0 +1,12 @@ +#ifndef GUARD_POKEMON_ICON_H +#define GUARD_POKEMON_ICON_H + +const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo); +const u16 *GetValidMonIconPalettePtr(u16 speciesId); +u16 sub_80D2E84(u16 speciesId); +void sub_80D2F68(u16 iconId); +u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5); +void sub_80D2FF0(u16 iconId); +void sub_80D2EF8(struct Sprite *sprite); + +#endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_item_effects.h b/include/pokemon_item_effects.h new file mode 100644 index 000000000..505cc0f25 --- /dev/null +++ b/include/pokemon_item_effects.h @@ -0,0 +1,62 @@ +#ifndef GUARD_POKEMON_ITEM_EFFECTS +#define GUARD_POKEMON_ITEM_EFFECTS + +#include "pokemon.h" + +// TODO once pokemon item effects is decompiled +/* +struct PokemonItemEffect +{ +    //field 0 +    u8 xAtk : 4; // x1, x2, x4, x8 = xF +    u8 field_0_x10 : 1; // x10 +    u8 critRatioUp : 1; // x20 +    u8 field_0_x40 : 1; // x40 +    u8 cureInfatuation : 1; // x80 + +    /*field 1 +    u8 xSpeed : 4; // x1, x2, x4, x8 = xF +    u8 xDefense : 4; // x10, x20, x40, xF0 + +    /*field 2 +    u8 xSpAtk : 4; // x1, x2, x4, x8 = xF +    u8 xAccuracy : 4; // x10, x20, x40, xF0 + +    /*field 3 +    u8 cureConfusion : 1; // x1 +    u8 cureParalysis : 1; // x2 +    u8 cureFreeze : 1; // x4 +    u8 cureBurn : 1; // x8 +    u8 curePoison : 1; // x10 +    u8 cureSleep : 1; // x20 +    u8 field_3_x40 : 1; // x40 +    u8 cantLowerStats : 1; // x80 + +    /*field 4 +    u8 hpEv : 1; // x1 +    u8 attackEv : 1; // x2 +    u8 healHp : 1; // x4 +    u8 field_4_x8 : 1; // x8 +    u8 field_4_x10 : 1; // x10 +    u8 ppUp : 1; // x20 +    u8 levelUp : 1; // x40 +    u8 evolutionStone : 1; // x80 + +    /*field 5 +    u8 defEv:  1; // x1 +    u8 speedEv : 1; // x2 +    u8 spDefEv : 1; // x4 +    u8 spAtkEv : 1; // x8 +    u8 ppMax : 1; // x10 +    u8 field_5_x20 : 1; // x20 +    u8 field_5_x40 : 1; // x40 +    u8 field_5_x80 : 1; // x80 + +    /*field 6 +    u8 value; +}; +*/ + +bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 itemId, u8 partyId, u8 monMoveIndex, u8 a5); + +#endif // GUARD_POKEMON_ITEM_EFFECTS diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h new file mode 100644 index 000000000..49680793d --- /dev/null +++ b/include/pokemon_storage_system.h @@ -0,0 +1,8 @@ +#ifndef GUARD_POKEMON_STORAGE_SYSTEM_H +#define GUARD_POKEMON_STORAGE_SYSTEM_H + +u8* GetBoxNamePtr(u8 boxNumber); +struct BoxPokemon *GetBoxedMonPtr(u8, u8); +void SetBoxMonNickFromAnyBox(u8, u8, u8 *); + +#endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/recorded_battle.h b/include/recorded_battle.h new file mode 100644 index 000000000..6b80e220f --- /dev/null +++ b/include/recorded_battle.h @@ -0,0 +1,22 @@ +#ifndef GUARD_RECORDED_BATTLE_H +#define GUARD_RECORDED_BATTLE_H + +extern u32 gRecordedBattleRngSeed; + +void sub_8184DA4(u8 arg0); +void sub_8185F84(void); +void sub_8184E58(void); +void RecordedBattle_SetBankAction(u8 bank, u8 action); +void RecordedBattle_ClearBankAction(u8 bank, u8 bytesToClear); +void sub_8185F90(u16 arg0); +bool8 sub_8186450(void); +u8 sub_8185FAC(void); +u8 sub_8185FB8(void); +u8 MoveRecordedBattleToSaveData(void); +void sub_818603C(u8); +void sub_8185FD0(void); +void sub_8186444(void); +void sub_8185EB8(void); +u8 sub_81850DC(u8 *arg0); + +#endif // GUARD_RECORDED_BATTLE_H diff --git a/include/region_map.h b/include/region_map.h new file mode 100644 index 000000000..52e7376be --- /dev/null +++ b/include/region_map.h @@ -0,0 +1,227 @@ +#ifndef GUARD_REGION_MAP_H +#define GUARD_REGION_MAP_H + +// Exported type declarations + +enum { +    REGION_MAP_LITTLEROOT_TOWN, +    REGION_MAP_OLDALE_TOWN, +    REGION_MAP_DEWFORD_TOWN, +    REGION_MAP_LAVARIDGE_TOWN, +    REGION_MAP_FALLARBOR_TOWN, +    REGION_MAP_VERDANTURF_TOWN, +    REGION_MAP_PACIFIDLOG_TOWN, +    REGION_MAP_PETALBURG_CITY, +    REGION_MAP_SLATEPORT_CITY, +    REGION_MAP_MAUVILLE_CITY, +    REGION_MAP_RUSTBORO_CITY, +    REGION_MAP_FORTREE_CITY, +    REGION_MAP_LILYCOVE_CITY, +    REGION_MAP_MOSSDEEP_CITY, +    REGION_MAP_SOOTOPOLIS_CITY, +    REGION_MAP_EVER_GRANDE_CITY, +    REGION_MAP_ROUTE_101, +    REGION_MAP_ROUTE_102, +    REGION_MAP_ROUTE_103, +    REGION_MAP_ROUTE_104, +    REGION_MAP_ROUTE_105, +    REGION_MAP_ROUTE_106, +    REGION_MAP_ROUTE_107, +    REGION_MAP_ROUTE_108, +    REGION_MAP_ROUTE_109, +    REGION_MAP_ROUTE_110, +    REGION_MAP_ROUTE_111, +    REGION_MAP_ROUTE_112, +    REGION_MAP_ROUTE_113, +    REGION_MAP_ROUTE_114, +    REGION_MAP_ROUTE_115, +    REGION_MAP_ROUTE_116, +    REGION_MAP_ROUTE_117, +    REGION_MAP_ROUTE_118, +    REGION_MAP_ROUTE_119, +    REGION_MAP_ROUTE_120, +    REGION_MAP_ROUTE_121, +    REGION_MAP_ROUTE_122, +    REGION_MAP_ROUTE_123, +    REGION_MAP_ROUTE_124, +    REGION_MAP_ROUTE_125, +    REGION_MAP_ROUTE_126, +    REGION_MAP_ROUTE_127, +    REGION_MAP_ROUTE_128, +    REGION_MAP_ROUTE_129, +    REGION_MAP_ROUTE_130, +    REGION_MAP_ROUTE_131, +    REGION_MAP_ROUTE_132, +    REGION_MAP_ROUTE_133, +    REGION_MAP_ROUTE_134, +    REGION_MAP_UNDERWATER_124, +    REGION_MAP_UNDERWATER_125, +    REGION_MAP_UNDERWATER_126, +    REGION_MAP_UNDERWATER_127, +    REGION_MAP_UNDERWATER_128, +    REGION_MAP_GRANITE_CAVE, +    REGION_MAP_MT_CHIMNEY, +    REGION_MAP_SAFARI_ZONE, +    REGION_MAP_BATTLE_FRONTIER, +    REGION_MAP_PETALBURG_WOODS, +    REGION_MAP_RUSTURF_TUNNEL, +    REGION_MAP_ABANDONED_SHIP, +    REGION_MAP_NEW_MAUVILLE, +    REGION_MAP_METEOR_FALLS, +    REGION_MAP_METEOR_FALLS2, +    REGION_MAP_MT_PYRE, +    REGION_MAP_AQUA_HIDEOUT_OLD, +    REGION_MAP_SHOAL_CAVE, +    REGION_MAP_SEAFLOOR_CAVERN, +    REGION_MAP_UNDERWATER, +    REGION_MAP_VICTORY_ROAD, +    REGION_MAP_MIRAGE_ISLAND, +    REGION_MAP_CAVE_OF_ORIGIN, +    REGION_MAP_SOUTHERN_ISLAND, +    REGION_MAP_FIERY_PATH, +    REGION_MAP_FIERY_PATH2, +    REGION_MAP_JAGGED_PASS, +    REGION_MAP_JAGGED_PASS2, +    REGION_MAP_SEALED_CHAMBER, +    REGION_MAP_UNDERWATER_SEALED_CHAMBER, +    REGION_MAP_SCORCHED_SLAB, +    REGION_MAP_ISLAND_CAVE, +    REGION_MAP_DESERT_RUINS, +    REGION_MAP_ANCIENT_TOMB, +    REGION_MAP_INSIDE_OF_TRUCK, +    REGION_MAP_SKY_PILLAR, +    REGION_MAP_SECRET_BASE, +    REGION_MAP_NONE, +    REGION_MAP_PALLET_TOWN, +    REGION_MAP_VIRIDIAN_CITY, +    REGION_MAP_PEWTER_CITY, +    REGION_MAP_CERULEAN_CITY, +    REGION_MAP_LAVENDER_TOWN, +    REGION_MAP_VERMILION_CITY, +    REGION_MAP_CELADON_CITY, +    REGION_MAP_FUCHSIA_CITY, +    REGION_MAP_CINNABAR_ISLAND, +    REGION_MAP_INDIGO_PLATEAU, +    REGION_MAP_SAFFRON_CITY, +    REGION_MAP_ROUTE_4, +    REGION_MAP_ROUTE_10, +    REGION_MAP_ROUTE_1, +    REGION_MAP_ROUTE_2, +    REGION_MAP_ROUTE_3, +    REGION_MAP_ROUTE_4_2, +    REGION_MAP_ROUTE_5, +    REGION_MAP_ROUTE_6, +    REGION_MAP_ROUTE_7, +    REGION_MAP_ROUTE_8, +    REGION_MAP_ROUTE_9, +    REGION_MAP_ROUTE_10_2, +    REGION_MAP_ROUTE_11, +    REGION_MAP_ROUTE_12, +    REGION_MAP_ROUTE_13, +    REGION_MAP_ROUTE_14, +    REGION_MAP_ROUTE_15, +    REGION_MAP_ROUTE_16, +    REGION_MAP_ROUTE_17, +    REGION_MAP_ROUTE_18, +    REGION_MAP_ROUTE_19, +    REGION_MAP_ROUTE_20, +    REGION_MAP_ROUTE_21, +    REGION_MAP_ROUTE_22, +    REGION_MAP_ROUTE_23, +    REGION_MAP_ROUTE_24, +    REGION_MAP_ROUTE_25, +    REGION_MAP_VIRIDIAN_FOREST, +    REGION_MAP_MT_MOON, +    REGION_MAP_S_S_ANNE, +    REGION_MAP_UNDERGROUND_PATH, +    REGION_MAP_UNDERGROUND_PATH_2, +    REGION_MAP_DIGLETTS_CAVE, +    REGION_MAP_KANTO_VICTORY_ROAD, +    REGION_MAP_ROCKET_HIDEOUT, +    REGION_MAP_SILPH_CO, +    REGION_MAP_POKEMON_MANSION, +    REGION_MAP_KANTO_SAFARI_ZONE, +    REGION_MAP_POKEMON_LEAGUE, +    REGION_MAP_ROCK_TUNNEL, +    REGION_MAP_SEAFOAM_ISLANDS, +    REGION_MAP_POKEMON_TOWER, +    REGION_MAP_CERULEAN_CAVE, +    REGION_MAP_POWER_PLANT, +    REGION_MAP_ONE_ISLAND, +    REGION_MAP_TWO_ISLAND, +    REGION_MAP_THREE_ISLAND, +    REGION_MAP_FOUR_ISLAND, +    REGION_MAP_FIVE_ISLAND, +    REGION_MAP_SEVEN_ISLAND, +    REGION_MAP_SIX_ISLAND, +    REGION_MAP_KINDLE_ROAD, +    REGION_MAP_TREASURE_BEACH, +    REGION_MAP_CAPE_BRINK, +    REGION_MAP_BOND_BRIDGE, +    REGION_MAP_THREE_ISLE_PORT, +    REGION_MAP_SEVII_ISLE_6, +    REGION_MAP_SEVII_ISLE_7, +    REGION_MAP_SEVII_ISLE_8, +    REGION_MAP_SEVII_ISLE_9, +    REGION_MAP_RESORT_GORGEOUS, +    REGION_MAP_WATER_LABYRINTH, +    REGION_MAP_FIVE_ISLE_MEADOW, +    REGION_MAP_MEMORIAL_PILLAR, +    REGION_MAP_OUTCAST_ISLAND, +    REGION_MAP_GREEN_PATH, +    REGION_MAP_WATER_PATH, +    REGION_MAP_RUIN_VALLEY, +    REGION_MAP_TRAINER_TOWER, +    REGION_MAP_CANYON_ENTRANCE, +    REGION_MAP_SEVAULT_CANYON, +    REGION_MAP_TANOBY_RUINS, +    REGION_MAP_SEVII_ISLE_22, +    REGION_MAP_SEVII_ISLE_23, +    REGION_MAP_SEVII_ISLE_24, +    REGION_MAP_NAVEL_ROCK, +    REGION_MAP_MT_EMBER, +    REGION_MAP_BERRY_FOREST, +    REGION_MAP_ICEFALL_CAVE, +    REGION_MAP_ROCKET_WAREHOUSE, +    REGION_MAP_TRAINER_TOWER_2, +    REGION_MAP_DOTTED_HOLE, +    REGION_MAP_LOST_CAVE, +    REGION_MAP_PATTERN_BUSH, +    REGION_MAP_ALTERING_CAVE, +    REGION_MAP_TANOBY_CHAMBERS, +    REGION_MAP_THREE_ISLE_PATH, +    REGION_MAP_TANOBY_KEY, +    REGION_MAP_BIRTH_ISLAND, +    REGION_MAP_MONEAN_CHAMBER, +    REGION_MAP_LIPTOO_CHAMBER, +    REGION_MAP_WEEPTH_CHAMBER, +    REGION_MAP_DILFORD_CHAMBER, +    REGION_MAP_SCUFIB_CHAMBER, +    REGION_MAP_RIXY_CHAMBER, +    REGION_MAP_VIAPOIS_CHAMBER, +    REGION_MAP_EMBER_SPA, +    REGION_MAP_SPECIAL_AREA, +    REGION_MAP_AQUA_HIDEOUT, +    REGION_MAP_MAGMA_HIDEOUT, +    REGION_MAP_MIRAGE_TOWER, +    REGION_MAP_BIRTH_ISLAND_2, +    REGION_MAP_FARAWAY_ISLAND, +    REGION_MAP_ARTISAN_CAVE, +    REGION_MAP_MARINE_CAVE, +    REGION_MAP_UNDERWATER_MARINE_CAVE, +    REGION_MAP_TERRA_CAVE, +    REGION_MAP_UNDERWATER_TERRA_CAVE, +    REGION_MAP_UNDERWATER_UNK1, +    REGION_MAP_UNDERWATER_UNK2, +    REGION_MAP_DESERT_UNDERPASS, +    REGION_MAP_ALTERING_CAVE_2, +    REGION_MAP_NAVEL_ROCK2, +    REGION_MAP_TRAINER_HILL +}; + +// Exported RAM declarations + +// Exported ROM declarations +void GetMapName(u8 *, u16, u16); + +#endif //GUARD_REGION_MAP_H diff --git a/include/reshow_battle_screen.h b/include/reshow_battle_screen.h new file mode 100644 index 000000000..c22135280 --- /dev/null +++ b/include/reshow_battle_screen.h @@ -0,0 +1,7 @@ +#ifndef GUARD_RESHOW_BATTLE_SCREEN_H +#define GUARD_RESHOW_BATTLE_SCREEN_H + +void nullsub_35(void); +void ReshowBattleScreenAfterMenu(void); + +#endif // GUARD_RESHOW_BATTLE_SCREEN_H diff --git a/include/roamer.h b/include/roamer.h index af7f86e79..ba1b09b54 100644 --- a/include/roamer.h +++ b/include/roamer.h @@ -3,9 +3,15 @@  void ClearRoamerData(void);  void ClearRoamerLocationData(void); +void InitRoamer(void);  void UpdateLocationHistoryForRoamer(void);  void RoamerMoveToOtherLocationSet(void); -void RoamerMove(); +void RoamerMove(void); +bool8 IsRoamerAt(u8 mapGroup, u8 mapNum); +void CreateRoamerMonInstance(void);  u8 TryStartRoamerEncounter(void); +void UpdateRoamerHPStatus(struct Pokemon *mon); +void SetRoamerInactive(void); +void GetRoamerLocation(u8 *mapGroup, u8 *mapNum);  #endif // GUARD_ROAMER_H diff --git a/include/rom4.h b/include/rom4.h deleted file mode 100644 index 9f214cfee..000000000 --- a/include/rom4.h +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef GUARD_ROM4_H -#define GUARD_ROM4_H - -struct UnkPlayerStruct -{ -    u8 player_field_0; -    u8 player_field_1; -}; - -struct LinkPlayerMapObject -{ -    u8 active; -    u8 linkPlayerId; -    u8 mapObjId; -    u8 mode; -}; - -struct UCoords32 -{ -    u32 x, y; -}; - - -extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; - -void strange_npc_table_clear(void); -const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8); -void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); -void sub_8086230(void); -void c2_exit_to_overworld_2_switch(void); -bool32 is_c1_link_related_active(void); - -#endif //GUARD_ROM4_H diff --git a/include/rom6.h b/include/rom6.h index 15070616d..0e9927855 100644 --- a/include/rom6.h +++ b/include/rom6.h @@ -2,5 +2,6 @@  #define GUARD_ROM6_H  void sub_81357FC(u8, void(void)); +u8 GetLeadMonIndex(void);  #endif //GUARD_ROM6_H diff --git a/include/save.h b/include/save.h index e98233c67..6c1238cd2 100644 --- a/include/save.h +++ b/include/save.h @@ -76,7 +76,7 @@ u8 GetSaveValidStatus(const struct SaveSectionLocation *location);  //u8 sub_8125B88(u8 a1, u8 *data, u16 size);  u8 DoReadFlashWholeSection(u8, struct SaveSection *);  u16 CalculateChecksum(void *, u16); -//u8 HandleSavingData(u8 saveType); +u8 HandleSavingData(u8 saveType);  //u8 TrySavingData(u8 saveType);  //u8 sub_8125D80(void);  //bool8 sub_8125DA8(void); diff --git a/include/save_location.h b/include/save_location.h new file mode 100644 index 000000000..95b3a7d7d --- /dev/null +++ b/include/save_location.h @@ -0,0 +1,9 @@ +#ifndef GUARD_SAVE_LOCATION_H +#define GUARD_SAVE_LOCATION_H + +bool32 sub_81AFCEC(void); +void TrySetMapSaveWarpStatus(void); +void sub_81AFDA0(void); +void sub_81AFDD0(void); + +#endif // GUARD_SAVE_LOCATION_H diff --git a/include/script.h b/include/script.h index ec6a212bc..2b5f8c2ce 100644 --- a/include/script.h +++ b/include/script.h @@ -28,8 +28,8 @@ void StopScript(struct ScriptContext *ctx);  bool8 RunScriptCommand(struct ScriptContext *ctx);  u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr);  const u8 *ScriptPop(struct ScriptContext *ctx); -void ScriptJump(struct ScriptContext *ctx, u8 *ptr); -void ScriptCall(struct ScriptContext *ctx, u8 *ptr); +void ScriptJump(struct ScriptContext *ctx, const u8 *ptr); +void ScriptCall(struct ScriptContext *ctx, const u8 *ptr);  void ScriptReturn(struct ScriptContext *ctx);  u16 ScriptReadHalfword(struct ScriptContext *ctx);  u32 ScriptReadWord(struct ScriptContext *ctx); diff --git a/include/script_menu.h b/include/script_menu.h new file mode 100644 index 000000000..717eda041 --- /dev/null +++ b/include/script_menu.h @@ -0,0 +1,13 @@ +#ifndef GUARD_SCRIPT_MENU_H +#define GUARD_SCRIPT_MENU_H + +extern const u8 *const gUnknown_0858BAF0[9]; + +bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 var3, u8 var4); +bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 var5); +bool8 ScriptMenu_YesNo(u8 var1, u8 var2); +bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); +bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); +bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void); + +#endif //GUARD_SCRIPT_MENU_H diff --git a/include/script_movement.h b/include/script_movement.h new file mode 100644 index 000000000..4c3fa6002 --- /dev/null +++ b/include/script_movement.h @@ -0,0 +1,8 @@ +#ifndef GUARD_SCRIPT_MOVEMENT_H +#define GUARD_SCRIPT_MOVEMENT_H + +bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, const u8 *); +bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8); +void sub_80D338C(void); + +#endif // GUARD_SCRIPT_MOVEMENT_H diff --git a/include/script_pokemon_80F8.h b/include/script_pokemon_80F8.h new file mode 100644 index 000000000..8dd7ed0c0 --- /dev/null +++ b/include/script_pokemon_80F8.h @@ -0,0 +1,10 @@ +#ifndef GUARD_SCRIPTPOKE80F8_H +#define GUARD_SCRIPTPOKE80F8_H + +void ShowContestWinner(void); +u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8); +u8 ScriptGiveEgg(u16); +void CreateScriptedWildMon(u16, u8, u16); +void ScriptSetMonMoveSlot(u8, u16, u8); + +#endif diff --git a/include/script_pokemon_81B9.h b/include/script_pokemon_81B9.h new file mode 100644 index 000000000..1b8563ee6 --- /dev/null +++ b/include/script_pokemon_81B9.h @@ -0,0 +1,6 @@ +#ifndef GUARD_SCRIPTPOKE81B9_H +#define GUARD_SCRIPTPOKE81B9_H + +void sub_81B9404(void); + +#endif diff --git a/include/secret_base.h b/include/secret_base.h new file mode 100644 index 000000000..14defff26 --- /dev/null +++ b/include/secret_base.h @@ -0,0 +1,12 @@ +#ifndef GUARD_SECRET_BASE_H +#define GUARD_SECRET_BASE_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +void sub_80E9578(void); +void sub_80E980C(void); + +#endif //GUARD_SECRET_BASE_H diff --git a/include/shop.h b/include/shop.h new file mode 100644 index 000000000..d3e86408c --- /dev/null +++ b/include/shop.h @@ -0,0 +1,10 @@ +#ifndef GUARD_SHOP_H +#define GUARD_SHOP_H + +extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3]; + +void CreatePokemartMenu(const u16 *); +void CreateDecorationShop1Menu(const u16 *); +void CreateDecorationShop2Menu(const u16 *); + +#endif // GUARD_SHOP_H diff --git a/include/slot_machine.h b/include/slot_machine.h new file mode 100644 index 000000000..8334e56fc --- /dev/null +++ b/include/slot_machine.h @@ -0,0 +1,6 @@ +#ifndef GUARD_SLOT_MACHINE_H +#define GUARD_SLOT_MACHINE_H + +void PlaySlotMachine(u8, void *); + +#endif // GUARD_SLOT_MACHINE_H diff --git a/include/songs.h b/include/songs.h index afd26d683..5a1fff00c 100644 --- a/include/songs.h +++ b/include/songs.h @@ -15,8 +15,8 @@ enum      /*0x09*/ SE_KAIDAN,      /*0x0A*/ SE_DANSA,      /*0x0B*/ SE_JITENSYA, -    /*0x0C*/ SE_KOUKA_L, -    /*0x0D*/ SE_KOUKA_M, +    /*0x0C*/ SE_KOUKA_L, // Goggle told me Kouka means 'effectiveness' which makes sense, because +    /*0x0D*/ SE_KOUKA_M, // those three sounds play whenever you use a move      /*0x0E*/ SE_KOUKA_H,      /*0x0F*/ SE_BOWA2,      /*0x10*/ SE_POKE_DEAD, @@ -252,23 +252,23 @@ enum      SE_W114,      SE_W063B,      BGM_STOP = 349, -    BGM_TETSUJI, -    BGM_FIELD13, -    BGM_KACHI22, -    BGM_KACHI2, -    BGM_KACHI3, -    BGM_KACHI5, -    BGM_PCC, -    BGM_NIBI, -    BGM_SUIKUN, -    BGM_DOORO1, -    BGM_DOORO_X1, -    BGM_DOORO_X3, -    BGM_MACHI_S2, -    BGM_MACHI_S4, -    BGM_GIM, -    BGM_NAMINORI, -    BGM_DAN01, +    /*0x15E*/ BGM_TETSUJI, +    /*0x15F*/ BGM_FIELD13, +    /*0x160*/ BGM_KACHI22, +    /*0x161*/ BGM_KACHI2, +    /*0x162*/ BGM_KACHI3, +    /*0x163*/ BGM_KACHI5, +    /*0x164*/ BGM_PCC, +    /*0x165*/ BGM_NIBI, +    /*0x166*/ BGM_SUIKUN, +    /*0x167*/ BGM_DOORO1, +    /*0x168*/ BGM_DOORO_X1, +    /*0x169*/ BGM_DOORO_X3, +    /*0x16A*/ BGM_MACHI_S2, +    /*0x16B*/ BGM_MACHI_S4, +    /*0x16C*/ BGM_GIM, +    /*0x16D*/ BGM_NAMINORI, +    /*0x16E*/ BGM_DAN01,      /*0x16F*/ BGM_FANFA1,      /*0x170*/ BGM_ME_ASA,      /*0x171*/ BGM_ME_BACHI, @@ -306,31 +306,31 @@ enum      /*0x191*/ BGM_NEXTROAD,      /*0x192*/ BGM_GRANROAD,      /*0x193*/ BGM_CYCLING, -    BGM_FRIENDLY, -    BGM_MISHIRO, -    BGM_TOZAN, -    BGM_GIRLEYE, -    BGM_MINAMO, -    BGM_ASHROAD, -    BGM_EVENT0, -    BGM_DEEPDEEP, -    BGM_KACHI1, -    BGM_TITLE3, -    BGM_DEMO1, -    BGM_GIRL_SUP, -    BGM_HAGESHII, -    BGM_KAKKOII, -    BGM_KAZANBAI, -    BGM_AQA_0, -    BGM_TSURETEK, -    BGM_BOY_SUP, -    BGM_RAINBOW, -    BGM_AYASII, -    BGM_KACHI4, -    BGM_ROPEWAY, -    BGM_CASINO, -    BGM_HIGHTOWN, -    BGM_SAFARI, +    /*0x194*/ BGM_FRIENDLY, +    /*0x195*/ BGM_MISHIRO, +    /*0x196*/ BGM_TOZAN, +    /*0x197*/ BGM_GIRLEYE, +    /*0x198*/ BGM_MINAMO, +    /*0x199*/ BGM_ASHROAD, +    /*0x19A*/ BGM_EVENT0, +    /*0x19B*/ BGM_DEEPDEEP, +    /*0x19C*/ BGM_KACHI1, +    /*0x19D*/ BGM_TITLE3, +    /*0x19E*/ BGM_DEMO1, +    /*0x19F*/ BGM_GIRL_SUP, +    /*0x1A0*/ BGM_HAGESHII, +    /*0x1A1*/ BGM_KAKKOII, +    /*0x1A2*/ BGM_KAZANBAI, +    /*0x1A3*/ BGM_AQA_0, +    /*0x1A4*/ BGM_TSURETEK, +    /*0x1A5*/ BGM_BOY_SUP, +    /*0x1A6*/ BGM_RAINBOW, +    /*0x1A7*/ BGM_AYASII, +    /*0x1A8*/ BGM_KACHI4, +    /*0x1A9*/ BGM_ROPEWAY, +    /*0x1AA*/ BGM_CASINO, +    /*0x1AB*/ BGM_HIGHTOWN, +    /*0x1AC*/ BGM_SAFARI,      BGM_C_ROAD,      BGM_AJITO,      BGM_M_BOAT, @@ -359,7 +359,24 @@ enum      BGM_DAIGO,      BGM_THANKFOR,      BGM_END, -    BGM_BATTLE27, // wild +    /*0x1C9*/ BGM_BATTLE_FRONTIER, // human-readable names start here because we don't know the actual filenames +    BGM_BATTLE_ARENA, +    BGM_ME_BATTLE_POINTS, // ME_ as in messagebox? Used for KINOMI (berries) and stuff above +    BGM_ME_MATCH_CALL, +    BGM_BATTLE_PYRAMID, +    BGM_BATTLE_PYRAMID_SUMMIT, +    BGM_BATTLE_PALACE, +    BGM_FANFA_RAYQUAZA, +    BGM_BATTLE_TOWER, +    BGM_ME_BATTLE_SYMBOL, +    BGM_BATTLE_DOME_TOURNAMENT, +    BGM_BATTLE_PIKE, +    BGM_BATTLE_FACTORY, +    BGM_BATTLE_LEGENDARY, +    BGM_BATTLE_FRONTIER_BRAIN, +    BGM_BATTLE_MEW, +    BGM_BATTLE_DOME, // end of the human-readable names +    /*0x1DA*/ BGM_BATTLE27, // wild      BGM_BATTLE31, // aqua/magma grunt      BGM_BATTLE20, // trainer      BGM_BATTLE32, // gym leader @@ -369,6 +386,81 @@ enum      BGM_BATTLE35, // rival      BGM_BATTLE38, // elite four      BGM_BATTLE30, // aqua/magma leader +    /*0x1E4*/ BGM_FRLG_FOLLOW_ME, // FR/LG names not known, human-readable again! +    BGM_FRLG_GAMECORNER, +    BGM_FRLG_ROCKET_HIDEOUT, +    BGM_FRLG_GYM, +    BGM_FRLG_JIGGLYPUFF, +    BGM_FRLG_OPENING, +    BGM_FRLG_TITLE, +    BGM_FRLG_CINNABAR_ISLAND, +    BGM_FRLG_LAVENDER_TOWN, +    BGM_FRLG_HEALING_TEST, +    BGM_FRLG_BICYCLE, +    BGM_FRLG_SUSPICIOUS_EYE, +    BGM_FRLG_GIRL_EYE, +    BGM_FRLG_BOY_EYE, +    BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME, +    BGM_FRLG_VIRIDIAN_FOREST, +    BGM_FRLG_MT_MOON, +    BGM_FRLG_POKEMON_MANSION, +    BGM_FRLG_CREDITS, +    BGM_FRLG_ROUTE_1, +    BGM_FRLG_ROUTE_24, +    BGM_FRLG_ROUTE_3, +    BGM_FRLG_ROUTE_11, +    BGM_FRLG_INDIGO_PLATEAU, +    BGM_FRLG_BATTLE_LEADER, +    BGM_FRLG_BATTLE_TRAINER, +    BGM_FRLG_BATTLE_WILD_POKEMON, +    BGM_FRLG_BATTLE_CHAMPION, +    BGM_FRLG_PALLET_TOWN, +    BGM_FRLG_OAK_LAB, +    BGM_FRLG_PROF_OAK, +    BGM_FRLG_POKEMON_CENTER, +    BGM_FRLG_SS_ANNE, +    BGM_FRLG_SURF, +    BGM_FRLG_POKEMON_TOWER, +    BGM_FRLG_SILPH, +    BGM_FRLG_CERULEAN_CITY, +    BGM_FRLG_CELADON_CITY, +    BGM_FRLG_KACHI_TRAINER, // KACHI used in RS test - victory +    BGM_FRLG_KACHI_WILD_POKEMON, +    BGM_FRLG_KACHI_LEADER, +    BGM_FRLG_VERMILION_CITY, +    BGM_FRLG_VIRIDIAN_CITY, +    BGM_FRLG_RIVAL, +    BGM_FRLG_RIVAL_POSTBATTLE, +    BGM_FRLG_ME_POKEDEX_EVAL, +    BGM_FRLG_ME_KEYITEM, +    BGM_FRLG_FANFA_POKEMON_CAUGHT, +    BGM_FRLG_FANFA_TRAINERCARD_PHOTO, +    BGM_FRLG_GAMEFREAK_LOGO, +    BGM_FRLG_CAUGHT_POKEMON, +    BGM_FRLG_GAME_EXPLANATION_START, +    BGM_FRLG_GAME_EXPLANATION_MIDDLE, +    BGM_FRLG_GAME_EXPLANATION_END, +    BGM_FRLG_POKEMON_JUMP, +    BGM_FRLG_UNION_ROOM, +    BGM_FRLG_POKEMON_NETWORK_CENTER, +    BGM_FRLG_MYSTERY_GIFT, +    BGM_FRLG_DODRIO_BERRY_PICK, +    BGM_FRLG_MT_EMBER, +    BGM_FRLG_TEACHY_TV_EPISODE, +    BGM_FRLG_SEVII_ISLANDS, +    BGM_FRLG_TANOBY_RUINS, +    BGM_FRLG_ISLAND_ONE, +    BGM_FRLG_ISLAND_FOUR, +    BGM_FRLG_ISLAND_SIX, +    BGM_FRLG_FLUTE, +    BGM_FRLG_BATTLE_DEOXYS, +    BGM_FRLG_BATTLE_MEWTWO, +    BGM_FRLG_BATTLE_LEGENDARY, +    BGM_FRLG_LEADER_EYE, +    BGM_FRLG_DEOXYS_EYE, +    BGM_FRLG_TRAINER_TOWER, +    BGM_FRLG_HALL_OF_FAME_PALLET_TOWN, +    /*0x22E*/BGM_FRLG_TEACHY_TV,  };  #endif // GUARD_SONGS_H diff --git a/include/species.h b/include/species.h index 9ab0565cb..ac0797418 100644 --- a/include/species.h +++ b/include/species.h @@ -449,5 +449,6 @@ enum  };  #define NUM_SPECIES SPECIES_EGG +extern const u8 gSpeciesNames[][11];  #endif // GUARD_SPECIES_H diff --git a/include/sprite.h b/include/sprite.h index 838b0d7c0..531314079 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -212,14 +212,14 @@ struct Sprite               u16 flags_5:1;             //0x20               u16 flags_6:1;             //0x40               u16 flags_7:1;             //0x80 -    /*0x3F*/ u16 hFlip:1; -             u16 vFlip:1; -             u16 animBeginning:1; -             u16 affineAnimBeginning:1; -             u16 animEnded:1; -             u16 affineAnimEnded:1; -             u16 usingSheet:1; -             u16 flags_f:1; +    /*0x3F*/ u16 hFlip:1;               //1 +             u16 vFlip:1;               //2 +             u16 animBeginning:1;       //4 +             u16 affineAnimBeginning:1; //8 +             u16 animEnded:1;           //0x10 +             u16 affineAnimEnded:1;     //0x20 +             u16 usingSheet:1;          //0x40 +             u16 flags_f:1;             //0x80      /*0x40*/ u16 sheetTileStart; @@ -251,7 +251,7 @@ void BuildOamBuffer(void);  u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);  u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);  u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)); -u8 CreateSpriteAndAnimate(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); +u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);  void DestroySprite(struct Sprite *sprite);  void ResetOamRange(u8 a, u8 b);  void LoadOam(void); diff --git a/include/string_util.h b/include/string_util.h index 382f52251..f26646082 100644 --- a/include/string_util.h +++ b/include/string_util.h @@ -31,7 +31,7 @@ u8 *StringFillWithTerminator(u8 *dest, u16 n);  u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n);  u32 StringLength_Multibyte(u8 *str);  u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color); -bool32 sub_8009228(u8 *str); +bool32 IsStringJapanese(u8 *str);  bool32 sub_800924C(u8 *str, s32 n);  u8 GetExtCtrlCodeLength(u8 code);  static const u8 *SkipExtCtrlCode(const u8 *s); diff --git a/include/strings.h b/include/strings.h new file mode 100644 index 000000000..191b1809a --- /dev/null +++ b/include/strings.h @@ -0,0 +1,74 @@ +#ifndef GUARD_STRINGS_H +#define GUARD_STRINGS_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +extern const u8 gText_FromSpace[]; +extern const u8 gText_Lv50[]; +extern const u8 gText_OpenLevel[]; +extern const u8 gText_Mom[]; +extern const u8 gText_Dad[]; +extern const u8 gText_Cool[]; +extern const u8 gText_Beauty[]; +extern const u8 gText_Cute[]; +extern const u8 gText_Smart[]; +extern const u8 gText_Tough[]; +extern const u8 gText_Single[]; +extern const u8 gText_Double[]; +extern const u8 gText_Spicy2[]; +extern const u8 gText_Dry2[]; +extern const u8 gText_Sweet2[]; +extern const u8 gText_Bitter2[]; +extern const u8 gText_Sour2[]; +extern const u8 gText_Excellent[]; +extern const u8 gText_VeryGood[]; +extern const u8 gText_Good[]; +extern const u8 gText_SoSo[]; +extern const u8 gText_Bad[]; +extern const u8 gText_TheWorst[]; +extern const u8 gText_Slots[]; +extern const u8 gText_Roulette[]; +extern const u8 gText_Jackpot[]; +extern const u8 gText_First[]; +extern const u8 gText_Second[]; +extern const u8 gText_Third[]; +extern const u8 gText_NoDecorations[]; +extern const u8 gText_NoDecorationsInUse[]; +extern const u8 gText_Exit[]; +extern const u8 gText_Cancel[]; +extern const u8 gText_Color161Shadow161[]; +extern const u8 gText_GoBackPrevMenu[]; +extern const u8 gText_CantPlaceInRoom[]; +extern const u8 gText_NoMoreDecorations[]; +extern const u8 gText_NoMoreDecorations2[]; +extern const u8 gText_InUseAlready[]; +extern const u8 gText_CancelDecorating[]; +extern const u8 gText_PlaceItHere[]; +extern const u8 gText_CantBePlacedHere[]; +extern const u8 gText_DecorationReturnedToPC[]; +extern const u8 gText_StopPuttingAwayDecorations[]; +extern const u8 gText_ReturnDecorationToPC[]; +extern const u8 gText_NoDecorationHere[]; +extern const u8 gText_DecorationWillBeDiscarded[]; +extern const u8 gText_CantThrowAwayInUse[]; +extern const u8 gText_DecorationThrownAway[]; +extern const u8 gText_Desk[]; +extern const u8 gText_Chair[]; +extern const u8 gText_Plant[]; +extern const u8 gText_Ornament[]; +extern const u8 gText_Mat[]; +extern const u8 gText_Poster[]; +extern const u8 gText_PutOutSelectedDecorItem[]; +extern const u8 gText_StoreChosenDecorInPC[]; +extern const u8 gText_ThrowAwayUnwantedDecors[]; +extern const u8 gText_Doll[]; +extern const u8 gText_Cushion[]; +extern const u8 gText_Decorate[]; +extern const u8 gText_PutAway[]; +extern const u8 gText_Toss2[]; + +#endif //GUARD_STRINGS_H diff --git a/include/text.h b/include/text.h index dba409f37..594661717 100644 --- a/include/text.h +++ b/include/text.h @@ -65,54 +65,67 @@  #define CHAR_x              0xEC  #define CHAR_y              0xED  #define CHAR_z              0xEE +#define CHAR_SPECIAL_F9     0xF9  #define CHAR_COLON          0xF0  #define CHAR_PROMPT_SCROLL  0xFA // waits for button press and scrolls dialog  #define CHAR_PROMPT_CLEAR   0xFB // waits for button press and clears dialog  #define EXT_CTRL_CODE_BEGIN 0xFC // extended control code  #define PLACEHOLDER_BEGIN   0xFD // string placeholder  #define CHAR_NEWLINE        0xFE -#define EOS 0xFF // end of string +#define EOS                 0xFF // end of string + +#define TEXT_COLOR_TRANSPARENT  0x0 +#define TEXT_COLOR_WHITE        0x1 +#define TEXT_COLOR_DARK_GREY    0x2 + +// battle placeholders are located in battle_message.h  #define EXT_CTRL_CODE_JPN   0x15  #define EXT_CTRL_CODE_ENG   0x16  #define NUM_TEXT_PRINTERS 32 +struct TextPrinterSubStruct +{ +    u8 font_type:4;  // 0x14 +    u8 font_type_upper:1; +    u8 font_type_5:3; +    u8 field_1:5; +    u8 field_1_upmid:2; +    u8 field_1_top:1; +    u8 frames_visible_counter; +    u8 field_3; +    u8 field_4; // 0x18 +    u8 field_5; +    u8 field_6; +    u8 active; +}; + +struct TextSubPrinter // TODO: Better name +{ +    const u8* current_text_offset; +    u8 windowId; +    u8 fontId; +    u8 x; +    u8 y; +    u8 currentX;        // 0x8 +    u8 currentY; +    u8 letterSpacing; +    u8 lineSpacing; +    u8 fontColor_l:4;   // 0xC +    u8 fontColor_h:4; +    u8 bgColor:4; +    u8 shadowColor:4; +}; +  struct TextPrinter  { -    struct TextSubPrinter {     // TODO: Better name -        u8* current_text_offset; -        u8 windowId; -        u8 fontId; -        u8 x; -        u8 y; -        u8 currentX;        // 0x8 -        u8 currentY; -        u8 letterSpacing; -        u8 lineSpacing; -        u8 fontColor_l:4;   // 0xC -        u8 fontColor_h:4; -        u8 bgColor:4; -        u8 shadowColor:4; -    } subPrinter; +    struct TextSubPrinter subPrinter;      void (*callback)(struct TextSubPrinter *, u16); // 0x10      union { -        struct TextPrinterSubStruct -        { -            u8 font_type:4;  // 0x14 -            u8 font_type_upper:4; -            u8 field_1:5; -            u8 field_1_upmid:2; -            u8 field_1_top:1; -            u8 frames_visible_counter; -            u8 field_3; -            u8 field_4; // 0x18 -            u8 field_5; -            u8 field_6; -            u8 active; -        } sub; +        struct TextPrinterSubStruct sub;          u8 sub_fields[8];      } sub_union; @@ -138,6 +151,8 @@ struct FontInfo      u8 shadowColor:4;  }; +extern const struct FontInfo *gFonts; +  struct GlyphWidthFunc  {      u32 font_id; @@ -151,6 +166,15 @@ struct KeypadIcon      u8 height;  }; +typedef struct { +    u8 flag_0:1; +    u8 flag_1:1; +    u8 flag_2:1; +    u8 flag_3:1; +} TextFlags; + +extern TextFlags gTextFlags; +  struct __attribute__((packed)) TextColor  {      u8 fgColor; @@ -163,9 +187,16 @@ extern u8 gStringVar2[];  extern u8 gStringVar3[];  extern u8 gStringVar4[]; +u8 gUnknown_03002F84; +u8 gUnknown_03002F90[0x20]; +u8 gUnknown_03002FB0[0x20]; +u8 gUnknown_03002FD0[0x20]; +u8 gUnknown_03002FF0[0x20]; +u8 gGlyphDimensions[0x2]; +  void SetFontsPointer(const struct FontInfo *fonts);  void DeactivateAllTextPrinters(void); -u16 PrintTextOnWindow(u8 windowId, u8 fontId, u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16)); +u16 PrintTextOnWindow(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16));  bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*callback)(struct TextSubPrinter *, u16));  void RunTextPrinters(void);  bool16 IsTextPrinterActive(u8 id); @@ -191,8 +222,8 @@ void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter);  void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter);  void TextPrinterClearDownArrow(struct TextPrinter *textPrinter);  bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter); -bool8 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter); -bool8 TextPrinterWait(struct TextPrinter *textPrinter); +bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter); +bool16 TextPrinterWait(struct TextPrinter *textPrinter);  void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *counter, u8 *yCoordIndex);  u16 RenderText(struct TextPrinter *textPrinter);  u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing); diff --git a/include/tilesets.h b/include/tilesets.h new file mode 100644 index 000000000..70609c046 --- /dev/null +++ b/include/tilesets.h @@ -0,0 +1,13 @@ +#ifndef GUARD_tilesets_H +#define GUARD_tilesets_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations + +extern struct Tileset *gTilesetPointer_SecretBase; +extern struct Tileset *gTilesetPointer_SecretBaseRedCave; + +#endif //GUARD_tilesets_H diff --git a/include/trader.h b/include/trader.h new file mode 100644 index 000000000..71fd1f7c2 --- /dev/null +++ b/include/trader.h @@ -0,0 +1,11 @@ +// +// Created by scott on 10/21/2017. +// + +#ifndef GUARD_TRADER_H +#define GUARD_TRADER_H + +void sub_8133DA0(u8 taskId); +void sub_8133E1C(u8 taskId); + +#endif //GUARD_TRADER_H diff --git a/include/trainer_see.h b/include/trainer_see.h index 3f39783b8..ab035d9f8 100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -2,6 +2,7 @@  #define GUARD_TRAINER_SEE_H  void sub_80B4578(struct MapObject *); +u8 sub_80B47BC(void);  void sub_8155D78(struct MapObject *);  #endif //GUARD_TRAINER_SEE_H diff --git a/include/tv.h b/include/tv.h new file mode 100644 index 000000000..172754ae0 --- /dev/null +++ b/include/tv.h @@ -0,0 +1,16 @@ +#ifndef GUARD_TV_H +#define GUARD_TV_H + +extern u8 *const gTVStringVarPtrs[3]; + +void ClearTVShowData(void); +void PutPokemonTodayCaughtOnAir(void); +u32 GetPlayerIDAsU32(void); +bool8 GetPriceReduction(u8 newsKind); +u8 GetRibbonCount(struct Pokemon *pokemon); +void TV_PutSecretBaseVisitOnTheAir(void); +void sub_80EE184(void); +void sub_80F14F8(TVShow *shows); +size_t sub_80EF370(int value); + +#endif //GUARD_TV_H diff --git a/include/unknown_task.h b/include/unknown_task.h index f59ca9ac3..9c6968c30 100644 --- a/include/unknown_task.h +++ b/include/unknown_task.h @@ -2,10 +2,21 @@  #define GUARD_unknown_task_H  // Exported type declarations +struct UnknownTaskStruct +{ +    volatile void *dest; +    u32 control; +    u8 unk8; +    u8 unk9; +}; + +extern struct UnknownTaskStruct gUnknown_0831AC70;  // Exported RAM declarations  // Exported ROM declarations  void remove_some_task(void); +void sub_80BA038(struct UnknownTaskStruct arg0); +void sub_80BA0A8(void); -#endif //GUARD_unknown_task_H +#endif // GUARD_unknown_task_H diff --git a/include/vars.h b/include/vars.h index 7c0edeb77..67c0b67fc 100644 --- a/include/vars.h +++ b/include/vars.h @@ -53,4 +53,14 @@  #define VAR_0x40BC                 0x40BC  #define VAR_0x40C2                 0x40C2 +#define VAR_FRONTIER_FACILITY      0x40CF + +#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_DAILY_BP               0x40F1 +  #endif // GUARD_VARS_H diff --git a/include/walda_phrase.h b/include/walda_phrase.h new file mode 100644 index 000000000..3d7701123 --- /dev/null +++ b/include/walda_phrase.h @@ -0,0 +1,8 @@ +#ifndef GUARD_WALDA_PHRASE_H +#define GUARD_WALDA_PHRASE_H + +u16 TryBufferWaldaPhrase(void); +void DoWaldaNamingScreen(void); +u16 TryGetWallpaperWithWaldaPhrase(void); + +#endif // GUARD_WALDA_PHRASE_H diff --git a/include/window.h b/include/window.h index e8af82e81..b630cd316 100644 --- a/include/window.h +++ b/include/window.h @@ -43,7 +43,7 @@ struct Window  bool16 InitWindows(const struct WindowTemplate *templates);  u16 AddWindow(const struct WindowTemplate *template); -int AddWindowWithoutTileMap(struct WindowTemplate *template); +int AddWindowWithoutTileMap(const struct WindowTemplate *template);  void RemoveWindow(u8 windowId);  void FreeAllWindowBuffers(void);  void CopyWindowToVram(u8 windowId, u8 mode); @@ -55,7 +55,7 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height);  void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height);  void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight);  void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -void CopyToWindowPixelBuffer(u8 windowId, u8 *src, u16 size, u16 tileOffset); +void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset);  void FillWindowPixelBuffer(u8 windowId, u8 fillValue);  void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue);  void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8)); | 
