ROM Hack Changelog

Hard Mode · Advanced AI · Full Rosters

A complete difficulty overhaul for Pokémon Crystal. Every trainer carries a full team, levels scale with a 1.5× multiplier, a badge-based level cap keeps you on pace, and a smarter AI makes every battle count.

Difficulty and progression

×1.5
Level multiplier
(all trainers & wild)
+6
Kanto map bonus
(added before ×1.5)
×3.0
Battle EXP gain
multiplier
16
Badges to lift
the level cap
⚔️

Hard Mode (always on)

Every battle level — trainers, wild encounters, and scripted fights — is computed as (base + 6 on Kanto) × 1.5, rounded, clamped to 100. The catching tutorial stays at level 5. EXP gains are tripled (3.0×).

🔒

Badge-based Level Cap

Your Pokémon can’t gain EXP past a cap tied to your badge count. After 8 Johto badges (pre-League), the cap locks to Lance’s ace level. Pokémon above the cap simply stop earning EXP. Daycare and Rare Candy obey it too. The cap lifts entirely after all 16 badges.

Hard mode level = (base level + (Kanto? 6 : 0)) × 1.5 → rounded → clamped to 100
Progress (badge count) Base cap (reference) Cap after hard mode Notes
Johto 0914Applies from start until you earn your 1st Johto badge
Johto 11624
Johto 22030
Johto 32538
Johto 43045
Johto 53147
Johto 63553
Johto 74060Applies until you earn your 8th Johto badge
Johto 8 (pre-League)5075Applies until you clear the League (Champion Lance ace level)
Kanto 06090Used after you clear the League, even with 0 Kanto badges
Kanto 16293
Kanto 26496
Kanto 36699
Kanto 468100Clamp at 100 for higher tiers
Kanto 570100
Kanto 672100
Kanto 775100Cap removed after you earn all 8 Kanto badges (16 total)

Wild encounters and roaming beasts

🌿

Wild Level Scaling

Grass, surfing, fishing, headbutt trees, Bug-Catching Contest, and most static encounters (Red Gyarados, legendaries, Sudowoodo) all get the Kanto +6 bonus then the ×1.5 multiplier. Snorlax is exempt from the +6 bonus (still gets ×1.5).

Roaming Beasts

Raikou and Entei: if on the same map as the player, any wild encounter becomes the roamer. They cannot flee on the first turn. Each roam tick gives a 50% chance to stay put. Their levels also scale with Kanto bonus + hard multiplier.

Trainers (before vs after, plus hard-mode result)

6v6
Full teams for
every Gym Leader
20
Boss trainers
with upgraded rosters
Lv100
All Kanto leaders
cap at max level

All Johto leaders now have 6 Pokémon; Kanto leaders, Blue and Red are also 6. Key ace levels:

Trainer (ace) Vanilla ace lvl Hack ace lvl (base) Hack ace lvl in hard mode
Falkner (Pidgeotto)9914
Bugsy (Scyther)161624
Whitney (Miltank)202030
Morty (Gengar)252538
Chuck (Poliwrath)303045
Pryce (Piloswine)313147
Jasmine (Steelix)353553
Clair (Kingdra)404060
Will (Xatu)424263
Koga (Crobat)444466
Bruno (Machamp)464669
Karen (Houndoom)474771
Lance (Dragonite)505075
Brock (Tyranitar)4472100 (78×1.5 capped)
Misty (Suicune)4770100 (76×1.5 capped)
Lt. Surge (Raikou)4662100 (68×1.5 capped)
Erika (Celebi)4666100 (72×1.5 capped)
Janine (Muk)3964100 (70×1.5 capped)
Sabrina (Lugia)4868100 (74×1.5 capped)
Blaine (Entei)5074100 (80×1.5 capped)
Blue (Ho-Oh)5877100 (83×1.5 capped)
Red (Mewtwo)8188100 (capped from 132)
Notes:
  • Hard-mode level = (base level [+6 if the fight is in Kanto]) × 1.5, rounded, then clamped to 100. All Kanto bosses therefore hit the level cap. Red is not in Kanto for the +6, but still caps at 100 after the 1.5× multiplier.
  • Major battles use a stronger (but non-cheating) trainer AI profile: type-aware move choice, more consistent setup/status logic, aggressive switching, and more decisive item usage.

Trainer Pokémon stat boosts (DVs + Stat Exp) + held items

📊

Before

Trainer Pokémon stats were computed without pulling Stat Exp from the party struct — trainer Stat Exp was effectively 0.

📈

After

Trainer Pokémon now receive class-based DVs + Stat Exp, stats are recomputed at party build, and battle stats are copied from the party struct (the boost actually applies).

