On this page
  1. Related
  2. References
  3. Sources

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.

References

  1. ^ 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. IsNighttime is 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/pokeheartgold
    How 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.

    In the claim ledger

Sources

Code