Mechanic · progression · role-playing game
Evolution
The process by which a Pokémon changes into another species.
On this page
In Pokémon HeartGold and SoulSilver, evolution methods can depend on the time of day. The level-up check requires friendship of at least 220 by day or by night, or a matching held item by day or by night1.
- Friendship HeartGold and SoulSilver (2009). Friendship evolutions check whether it is day or night1.
- Held item HeartGold and SoulSilver (2009). Held-item evolutions check whether it is day or night1.
References
- ^ abcHeartGold and SoulSilver fold the five periods into three for wild Pokémon (
GF_RTC_GetTimeOfDayWildParamByHour: morning; day or evening; night or late night), and grass encounters pick their species list the same way.IsNighttimeis true at night or late night, so from 20:00 to 3:59 (computed from the hour table), and the evolution methods tied to the clock read it: friendship of at least 220 by day (EVO_FRIENDSHIP_DAY) or by night (EVO_FRIENDSHIP_NIGHT), and a held item by day or by night (EVO_ITEM_DAY,EVO_ITEM_NIGHT).Codepret/pokeheartgoldHow we know
142BOOL IsNighttime(void) { 143 switch (GF_RTC_GetTimeOfDay()) { 144 case RTC_TIMEOFDAY_NITE: 145 case RTC_TIMEOFDAY_LATE: 146 return TRUE; 147 default: 148 return FALSE;
src/gf_rtc.c lines 142–150 at 6988158 · upstream ↗ 196TimeOfDayWildParam GF_RTC_GetTimeOfDayWildParamByHour(s32 hour) { 197 switch (GF_RTC_GetTimeOfDayByHour(hour)) { 198 case RTC_TIMEOFDAY_MORN: 199 return TIMEOFDAY_WILD_MORN; 200 case RTC_TIMEOFDAY_DAY: 201 case RTC_TIMEOFDAY_EVE: 202 return TIMEOFDAY_WILD_DAY; 203 default: 204 return TIMEOFDAY_WILD_NITE;
src/gf_rtc.c lines 196–205 at 6988158 · upstream ↗ 119static void EncSlotArray_Init_Land(const EncounterData *encData, EncounterSlot *encSlots) { 120 TIMEOFDAY timeOfDay = GF_RTC_GetTimeOfDay(); ⋮ 123 if (timeOfDay == RTC_TIMEOFDAY_MORN) { 124 slotSpecies = encData->landSlots.species_morn; 125 } else if (timeOfDay == RTC_TIMEOFDAY_DAY || timeOfDay == RTC_TIMEOFDAY_EVE) { 126 slotSpecies = encData->landSlots.species_day; 127 } else if (timeOfDay == RTC_TIMEOFDAY_NITE || timeOfDay == RTC_TIMEOFDAY_LATE) { 128 slotSpecies = encData->landSlots.species_nite;
src/field/encounter_check.c lines 119–130 at 6988158 · upstream ↗ 2829 case EVO_FRIENDSHIP_DAY: 2830 if (IsNighttime() == 0 && friendship >= 220) { ⋮ 2835 case EVO_FRIENDSHIP_NIGHT: 2836 if (IsNighttime() == 1 && friendship >= 220) {
src/pokemon.c lines 2829–2839 at 6988158 · upstream ↗ 2902 case EVO_ITEM_DAY: 2903 if (IsNighttime() == 0 && evoTable[i].param == heldItem) { ⋮ 2908 case EVO_ITEM_NIGHT: 2909 if (IsNighttime() == 1 && evoTable[i].param == heldItem) {
src/pokemon.c lines 2902–2909 at 6988158 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-22.
Checked by a second AI model, 2026-10-22.
Sources
Code
- pret contributors. 2026. “pokeheartgold: decompilation of Pokémon HeartGold and SoulSilver.” pret. Commit 6988158. pret/pokeheartgold @ 6988158 · licence, all uses