diff --git a/include/constants/seals.h b/include/constants/seals.h new file mode 100644 index 000000000..91a109689 --- /dev/null +++ b/include/constants/seals.h @@ -0,0 +1,102 @@ +#ifndef POKEPLATINUM_CONSTANTS_SEALS_H +#define POKEPLATINUM_CONSTANTS_SEALS_H + +enum { + SEAL_DUMMY, + + HEART_SEAL_A, + HEART_SEAL_B, + HEART_SEAL_C, + HEART_SEAL_D, + HEART_SEAL_E, + HEART_SEAL_F, + + STAR_SEAL_A, + STAR_SEAL_B, + STAR_SEAL_C, + STAR_SEAL_D, + STAR_SEAL_E, + STAR_SEAL_F, + + LINE_SEAL_A, + LINE_SEAL_B, + LINE_SEAL_C, + LINE_SEAL_D, + + SMOKE_SEAL_A, + SMOKE_SEAL_B, + SMOKE_SEAL_C, + SMOKE_SEAL_D, + + ELE_SEAL_A, + ELE_SEAL_B, + ELE_SEAL_C, + ELE_SEAL_D, + + FOAMY_SEAL_A, + FOAMY_SEAL_B, + FOAMY_SEAL_C, + FOAMY_SEAL_D, + + FIRE_SEAL_A, + FIRE_SEAL_B, + FIRE_SEAL_C, + FIRE_SEAL_D, + + PARTY_SEAL_A, + PARTY_SEAL_B, + PARTY_SEAL_C, + PARTY_SEAL_D, + + FLORA_SEAL_A, + FLORA_SEAL_B, + FLORA_SEAL_C, + FLORA_SEAL_D, + FLORA_SEAL_E, + FLORA_SEAL_F, + + SONG_SEAL_A, + SONG_SEAL_B, + SONG_SEAL_C, + SONG_SEAL_D, + SONG_SEAL_E, + SONG_SEAL_F, + SONG_SEAL_G, + + // Alphabet + A_SEAL, + B_SEAL, + C_SEAL, + D_SEAL, + E_SEAL, + F_SEAL, + G_SEAL, + H_SEAL, + I_SEAL, + J_SEAL, + K_SEAL, + L_SEAL, + M_SEAL, + N_SEAL, + O_SEAL, + P_SEAL, + Q_SEAL, + R_SEAL, + S_SEAL, + T_SEAL, + U_SEAL, + V_SEAL, + W_SEAL, + X_SEAL, + Y_SEAL, + Z_SEAL, + SHOCK_SEAL, + MYSTERY_SEAL, + + // Unused + LIQUID_SEAL, + BURST_SEAL, + TWINKLE_SEAL +}; + +#endif // POKEPLATINUM_CONSTANTS_SEALS_H \ No newline at end of file diff --git a/include/data/mart_items.h b/include/data/mart_items.h new file mode 100644 index 000000000..ecd2c5323 --- /dev/null +++ b/include/data/mart_items.h @@ -0,0 +1,348 @@ +#include "constants/items.h" +#include "constants/seals.h" + +typedef struct { + u16 itemID; + u16 requiredBadges; +} PokeMartCommonItem; + +const PokeMartCommonItem PokeMartCommonItems[] = { + { ITEM_POKE_BALL, 0x1 }, + { ITEM_GREAT_BALL, 0x3 }, + { ITEM_ULTRA_BALL, 0x4 }, + { ITEM_POTION, 0x1 }, + { ITEM_SUPER_POTION, 0x2 }, + { ITEM_HYPER_POTION, 0x4 }, + { ITEM_MAX_POTION, 0x5 }, + { ITEM_FULL_RESTORE, 0x6 }, + { ITEM_REVIVE, 0x3 }, + { ITEM_ANTIDOTE, 0x1 }, + { ITEM_PARLYZ_HEAL, 0x1 }, + { ITEM_AWAKENING, 0x2 }, + { ITEM_BURN_HEAL, 0x2 }, + { ITEM_ICE_HEAL, 0x2 }, + { ITEM_FULL_HEAL, 0x4 }, + { ITEM_ESCAPE_ROPE, 0x2 }, + { ITEM_REPEL, 0x2 }, + { ITEM_SUPER_REPEL, 0x3 }, + { ITEM_MAX_REPEL, 0x4 } +}; + +const u16 JubilifeMartSpecialties[] = { + ITEM_AIR_MAIL, + ITEM_HEAL_BALL, + 0xffff +}; + +const u16 OreburghMartSpecialties[] = { + ITEM_TUNNEL_MAIL, + ITEM_HEAL_BALL, + ITEM_NET_BALL, + 0xffff +}; + +const u16 FloaromaMartSpecialties[] = { + ITEM_BLOOM_MAIL, + ITEM_HEAL_BALL, + ITEM_NET_BALL, + 0xffff +}; + +const u16 EternaMartSpecialties[] = { + ITEM_AIR_MAIL, + ITEM_HEAL_BALL, + ITEM_NET_BALL, + ITEM_NEST_BALL, + 0xffff +}; + +const u16 EternaHerbShopStock[] = { + ITEM_HEAL_POWDER, + ITEM_ENERGYPOWDER, + ITEM_ENERGY_ROOT, + ITEM_REVIVAL_HERB, + 0xffff +}; + +const u16 HearthomeMartSpecialties[] = { + ITEM_HEART_MAIL, + ITEM_HEAL_BALL, + ITEM_NET_BALL, + ITEM_NEST_BALL, + 0xffff +}; + +const u16 SolaceonMartSpecialties[] = { + ITEM_AIR_MAIL, + ITEM_NET_BALL, + ITEM_NEST_BALL, + ITEM_DUSK_BALL, + 0xffff +}; + +const u16 PastoriaMartSpecialties[] = { + ITEM_AIR_MAIL, + ITEM_NEST_BALL, + ITEM_DUSK_BALL, + ITEM_QUICK_BALL, + 0xffff +}; + +const u16 VeilstoneDeptStoreStock_1F_RIGHT[] = { + ITEM_POTION, + ITEM_SUPER_POTION, + ITEM_HYPER_POTION, + ITEM_MAX_POTION, + ITEM_REVIVE, + ITEM_ANTIDOTE, + ITEM_PARLYZ_HEAL, + ITEM_BURN_HEAL, + ITEM_ICE_HEAL, + ITEM_AWAKENING, + ITEM_FULL_HEAL, + 0xffff +}; + +const u16 VeilstoneDeptStoreStock_1F_LEFT[] = { + ITEM_POKE_BALL, + ITEM_GREAT_BALL, + ITEM_ULTRA_BALL, + ITEM_ESCAPE_ROPE, + ITEM_POKE_DOLL, + ITEM_REPEL, + ITEM_SUPER_REPEL, + ITEM_MAX_REPEL, + ITEM_GRASS_MAIL, + ITEM_FLAME_MAIL, + ITEM_BUBBLE_MAIL, + ITEM_SPACE_MAIL, + 0xffff +}; + +const u16 VeilstoneDeptStoreStock_2F_UP[] = { + ITEM_X_SPEED, + ITEM_X_ATTACK, + ITEM_X_DEFENSE, + ITEM_GUARD_SPEC_, + ITEM_DIRE_HIT, + ITEM_X_ACCURACY, + ITEM_X_SPECIAL, + ITEM_X_SP__DEF, + 0xffff +}; + +const u16 VeilstoneDeptStoreStock_2F_MID[] = { + ITEM_PROTEIN, + ITEM_IRON, + ITEM_CALCIUM, + ITEM_ZINC, + ITEM_CARBOS, + ITEM_HP_UP, + 0xffff +}; + +const u16 VeilstoneDeptStoreStock_3F_UP[] = { + ITEM_TM83, + ITEM_TM17, + ITEM_TM54, + ITEM_TM20, + ITEM_TM33, + ITEM_TM16, + ITEM_TM70, + 0xffff +}; + +const u16 VeilstoneDeptStoreStock_3F_DOWN[] = { + ITEM_TM38, + ITEM_TM25, + ITEM_TM14, + ITEM_TM22, + ITEM_TM52, + ITEM_TM15, + 0xffff +}; + +const u16 CelesticMartSpecialties[] = { + ITEM_AIR_MAIL, + ITEM_DUSK_BALL, + ITEM_QUICK_BALL, + ITEM_TIMER_BALL, + 0xffff +}; + +const u16 SnowpointMartSpecialties[] = { + ITEM_SNOW_MAIL, + ITEM_DUSK_BALL, + ITEM_QUICK_BALL, + ITEM_TIMER_BALL, + 0xffff +}; + +const u16 CanalaveMartSpecialties[] = { + ITEM_AIR_MAIL, + ITEM_QUICK_BALL, + ITEM_TIMER_BALL, + ITEM_REPEAT_BALL, + 0xffff +}; + +const u16 SunyshoreMartSpecialties[] = { + ITEM_STEEL_MAIL, + ITEM_LUXURY_BALL, + 0xffff +}; + +const u16 PokemonLeagueMartSpecialties[] = { + ITEM_HEAL_BALL, + ITEM_NET_BALL, + ITEM_NEST_BALL, + ITEM_DUSK_BALL, + ITEM_QUICK_BALL, + ITEM_TIMER_BALL, + ITEM_REPEAT_BALL, + ITEM_LUXURY_BALL, + 0xffff +}; + +const u16 VeilstoneDeptStoreStock_B1F_DOWN_LEFT[] = { + ITEM_FIGY_BERRY, + ITEM_WIKI_BERRY, + ITEM_MAGO_BERRY, + ITEM_AGUAV_BERRY, + ITEM_IAPAPA_BERRY, + 0xffff +}; + +const u16 *PokeMartSpecialties[] = { + JubilifeMartSpecialties, + OreburghMartSpecialties, + FloaromaMartSpecialties, + EternaMartSpecialties, + EternaHerbShopStock, + HearthomeMartSpecialties, + SolaceonMartSpecialties, + PastoriaMartSpecialties, + VeilstoneDeptStoreStock_1F_RIGHT, + VeilstoneDeptStoreStock_1F_LEFT, + VeilstoneDeptStoreStock_2F_UP, + VeilstoneDeptStoreStock_2F_MID, + VeilstoneDeptStoreStock_3F_UP, + VeilstoneDeptStoreStock_3F_DOWN, + CelesticMartSpecialties, + SnowpointMartSpecialties, + CanalaveMartSpecialties, + SunyshoreMartSpecialties, + PokemonLeagueMartSpecialties, + VeilstoneDeptStoreStock_B1F_DOWN_LEFT +}; + +const u16 VeilstoneDeptStoreStock_4F_UP[] = { + 0x7, + 0x16, + 0x19, + 0x1A, + 0x1B, + 0xffff +}; + +const u16 VeilstoneDeptStoreStock_4F_DOWN[] = { + 0x73, + 0x74, + 0x75, + 0x77, + 0x78, + 0x79, + 0xffff +}; + +const u16 *VeilstoneDeptStoreDecorationStocks[] = { + VeilstoneDeptStoreStock_4F_UP, + VeilstoneDeptStoreStock_4F_DOWN +}; + +const u16 SunyshoreMarketStockMonday[] = { + HEART_SEAL_A, + STAR_SEAL_B, + FIRE_SEAL_A, + SONG_SEAL_A, + LINE_SEAL_C, + ELE_SEAL_B, + PARTY_SEAL_D, + 0xffff +}; + +const u16 SunyshoreMarketStockTuesday[] = { + HEART_SEAL_B, + STAR_SEAL_C, + FIRE_SEAL_B, + FLORA_SEAL_A, + SONG_SEAL_B, + LINE_SEAL_D, + ELE_SEAL_C, + 0xffff +}; + +const u16 SunyshoreMarketStockWednesday[] = { + HEART_SEAL_C, + STAR_SEAL_D, + FIRE_SEAL_C, + FLORA_SEAL_B, + SONG_SEAL_C, + SMOKE_SEAL_A, + ELE_SEAL_D, + 0xffff +}; + +const u16 SunyshoreMarketStockThursday[] = { + HEART_SEAL_D, + FOAMY_SEAL_A, + FIRE_SEAL_D, + FLORA_SEAL_C, + SONG_SEAL_D, + STAR_SEAL_E, + SMOKE_SEAL_B, + 0xffff +}; + +const u16 SunyshoreMarketStockFriday[] = { + FOAMY_SEAL_B, + PARTY_SEAL_A, + FLORA_SEAL_D, + SONG_SEAL_E, + HEART_SEAL_E, + STAR_SEAL_F, + SMOKE_SEAL_C, + 0xffff +}; + +const u16 SunyshoreMarketStockSaturday[] = { + FOAMY_SEAL_C, + PARTY_SEAL_B, + FLORA_SEAL_E, + SONG_SEAL_F, + HEART_SEAL_F, + LINE_SEAL_A, + SMOKE_SEAL_D, + 0xffff +}; + +const u16 SunyshoreMarketStockSunday[] = { + STAR_SEAL_A, + SONG_SEAL_G, + FOAMY_SEAL_D, + FLORA_SEAL_F, + LINE_SEAL_B, + ELE_SEAL_A, + PARTY_SEAL_C, + 0xffff +}; + +const u16 *SunyshoreMarketDailyStocks[] = { + SunyshoreMarketStockMonday, + SunyshoreMarketStockTuesday, + SunyshoreMarketStockWednesday, + SunyshoreMarketStockThursday, + SunyshoreMarketStockFriday, + SunyshoreMarketStockSaturday, + SunyshoreMarketStockSunday +}; \ No newline at end of file diff --git a/src/unk_02046AD4.c b/src/unk_02046AD4.c index 7f435cf03..2f59845d6 100644 --- a/src/unk_02046AD4.c +++ b/src/unk_02046AD4.c @@ -13,351 +13,7 @@ #include "unk_02046AD4.h" #include "overlay007/ov7_0224CD28.h" -typedef struct { - u16 unk_00; - u16 unk_02; -} UnkStruct_020EBAFC; - -const UnkStruct_020EBAFC Unk_020EBAFC[] = { - { 0x4, 0x1 }, - { 0x3, 0x3 }, - { 0x2, 0x4 }, - { 0x11, 0x1 }, - { 0x1A, 0x2 }, - { 0x19, 0x4 }, - { 0x18, 0x5 }, - { 0x17, 0x6 }, - { 0x1C, 0x3 }, - { 0x12, 0x1 }, - { 0x16, 0x1 }, - { 0x15, 0x2 }, - { 0x13, 0x2 }, - { 0x14, 0x2 }, - { 0x1B, 0x4 }, - { 0x4E, 0x2 }, - { 0x4F, 0x2 }, - { 0x4C, 0x3 }, - { 0x4D, 0x4 } -}; - -const u16 Unk_020EB978[] = { - 0x92, - 0xE, - 0xffff -}; - -const u16 Unk_020EB98C[] = { - 0x8D, - 0xE, - 0x6, - 0xffff -}; - -const u16 Unk_020EB984[] = { - 0x8C, - 0xE, - 0x6, - 0xffff -}; - -const u16 Unk_020EB9D0[] = { - 0x92, - 0xE, - 0x6, - 0x8, - 0xffff -}; - -const u16 Unk_020EB994[] = { - 0x24, - 0x22, - 0x23, - 0x25, - 0xffff -}; - -const u16 Unk_020EB9DA[] = { - 0x8F, - 0xE, - 0x6, - 0x8, - 0xffff -}; - -const u16 Unk_020EB9C6[] = { - 0x92, - 0x6, - 0x8, - 0xD, - 0xffff -}; - -const u16 Unk_020EB9A8[] = { - 0x92, - 0x8, - 0xD, - 0xF, - 0xffff -}; - -const u16 Unk_020EBACA[] = { - 0x11, - 0x1A, - 0x19, - 0x18, - 0x1C, - 0x12, - 0x16, - 0x13, - 0x14, - 0x15, - 0x1B, - 0xffff -}; - -const u16 Unk_020EBAE2[] = { - 0x4, - 0x3, - 0x2, - 0x4E, - 0x3F, - 0x4F, - 0x4C, - 0x4D, - 0x89, - 0x8A, - 0x8B, - 0x91, - 0xffff -}; - -const u16 Unk_020EBAB8[] = { - 0x3B, - 0x39, - 0x3A, - 0x37, - 0x38, - 0x3C, - 0x3D, - 0x3E, - 0xffff -}; - -const u16 Unk_020EB9FC[] = { - 0x2E, - 0x2F, - 0x31, - 0x34, - 0x30, - 0x2D, - 0xffff -}; - -const u16 Unk_020EBA66[] = { - 0x19A, - 0x158, - 0x17D, - 0x15B, - 0x168, - 0x157, - 0x18D, - 0xffff -}; - -const u16 Unk_020EBA18[] = { - 0x16D, - 0x160, - 0x155, - 0x15D, - 0x17B, - 0x156, - 0xffff -}; - -const u16 Unk_020EB9B2[] = { - 0x92, - 0xD, - 0xF, - 0xA, - 0xffff -}; - -const u16 Unk_020EB9BC[] = { - 0x90, - 0xD, - 0xF, - 0xA, - 0xffff -}; - -const u16 Unk_020EB99E[] = { - 0x92, - 0xF, - 0xA, - 0x9, - 0xffff -}; - -const u16 Unk_020EB97E[] = { - 0x8E, - 0xB, - 0xffff -}; - -const u16 Unk_020EBAA6[] = { - 0xE, - 0x6, - 0x8, - 0xD, - 0xF, - 0xA, - 0x9, - 0xB, - 0xffff -}; - -const u16 Unk_020EB9E4[] = { - 0x9F, - 0xA0, - 0xA1, - 0xA2, - 0xA3, - 0xffff -}; - -const u16 *Unk_02100B1C[] = { - Unk_020EB978, - Unk_020EB98C, - Unk_020EB984, - Unk_020EB9D0, - Unk_020EB994, - Unk_020EB9DA, - Unk_020EB9C6, - Unk_020EB9A8, - Unk_020EBACA, - Unk_020EBAE2, - Unk_020EBAB8, - Unk_020EB9FC, - Unk_020EBA66, - Unk_020EBA18, - Unk_020EB9B2, - Unk_020EB9BC, - Unk_020EB99E, - Unk_020EB97E, - Unk_020EBAA6, - Unk_020EB9E4 -}; - -const u16 Unk_020EB9F0[] = { - 0x7, - 0x16, - 0x19, - 0x1A, - 0x1B, - 0xffff -}; - -const u16 Unk_020EBA0A[] = { - 0x73, - 0x74, - 0x75, - 0x77, - 0x78, - 0x79, - 0xffff -}; - -const u16 *Unk_02100AF8[] = { - Unk_020EB9F0, - Unk_020EBA0A -}; - -const u16 Unk_020EBA76[] = { - 0x1, - 0x8, - 0x1D, - 0x2B, - 0xF, - 0x16, - 0x24, - 0xffff -}; - -const u16 Unk_020EBA26[] = { - 0x2, - 0x9, - 0x1E, - 0x25, - 0x2C, - 0x10, - 0x17, - 0xffff -}; - -const u16 Unk_020EBA36[] = { - 0x3, - 0xA, - 0x1F, - 0x26, - 0x2D, - 0x11, - 0x18, - 0xffff -}; - -const u16 Unk_020EBA56[] = { - 0x4, - 0x19, - 0x20, - 0x27, - 0x2E, - 0xB, - 0x12, - 0xffff -}; - -const u16 Unk_020EBA86[] = { - 0x1A, - 0x21, - 0x28, - 0x2F, - 0x5, - 0xC, - 0x13, - 0xffff -}; - -const u16 Unk_020EBA46[] = { - 0x1B, - 0x22, - 0x29, - 0x30, - 0x6, - 0xD, - 0x14, - 0xffff -}; - -const u16 Unk_020EBA96[] = { - 0x7, - 0x31, - 0x1C, - 0x2A, - 0xE, - 0x15, - 0x23, - 0xffff -}; - -const u16 *Unk_02100B00[] = { - Unk_020EBA76, - Unk_020EBA26, - Unk_020EBA36, - Unk_020EBA56, - Unk_020EBA86, - Unk_020EBA46, - Unk_020EBA96 -}; +#include "data/mart_items.h" BOOL sub_02046AD4 (UnkStruct_0203E724 * param0) { @@ -402,9 +58,9 @@ BOOL sub_02046AD4 (UnkStruct_0203E724 * param0) break; } - for (v4 = 0; v4 < (NELEMS(Unk_020EBAFC)); v4++) { - if (v1 >= Unk_020EBAFC[v4].unk_02) { - v0[v3] = Unk_020EBAFC[v4].unk_00; + for (v4 = 0; v4 < (NELEMS(PokeMartCommonItems)); v4++) { + if (v1 >= PokeMartCommonItems[v4].requiredBadges) { + v0[v3] = PokeMartCommonItems[v4].itemID; v3++; } } @@ -426,7 +82,7 @@ BOOL sub_02046B9C (UnkStruct_0203E724 * param0) v1 = 0; } - ov7_0224CDA4(param0->unk_28, param0->unk_34, (u16 *)Unk_02100B1C[v0], 0, v1); + ov7_0224CDA4(param0->unk_28, param0->unk_34, (u16 *)PokeMartSpecialties[v0], 0, v1); return 1; } @@ -441,7 +97,7 @@ BOOL sub_02046BF4 (UnkStruct_0203E724 * param0) v1 = 0; } - ov7_0224CDA4(param0->unk_28, param0->unk_34, (u16 *)Unk_02100AF8[v0], 1, v1); + ov7_0224CDA4(param0->unk_28, param0->unk_34, (u16 *)VeilstoneDeptStoreDecorationStocks[v0], 1, v1); return 1; } @@ -449,7 +105,7 @@ BOOL sub_02046C34 (UnkStruct_0203E724 * param0) { u16 v0 = inline_02049538(param0); - ov7_0224CDA4(param0->unk_28, param0->unk_34, (u16 *)Unk_02100B00[v0], 2, 0); + ov7_0224CDA4(param0->unk_28, param0->unk_34, (u16 *)SunyshoreMarketDailyStocks[v0], 2, 0); return 1; }