Gen 2 terminology: “IVs” = DVs (0–15 per stat), “EVs” = Stat Exp (0–65535 per stat).

Trainer class DVs (before → after) Atk/Def/Spd/Spc · 0–15 each
Trainer class Before After
FALKNER9/10/7/711/11/11/11
WHITNEY8/8/8/811/11/11/11
BUGSY9/8/8/811/11/11/11
MORTY9/8/8/812/12/12/12
PRYCE9/8/8/812/12/12/12
JASMINE9/8/8/812/12/12/12
CHUCK9/8/8/812/12/12/12
CLAIR7/12/13/1313/13/13/13
WILL13/12/13/1313/13/13/13
BRUNO13/12/13/1313/13/13/13
KAREN7/15/13/1513/13/13/13
KOGA13/12/13/1313/13/13/13
CHAMPION13/12/13/1315/15/15/15
BROCK9/8/8/813/13/13/13
MISTY7/8/8/813/13/13/13
LT_SURGE9/8/8/813/13/13/13
ERIKA7/8/8/813/13/13/13
JANINE9/8/8/813/13/13/13
SABRINA7/13/8/713/13/13/13
RIVAL29/8/8/814/14/14/14
BLAINE9/8/8/813/13/13/13
EXECUTIVEM13/8/10/813/13/13/13
EXECUTIVEF7/14/10/813/13/13/13
RED15/13/13/1415/15/15/15
BLUE9/13/13/1315/15/15/15
Trainer class Stat Exp (EVs) Applied equally to all 5 stats

Stat Exp is applied equally to HP/Atk/Def/Spd/Spc. Tuning knobs: trainer class Stat Exp table + Rival ID scaling.

Trainer class Stat Exp

Stat Exp is applied equally to HP/Atk/Def/Spd/Spc as a big-endian word, where the low byte is always 0: StatExp = (high_byte) × 256.

Tuning knobs: trainer class Stat Exp table + Rival ID scaling.

Trainer class Stat Exp high byte Stat Exp per stat
FALKNER307680
WHITNEY307680
BUGSY307680
MORTY6015360
PRYCE6015360
JASMINE6015360
CHUCK6015360
CLAIR8020480
EXECUTIVEM10025600
EXECUTIVEF10025600
WILL12030720
BRUNO12030720
KAREN12030720
KOGA12030720
CHAMPION14035840
BROCK18046080
MISTY18046080
LT_SURGE18046080
ERIKA18046080
JANINE18046080
SABRINA18046080
BLAINE18046080
BLUE20051200
RED22056320

Rival Stat Exp scaling (special-cased by trainer ID)

  • Rival1: IDs 1–3 → 0; 4–6 → 30; 7–9 → 50; 10–12 → 70; 13–15 → 100
  • Rival2: IDs 1–3 → 160; 4–6 → 180

Stat Exp impact (rule-of-thumb)

In the Gen 2 stat formula, Stat Exp contributes floor(sqrt(StatExp)) / 4, then scales with level.

High byte Stat Exp isqrt(StatExp)//4 +stat @ Lv50 +stat @ Lv100
307680211021
6015360301530
8020480351735
10025600402040
12030720432143
14035840472347
16040960502550
18046080532653
20051200562856
22056320592959

Per-stat contributions before the constant +5 (or +Level+10 for HP). Same Stat Exp to all 5 stats, so trainers are “evenly” buffed.

Held items (major battles)

Held items are distinct from trainer-used items (Potions/Full Restores/etc). This section is only about Pokémon-held items.

Before → after

  • Before: most major battles used TRAINERTYPE_MOVES (so held items were not possible).
  • After: major battles use TRAINERTYPE_ITEM_MOVES, and many Pokémon carry held items.

Held items used (unique list)

BERRY, BLACKBELT_I, BLACKGLASSES, CHARCOAL, DRAGON_FANG, GOLD_BERRY, HARD_STONE, LEFTOVERS, LIGHT_BALL, MAGNET, METAL_COAT, MINT_BERRY, MIRACLEBERRY, MIRACLE_SEED, MYSTIC_WATER, NEVERMELTICE, PINK_BOW, POISON_BARB, SHARP_BEAK, SILVERPOWDER, SOFT_SAND, SPELL_TAG, TWISTEDSPOON.

Held items are shown directly on the Hack Pokémon cards in the visualizers below (Rival / Rocket / Boss teams). Pokémon without a displayed held item use NO_ITEM.

Trainer AI upgrades (major battles)

Applies to Gym Leaders, Elite Four + Champion, Rival fights, Team Rocket bosses, key Grunts, and endgame bosses (Red/Blue).

Move selection layers

AI_BASIC

Avoids redundant/invalid moves (e.g. status when the target can’t be statused).

