From 8d175ebe89ca0f914ba0525031b6b76392d18443 Mon Sep 17 00:00:00 2001 From: sneed <56992013+Sneed69@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:29:00 +0300 Subject: [PATCH] Automatically display TM/HM icons based on their move (#4452) * Automatically get icons and palettes for TM/HMs * Restore HM icons * replace sTMTypePalettes with a gTypesInfo field --- include/data.h | 1 + src/battle_main.c | 19 +++++++ src/data/item_icon_table.h | 109 ------------------------------------- src/item_icon.c | 8 +++ 4 files changed, 28 insertions(+), 109 deletions(-) diff --git a/include/data.h b/include/data.h index 78abd00b35..b18dbf220f 100644 --- a/include/data.h +++ b/include/data.h @@ -109,6 +109,7 @@ struct TypeInfo u8 palette; u16 zMove; u16 maxMove; + const u32 *const paletteTMHM; //u16 enhanceItem; //u16 berry; //u16 gem; diff --git a/src/battle_main.c b/src/battle_main.c index d7bbb764bf..9b1add03e4 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -311,6 +311,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 13, .zMove = MOVE_BREAKNECK_BLITZ, .maxMove = MOVE_MAX_STRIKE, + .paletteTMHM = gItemIconPalette_NormalTMHM, //.enhanceItem = ITEM_SILK_SCARF, //.berry = ITEM_CHILAN_BERRY, //.gem = ITEM_NORMAL_GEM, @@ -325,6 +326,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 13, .zMove = MOVE_ALL_OUT_PUMMELING, .maxMove = MOVE_MAX_KNUCKLE, + .paletteTMHM = gItemIconPalette_FightingTMHM, //.enhanceItem = ITEM_BLACK_BELT, //.berry = ITEM_CHOPLE_BERRY, //.gem = ITEM_FIGHTING_GEM, @@ -341,6 +343,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 14, .zMove = MOVE_SUPERSONIC_SKYSTRIKE, .maxMove = MOVE_MAX_AIRSTREAM, + .paletteTMHM = gItemIconPalette_FlyingTMHM, //.enhanceItem = ITEM_SHARP_BEAK, //.berry = ITEM_COBA_BERRY, //.gem = ITEM_FLYING_GEM, @@ -357,6 +360,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 14, .zMove = MOVE_ACID_DOWNPOUR, .maxMove = MOVE_MAX_OOZE, + .paletteTMHM = gItemIconPalette_PoisonTMHM, //.enhanceItem = ITEM_POISON_BARB, //.berry = ITEM_KEBIA_BERRY, //.gem = ITEM_POISON_GEM, @@ -373,6 +377,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 13, .zMove = MOVE_TECTONIC_RAGE, .maxMove = MOVE_MAX_QUAKE, + .paletteTMHM = gItemIconPalette_GroundTMHM, //.enhanceItem = ITEM_SOFT_SAND, //.berry = ITEM_SHUCA_BERRY, //.gem = ITEM_GROUND_GEM, @@ -389,6 +394,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 13, .zMove = MOVE_CONTINENTAL_CRUSH, .maxMove = MOVE_MAX_ROCKFALL, + .paletteTMHM = gItemIconPalette_RockTMHM, //.enhanceItem = ITEM_HARD_STONE, //.berry = ITEM_CHARTI_BERRY, //.gem = ITEM_ROCK_GEM, @@ -405,6 +411,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 15, .zMove = MOVE_SAVAGE_SPIN_OUT, .maxMove = MOVE_MAX_FLUTTERBY, + .paletteTMHM = gItemIconPalette_BugTMHM, //.enhanceItem = ITEM_SILVER_POWDER, //.berry = ITEM_TANGA_BERRY, //.gem = ITEM_BUG_GEM, @@ -421,6 +428,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 14, .zMove = MOVE_NEVER_ENDING_NIGHTMARE, .maxMove = MOVE_MAX_PHANTASM, + .paletteTMHM = gItemIconPalette_GhostTMHM, //.enhanceItem = ITEM_SPELL_TAG, //.berry = ITEM_KASIB_BERRY, //.gem = ITEM_GHOST_GEM, @@ -437,6 +445,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 13, .zMove = MOVE_CORKSCREW_CRASH, .maxMove = MOVE_MAX_STEELSPIKE, + .paletteTMHM = gItemIconPalette_SteelTMHM, //.enhanceItem = ITEM_METAL_COAT, //.berry = ITEM_BABIRI_BERRY, //.gem = ITEM_STEEL_GEM, @@ -459,6 +468,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 13, .zMove = MOVE_INFERNO_OVERDRIVE, .maxMove = MOVE_MAX_FLARE, + .paletteTMHM = gItemIconPalette_FireTMHM, //.enhanceItem = ITEM_CHARCOAL, //.berry = ITEM_OCCA_BERRY, //.gem = ITEM_FIRE_GEM, @@ -475,6 +485,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 14, .zMove = MOVE_HYDRO_VORTEX, .maxMove = MOVE_MAX_GEYSER, + .paletteTMHM = gItemIconPalette_WaterTMHM, //.enhanceItem = ITEM_MYSTIC_WATER, //.berry = ITEM_PASSHO_BERRY, //.gem = ITEM_WATER_GEM, @@ -491,6 +502,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 15, .zMove = MOVE_BLOOM_DOOM, .maxMove = MOVE_MAX_OVERGROWTH, + .paletteTMHM = gItemIconPalette_GrassTMHM, //.enhanceItem = ITEM_MIRACLE_SEED, //.berry = ITEM_RINDO_BERRY, //.gem = ITEM_GRASS_GEM, @@ -507,6 +519,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 13, .zMove = MOVE_GIGAVOLT_HAVOC, .maxMove = MOVE_MAX_LIGHTNING, + .paletteTMHM = gItemIconPalette_ElectricTMHM, //.enhanceItem = ITEM_MAGNET, //.berry = ITEM_WACAN_BERRY, //.gem = ITEM_ELECTRIC_GEM, @@ -523,6 +536,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 14, .zMove = MOVE_SHATTERED_PSYCHE, .maxMove = MOVE_MAX_MINDSTORM, + .paletteTMHM = gItemIconPalette_PsychicTMHM, //.enhanceItem = ITEM_TWISTED_SPOON, //.berry = ITEM_PAYAPA_BERRY, //.gem = ITEM_PSYCHIC_GEM, @@ -539,6 +553,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 14, .zMove = MOVE_SUBZERO_SLAMMER, .maxMove = MOVE_MAX_HAILSTORM, + .paletteTMHM = gItemIconPalette_IceTMHM, //.enhanceItem = ITEM_NEVER_MELT_ICE, //.berry = ITEM_YACHE_BERRY, //.gem = ITEM_ICE_GEM, @@ -555,6 +570,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 15, .zMove = MOVE_DEVASTATING_DRAKE, .maxMove = MOVE_MAX_WYRMWIND, + .paletteTMHM = gItemIconPalette_DragonTMHM, //.enhanceItem = ITEM_DRAGON_FANG, //.berry = ITEM_HABAN_BERRY, //.gem = ITEM_DRAGON_GEM, @@ -571,6 +587,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 13, .zMove = MOVE_BLACK_HOLE_ECLIPSE, .maxMove = MOVE_MAX_DARKNESS, + .paletteTMHM = gItemIconPalette_DarkTMHM, //.enhanceItem = ITEM_BLACK_GLASSES, //.berry = ITEM_COLBUR_BERRY, //.gem = ITEM_DARK_GEM, @@ -587,6 +604,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 14, .zMove = MOVE_TWINKLE_TACKLE, .maxMove = MOVE_MAX_STARFALL, + .paletteTMHM = gItemIconPalette_FairyTMHM, //.enhanceItem = ITEM_FAIRY_FEATHER, //.berry = ITEM_ROSELI_BERRY, //.gem = ITEM_FAIRY_GEM, @@ -603,6 +621,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = .palette = 15, .zMove = MOVE_BREAKNECK_BLITZ, .maxMove = MOVE_MAX_STRIKE, + .paletteTMHM = gItemIconPalette_NormalTMHM, // failsafe // .teraShard = ITEM_STELLAR_TERA_SHARD, }, }; diff --git a/src/data/item_icon_table.h b/src/data/item_icon_table.h index 9d3caea9d9..d4d4a19c58 100644 --- a/src/data/item_icon_table.h +++ b/src/data/item_icon_table.h @@ -621,115 +621,6 @@ const u32 *const gItemIconTable[ITEMS_COUNT + 1][2] = [ITEM_KEE_BERRY] = {gItemIcon_KeeBerry, gItemIconPalette_KeeBerry}, [ITEM_MARANGA_BERRY] = {gItemIcon_MarangaBerry, gItemIconPalette_MarangaBerry}, [ITEM_ENIGMA_BERRY_E_READER] = {gItemIcon_EnigmaBerry, gItemIconPalette_EnigmaBerry}, - // TMs/HMs - [ITEM_TM01] = {gItemIcon_TM, gItemIconPalette_FightingTMHM}, - [ITEM_TM02] = {gItemIcon_TM, gItemIconPalette_DragonTMHM}, - [ITEM_TM03] = {gItemIcon_TM, gItemIconPalette_WaterTMHM}, - [ITEM_TM04] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM05] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM06] = {gItemIcon_TM, gItemIconPalette_PoisonTMHM}, - [ITEM_TM07] = {gItemIcon_TM, gItemIconPalette_IceTMHM}, - [ITEM_TM08] = {gItemIcon_TM, gItemIconPalette_FightingTMHM}, - [ITEM_TM09] = {gItemIcon_TM, gItemIconPalette_GrassTMHM}, - [ITEM_TM10] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM11] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, - [ITEM_TM12] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, - [ITEM_TM13] = {gItemIcon_TM, gItemIconPalette_IceTMHM}, - [ITEM_TM14] = {gItemIcon_TM, gItemIconPalette_IceTMHM}, - [ITEM_TM15] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM16] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM17] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM18] = {gItemIcon_TM, gItemIconPalette_WaterTMHM}, - [ITEM_TM19] = {gItemIcon_TM, gItemIconPalette_GrassTMHM}, - [ITEM_TM20] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM21] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM22] = {gItemIcon_TM, gItemIconPalette_GrassTMHM}, - [ITEM_TM23] = {gItemIcon_TM, gItemIconPalette_SteelTMHM}, - [ITEM_TM24] = {gItemIcon_TM, gItemIconPalette_ElectricTMHM}, - [ITEM_TM25] = {gItemIcon_TM, gItemIconPalette_ElectricTMHM}, - [ITEM_TM26] = {gItemIcon_TM, gItemIconPalette_GroundTMHM}, - [ITEM_TM27] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM28] = {gItemIcon_TM, gItemIconPalette_GroundTMHM}, - [ITEM_TM29] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM30] = {gItemIcon_TM, gItemIconPalette_GhostTMHM}, - [ITEM_TM31] = {gItemIcon_TM, gItemIconPalette_FightingTMHM}, - [ITEM_TM32] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM33] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM34] = {gItemIcon_TM, gItemIconPalette_ElectricTMHM}, - [ITEM_TM35] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, - [ITEM_TM36] = {gItemIcon_TM, gItemIconPalette_PoisonTMHM}, - [ITEM_TM37] = {gItemIcon_TM, gItemIconPalette_RockTMHM}, - [ITEM_TM38] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, - [ITEM_TM39] = {gItemIcon_TM, gItemIconPalette_RockTMHM}, - [ITEM_TM40] = {gItemIcon_TM, gItemIconPalette_FlyingTMHM}, - [ITEM_TM41] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, - [ITEM_TM42] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM43] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM44] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM45] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM46] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, - [ITEM_TM47] = {gItemIcon_TM, gItemIconPalette_SteelTMHM}, - [ITEM_TM48] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM49] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, - [ITEM_TM50] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, - [ITEM_TM51] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM52] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM53] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM54] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM55] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM56] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM57] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM58] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM59] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM60] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM61] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM62] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM63] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM64] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM65] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM66] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM67] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM68] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM69] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM70] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM71] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM72] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM73] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM74] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM75] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM76] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM77] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM78] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM79] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM80] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM81] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM82] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM83] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM84] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM85] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM86] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM87] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM88] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM89] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM90] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM91] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM92] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM93] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM94] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM95] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM96] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM97] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM98] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM99] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM100] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_HM01] = {gItemIcon_HM, gItemIconPalette_NormalTMHM}, - [ITEM_HM02] = {gItemIcon_HM, gItemIconPalette_FlyingTMHM}, - [ITEM_HM03] = {gItemIcon_HM, gItemIconPalette_WaterTMHM}, - [ITEM_HM04] = {gItemIcon_HM, gItemIconPalette_NormalTMHM}, - [ITEM_HM05] = {gItemIcon_HM, gItemIconPalette_NormalTMHM}, - [ITEM_HM06] = {gItemIcon_HM, gItemIconPalette_FightingTMHM}, - [ITEM_HM07] = {gItemIcon_HM, gItemIconPalette_WaterTMHM}, - [ITEM_HM08] = {gItemIcon_HM, gItemIconPalette_WaterTMHM}, // Charms [ITEM_OVAL_CHARM] = {gItemIcon_OvalCharm, gItemIconPalette_OvalCharm}, [ITEM_SHINY_CHARM] = {gItemIcon_ShinyCharm, gItemIconPalette_ShinyCharm}, diff --git a/src/item_icon.c b/src/item_icon.c index fd6f041695..45775f6674 100644 --- a/src/item_icon.c +++ b/src/item_icon.c @@ -5,6 +5,8 @@ #include "malloc.h" #include "sprite.h" #include "constants/items.h" +#include "item.h" +#include "battle_main.h" // EWRAM vars EWRAM_DATA u8 *gItemIconDecompressionBuffer = NULL; @@ -163,6 +165,12 @@ const void *GetItemIconPicOrPalette(u16 itemId, u8 which) itemId = ITEMS_COUNT; // Use last icon, the "return to field" arrow else if (itemId >= ITEMS_COUNT) itemId = 0; + else if (itemId >= ITEM_TM01 && itemId <= ITEM_HM08 && which) + return gTypesInfo[gMovesInfo[gItemsInfo[itemId].secondaryId].type].paletteTMHM; + else if (itemId >= ITEM_TM01 && itemId < ITEM_HM01) + return gItemIcon_TM; + else if (itemId >= ITEM_HM01 && itemId <= ITEM_HM08) + return gItemIcon_HM; return gItemIconTable[itemId][which]; }