diff --git a/include/dungeon.h b/include/dungeon.h index 6446bc398..e57af204a 100644 --- a/include/dungeon.h +++ b/include/dungeon.h @@ -3,31 +3,6 @@ #include "structs/str_dungeon.h" -// size: 0x10 -typedef struct DungeonDataEntry -{ - /* 0x0 */ bool8 stairDirectionUp; - // If enabled, enemies will evolve when a team member is KOed (and doesn't revive) if their evolution spawns on the floor. - // False for all dungeons, but the code still works if this flag is enabled. - /* 0x1 */ bool8 enemiesEvolveWhenKOed; - /* 0x2 */ bool8 recruitingEnabled; - /* 0x3 */ s8 rescuesAllowed; - /* 0x4 */ u8 maxItemsAllowed; - /* 0x5 */ u8 maxPartyMembers; - /* 0x6 */ bool8 levelResetTo1; - /* 0x7 */ bool8 keepMoney; - /* 0x8 */ bool8 leaderCanSwitch; - /* 0x9 */ bool8 hasCheckpoint; - /* 0xA */ bool8 enterWithoutGameSave; // If false, the dungeon will force a quicksave before entering. - /* 0xB */ u8 HMMask; // HM mask for dungeon entry requirements (Fly, Dive, Waterfall, Surf, Water). - /* 0xC */ s16 turnLimit; - // The chance that a wild PokĂ©mon's moveRandomly flag will be set when spawning, - // causing them to move randomly inside a room instead of exploring rooms. - /* 0xE */ s16 randomMovementChance; -} DungeonDataEntry; - -extern const DungeonDataEntry gDungeons[]; - s32 GetDungeonFloorCount(u8 dungeon); const u8 *GetDungeonName1(u8 dungeon); bool8 IsStairDirectionUp(u8 dungeon); diff --git a/include/dungeon_data.h b/include/dungeon_data.h new file mode 100644 index 000000000..868c1e120 --- /dev/null +++ b/include/dungeon_data.h @@ -0,0 +1,61 @@ +#ifndef GUARD_DUNGEON_DATA_H +#define GUARD_DUNGEON_DATA_H + +#include "exclusive_pokemon.h" +#include "friend_area.h" +#include "constants/type.h" +#include "constants/friend_area.h" +#include "constants/iq_skill.h" +#include "constants/tactic.h" +#include "constants/dungeon.h" +#include "constants/item.h" + +// size: 0x10 +typedef struct DungeonDataEntry +{ + /* 0x0 */ bool8 stairDirectionUp; + // If enabled, enemies will evolve when a team member is KOed (and doesn't revive) if their evolution spawns on the floor. + // False for all dungeons, but the code still works if this flag is enabled. + /* 0x1 */ bool8 enemiesEvolveWhenKOed; + /* 0x2 */ bool8 recruitingEnabled; + /* 0x3 */ s8 rescuesAllowed; + /* 0x4 */ u8 maxItemsAllowed; + /* 0x5 */ u8 maxPartyMembers; + /* 0x6 */ bool8 levelResetTo1; + /* 0x7 */ bool8 keepMoney; + /* 0x8 */ bool8 leaderCanSwitch; + /* 0x9 */ bool8 hasCheckpoint; + /* 0xA */ bool8 enterWithoutGameSave; // If false, the dungeon will force a quicksave before entering. + /* 0xB */ u8 HMMask; // HM mask for dungeon entry requirements (Fly, Dive, Waterfall, Surf, Water). + /* 0xC */ s16 turnLimit; + // The chance that a wild Pokémon's moveRandomly flag will be set when spawning, + // causing them to move randomly inside a room instead of exploring rooms. + /* 0xE */ s16 randomMovementChance; +} DungeonDataEntry; + +extern const DungeonDataEntry gDungeons[]; +extern const u8 gInvalidDungeonIDs[11]; +extern const u8 gInvalidItemIDs[16]; +extern const bool8 gTacticsTargetLeader[NUM_TACTICS]; +extern const s16 gReqTacticLvls[NUM_TACTICS]; +extern const s32 gReqIQSkillPts[NUM_IQ_SKILLS]; +extern const s32 gUnknown_810A3F0[100]; +extern const s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS]; +extern const s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS]; +extern const FriendAreaSettings gFriendAreaSettings[NUM_FRIEND_AREAS]; +extern const s16 gUnknown_810AC60; +extern const s16 gUnknown_810AC62; +extern const s16 gUnknown_810AC64; +extern const s16 gUnknown_810AC66; +extern const s16 gUnknown_810AC68; +extern const u8 gUnknown_810AC6A[NUM_TYPES]; +extern const bool8 gIsTypePhysicalTable[NUM_TYPES]; +extern const s32 gUnknown_810AC90[10]; +extern const s16 gFrenzyPlantIQReq; +extern const s16 gHydroCannonIQReq; +extern const s16 gBlastBurnIQReq; +extern const s16 gVoltTackleIQReq; +extern const u8 gDungeonWaterType[76]; +extern const struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON]; + +#endif // GUARD_DUNGEON_DATA_H diff --git a/ld_script.txt b/ld_script.txt index 2e1c0259e..8a01f11ab 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -577,11 +577,7 @@ SECTIONS { src/code_80972F4.o(.rodata); src/code_8097504.o(.rodata); data/data_8109D10.o(.rodata); - src/pokemon_3.o(.rodata); - src/items.o(.rodata); - src/code_8048480.o(.rodata); - src/friend_area.o(.rodata); - src/dungeon_map_access.o(.rodata); + src/dungeon_data.o(.rodata); src/exclusive_pokemon.o(.rodata); src/rescue_team_info.o(.rodata); src/strings.o(.rodata); diff --git a/src/code_8048480.c b/src/code_8048480.c index bfbe110db..dd54d2df0 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -31,8 +31,7 @@ #include "dungeon_menu_moves.h" #include "dungeon_misc.h" #include "code_803E724.h" - -extern s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS]; +#include "dungeon_data.h" extern u8 *gUnknown_80F89F4[]; extern u8 *gUnknown_80FB580[]; @@ -66,8 +65,6 @@ extern u8 *gUnknown_80FECA0[]; extern u8 *gItemStickyDoesntWorkText[]; extern u8 *gUnknown_80F9BD8[]; -#include "data/code_8048480.h" - extern void sub_8078B5C(Entity *, Entity *, u32, u32, u32); extern void sub_8051E7C(Entity *pokemon); extern void sub_8045BF8(u8 *, Item *); diff --git a/src/data/code_8048480.h b/src/data/code_8048480.h deleted file mode 100644 index 736cf6472..000000000 --- a/src/data/code_8048480.h +++ /dev/null @@ -1,21 +0,0 @@ -const s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS] = -{ - [TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - [TYPE_NORMAL] = {0x00, 0x3c, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x19, 0x19, 0x19}, - [TYPE_FIRE] = {0x00, 0x19, 0x3c, 0x1e, 0x14, 0x19, 0x14, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x14}, - [TYPE_WATER] = {0x00, 0x19, 0x14, 0x3c, 0x1e, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14}, - [TYPE_GRASS] = {0x00, 0x19, 0x1e, 0x14, 0x3c, 0x14, 0x1e, 0x19, 0x1e, 0x14, 0x1e, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19}, - [TYPE_ELECTRIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14}, - [TYPE_ICE] = {0x00, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x1e}, - [TYPE_FIGHTING] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x1e, 0x1e, 0x14, 0x14, 0x19, 0x19, 0x14, 0x19}, - [TYPE_POISON] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x14, 0x3c, 0x1e, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19}, - [TYPE_GROUND] = {0x00, 0x19, 0x19, 0x1e, 0x1e, 0x05, 0x1e, 0x19, 0x14, 0x3c, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x19}, - [TYPE_FLYING] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x1e, 0x1e, 0x14, 0x19, 0x05, 0x3c, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19}, - [TYPE_PSYCHIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x1e, 0x19, 0x1e, 0x19}, - [TYPE_BUG] = {0x00, 0x19, 0x1e, 0x19, 0x14, 0x19, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19}, - [TYPE_ROCK] = {0x00, 0x14, 0x14, 0x1e, 0x1e, 0x19, 0x19, 0x1e, 0x14, 0x1e, 0x14, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e}, - [TYPE_GHOST] = {0x00, 0x05, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x14, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x3c, 0x19, 0x1e, 0x19}, - [TYPE_DRAGON] = {0x00, 0x19, 0x14, 0x14, 0x14, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19}, - [TYPE_DARK] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x05, 0x1e, 0x19, 0x14, 0x19, 0x3c, 0x19}, - [TYPE_STEEL] = {0x00, 0x14, 0x1e, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x05, 0x1e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x3c}, -}; diff --git a/src/data/friend_area_settings.h b/src/data/friend_area_settings.h deleted file mode 100644 index 4a1bafd5f..000000000 --- a/src/data/friend_area_settings.h +++ /dev/null @@ -1,293 +0,0 @@ -static const FriendAreaSettings sFriendAreaSettings[NUM_FRIEND_AREAS] = // 810AA90 -{ - [FRIEND_AREA_NONE] = { - .num_pokemon = 0, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 0, - }, - [BOUNTIFUL_SEA] = { - .num_pokemon = 9, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 5500, - }, - [TREASURE_SEA] = { - .num_pokemon = 10, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 4500, - }, - [SERENE_SEA] = { - .num_pokemon = 4, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 8000, - }, - [DEEP_SEA_FLOOR] = { - .num_pokemon = 12, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 5500, - }, - [DEEP_SEA_CURRENT] = { - .num_pokemon = 1, - .unlock_condition = UNLOCK_LEGENDARY_REQUEST, - .price = 0, - }, - [SEAFLOOR_CAVE] = { - .num_pokemon = 1, - .unlock_condition = UNLOCK_LEGENDARY_REQUEST, - .price = 0, - }, - [SHALLOW_BEACH] = { - .num_pokemon = 5, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 5000, - }, - [MT_DEEPGREEN] = { - .num_pokemon = 12, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 130, - }, - [MT_CLEFT] = { - .num_pokemon = 9, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 5000, - }, - [MT_MOONVIEW] = { - .num_pokemon = 6, - .unlock_condition = UNLOCK_WONDER_MAIL, - .price = 0, - }, - [RAINBOW_PEAK] = { - .num_pokemon = 1, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 6500, - }, - [WILD_PLAINS] = { - .num_pokemon = 13, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 100, - }, - [BEAU_PLAINS] = { - .num_pokemon = 12, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 600, - }, - [SKY_BLUE_PLAINS] = { - .num_pokemon = 13, - .unlock_condition = UNLOCK_WONDER_MAIL, - .price = 0, - }, - [SAFARI] = { - .num_pokemon = 15, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 700, - }, - [SCORCHED_PLAINS] = { - .num_pokemon = 10, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 5000, - }, - [SACRED_FIELD] = { - .num_pokemon = 3, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 6500 - }, - [MIST_RISE_FOREST] = { - .num_pokemon = 14, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 150 - }, - [FLYAWAY_FOREST] = { - .num_pokemon = 12, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 550 - }, - [OVERGROWN_FOREST] = { - .num_pokemon = 9, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 600 - }, - [ENERGETIC_FOREST] = { - .num_pokemon = 15, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 5000 - }, - [MUSHROOM_FOREST] = { - .num_pokemon = 7, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 500 - }, - [HEALING_FOREST] = { - .num_pokemon = 1, - .unlock_condition = UNLOCK_LEGENDARY_REQUEST, - .price = 0 - }, - [TRANSFORM_FOREST] = { - .num_pokemon = 6, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 500 - }, - [SECRETIVE_FOREST] = { - .num_pokemon = 9, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 6500 - }, - [RUB_A_DUB_RIVER] = { - .num_pokemon = 7, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 500 - }, - [TADPOLE_POND] = { - .num_pokemon = 9, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 500 - }, - [TURTLESHELL_POND] = { - .num_pokemon = 10, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 5500 - }, - [MYSTIC_LAKE] = { - .num_pokemon = 4, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 2500 - }, - [WATERFALL_LAKE] = { - .num_pokemon = 4, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 3500 - }, - [PEANUT_SWAMP] = { - .num_pokemon = 7, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 2500 - }, - [POISON_SWAMP] = { - .num_pokemon = 6, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 8500 - }, - [ECHO_CAVE] = { - .num_pokemon = 11, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 7500 - }, - [CRYPTIC_CAVE] = { - .num_pokemon = 1, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 6500 - }, - [DRAGON_CAVE] = { - .num_pokemon = 3, - .unlock_condition = UNLOCK_WONDER_MAIL, - .price = 0 - }, - [BOULDER_CAVE] = { - .num_pokemon = 4, - .unlock_condition = UNLOCK_WONDER_MAIL, - .price = 0 - }, - [JUNGLE] = { - .num_pokemon = 13, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 800 - }, - [DECREPIT_LAB] = { - .num_pokemon = 7, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 1000 - }, - [MT_DISCIPLINE] = { - .num_pokemon = 11, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 1200 - }, - [THUNDER_MEADOW] = { - .num_pokemon = 11, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 1000 - }, - [POWER_PLANT] = { - .num_pokemon = 6, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 600 - }, - [CRATER] = { - .num_pokemon = 7, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 7500 - }, - [FURNACE_DESERT] = { - .num_pokemon = 7, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 8500 - }, - [AGED_CHAMBER_AN] = { - .num_pokemon = 14, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 5500 - }, - [AGED_CHAMBER_O_EXCLAIM] = { - .num_pokemon = 14, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 5500 - }, - [ANCIENT_RELIC] = { - .num_pokemon = 6, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 8000 - }, - [DARKNESS_RIDGE] = { - .num_pokemon = 13, - .unlock_condition = UNLOCK_LEGENDARY_REQUEST, - .price = 0 - }, - [FRIGID_CAVERN] = { - .num_pokemon = 7, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 9000 - }, - [ICE_FLOE_BEACH] = { - .num_pokemon = 5, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 9500 - }, - [VOLCANIC_PIT] = { - .num_pokemon = 1, - .unlock_condition = UNLOCK_LEGENDARY_REQUEST, - .price = 0 - }, - [STRATOS_LOOKOUT] = { - .num_pokemon = 1, - .unlock_condition = UNLOCK_LEGENDARY_REQUEST, - .price = 0 - }, - [RAVAGED_FIELD] = { - .num_pokemon = 5, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 1000 - }, - [MAGNETIC_QUARRY] = { - .num_pokemon = 3, - .unlock_condition = UNLOCK_SHOP_STORY, - .price = 1000 - }, - [LEGENDARY_ISLAND] = { - .num_pokemon = 3, - .unlock_condition = UNLOCK_LEGENDARY_REQUEST, - .price = 7500 - }, - [SOUTHERN_ISLAND] = { - .num_pokemon = 2, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 9500 - }, - [ENCLOSED_ISLAND] = { - .num_pokemon = 1, - .unlock_condition = UNLOCK_LEGENDARY_REQUEST, - .price = 0 - }, - [FINAL_ISLAND] = { - .num_pokemon = 1, - .unlock_condition = UNLOCK_SHOP_POST_GAME, - .price = 8500 - }, -}; \ No newline at end of file diff --git a/src/data/items.h b/src/data/items.h deleted file mode 100644 index 2a2055bba..000000000 --- a/src/data/items.h +++ /dev/null @@ -1,37 +0,0 @@ -// LUT for money item stack size -> money amount -// NDS=020C359C -const s32 gUnknown_810A3F0[100] = { - 4, 6, 10, 14, 22, 26, 34, 38, 46, 58, - 62, 74, 82, 86, 94, 106, 118, 122, 134, 142, - 146, 158, 166, 178, 194, 202, 206, 214, 218, 226, - 254, 262, 274, 278, 298, 302, 314, 326, 334, 346, - 358, 362, 382, 386, 394, 398, 422, 446, 454, 458, - 466, 478, 482, 502, 514, 526, 538, 542, 554, 562, - 566, 586, 614, 622, 626, 634, 662, 674, 694, 698, - 706, 718, 734, 746, 758, 768, 778, 794, 802, 818, - 838, 842, 862, 866, 878, 886, 898, 914, 922, 926, - 934, 958, 974, 982, 998, 1000, 1100, 1300, 1500, 20000}; - - -const s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS] = -{ - [TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - [TYPE_NORMAL] = {0x00, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03}, - [TYPE_FIRE] = {0x00, 0x03, 0x07, 0x04, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x03, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x02}, - [TYPE_WATER] = {0x00, 0x03, 0x02, 0x07, 0x04, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02}, - [TYPE_GRASS] = {0x00, 0x03, 0x04, 0x02, 0x07, 0x02, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03}, - [TYPE_ELECTRIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02}, - [TYPE_ICE] = {0x00, 0x03, 0x04, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x04}, - [TYPE_FIGHTING] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x04, 0x04, 0x02, 0x02, 0x03, 0x03, 0x02, 0x03}, - [TYPE_POISON] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x07, 0x04, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03}, - [TYPE_GROUND] = {0x00, 0x03, 0x03, 0x04, 0x04, 0x01, 0x04, 0x03, 0x02, 0x07, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03}, - [TYPE_FLYING] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x04, 0x04, 0x02, 0x03, 0x01, 0x07, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03}, - [TYPE_PSYCHIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03}, - [TYPE_BUG] = {0x00, 0x03, 0x04, 0x03, 0x02, 0x03, 0x03, 0x02, 0x03, 0x02, 0x04, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03}, - [TYPE_ROCK] = {0x00, 0x02, 0x02, 0x04, 0x04, 0x03, 0x03, 0x04, 0x02, 0x04, 0x02, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04}, - [TYPE_GHOST] = {0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x07, 0x03, 0x04, 0x03}, - [TYPE_DRAGON] = {0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03}, - [TYPE_DARK] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x01, 0x04, 0x03, 0x02, 0x03, 0x07, 0x03}, - [TYPE_STEEL] = {0x00, 0x02, 0x04, 0x03, 0x02, 0x03, 0x02, 0x04, 0x01, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07}, - -}; diff --git a/src/data/pokemon_3.h b/src/data/pokemon_3.h deleted file mode 100644 index 0455b84b0..000000000 --- a/src/data/pokemon_3.h +++ /dev/null @@ -1,97 +0,0 @@ -const u8 gInvalidDungeonIDs[11] = -{ - DUNGEON_BOSS_3, - DUNGEON_BOSS_4, - DUNGEON_BOSS_9, - DUNGEON_WONDROUS_SEA, - DUNGEON_AUTOPILOT, - DUNGEON_D50, - DUNGEON_D51, - DUNGEON_D54, - DUNGEON_POISON_MAZE, - DUNGEON_D61, - DUNGEON_OUT_ON_RESCUE -}; - -// NDS=020C3448 -const u8 gInvalidItemIDs[0x10] = -{ - ITEM_G_MACHINE_6, - ITEM_G_MACHINE_7, - ITEM_G_MACHINE_8, - ITEM_TM_SPIN_SLASH, - ITEM_SWITCH_BOX, - ITEM_ALERT_SPECS, - ITEM_POSSESS_ORB, - ITEM_REVIVER_ORB, - ITEM_TM_EXCAVATE, - ITEM_TOSS_ORB, - ITEM_RING_D, - ITEM_RING_E, - ITEM_RING_F, - ITEM_OBSERVER_ORB, - ITEM_BEATUP_ORB, - NUMBER_OF_ITEM_IDS -}; - -const bool8 gTacticsTargetLeader[NUM_TACTICS] = -{ - [TACTIC_LETS_GO_TOGETHER] = TRUE, - [TACTIC_GO_THE_OTHER_WAY] = FALSE, - [TACTIC_GO_AFTER_FOES] = FALSE, - [TACTIC_AVOID_THE_FIRST_HIT] = FALSE, - [TACTIC_ALL_FOR_ONE] = TRUE, - [TACTIC_GROUP_SAFETY] = TRUE, - [TACTIC_AVOID_TROUBLE] = TRUE, - [TACTIC_BE_PATIENT] = TRUE, - [TACTIC_KEEP_YOUR_DISTANCE] = TRUE, - [TACTIC_WAIT_THERE] = FALSE, - [TACTIC_GET_AWAY] = TRUE, - [TACTIC_UNUSED] = FALSE -}; - - -const s16 gReqTacticLvls[NUM_TACTICS] = -{ - [TACTIC_LETS_GO_TOGETHER] = 1, - [TACTIC_GO_THE_OTHER_WAY] = 25, - [TACTIC_GO_AFTER_FOES] = 1, - [TACTIC_AVOID_THE_FIRST_HIT] = 1, - [TACTIC_ALL_FOR_ONE] = 999, - [TACTIC_GROUP_SAFETY] = 999, - [TACTIC_AVOID_TROUBLE] = 35, - [TACTIC_BE_PATIENT] = 40, - [TACTIC_KEEP_YOUR_DISTANCE] = 20, - [TACTIC_WAIT_THERE] = 15, - [TACTIC_GET_AWAY] = 10, - [TACTIC_UNUSED] = 999, -}; - - -const s32 gReqIQSkillPts[NUM_IQ_SKILLS] = -{ - [IQ_NONE] = 9999, - [IQ_TYPE_ADVANTAGE_MASTER] = 105, - [IQ_ITEM_CATCHER] = 1, - [IQ_COURSE_CHECKER] = 1, - [IQ_SURE_HIT_ATTACKER] = 500, - [IQ_QUICK_DODGER] = 100, - [IQ_PP_CHECKER] = 2, - [IQ_NONTRAITOR] = 40, - [IQ_STATUS_CHECKER] = 25, - [IQ_EXP_GO_GETTER] = 200, - [IQ_EFFICIENCY_EXPERT] = 10, - [IQ_WEAK_TYPE_PICKER] = 125, - [IQ_ALL_TERRAIN_HIKER] = 400, - [IQ_SUPER_MOBILE] = 990, - [IQ_TRAP_AVOIDER] = 140, - [IQ_HOUSE_AVOIDER] = 800, - [IQ_ENERGY_SAVER] = 250, - [IQ_NONSLEEPER] = 160, - [IQ_SELF_CURER] = 70, - [IQ_TRAP_SEER] = 600, - [IQ_LAVA_EVADER] = 300, - [IQ_DEDICATED_TRAVELER] = 1, - [IQ_ITEM_MASTER] = 1, - [IQ_EXCLUSIVE_MOVE_USER] = 1, -}; diff --git a/src/dungeon.c b/src/dungeon.c index c11ef3ac7..0ce2209b7 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -12,11 +12,11 @@ #include "random.h" #include "string_format.h" #include "strings.h" +#include "dungeon_data.h" extern const char gUnknown_8108F10[]; extern const char gUnknown_8108F18[]; extern const char gUnknown_8108F2C[]; -extern u8 gInvalidDungeonIDs[]; extern u8 gDungeonFloorCount[]; extern const u8 *const gUnknown_8108084[]; extern DungeonLocation gUnknown_8107828[]; diff --git a/src/dungeon_data.c b/src/dungeon_data.c new file mode 100644 index 000000000..8d2233021 --- /dev/null +++ b/src/dungeon_data.c @@ -0,0 +1,597 @@ +#include "global.h" +// #include "globaldata.h" TODO: once gDungeons is moved to C +#include "dungeon_data.h" +#include "dungeon_map_access.h" +#include "constants/walkable_tile.h" + +// TODO: gDungeons from `dungeon/dungeon_data.inc` + +const u8 gInvalidDungeonIDs[11] = +{ + DUNGEON_BOSS_3, + DUNGEON_BOSS_4, + DUNGEON_BOSS_9, + DUNGEON_WONDROUS_SEA, + DUNGEON_AUTOPILOT, + DUNGEON_D50, + DUNGEON_D51, + DUNGEON_D54, + DUNGEON_POISON_MAZE, + DUNGEON_D61, + DUNGEON_OUT_ON_RESCUE +}; + +// NDS=020C3448 +const u8 gInvalidItemIDs[16] = +{ + ITEM_G_MACHINE_6, + ITEM_G_MACHINE_7, + ITEM_G_MACHINE_8, + ITEM_TM_SPIN_SLASH, + ITEM_SWITCH_BOX, + ITEM_ALERT_SPECS, + ITEM_POSSESS_ORB, + ITEM_REVIVER_ORB, + ITEM_TM_EXCAVATE, + ITEM_TOSS_ORB, + ITEM_RING_D, + ITEM_RING_E, + ITEM_RING_F, + ITEM_OBSERVER_ORB, + ITEM_BEATUP_ORB, + NUMBER_OF_ITEM_IDS +}; + +const bool8 gTacticsTargetLeader[NUM_TACTICS] = +{ + [TACTIC_LETS_GO_TOGETHER] = TRUE, + [TACTIC_GO_THE_OTHER_WAY] = FALSE, + [TACTIC_GO_AFTER_FOES] = FALSE, + [TACTIC_AVOID_THE_FIRST_HIT] = FALSE, + [TACTIC_ALL_FOR_ONE] = TRUE, + [TACTIC_GROUP_SAFETY] = TRUE, + [TACTIC_AVOID_TROUBLE] = TRUE, + [TACTIC_BE_PATIENT] = TRUE, + [TACTIC_KEEP_YOUR_DISTANCE] = TRUE, + [TACTIC_WAIT_THERE] = FALSE, + [TACTIC_GET_AWAY] = TRUE, + [TACTIC_UNUSED] = FALSE +}; + +const s16 gReqTacticLvls[NUM_TACTICS] = +{ + [TACTIC_LETS_GO_TOGETHER] = 1, + [TACTIC_GO_THE_OTHER_WAY] = 25, + [TACTIC_GO_AFTER_FOES] = 1, + [TACTIC_AVOID_THE_FIRST_HIT] = 1, + [TACTIC_ALL_FOR_ONE] = 999, + [TACTIC_GROUP_SAFETY] = 999, + [TACTIC_AVOID_TROUBLE] = 35, + [TACTIC_BE_PATIENT] = 40, + [TACTIC_KEEP_YOUR_DISTANCE] = 20, + [TACTIC_WAIT_THERE] = 15, + [TACTIC_GET_AWAY] = 10, + [TACTIC_UNUSED] = 999, +}; + +const s32 gReqIQSkillPts[NUM_IQ_SKILLS] = +{ + [IQ_NONE] = 9999, + [IQ_TYPE_ADVANTAGE_MASTER] = 105, + [IQ_ITEM_CATCHER] = 1, + [IQ_COURSE_CHECKER] = 1, + [IQ_SURE_HIT_ATTACKER] = 500, + [IQ_QUICK_DODGER] = 100, + [IQ_PP_CHECKER] = 2, + [IQ_NONTRAITOR] = 40, + [IQ_STATUS_CHECKER] = 25, + [IQ_EXP_GO_GETTER] = 200, + [IQ_EFFICIENCY_EXPERT] = 10, + [IQ_WEAK_TYPE_PICKER] = 125, + [IQ_ALL_TERRAIN_HIKER] = 400, + [IQ_SUPER_MOBILE] = 990, + [IQ_TRAP_AVOIDER] = 140, + [IQ_HOUSE_AVOIDER] = 800, + [IQ_ENERGY_SAVER] = 250, + [IQ_NONSLEEPER] = 160, + [IQ_SELF_CURER] = 70, + [IQ_TRAP_SEER] = 600, + [IQ_LAVA_EVADER] = 300, + [IQ_DEDICATED_TRAVELER] = 1, + [IQ_ITEM_MASTER] = 1, + [IQ_EXCLUSIVE_MOVE_USER] = 1, +}; + +// LUT for money item stack size -> money amount +// NDS=020C359C +const s32 gUnknown_810A3F0[100] = { + 4, 6, 10, 14, 22, 26, 34, 38, 46, 58, + 62, 74, 82, 86, 94, 106, 118, 122, 134, 142, + 146, 158, 166, 178, 194, 202, 206, 214, 218, 226, + 254, 262, 274, 278, 298, 302, 314, 326, 334, 346, + 358, 362, 382, 386, 394, 398, 422, 446, 454, 458, + 466, 478, 482, 502, 514, 526, 538, 542, 554, 562, + 566, 586, 614, 622, 626, 634, 662, 674, 694, 698, + 706, 718, 734, 746, 758, 768, 778, 794, 802, 818, + 838, 842, 862, 866, 878, 886, 898, 914, 922, 926, + 934, 958, 974, 982, 998, 1000, 1100, 1300, 1500, 20000 +}; + +const s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS] = +{ + [TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + [TYPE_NORMAL] = {0x00, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03}, + [TYPE_FIRE] = {0x00, 0x03, 0x07, 0x04, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x03, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x02}, + [TYPE_WATER] = {0x00, 0x03, 0x02, 0x07, 0x04, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02}, + [TYPE_GRASS] = {0x00, 0x03, 0x04, 0x02, 0x07, 0x02, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03}, + [TYPE_ELECTRIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02}, + [TYPE_ICE] = {0x00, 0x03, 0x04, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x04}, + [TYPE_FIGHTING] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x04, 0x04, 0x02, 0x02, 0x03, 0x03, 0x02, 0x03}, + [TYPE_POISON] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x07, 0x04, 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03}, + [TYPE_GROUND] = {0x00, 0x03, 0x03, 0x04, 0x04, 0x01, 0x04, 0x03, 0x02, 0x07, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03}, + [TYPE_FLYING] = {0x00, 0x03, 0x03, 0x03, 0x02, 0x04, 0x04, 0x02, 0x03, 0x01, 0x07, 0x03, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03}, + [TYPE_PSYCHIC] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x07, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03}, + [TYPE_BUG] = {0x00, 0x03, 0x04, 0x03, 0x02, 0x03, 0x03, 0x02, 0x03, 0x02, 0x04, 0x03, 0x07, 0x04, 0x03, 0x03, 0x03, 0x03}, + [TYPE_ROCK] = {0x00, 0x02, 0x02, 0x04, 0x04, 0x03, 0x03, 0x04, 0x02, 0x04, 0x02, 0x03, 0x03, 0x07, 0x03, 0x03, 0x03, 0x04}, + [TYPE_GHOST] = {0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x07, 0x03, 0x04, 0x03}, + [TYPE_DRAGON] = {0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03}, + [TYPE_DARK] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x01, 0x04, 0x03, 0x02, 0x03, 0x07, 0x03}, + [TYPE_STEEL] = {0x00, 0x02, 0x04, 0x03, 0x02, 0x03, 0x02, 0x04, 0x01, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07}, +}; + +const s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS] = +{ + [TYPE_NONE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + [TYPE_NORMAL] = {0x00, 0x3c, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x19, 0x19, 0x19}, + [TYPE_FIRE] = {0x00, 0x19, 0x3c, 0x1e, 0x14, 0x19, 0x14, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x14}, + [TYPE_WATER] = {0x00, 0x19, 0x14, 0x3c, 0x1e, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14}, + [TYPE_GRASS] = {0x00, 0x19, 0x1e, 0x14, 0x3c, 0x14, 0x1e, 0x19, 0x1e, 0x14, 0x1e, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19}, + [TYPE_ELECTRIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14}, + [TYPE_ICE] = {0x00, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x1e}, + [TYPE_FIGHTING] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x1e, 0x1e, 0x14, 0x14, 0x19, 0x19, 0x14, 0x19}, + [TYPE_POISON] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x14, 0x3c, 0x1e, 0x19, 0x1e, 0x14, 0x19, 0x19, 0x19, 0x19, 0x19}, + [TYPE_GROUND] = {0x00, 0x19, 0x19, 0x1e, 0x1e, 0x05, 0x1e, 0x19, 0x14, 0x3c, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x19}, + [TYPE_FLYING] = {0x00, 0x19, 0x19, 0x19, 0x14, 0x1e, 0x1e, 0x14, 0x19, 0x05, 0x3c, 0x19, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19}, + [TYPE_PSYCHIC] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x14, 0x19, 0x19, 0x19, 0x3c, 0x1e, 0x19, 0x1e, 0x19, 0x1e, 0x19}, + [TYPE_BUG] = {0x00, 0x19, 0x1e, 0x19, 0x14, 0x19, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x19, 0x3c, 0x1e, 0x19, 0x19, 0x19, 0x19}, + [TYPE_ROCK] = {0x00, 0x14, 0x14, 0x1e, 0x1e, 0x19, 0x19, 0x1e, 0x14, 0x1e, 0x14, 0x19, 0x19, 0x3c, 0x19, 0x19, 0x19, 0x1e}, + [TYPE_GHOST] = {0x00, 0x05, 0x19, 0x19, 0x19, 0x19, 0x19, 0x05, 0x14, 0x19, 0x19, 0x1e, 0x14, 0x19, 0x3c, 0x19, 0x1e, 0x19}, + [TYPE_DRAGON] = {0x00, 0x19, 0x14, 0x14, 0x14, 0x14, 0x1e, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x3c, 0x19, 0x19}, + [TYPE_DARK] = {0x00, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1e, 0x19, 0x19, 0x19, 0x05, 0x1e, 0x19, 0x14, 0x19, 0x3c, 0x19}, + [TYPE_STEEL] = {0x00, 0x14, 0x1e, 0x19, 0x14, 0x19, 0x14, 0x1e, 0x05, 0x1e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x3c}, +}; + +const FriendAreaSettings gFriendAreaSettings[NUM_FRIEND_AREAS] = +{ + [FRIEND_AREA_NONE] = { + .num_pokemon = 0, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 0, + }, + [BOUNTIFUL_SEA] = { + .num_pokemon = 9, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 5500, + }, + [TREASURE_SEA] = { + .num_pokemon = 10, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 4500, + }, + [SERENE_SEA] = { + .num_pokemon = 4, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 8000, + }, + [DEEP_SEA_FLOOR] = { + .num_pokemon = 12, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 5500, + }, + [DEEP_SEA_CURRENT] = { + .num_pokemon = 1, + .unlock_condition = UNLOCK_LEGENDARY_REQUEST, + .price = 0, + }, + [SEAFLOOR_CAVE] = { + .num_pokemon = 1, + .unlock_condition = UNLOCK_LEGENDARY_REQUEST, + .price = 0, + }, + [SHALLOW_BEACH] = { + .num_pokemon = 5, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 5000, + }, + [MT_DEEPGREEN] = { + .num_pokemon = 12, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 130, + }, + [MT_CLEFT] = { + .num_pokemon = 9, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 5000, + }, + [MT_MOONVIEW] = { + .num_pokemon = 6, + .unlock_condition = UNLOCK_WONDER_MAIL, + .price = 0, + }, + [RAINBOW_PEAK] = { + .num_pokemon = 1, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 6500, + }, + [WILD_PLAINS] = { + .num_pokemon = 13, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 100, + }, + [BEAU_PLAINS] = { + .num_pokemon = 12, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 600, + }, + [SKY_BLUE_PLAINS] = { + .num_pokemon = 13, + .unlock_condition = UNLOCK_WONDER_MAIL, + .price = 0, + }, + [SAFARI] = { + .num_pokemon = 15, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 700, + }, + [SCORCHED_PLAINS] = { + .num_pokemon = 10, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 5000, + }, + [SACRED_FIELD] = { + .num_pokemon = 3, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 6500 + }, + [MIST_RISE_FOREST] = { + .num_pokemon = 14, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 150 + }, + [FLYAWAY_FOREST] = { + .num_pokemon = 12, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 550 + }, + [OVERGROWN_FOREST] = { + .num_pokemon = 9, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 600 + }, + [ENERGETIC_FOREST] = { + .num_pokemon = 15, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 5000 + }, + [MUSHROOM_FOREST] = { + .num_pokemon = 7, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 500 + }, + [HEALING_FOREST] = { + .num_pokemon = 1, + .unlock_condition = UNLOCK_LEGENDARY_REQUEST, + .price = 0 + }, + [TRANSFORM_FOREST] = { + .num_pokemon = 6, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 500 + }, + [SECRETIVE_FOREST] = { + .num_pokemon = 9, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 6500 + }, + [RUB_A_DUB_RIVER] = { + .num_pokemon = 7, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 500 + }, + [TADPOLE_POND] = { + .num_pokemon = 9, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 500 + }, + [TURTLESHELL_POND] = { + .num_pokemon = 10, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 5500 + }, + [MYSTIC_LAKE] = { + .num_pokemon = 4, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 2500 + }, + [WATERFALL_LAKE] = { + .num_pokemon = 4, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 3500 + }, + [PEANUT_SWAMP] = { + .num_pokemon = 7, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 2500 + }, + [POISON_SWAMP] = { + .num_pokemon = 6, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 8500 + }, + [ECHO_CAVE] = { + .num_pokemon = 11, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 7500 + }, + [CRYPTIC_CAVE] = { + .num_pokemon = 1, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 6500 + }, + [DRAGON_CAVE] = { + .num_pokemon = 3, + .unlock_condition = UNLOCK_WONDER_MAIL, + .price = 0 + }, + [BOULDER_CAVE] = { + .num_pokemon = 4, + .unlock_condition = UNLOCK_WONDER_MAIL, + .price = 0 + }, + [JUNGLE] = { + .num_pokemon = 13, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 800 + }, + [DECREPIT_LAB] = { + .num_pokemon = 7, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 1000 + }, + [MT_DISCIPLINE] = { + .num_pokemon = 11, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 1200 + }, + [THUNDER_MEADOW] = { + .num_pokemon = 11, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 1000 + }, + [POWER_PLANT] = { + .num_pokemon = 6, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 600 + }, + [CRATER] = { + .num_pokemon = 7, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 7500 + }, + [FURNACE_DESERT] = { + .num_pokemon = 7, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 8500 + }, + [AGED_CHAMBER_AN] = { + .num_pokemon = 14, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 5500 + }, + [AGED_CHAMBER_O_EXCLAIM] = { + .num_pokemon = 14, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 5500 + }, + [ANCIENT_RELIC] = { + .num_pokemon = 6, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 8000 + }, + [DARKNESS_RIDGE] = { + .num_pokemon = 13, + .unlock_condition = UNLOCK_LEGENDARY_REQUEST, + .price = 0 + }, + [FRIGID_CAVERN] = { + .num_pokemon = 7, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 9000 + }, + [ICE_FLOE_BEACH] = { + .num_pokemon = 5, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 9500 + }, + [VOLCANIC_PIT] = { + .num_pokemon = 1, + .unlock_condition = UNLOCK_LEGENDARY_REQUEST, + .price = 0 + }, + [STRATOS_LOOKOUT] = { + .num_pokemon = 1, + .unlock_condition = UNLOCK_LEGENDARY_REQUEST, + .price = 0 + }, + [RAVAGED_FIELD] = { + .num_pokemon = 5, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 1000 + }, + [MAGNETIC_QUARRY] = { + .num_pokemon = 3, + .unlock_condition = UNLOCK_SHOP_STORY, + .price = 1000 + }, + [LEGENDARY_ISLAND] = { + .num_pokemon = 3, + .unlock_condition = UNLOCK_LEGENDARY_REQUEST, + .price = 7500 + }, + [SOUTHERN_ISLAND] = { + .num_pokemon = 2, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 9500 + }, + [ENCLOSED_ISLAND] = { + .num_pokemon = 1, + .unlock_condition = UNLOCK_LEGENDARY_REQUEST, + .price = 0 + }, + [FINAL_ISLAND] = { + .num_pokemon = 1, + .unlock_condition = UNLOCK_SHOP_POST_GAME, + .price = 8500 + }, +}; + +const s16 gUnknown_810AC60 = 12; +const s16 gUnknown_810AC62 = 12; +const s16 gUnknown_810AC64 = 8; +const s16 gUnknown_810AC66 = 8; +const s16 gUnknown_810AC68 = 8; + +const u8 gUnknown_810AC6A[NUM_TYPES] = +{ + [TYPE_NONE] = TYPE_NONE, + [TYPE_NORMAL] = TYPE_GHOST, + [TYPE_FIRE] = TYPE_WATER, + [TYPE_WATER] = TYPE_GRASS, + [TYPE_GRASS] = TYPE_BUG, + [TYPE_ELECTRIC] = TYPE_GROUND, + [TYPE_ICE] = TYPE_FIRE, + [TYPE_FIGHTING] = TYPE_GHOST, + [TYPE_POISON] = TYPE_STEEL, + [TYPE_GROUND] = TYPE_FLYING, + [TYPE_FLYING] = TYPE_ROCK, + [TYPE_PSYCHIC] = TYPE_DARK, + [TYPE_BUG] = TYPE_POISON, + [TYPE_ROCK] = TYPE_FIGHTING, + [TYPE_GHOST] = TYPE_NORMAL, + [TYPE_DRAGON] = TYPE_STEEL, + [TYPE_DARK] = TYPE_DARK, + [TYPE_STEEL] = TYPE_ELECTRIC, +}; + +const bool8 gIsTypePhysicalTable[NUM_TYPES] = { + [TYPE_NONE] = TRUE, + [TYPE_NORMAL] = TRUE, + [TYPE_FIGHTING] = TRUE, + [TYPE_POISON] = TRUE, + [TYPE_GROUND] = TRUE, + [TYPE_FLYING] = TRUE, + [TYPE_BUG] = TRUE, + [TYPE_ROCK] = TRUE, + [TYPE_GHOST] = TRUE, + [TYPE_STEEL] = TRUE, +}; +const s32 gUnknown_810AC90[10] = {2, 4, 6, 7, 8, 9, 0xA, 0xD, 0xF, 0x11}; +const s16 gFrenzyPlantIQReq = 333; +const s16 gHydroCannonIQReq = 333; +const s16 gBlastBurnIQReq = 333; +const s16 gVoltTackleIQReq = 333; + +const u8 gDungeonWaterType[76] = { + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_WATER, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_WATER, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_LAVA, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_LAVA, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_LAVA, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_LAVA, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, +}; + +const struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON] = { + + RED_EXCLUSIVE(MONSTER_PORYGON), + BLUE_EXCLUSIVE(MONSTER_PORYGON2), + BLUE_EXCLUSIVE(MONSTER_MAGIKARP), + BLUE_EXCLUSIVE(MONSTER_GYARADOS), + RED_EXCLUSIVE(MONSTER_FEEBAS), + RED_EXCLUSIVE(MONSTER_MILOTIC), + RED_EXCLUSIVE(MONSTER_PLUSLE), + BLUE_EXCLUSIVE(MONSTER_MINUN), + BLUE_EXCLUSIVE(MONSTER_LAPRAS), + RED_EXCLUSIVE(MONSTER_MANTINE), + RED_EXCLUSIVE(MONSTER_ROSELIA), + BLUE_EXCLUSIVE(MONSTER_AIPOM), +}; diff --git a/src/dungeon_map_access.c b/src/dungeon_map_access.c index 3d818149c..a484c92f5 100644 --- a/src/dungeon_map_access.c +++ b/src/dungeon_map_access.c @@ -39,133 +39,6 @@ EWRAM_DATA Tile gOutOfBoundsTileData = {0}; EWRAM_INIT const Tile *gCurTilesetOobTile = {NULL}; -#include "constants/type.h" - -const s16 gUnknown_810AC60 = 12; -const s16 gUnknown_810AC62 = 12; -const s16 gUnknown_810AC64 = 8; -const s16 gUnknown_810AC66 = 8; -const s16 gUnknown_810AC68 = 8; - -const u8 gUnknown_810AC6A[NUM_TYPES] = -{ - [TYPE_NONE] = TYPE_NONE, - [TYPE_NORMAL] = TYPE_GHOST, - [TYPE_FIRE] = TYPE_WATER, - [TYPE_WATER] = TYPE_GRASS, - [TYPE_GRASS] = TYPE_BUG, - [TYPE_ELECTRIC] = TYPE_GROUND, - [TYPE_ICE] = TYPE_FIRE, - [TYPE_FIGHTING] = TYPE_GHOST, - [TYPE_POISON] = TYPE_STEEL, - [TYPE_GROUND] = TYPE_FLYING, - [TYPE_FLYING] = TYPE_ROCK, - [TYPE_PSYCHIC] = TYPE_DARK, - [TYPE_BUG] = TYPE_POISON, - [TYPE_ROCK] = TYPE_FIGHTING, - [TYPE_GHOST] = TYPE_NORMAL, - [TYPE_DRAGON] = TYPE_STEEL, - [TYPE_DARK] = TYPE_DARK, - [TYPE_STEEL] = TYPE_ELECTRIC, -}; - -const bool8 gIsTypePhysicalTable[NUM_TYPES] = { - [TYPE_NONE] = TRUE, - [TYPE_NORMAL] = TRUE, - [TYPE_FIGHTING] = TRUE, - [TYPE_POISON] = TRUE, - [TYPE_GROUND] = TRUE, - [TYPE_FLYING] = TRUE, - [TYPE_BUG] = TRUE, - [TYPE_ROCK] = TRUE, - [TYPE_GHOST] = TRUE, - [TYPE_STEEL] = TRUE, -}; -const s32 gUnknown_810AC90[] = {2, 4, 6, 7, 8, 9, 0xA, 0xD, 0xF, 0x11}; -const s16 gFrenzyPlantIQReq = 333; -const s16 gHydroCannonIQReq = 333; -const s16 gBlastBurnIQReq = 333; -const s16 gVoltTackleIQReq = 333; - -const u8 gDungeonWaterType[76] = { - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_WATER, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_WATER, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_LAVA, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_LAVA, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_LAVA, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_LAVA, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, - DUNGEON_WATER_TYPE_NONE, -}; - const Tile *GetTile(s32 x, s32 y) { if (x >= 0 && y >= 0 && x < DUNGEON_MAX_SIZE_X && y < DUNGEON_MAX_SIZE_Y) diff --git a/src/exclusive_pokemon.c b/src/exclusive_pokemon.c index 96a7c7900..de8c43553 100644 --- a/src/exclusive_pokemon.c +++ b/src/exclusive_pokemon.c @@ -1,21 +1,6 @@ #include "global.h" #include "exclusive_pokemon.h" - -const struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON] = { - - RED_EXCLUSIVE(MONSTER_PORYGON), - BLUE_EXCLUSIVE(MONSTER_PORYGON2), - BLUE_EXCLUSIVE(MONSTER_MAGIKARP), - BLUE_EXCLUSIVE(MONSTER_GYARADOS), - RED_EXCLUSIVE(MONSTER_FEEBAS), - RED_EXCLUSIVE(MONSTER_MILOTIC), - RED_EXCLUSIVE(MONSTER_PLUSLE), - BLUE_EXCLUSIVE(MONSTER_MINUN), - BLUE_EXCLUSIVE(MONSTER_LAPRAS), - RED_EXCLUSIVE(MONSTER_MANTINE), - RED_EXCLUSIVE(MONSTER_ROSELIA), - BLUE_EXCLUSIVE(MONSTER_AIPOM), -}; +#include "dungeon_data.h" const u8 filler_ex0[8] = { diff --git a/src/friend_area.c b/src/friend_area.c index 6e0c5e49a..3eb41a680 100644 --- a/src/friend_area.c +++ b/src/friend_area.c @@ -7,6 +7,7 @@ #include "items.h" #include "pokemon.h" #include "strings.h" +#include "dungeon_data.h" EWRAM_DATA static bool8 sBoughtFriendAreas[NUM_FRIEND_AREAS] = {0}; @@ -15,7 +16,6 @@ EWRAM_INIT bool8 *gFriendAreas = {NULL}; // data_8107010.s extern const u8 sUnknown_81098A4[]; extern const u8 sUnknown_81098AC[]; -#include "data/friend_area_settings.h" // 810AA90 void LoadFriendAreas(void) { @@ -41,7 +41,7 @@ u8 sub_80923D4(s32 target) s32 sum = 0; for (i = 0; i < NUM_FRIEND_AREAS; i++) { - sum += sFriendAreaSettings[i].num_pokemon; + sum += gFriendAreaSettings[i].num_pokemon; if (sum > target) return i; } @@ -100,12 +100,12 @@ const u8 *GetFriendAreaName(u8 index) u8 GetFriendAreaUnlockCondition(u8 index) { - return sFriendAreaSettings[index].unlock_condition; + return gFriendAreaSettings[index].unlock_condition; } s32 GetFriendAreaPrice(u8 index) { - return sFriendAreaSettings[index].price; + return gFriendAreaSettings[index].price; } void sub_8092558(u8 *buffer, u8 index) @@ -119,7 +119,7 @@ void WriteFriendAreaName(u8 *buffer, u8 index, bool8 printPrice) u8 priceBuffer[20]; if (printPrice) { - WriteHighDecimal(sFriendAreaSettings[index].price, priceBuffer, 1); + WriteHighDecimal(gFriendAreaSettings[index].price, priceBuffer, 1); sprintfStatic(buffer, sUnknown_81098AC, gFriendAreaNames[index], 96, priceBuffer); } else @@ -162,14 +162,14 @@ void GetFriendAreaCapacity2(u8 friendArea, FriendAreaCapacity *dst, bool8 checkL iVar4 = 0; for (i = 0; i < friendArea; i++) - iVar4 += sFriendAreaSettings[i].num_pokemon; + iVar4 += gFriendAreaSettings[i].num_pokemon; dst->unk8 = iVar4; dst->hasFriendArea = gFriendAreas[i]; if (dst->hasFriendArea) { dst->currNoPokemon = 0; - dst->maxPokemon = sFriendAreaSettings[i].num_pokemon; + dst->maxPokemon = gFriendAreaSettings[i].num_pokemon; for (i = 0; i < dst->maxPokemon; i++, iVar4++) { pokeStruct = &gRecruitedPokemonRef->pokemon[iVar4]; @@ -197,14 +197,14 @@ void GetFriendAreaCapacity(u8 areaId, FriendAreaCapacity *dst, bool8 checkPartne r5 = 0; for (i = 0; i < areaId; i++) - r5 += sFriendAreaSettings[i].num_pokemon; + r5 += gFriendAreaSettings[i].num_pokemon; dst->unk8 = r5; dst->hasFriendArea = gFriendAreas[i]; if (dst->hasFriendArea) { dst->currNoPokemon = 0; - dst->maxPokemon = sFriendAreaSettings[i].num_pokemon; + dst->maxPokemon = gFriendAreaSettings[i].num_pokemon; max = dst->maxPokemon; for (i = 0; i < max; i++, r5++) { diff --git a/src/items.c b/src/items.c index 89e887a17..b2a1e05a6 100644 --- a/src/items.c +++ b/src/items.c @@ -14,6 +14,8 @@ #include "text_util.h" #include "strings.h" +extern const s32 gUnknown_810A3F0[100]; +extern const s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS]; extern const char gItemParaFileName[]; extern const char gUnknown_8109794[]; extern const char gUnknown_81097A4[]; @@ -39,8 +41,6 @@ EWRAM_INIT TeamInventory *gTeamInventoryRef = {NULL}; // NDS=020EAF98 extern void SortKecleonShopInventory(); bool8 AddKecleonWareItem(u8); -#include "data/items.h" - static void sub_8090F58(u8 *, u8 *, Item *, const unkStruct_8090F58 *); // arm9.bin::020610C0 diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 9c5f6142e..0e9450850 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -21,6 +21,7 @@ #include "strings.h" #include "text_1.h" #include "text_util.h" +#include "dungeon_data.h" struct UnusedOffenseStruct { @@ -50,11 +51,6 @@ extern u8 gUnknown_810778C[]; extern u8 gUnknown_8107790[]; extern u8 gUnknown_8107798[]; -// 2, 4, 6, 7, 8, 9, 8, 0xA, 0xD, 0xF, 0x11 -extern s32 gUnknown_810AC90[10]; - -#include "data/pokemon_3.h" - extern void WriteDungeonLocationBits(DataSerializer*, DungeonLocation*); extern void WritePoke1LevelBits(DataSerializer*, struct unkPokeSubStruct_C*); void ReadDungeonLocationBits(DataSerializer*, DungeonLocation*);