AI_SETUP

More willing to use stat boosts and nerfs early in the fight.

AI_TYPES

Avoids immunities and prefers super-effective moves when available.

AI_SMART

Extra context rules for Protect timing, Encore, Perish Song, and more.

AI_OPPORTUNIST

Discourages stalling/setup when the AI is low HP.

AI_AGGRESSIVE + RISKY

Pushes toward higher-damage lines and takes KOs when available.

AI_STATUS

Avoids wasting status moves into immunities (e.g. Toxic into Poison).

🔄

Switching & Items

SWITCH_OFTEN punishes bad matchups and exploits resistances. ALWAYS_USE items: bosses don’t sit on Full Heal/Restore anymore.

🐛

AI Bugfixes (8 fixes)

Mean Look, Conversion2, Sunny Day synergy, Cautious AI, Future Sight, type-matchup reading, item selection loop, and status-heal logic.

Full bugfix details 8 engine-level AI fixes
  • Fixed Smart AI checks for Mean Look so it keys off the player being badly poisoned (instead of itself).
  • Fixed Smart AI Conversion2 logic so it doesn’t incorrectly discourage it after the first turn.
  • Fixed Smart AI Sunny Day synergy so it recognizes SolarBeam / Flame Wheel / Moonlight.
  • Fixed Cautious AI so it can’t “early return” and fail to discourage residual moves.
  • Fixed redundant-check for Future Sight so it correctly detects an already-active Future Sight.
  • Fixed type-matchup reading so AI layers don’t accidentally evaluate matchups with the wrong move type.
  • Fixed AI item selection loop so it can’t read past the trainer item slots.
  • Fixed AI status-heal logic so Full Heal/Restore also clears Nightmare + confusion.

Rival battles

🤜

Full Boss Teams

Every Rival fight is 6v6 except the intro fight in Cherrygrove (still 1 Pokémon). Fixed movesets prevent accidental early STAB from level scaling.

📈

Threatening Progression

Zubat→Crobat, Gastly→Gengar, Magnemite→Magneton. Sneasel and Kadabra/Alakazam become core threats by late Johto.

Select a battle on the left to compare Vanilla vs Hack. Sprites: Gen V Black/White (animated GIF fallback → PNG).

Team Rocket executives

🚀

Full 6v6 Executive Teams

All Rocket Executive battles in Mahogany Hideout and Radio Tower are full boss teams with fixed movesets and held items.

💣

Real Threats

Fake Director mixes Poison/Dark/Flying/Steel staples. Radio Tower boss runs Houndoom with Sunny Day + Solarbeam.

Select a fight on the left. Held items (if any) are shown on the Hack team cards.

Full teams before/after (levels, moves, held items)

Levels shown are base (pre hard-mode). Kanto fights also get +6 then ×1.5 (cap 100). Compare Vanilla vs Hack rosters below. Held items shown on Hack cards.

Use the group selector inside the browser (Johto / Elite Four / Kanto) to switch lists.

Other changes

💰 Economy & Items

  • Repel prices slashed: Repel 120, Super Repel 170, Max Repel 240.
  • Evo stones at Celadon Dept Store 4F (¥50,000 each).
  • Free EXP Share in the PC on a fresh save.

📈 EXP Curves

Many strong Pokémon move from Slow to Medium-Slow growth: Gyarados, Dragonite, Tyranitar, Rhydon, Arcanine, Starmie, Heracross, Skarmory, Houndoom, Snorlax, Lapras, legendaries, and more.

🚲 Quality of Life

  • Bike works anywhere and stays active across map changes.
  • Route 17 no longer forces downhill drift.
  • NPCs stay in place (no random wandering).

⭐ Post-game

After the League, receiving the S.S. Ticket also immediately enables the GS Ball event, without Virtual Console conditions.

💬 Feedback

A clear battle message appears when EXP is blocked by the current level cap, so players know why gains stop.

Evolution changes

All former trade evolutions now trigger on level-up. Held-item requirements stay; the item is consumed on success.

From To New trigger Notes
KadabraAlakazamLevel 36No item needed
MachokeMachampLevel 36No item needed
GravelerGolemLevel 36No item needed
HaunterGengarLevel 36No item needed
PoliwhirlPolitoedLevel 36 + King’s RockConsumes King’s Rock
SlowpokeSlowkingLevel 37 + King’s RockConsumes King’s Rock
OnixSteelixLevel 37 + Metal CoatConsumes Metal Coat
ScytherScizorLevel 36 + Metal CoatConsumes Metal Coat
SeadraKingdraLevel 40 + Dragon ScaleConsumes Dragon Scale
PorygonPorygon2Level 40 + Up-GradeConsumes Up-Grade
↑ Top