Mirror of the github repository
Find a file
Misty 308701db03
The Grand Finale
Every Pokemon is now integrated, aside from regional forms and evolutions of those (except Evolotto, I'll do that later). I may now rest.
2025-09-13 18:29:54 -06:00
audio Five + Six island maps with another RBY style remix 2025-08-07 23:13:20 -04:00
constants The Grand Finale 2025-09-13 18:25:24 -06:00
data Merge branch 'ShiraTheMogul:master' into master 2025-09-13 18:25:54 -06:00
docs First Commit 2023-09-10 12:35:35 -04:00
engine Shiny Pokedex Fix + Personal Gripe (#79) 2025-09-04 10:48:15 +01:00
gfx The Grand Finale 2025-09-13 18:25:24 -06:00
home Music Bugfix from the Pokecrystal docs 2025-08-07 21:09:10 -04:00
lib/mobile First Commit 2023-09-10 12:35:35 -04:00
macros revert 093bda0 2025-07-25 17:31:12 +01:00
maps The Grand Finale 2025-09-13 18:25:24 -06:00
mobile Hyoshu-Yang & Hyoshu-Yin (Rework) 2024-08-23 21:57:52 +01:00
ram Shiny Pokedex Fix + Personal Gripe (#79) 2025-09-04 10:48:15 +01:00
tools Build Bug Fix! Probably. Back up your shit if you've not been getting that bug 2024-12-19 18:45:02 -05:00
vc First Commit 2023-09-10 12:35:35 -04:00
.gitattributes First Commit 2023-09-10 12:35:35 -04:00
.gitignore Tossing balls lag back to Crystal levels (#73) 2025-09-01 03:56:04 +01:00
audio.asm Five + Six island maps with another RBY style remix 2025-08-07 23:13:20 -04:00
charmap.asm Tiles can have different attributes in different blocks 2023-09-13 12:44:30 -04:00
flake.lock updated makefile for rgbds 7.0 + nix automatic environment 2024-03-15 09:09:12 +13:00
flake.nix updated makefile for rgbds 7.0 + nix automatic environment 2024-03-15 09:09:12 +13:00
home.asm First Commit 2023-09-10 12:35:35 -04:00
includes.asm First Commit 2023-09-10 12:35:35 -04:00
INSTALL.md First Commit 2023-09-10 12:35:35 -04:00
layout.link ITEMFIX: I hate working with WRAM 2024-12-13 01:00:32 -05:00
main.asm The Grand Finale 2025-09-13 18:25:24 -06:00
Makefile hi thorny 2024-08-27 03:31:07 +01:00
palmap2attr.py Tiles can have different attributes in different blocks 2023-09-13 12:44:30 -04:00
ram.asm First Commit 2023-09-10 12:35:35 -04:00
README.md Update README.md 2025-09-14 00:46:48 +01:00
replace.sh First Commit 2023-09-10 12:35:35 -04:00
rgbdscheck.asm First Commit 2023-09-10 12:35:35 -04:00
scan_includes.exe.stackdump Dex entry enhancements 2024-07-31 12:31:19 +01:00

Johto Expansion Pak

This is a ROM Hack of Pokemon Crystal, playing upon the Kanto Expansion Pak's old philosophy. It adds Johto- and Kanto-related Pokemon to Crystal, more interesting locations, and QoL changes.

Being so much more elaborate than Kanto, with what is essentially an entirely different game in its development stages, the Johto Expansion Pak is a far more ambitious project than KEP. Most notably, there is a much-extended storyline.

If playing on an emulator, BGB is strongly recommended for its accuracy and features. Inaccurate emulators, such as VBA and TGB Dual, can experience unintended glitches. This hack is fully playable on official hardware as well.

New Pokemon

Using the Kanto Expansion Pak's original criteria, the ethos of the Johto Expansion Pak will be to add every "Johto- and Kanto-related Pokemon to Crystal without fundamentally changing the way the game is played."

What falls under "Johto- and Kanto-related" is a Pokemon is the following, so long as they are, in fact, related:

  • Is a regional variant (Eg. Hisuian Sneasel)
  • Evolves from or into a Pokemon (eg. Tangrowth, Honchkrow, Leafeon, Happiny)
    • This includes Evolotto, a Pokemon from the RS Asset Leak that evolves into almost anything! Very much an edge case, but it is a nice addition to the Goldenrod Lottery feature.
  • Was cut from the final game (eg. Bellignan, Tricules, Phandarin; "beta" Pokemon) or cut from a future title while being related to a Kanto/Johto Pokemon (eg. Lizargun/Charmada)
  • Is a regional convergent (eg. Wugtrio, Toedscruel; "Okagyaradosu" qualified for this, which we named Terrados!)
  • Is a Paradox equivalent (eg. Walking Wake)
  • Would qualify for the Kanto Expansion Pak (eg. Omegadge, Melmetal); we call these "KEP Veterans."

Any Pokemon that you can think of that would come under this, is absolutely in. Dex total is 484!

Many prototype Pokemon have very little information around them: You'll be hard-pressed to find stats, cries, movesets, anything for some. With the Kanto Expansion Pak, we used all context clues available to try and formulate a picture-perfect, accurate representation to the best of our abilities. We've done this with the May 1998 Sprite Cache Pokemon, among others. Whenever something confirmed exists, it is used, and that then informs the interpretation. We also take Nob Ogasawara names as canon whenever they appear.

Mega Evolutions, Gigantamax forms, etc, are not in active consideration.

Changes

  • There is now an enby character option named Topaz, purple-themed.
  • You can now name your mother, just as it was in Gold and Silver's prototype stages!
  • There is a new Nihon region, based on the 1998 version before it got scrapped for Johto.
  • The Fairy-type is now available, using the though Pokemon are not retroactively changed, per the Kanto Expansion Pak philosophy (you wouldn't want a Fairy-type Granbull pre-split, would you?)
  • Additionally, Fairy uses the proto-XY discovery from the 2024 Teraleak, being closer to GSC. Thus...
    • Fairy attacks are Super Effective vs: Fighting, Bug, Dragon, Dark
    • Fairy attacks are Not Very Effective vs: Fire, Ice, Steel
    • Fairy-type Pokemon are weak to: Fire, Ice, Steel
    • Fairy-type Pokemon resist: Fighting, Bug, Dark
    • Fairy-type Pokemon are Immune To: Dragon
  • Fossil revival is back in town! Get fossils using Rock Smash and revive them at Ruins of Alph or the newly-added Pewter Museum of Science!
  • Breakable rocks now give useful items...
    • 1% MAX_REVIVE
    • 2% DOME_FOSSIL - Kabuto
    • 2% HELIX_FOSSIL - Omanyte
    • 2% WING_FOSSIL - Feradactyl
    • 2% OLD_AMBER - Decilla
    • 2% CLUB_FOSSIL - Xylodon
    • 4% STAR_PIECE
    • 10% BIG_PEARL
    • 18% ETHER
    • 24% HARD_STONE
    • 24% SOFT_SAND
    • 48% PEARL
    • 64% BRICK_PIECE
  • Many new Trainer classes, including;
    • RBY classes not in GSC, such as the Rocker, Channeler, and even the beta Firefighter
    • Prototype GSC classes such as the Male Teacher, Sportsman, and Soldier
    • The Painter from FRLG!
    • The Elder from HGSS, featuring the NTSC Sage sprite.
    • Decensoring is applied to the Fisher, Beauty, Female Swimmer, Medium, and Sage sprites, to match the Japanese version. Let Tully have a puff!
  • Many evolution stones have been added to accomodate the Pokemon featured here, including the Heart and Poison Stones from the SpaceWorld demo, and the Peat Block!
  • The Fairy Feather from Scarlet and Violet has been added to accomodate the Fairy type.
  • The Antique Pot has been added to accomodate a Shuckle evolution!
  • New Club and Wing Fossils; the former for Xylodon, a May98 Prototype Pokemon, and the latter for Feradactyl, (seemingly) an Aerodactyl pre-evolution from the same prototype.
  • The unused Honey Pot from prototype GSC has been added! 2 days after placing Sweet Honey, you can encounter either Munchlax, Beedrill, Ursaring, or Heracross!
  • Unused moves from the SpaceWorld demo have been re-implemented and distributed amongst the Pokemon. This includes the unused HMs, each with unique effects, sometimes calling back to other titles.
  • Pokemon all have unique party icons!

QoL Changes

  • Fast text and stereo sound are now the default options.
  • Pokemon learnsets have been given a large upheaval, now being easier to use. A conservative approach was employed to ensure the GSC feel was preserved. Move additions have been made based on prototype and future game material (eg. Sing Pidgeot using proto-RG), but odd ones (eg. Aeroblast Skarmory) were omitted.
  • A Trader NPC is available in a new Lake of Rage town area, allowing you to access trade evolutions natively.
  • DVs, Stat Exp., and Hidden Power now display on the stat screen.
  • Kurt now makes Apricorn Balls instantly. He's had his coffee and is listening to his favourite music.
  • Instant text is now an option!
  • Clock reset procedure is now like vanilla GS, requiring just Down + B.
  • Gen 6 Experience System!
  • Poke Balls now all have unique palettes.
  • The high friendship evolution threshold is now 170, making Friend Balls sufficient for instant evolution. Hatching Pokemon from eggs also makes friendship-based evolution take minimal effort.
  • Items previously only obtainable via the Time Capsule are now distributed to specific Pokemon (5%: Polkadot Bow Snubbull, TwistedSpoon Kadabra, Metal Powder Ditto/Mimmeo, Light Ball Pikachu; 50%: Lucky Punch Chansey)
  • During the intro, when knowing the PokeGear instructions, you can now skip some of the text relating to it, making starting the game slightly less agonising.
  • Present Glitch was returned in full, now always having the funny damage calculations the move is known for in GSC.

Map Changes

Numerous new maps are available, featuring new locations, the iconic Sevii Islands, and the Nihon region!

Additionally, there have been many wild encounter tweaks. View this document for details. (will link when hack is in a playable state)

  • The Nihon region now exists! A victory lap after conquering Kanto and Johto, expect some serious challenge and spirited reconstruction of the iconic proto-Region!
  • The Sevii Islands have been appended to Kanto, complete with a new and unique quest, reconstructions of cut routes, and more!
  • Johto wild encounters have been changed to be more weighted towards Johto Pokemon; eg. Murkrow is available about Ecruteak at night, Misdreavus largely replaces Gastly, etc. Levels have been adjusted.
  • Kanto wild encounters have generally higher levels to aid in improving the level curve. Likewise, it's weighted towards Kanto Pokemon.
  • Numerous new NPC sprites from prototype materials, RBY, and more, are restored and distributed throughout the regions, hoping for a more colourful feel.
  • Rock Smash now has variable and higher-quality wild data, featuring rare, location-based Pokemon (eg. Corsola on the shore), and level adjustments to make them more appropriate.
  • Pokemon Centres are now dynamic across all three main regions, possessing themed floorings and map design.
  • HGSS locations have been appended to Johto, making it slightly bigger.
  • The Sinjoh Ruins exists, being built for obtaining Hisuian Pokemon. Try catching all the Unown!
  • The Pokemon Communications Centre from JP GSC has been added and tweaked into a Regional Variant Trade hub, increasing with badge count.
    • The GS Ball event has been restored, now being obtainable after beating the Elite Four and trying to exit the building.
    • The Egg Ticket and Eon Mail events have been restored, now being associated with Buena's Password. Redeeming the Egg Ticket gives you an Odd Egg with the usual Pokemon pool and Shiny chances; this is soft resettable if you like that sort of thing.
    • The News Machine now simply references events from the old competitive scene, similar to what was done at the time. Considerations are being made for progression-based bits and pieces.
    • Additionally, old lore relating to the area has now been restored, including something about the Unown!
  • The Bug Catching Contest now gives slightly more rewards, including a familiar Gligar...
  • Mania & Shuckie now have a reworked reward system, giving the player a special item...
  • The prototype Lake of Rage village has been restored, complete with an Evolution Stone shop and Trader NPC! In general, it's themed around Pokemon evolution.
  • The Haunted House from proto-GSC has been added south of Blackthorn City!
  • Viridian Forest has been restored.
  • The Pewter Museum of Science has been restored.
  • Like the spooky Lavender Town? Experience a new location filled with spooks and haunts!
  • The Kanto Safari Zone map from the prototype has been restored.
  • The Summer Beach House has been added south of Fuchsia City, now being a Surf tutor for Pikachu!
  • Cerulean Cave has been restored, complete with a Mewtwo fight!
  • Walls can be climbed using Strong Arm, functionality identical to HGSS Rock Climb.
  • Deep water now exists for Dive, with various locations across Johto, Kanto, and Nihon featuring it.

Technical Changes

  • Numerous important registers, such as map and Pokemon IDs, now support 16-bit IDs, allowing for significantly more additions to the game. This makes JEP possible.
    • Important to note is the fact Crystal has ~30% free ROM space, which, given the sheer amount of content inside, makes this bountiful. This, too, makes JEP possible. Regardless, expanded ROMs can be played from good flash cartridges, so ROM space is not a concern to the team.
  • Tilesets now handle up to 255 titles (from 192), allowing for slightly nicer maps. We also have flipped tiles available for more complexity and to modify vanilla tilesets with more content.
  • Maps can now have up to 17 object events.
  • Footprint pictures were optimised to make dex additions easier on memory. Before, they were mapped to a single bank - optimal for 8-bits, but not for 16!
  • Lots of unnecessary, unreferenced code was removed as and when it became necessary. This does not affect gameplay.

Credits

As the open source nature of this project implies, people are free to reuse what's here for their own ends, so long as credit is given to this hack and those who worked on what you reuse. Additionally, we strongly urge you to make any projects using JEP's content open source. JEP strongly supports the free software movement and its four essential freedoms. If you have any questions on the topic of content reuse, contact the Expansion Pak Discord.

If you use our implementations of anything at all, it is encouraged to submit Pull Requests for bug fixes if you find any issues! We very much appreciate them!

Development Credits

  • Plague von Karma (Director, Kanto Expansion Pak Founder, Programming, Maps, Stat Exp. Display code)
  • Martha's Against Humanity (Kanto Expansion Pak ROM Hack Creator, Programmer, Spriter)
  • Zeta_Null (Repository Creator, Spriter, Programming, Music)
  • LadyMisticus (Documentation, Programming, Mapping, Spriter)
  • thornAvery (Programming)
  • LuciShrimp (Music, TBA)
  • pret et al (LOTS of Tutorials that we used to get this off the ground!)
  • Wiz (Nihon Pokemon names)
  • Rezzo (GSC-specific advice, Showdown Mod assistance)
  • Old Dance Jacket (GSC-specific advice, Showdown Mod assistance)
  • ausma (KEP Developer, Showdown Mod assistance, legacy)
  • Shellnuts (Optimizing the Footprints code)
  • Shawesome (Spriter)
  • zuperZACH (Spriter)

Sprite Credits

Individualised Pokemon sprite credits can be found within the respective Pokemon's folders. These exist to ensure any sprite imports come with an adequate level of credit for JEP's (and other unaffiliated) artists.

JEP Developers

JEP-affiliated spriters require sprites to be used with direct credit for non-commerical purposes. Credit the artist in any case of using them.

  • Zeta_Null: Topaz sprites, numerous tileset bits, Omegadge, Qatu, Phandarin, Stromen, Lickilord, Emordrome, Gouging Fire
  • Martha's Against Humanity: Flutter Mane, Hyoshu-Yang, Hyoshu-Yin, Fossil Aerodactyl, Fossil Kabutops, Hisuian Growlithe
  • zuperZACH: Clodsire (front), Mismagius, Alolan Vulpix, Alolan Ninetales, Hirsuswine, Togekiss, Scream Tail, Vulpiii, Happiny, Kotora
  • Shawesome: Alolan Geodude
  • EyeDonutz: Walking Wake (front/back, title)
  • Plague von Karma: Overworld Arbok, Koffing, Voltorb, Gengar, Diglett, and Cat sprites, adapted from the slot machine's sprites (originally made for KEP).
  • LadyMisticus: Sprite edits of Imposter Oak, Archer, Ariana, Prof.Blue, Giovanni (both), Green; Cal, Blaine (original)

Unaffiliated

Many sprites in this hack are taken from different artists and ROM Hacks, aggressively curated and sometimes even edited and worked upon by JEP developers. The grand aim was to get a consistent GSC artstyle.

  • nuuk: Azurill, Electivire, Farigiraf, Glaceon, Honchkrow, Leafeon, Magmortar, Magnezone, Mamoswine, Porygon-Z, Sylveon, Wyrdeer, Clodsire (back)
  • Scarlax, Pix, BloodlessNX, Kam, Poket, BimbelyGimbly: Animated sprites from Pokemon October: Bellignan, Caretorker (Adbarstork), Inoshika (Aggroswine), Bipulla, Sonegg (Clefling), Kolta (Coalta), Coinpur, Dodaerie, Bundra (Germifrost), Kiwooked (Kiwacki), Eucala (Koalyptus), Trebir, Burgela, Gorotora, Pockle (Shuqlour, edited by Martha), Moibelle, Molambino, Dokuroar (Necrorex), Orfry, Smujj, Stricheel, SW99 Feraligatr (edited by Plague von Karma), Belledam, Feradactyl (Gargranite)
    • Gorotora is edited from RacieBeep's Yellow sprite in the Helix Chamber PokeThon ROM Hack. A full list of Helix Chamber sprites are available here. Helix Chamber spriters have a "must credit" policy.
  • SoupPotato et al: Various sprites from Pokemon Gold & Silver '97 Reforged; Palssio (Cruize), Pressio (Aquallo) Donmarin (Aquarius), Grenmar (Bombsheal, with edits), Jungela (Gelania), Elebebi (Elebabe), Mimmeo (Metto), Kazappelin (Numbpuff), Disturban (Turban), Angore (Anchorage), Folage (Silkane), Luxwan
  • SCMidna: Munchlax
  • SageDeoxys: Iron Bundle, Raging Bolt, Dudunsparce (both forms)
  • Pokets: Terrados
  • Tom Wang: Gold/Chris running sprite
  • Seasick: Kris running sprite
  • Pigu-A, RevoSucks, walle303 - Contributors to Pokemon Anniversary Red's repository, where we reused the Green/FeMC sprites.
  • ShadowOne333: Annihilape and Ursaluna sprites used in JohtoLegends
  • ShadowOne333 & Rangi/polishedcrystal: Alolan Dugtrio, Kleavor, Mr. Rime, Galarian Ponyta, Hisuian Sneasel, Galarian Weezing, and Galarian Zapdos. ShadowOne333's repository contained animations for some Pokemon that the [mother branch](https://github.com/Rangi42/polishedcrystal] did not.

Music Credits

JEP Developers

JEP-affiliated musicians require music to be used with direct credit for non-commerical purposes. Credit the musician in any case of using them.

  • LuciShrimp: Most of the new music in JEP. If it's not by someone else it is most likely from her.
  • Zeta_Null: Sinjoh Ruins theme, Silent Hills

Unaffiliated

  • FroggestSpirit: HGSS Poke Mart Demix
  • TempoQuill: Gen 1 Style Remixes of Lake of Rage, Azalea Town, and Violet City (used in the Sevii Islands)

Other Sources

Academic References

When naming Ajawalcan, we used academic sources compiling the grammar and vocabulary of Yucatan Mayan and Classical Mayan, aiming to represent indiginous Latin American cultures the best we could. The name literally translates to "Kingly serpent" or "Lordly serpent", where "Ajaw" was the name for a king or ruler, and "can" is the spelling for "serpent" used in Kukulcan, the deity worshipped by Mayans of the day.

On the 16-bit index expansion

This is taken from the original readme.

This repository contains a modified Pokémon Crystal game, updated to handle 16-bit indexes. The main goal of this project is to create a reusable system that ROM hacks can use to bring 16-bit indexes into their games.
It is not within scope to create a new game, or to add additional features beyond 16-bit indexes.

The master branch of this repository is intended to perform identically to the original Pokémon Crystal, with minimal changes to support further development on it. Other branches will implement more features on top of it; the intention is that the necessary changes can be readily seen by comparing said branches to master (or between each other). Therefore, these other branches will never be merged into master, even though they will always be directly descended from it (i.e., in Git terminology, a merge would be a fast-forward).

Since this repository is intended to be used as a reference, the commit history is intentionally kept clean to make changes clearly visible. Therefore, modifications (such as bug fixes) will often be merged into whichever commit is more suitable for them, with the remainder of the commit tree rebased on top of the updated commit. Please do not fork this repository to build a new game on top (unless you intend to contribute to it), as the publicly-visible history will be repeatedly rewritten, making merges impossible. If you do want to contribute to the repository, let me know in advance so I can notify you of history rewrites.

For further documentation, check out the wiki.