From ac0d05547490ecd8df68b2827c1fa448329175d3 Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Fri, 3 Jan 2025 13:19:09 +0000 Subject: [PATCH] Readme update, Lake of Rage changes, and must be 8-bit fixes A slapdash of various little bits and pieces. - Lake of Rage has a small culture entry at the top to illustrate what we're setting out to do. I mentioned the shell middens and canonised it alongside GSC. - Move constants now have their 16-bit IDs set up - Palfixed Feradactyl and Pupperon, fixed former's credit with confirmation from pokeoctober - Wiped out the must be 8-bit errors on various Pokemon's `base_stats.asm` files. - Fixed some aspects of Strong Arm and Water Sport calling garbage data; this was due to them using 8-bit comparison systems where there needed to be 16-bits. This fixes a good bit of their HM usage. Battle bugs need resolving (presumably due to a lack of gfx?) - Fixed AI scoring with Water Sport (hopefully) - Updated the readme with some of our progress over the past 5 months. --- README.md | 67 ++++++++++++++----- constants/move_constants.asm | 34 +++++----- data/pokemon/base_stats/ambipom.asm | 2 +- data/pokemon/base_stats/azurill.asm | 2 +- data/pokemon/base_stats/bonsly.asm | 2 +- data/pokemon/base_stats/caretorker.asm | 2 +- data/pokemon/base_stats/foxfire.asm | 2 +- data/pokemon/base_stats/grenmar.asm | 2 +- data/pokemon/base_stats/hippunk.asm | 2 +- data/pokemon/base_stats/honchkrow.asm | 2 +- data/pokemon/base_stats/kazappelin.asm | 2 +- data/pokemon/base_stats/lurreel.asm | 2 +- data/pokemon/base_stats/mantyke.asm | 2 +- data/pokemon/base_stats/qatu.asm | 2 +- data/pokemon/base_stats/qwilfather.asm | 2 +- data/pokemon/base_stats/reroad.asm | 2 +- data/pokemon/base_stats/stricheel.asm | 2 +- data/pokemon/base_stats/sunbud.asm | 2 +- data/pokemon/base_stats/wyrdeer.asm | 2 +- engine/battle/ai/scoring.asm | 3 +- engine/battle/core.asm | 2 +- engine/battle/effect_commands.asm | 20 +++--- engine/events/battle_tower/battle_tower.asm | 2 +- engine/events/overworld.asm | 8 +-- gfx/pics.asm | 6 +- gfx/pokemon/feradactyl/back.png | Bin 1329 -> 436 bytes gfx/pokemon/feradactyl/credit.txt | 2 +- gfx/pokemon/feradactyl/front.png | Bin 1654 -> 567 bytes gfx/pokemon/pupperon/back.png | Bin 352 -> 321 bytes gfx/pokemon/pupperon/front.png | Bin 758 -> 669 bytes maps/LakeOfRage.asm | 69 +++++++++++++++----- maps/LakeOfRageMart.asm | 4 +- maps/LakeOfRagePokecenter1F.asm | 26 +++++++- 33 files changed, 189 insertions(+), 88 deletions(-) diff --git a/README.md b/README.md index ebb3278..f0c76ee 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # 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 @@ -9,14 +11,14 @@ Using the Kanto Expansion Pak's original criteria, the ethos of the Johto Expans 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) -- Was cut from the final game (eg. Bellignan, Tricules, Phandarin; "beta" Pokemon) - - Or from a future title and was related to a Kanto/Johto Pokemon (eg. Lizargun/Charmada) +- 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" qualifies for this) - Is a Paradox equivalent (eg. Walking Wake) - Would qualify for the Kanto Expansion Pak (eg. Omegadge, Melmetal) -Any Pokemon that you can think of that would come under this, is absolutely in. Dex total is 466! +Any Pokemon that you can think of that would come under this, is absolutely in. Dex total is 483! -With respect to Pokemon from the May 1998 Sprite Cache, creative liberties based on their designs are taken. Given the lack of...anything for these Pokemon, they're heavily customised. Similar philosophies to the Kanto Expansion Pak's RG Asset Leak Pokemon are used. +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. @@ -24,7 +26,13 @@ Mega Evolutions, Gigantamax forms, etc, are not in active consideration. - 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, though Pokemon are not retroactively changed, per the Kanto Expansion Pak philosophy (you wouldn't want a Fairy-type Granbull pre-split, would you?) +- 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 @@ -51,38 +59,61 @@ Mega Evolutions, Gigantamax forms, etc, are not in active consideration. - 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. + +## 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. +- 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. ## QoL Changes +- 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. -- Tilesets now handle up to 255 titles (from 192), allowing for slightly nicer maps. -- Can now have up to 17 object events. - 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 and hatching from Eggs takes minimal effort. +- 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 now immediately skip some of the text relating to it, making starting the game slightly less agonising. +- 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. -- Rock Smash now has variable and larger wild data, featuring rare, location-based Pokemon (eg. Corsola on the shore), and level adjustments to make them more appropriate. -- Viridian Forest has been restored. -- The Pewter Museum of Science has been restored. -- Cerulean Cave has been restored, complete with a Mewtwo fight! -- The Kanto Safari Zone map from the prototype has been restored. -- 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. +- 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. # 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](https://www.fsf.org/about/) and its four essential freedoms. If you have any questions on the topic of content reuse, contact @ plague_von_karma on Discord. @@ -106,7 +137,7 @@ If you use our implementations of anything at all, it is encouraged to submit Pu - zuperZACH (Spriter) ## Sprite Credits -Individualised prite 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. +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. @@ -120,7 +151,7 @@ JEP-affiliated spriters require sprites to be used with direct credit for non-co ### Unaffiliated - [nuuk](https://x.com/nuukiie): 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](https://github.com/pokeachromicdevs/pokeoctober): 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 +- Scarlax, Pix, BloodlessNX, Kam, Poket, BimbelyGimbly: Animated sprites from [Pokemon October](https://github.com/pokeachromicdevs/pokeoctober): 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](https://cdn.discordapp.com/attachments/1014321591657709569/1015347305483878521/unknown.png). Helix Chamber spriters have a "must credit" policy. - SoupPotato et al: Various sprites from [Pokemon Gold & Silver '97 Reforged](https://github.com/SoupPotato/gold97); 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 diff --git a/constants/move_constants.asm b/constants/move_constants.asm index 1f03565..e5caee1 100644 --- a/constants/move_constants.asm +++ b/constants/move_constants.asm @@ -261,23 +261,23 @@ const ROCK_SLASH ; FD const CROSS_CUTTER ; FE const MEGAPHONE ; FF - const MYSTIC_ICE ; G0 - const BOUNCE - const BRIGHT_MOSS - const COIN_HURL - const UPROOT - const SYNCHRONIZE - const STRONG_ARM - const UPPERCUT - const WATER_SPORT - const WIND_RIDE - const DAZZLING_GLEAM - const DISARMING_VOICE - const DRAINING_KISS - const FAIRY_WIND - const MOONBLAST - const PLAY_ROUGH - const STRANGE_STEAM ; BONG WEEZING RIIIIIIISE UP + const MYSTIC_ICE ; 100 + const BOUNCE ; 101 + const BRIGHT_MOSS ; 102 + const COIN_HURL ; 103 + const UPROOT ; 104 + const SYNCHRONIZE ; 105 + const STRONG_ARM ; 106 + const UPPERCUT ; 107 + const WATER_SPORT ; 108 + const WIND_RIDE ; 109 + const DAZZLING_GLEAM ; 10A + const DISARMING_VOICE ; 10B + const DRAINING_KISS ; 10C + const FAIRY_WIND ; 10D + const MOONBLAST ; 10E + const PLAY_ROUGH ; 10D + const STRANGE_STEAM ; 10E BONG WEEZING RIIIIIIISE UP DEF NUM_ATTACKS EQU const_value - 1 if NUM_ATTACKS > $3fff diff --git a/data/pokemon/base_stats/ambipom.asm b/data/pokemon/base_stats/ambipom.asm index 48ecf1d..287de00 100644 --- a/data/pokemon/base_stats/ambipom.asm +++ b/data/pokemon/base_stats/ambipom.asm @@ -1,4 +1,4 @@ - db AMBIPOM ; species ID placeholder + db 0 ; species ID placeholder db 75, 100, 66, 115, 60, 66 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/azurill.asm b/data/pokemon/base_stats/azurill.asm index eabe0cc..9a01c76 100644 --- a/data/pokemon/base_stats/azurill.asm +++ b/data/pokemon/base_stats/azurill.asm @@ -1,4 +1,4 @@ - db AZURILL ; species ID placeholder + db 0 ; species ID placeholder db 50, 20, 40, 20, 20, 40 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/bonsly.asm b/data/pokemon/base_stats/bonsly.asm index 03ffd5d..fcd3f4a 100644 --- a/data/pokemon/base_stats/bonsly.asm +++ b/data/pokemon/base_stats/bonsly.asm @@ -1,4 +1,4 @@ - db BONSLY ; species ID placeholder + db 0 ; species ID placeholder db 50, 80, 95, 10, 10, 45 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/caretorker.asm b/data/pokemon/base_stats/caretorker.asm index dbcdc87..6903ab0 100644 --- a/data/pokemon/base_stats/caretorker.asm +++ b/data/pokemon/base_stats/caretorker.asm @@ -1,4 +1,4 @@ - db CARETORKER ; species ID placeholder + db 0 ; species ID placeholder db 90, 65, 65, 72, 75, 118 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/foxfire.asm b/data/pokemon/base_stats/foxfire.asm index db3374b..99461a3 100644 --- a/data/pokemon/base_stats/foxfire.asm +++ b/data/pokemon/base_stats/foxfire.asm @@ -1,4 +1,4 @@ - db FOXFIRE ; species ID placeholder + db 0 ; species ID placeholder db 55, 85, 50, 115, 100, 70 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/grenmar.asm b/data/pokemon/base_stats/grenmar.asm index ede439f..7f50ba9 100644 --- a/data/pokemon/base_stats/grenmar.asm +++ b/data/pokemon/base_stats/grenmar.asm @@ -1,4 +1,4 @@ - db GRENMAR ; species ID placeholder + db 0 ; species ID placeholder db 80, 80, 70, 55, 105, 80 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/hippunk.asm b/data/pokemon/base_stats/hippunk.asm index 7f46f7c..e18025f 100644 --- a/data/pokemon/base_stats/hippunk.asm +++ b/data/pokemon/base_stats/hippunk.asm @@ -1,4 +1,4 @@ - db HIPPUNK ; species ID placeholder + db 0 ; species ID placeholder db 90, 75, 75, 30, 80, 80 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/honchkrow.asm b/data/pokemon/base_stats/honchkrow.asm index ec2e4ef..17e64e0 100644 --- a/data/pokemon/base_stats/honchkrow.asm +++ b/data/pokemon/base_stats/honchkrow.asm @@ -1,4 +1,4 @@ - db HONCHKROW ; species ID placeholder + db 0 ; species ID placeholder db 100, 125, 52, 71, 105, 52 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/kazappelin.asm b/data/pokemon/base_stats/kazappelin.asm index 483810d..46bd54b 100644 --- a/data/pokemon/base_stats/kazappelin.asm +++ b/data/pokemon/base_stats/kazappelin.asm @@ -1,4 +1,4 @@ - db KAZAPPELIN ; species ID placeholder + db 0 ; species ID placeholder db 75, 95, 75, 65, 115, 85 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/lurreel.asm b/data/pokemon/base_stats/lurreel.asm index d6693fa..385a2f6 100644 --- a/data/pokemon/base_stats/lurreel.asm +++ b/data/pokemon/base_stats/lurreel.asm @@ -1,4 +1,4 @@ - db LURREEL ; species ID placeholder + db 0 ; species ID placeholder db 70, 85, 105, 55, 105, 65 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/mantyke.asm b/data/pokemon/base_stats/mantyke.asm index bcf45e8..024b786 100644 --- a/data/pokemon/base_stats/mantyke.asm +++ b/data/pokemon/base_stats/mantyke.asm @@ -1,4 +1,4 @@ - db MANTYKE ; species ID placeholder + db 0 ; species ID placeholder db 45, 20, 50, 50, 60, 120 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/qatu.asm b/data/pokemon/base_stats/qatu.asm index 3c6a3ee..b5d59d3 100644 --- a/data/pokemon/base_stats/qatu.asm +++ b/data/pokemon/base_stats/qatu.asm @@ -1,4 +1,4 @@ - db QATU ; species ID placeholder + db 0 ; species ID placeholder db 50, 60, 55, 80, 80, 55 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/qwilfather.asm b/data/pokemon/base_stats/qwilfather.asm index dd78f2e..32dbe74 100644 --- a/data/pokemon/base_stats/qwilfather.asm +++ b/data/pokemon/base_stats/qwilfather.asm @@ -1,4 +1,4 @@ - db QWILFATHER ; species ID placeholder + db 0 ; species ID placeholder db 75, 115, 85, 85, 75, 75 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/reroad.asm b/data/pokemon/base_stats/reroad.asm index d40465e..583de8d 100644 --- a/data/pokemon/base_stats/reroad.asm +++ b/data/pokemon/base_stats/reroad.asm @@ -1,4 +1,4 @@ - db REROAD ; species ID placeholder + db 0 ; species ID placeholder db 90, 85, 75, 70, 85, 70 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/stricheel.asm b/data/pokemon/base_stats/stricheel.asm index 5cbb567..1648ada 100644 --- a/data/pokemon/base_stats/stricheel.asm +++ b/data/pokemon/base_stats/stricheel.asm @@ -1,4 +1,4 @@ - db STRICHEEL ; species ID placeholder + db 0 ; species ID placeholder db 50, 60, 65, 20, 60, 35 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/sunbud.asm b/data/pokemon/base_stats/sunbud.asm index 9a1737e..52be995 100644 --- a/data/pokemon/base_stats/sunbud.asm +++ b/data/pokemon/base_stats/sunbud.asm @@ -1,4 +1,4 @@ - db SUNBUD ; species ID placeholder + db 0 ; species ID placeholder db 55, 45, 45, 30, 65, 65 ; hp atk def spd sat sdf diff --git a/data/pokemon/base_stats/wyrdeer.asm b/data/pokemon/base_stats/wyrdeer.asm index 5e7b112..ebb98d1 100644 --- a/data/pokemon/base_stats/wyrdeer.asm +++ b/data/pokemon/base_stats/wyrdeer.asm @@ -1,4 +1,4 @@ - db WYRDEER ; species ID placeholder + db 0 ; species ID placeholder db 103, 105, 72, 65, 105, 75 ; hp atk def spd sat sdf diff --git a/engine/battle/ai/scoring.asm b/engine/battle/ai/scoring.asm index b569961..e8463ae 100644 --- a/engine/battle/ai/scoring.asm +++ b/engine/battle/ai/scoring.asm @@ -1677,7 +1677,8 @@ AI_Smart_Surf: AI_Smart_Whirlpool: ; Greatly encourage this move if the player is underwater and the enemy is faster. ld a, [wLastPlayerCounterMove] - cp WATER_SPORT + ld bc, WATER_SPORT + call CompareMove ret nz ld a, [wPlayerSubStatus4] bit SUBSTATUS_UNDERWATER, a diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 21be413..537fb49 100644 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -8315,7 +8315,7 @@ InitEnemyWildmon: ld a, [wCurPartySpecies] call GetPokemonIndexFromID ld a, l - sub UNOWN + sub UNOWN ; FIXME: This flags a must be 8-bit warning. I don't think it's actually a problem, considering Unown is within the 8-bit boundary of Pokemon, but it may be worth checking out. if HIGH(UNOWN) == 0 or h else diff --git a/engine/battle/effect_commands.asm b/engine/battle/effect_commands.asm index eef790f..29cc929 100644 --- a/engine/battle/effect_commands.asm +++ b/engine/battle/effect_commands.asm @@ -5645,14 +5645,11 @@ BattleCommand_Charge: call LoadMoveAnim ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar - cp FLY - jr z, .got_move_type - cp DIG - jr z, .got_move_type - cp BOUNCE - jr z, .got_move_type - cp WATER_SPORT - jr z, .got_move_type + + ld hl, .fly_dig_moves ; attempt to resolve 16-bit issue with bounce and water sport - this can probably be made more efficient with a farcallable list + call CheckMoveInList + pop hl + jr c, .got_move_type call BattleCommand_RaiseSub xor a @@ -5753,6 +5750,13 @@ BattleCommand_Charge: text_jump HidUnderwaterText db "@" +.fly_dig_moves + dw FLY + dw DIG + dw BOUNCE + dw WATER_SPORT + dw -1 + BattleCommand_TrapTarget: ld a, [wAttackMissed] and a diff --git a/engine/events/battle_tower/battle_tower.asm b/engine/events/battle_tower/battle_tower.asm index 4c8a0cb..5fd175f 100644 --- a/engine/events/battle_tower/battle_tower.asm +++ b/engine/events/battle_tower/battle_tower.asm @@ -427,7 +427,7 @@ Function17042c: ; If a == 0 and b >= $fc, overwrite the current trainer's data with ; Unknown_17047e, and exit the inner loop. ld a, b - cp NUM_POKEMON + 1 + cp NUM_POKEMON + 1 ; FIXME: Flags a must be 8-bit error. Needs to be updated to match the 16-bit standard of comparing with Number of Pokemon. What is that? iunno. jr nc, .copy_data .next_iteration diff --git a/engine/events/overworld.asm b/engine/events/overworld.asm index 2985906..bb70e9d 100644 --- a/engine/events/overworld.asm +++ b/engine/events/overworld.asm @@ -1977,8 +1977,8 @@ TryStrongArmOW:: jr c, .cant_climb ; Now check if Strong Arm is in the party. This takes longer, thus the above going first. - ld d, STRONG_ARM - call CheckPartyMove + ld hl, STRONG_ARM + call CheckPartyMoveIndex jr c, .cant_climb ld a, BANK(AskStrongArmScript) @@ -2146,8 +2146,8 @@ TryWaterSportOW:: ld de, ENGINE_CASCADEBADGE call CheckEngineFlag jr c, .cant - ld d, WATER_SPORT - call CheckPartyMove + ld hl, WATER_SPORT + call CheckPartyMoveIndex jr c, .cant call GetPartyNickname ld a, BANK(AskWaterSportScript) diff --git a/gfx/pics.asm b/gfx/pics.asm index cd5147a..38345ea 100644 --- a/gfx/pics.asm +++ b/gfx/pics.asm @@ -942,8 +942,6 @@ DecillaFrontpic: INCBIN "gfx/pokemon/decilla/front.animated.2bpp.lz" DecillaBackpic: INCBIN "gfx/pokemon/decilla/back.2bpp.lz" GawarhedFrontpic: INCBIN "gfx/pokemon/elebebi/front.animated.2bpp.lz" GawarhedBackpic: INCBIN "gfx/pokemon/gawarhed/back.2bpp.lz" -KabutopsFossilPic: INCBIN "gfx/trainers/kabutops.2bpp.lz" -AerodactylFossilPic: INCBIN "gfx/trainers/aerodactyl.2bpp.lz" SECTION "Pics 24", ROMX @@ -1064,3 +1062,7 @@ SigalPic: INCBIN "gfx/trainers/sigal.2bpp.lz" KuyePic: INCBIN "gfx/trainers/kuye.2bpp.lz" ShamPic: INCBIN "gfx/trainers/executive_f.2bpp.lz" CarlPic: INCBIN "gfx/trainers/executive_m.2bpp.lz" + +; spillover +KabutopsFossilPic: INCBIN "gfx/trainers/kabutops.2bpp.lz" +AerodactylFossilPic: INCBIN "gfx/trainers/aerodactyl.2bpp.lz" \ No newline at end of file diff --git a/gfx/pokemon/feradactyl/back.png b/gfx/pokemon/feradactyl/back.png index b01553b63ad42db7dc687aefaf2c2c63debece57..903a6d1d3e6036ecdd33e46d82e3a467da56c7ff 100644 GIT binary patch delta 421 zcmV;W0b2gC3bX@|8Gi!+003az3AF$K01Qw}R7L;)|E;a9Qd*?|006TCu%rM00b@x- zK~#9!?Ul=R1R)4Si{k(PISS$fF{iVSGrgF$E*63g^p6Aoz&1!#@$n51spK!fbd|gU zs3xoBH$WnS%crFA@?HY~ehr_2C6`ZiX!^=euSf|z^h(sgOMl-0umBEya)DxnGk$Wh z6Npt0Kgk8;7oZA?EiEKND^Yv`N)h%Mgvq?280okCOW-Pi|2Auq0VzAQ{}e1>%;I?( zLod*A{sIuGTU6BbGJ4pQ2ax-?y>h~5@dSDqb()_?w(S-NmK^o4v8^t2OHFAlX^+k;Y5~hpL?<_i(4w|??W0FquNK(`ZNu0P6{!grPENpXWu@PW zTMq5@B{n_X5LbDkS!RtA(7Y&v=!H|aTIzRzJHW>ZGxoBiUKMH;--9t-Grj1RT4AUJ z+FMEqxc(q8{&cDpd`Bs~0ZUDpcgKeC26WAy@;PzctsZOY7;m7~Z{!?5hKm!m;4?S^ P00000NkvXXu0mjfagw|j delta 1321 zcmV+^1=jks1F;H_8Gi-<00374`G)`i0UT*VLr`gBV*mgskz-(BGH`Tpa%B==V93oY zDGG9TQizC*QeZ#Nz{bGL00xQ4#RZN50X`shUVdIG0|xkZje!wFU)BYgg(;60a3vQM zl>q5KKx~wfTAa+lz-RzuXP1{00L2;S0NEl**a>QWb(L zi%U{-ixoWclJkoS@{1BnQd59xA?^bML5M<7h-m;dT4<8!Z-M|64-nSpKydgnik(4- zAwY6zQ5lrU$bV!^n2#`HjsydP|5649mOltFlU@df1v(52{8JHPYK9C90{RRL`{n=u zz{XGgpotJg00004b3#c}2nYxWdaB^>EX>4U6ba`-PAVE-2 zF#rGvnd3@N%}XuHOjal;%1_J8N##-i17i~|6H60IqklvL0|N^K2rx7-Fg65|MnJYX zR4CB^1(+I`S(+J}8JYtzh|dK8NVXKoI@Cil0009!NklGN!p0MMO^Xc&SdpB z?*wscGuptj#P2Q?0Kj_>5$O(ogZP~VgZDmuS=SXnH|no-yV->!`5tlLee$!5C**tW zahAL}FQx>44UT)2yn=TE+9&l1BLe;jd4=~rW`AP@y^SuBzi5ZNzJ}(uGH@&MSL~oT z_8ppA6yRuo#5S{bP>h@{iqRsjqC{SAp1}1?96{^OD+vh4rrqc_3U;CGXWon@W^p+K zy>4T(AR@hp20Kb{!>pbf6PaCGWkDV@lA&(Vj8G z8K~IDMm!;_B1&mz<|0u$FZpHTh&Z`(eO$HB=>Tey6%Q7F`fiEZ?BpbscnJ%Pg<3Ef zh(%fYRf34%Xzy;E&xyizI<-@~9*d8k!rNE|a`Hes;^fw0@&Mpy2N5OS1`xBB@qdWq z0W6m+WW8$baR(Y@8-3voj&=xdk#H_D5m2lC1A&=A8z+Qkqn#rcU$TyVDpU+GQN(%$ zAh(__VNXG=RLbZf;&iF|!uL^MT~rs#Ps~ps&jirPfL1(^-dSdDlD+kFPpjvF>``Ru zz>crpg>1V5kVO8e4A`IKbx(uk7=KfJ3jjYEShN?b2QB$0Nmt0Wu%K~)Oe~~}+5_Va zsCDw_>wa0mHeoHa2yY>F0_I2hyG3oiQpQJdx}0gH>mj1h@3UDMAypz@D%cWA145}? zl{RgmMLZ8qZ43qkl)6x~Qfs59?R6C`g+rNm3!@qM3uAMaA*avFGXMYp4kBe(NoGw= f04e|g00;m8000000Mb*F00000NkvXXu0mjfHfA`0 diff --git a/gfx/pokemon/feradactyl/credit.txt b/gfx/pokemon/feradactyl/credit.txt index 7a3fcd2..c100cf4 100644 --- a/gfx/pokemon/feradactyl/credit.txt +++ b/gfx/pokemon/feradactyl/credit.txt @@ -1,4 +1,4 @@ -Sprite taken from Pokemon October, originally uncredited but seems to have been made by Poket. +Sprited by Poket and used in Pokemon October. https://github.com/pokeachromicdevs/pokeoctober/tree/demo-2/gfx%2Fpokemon%2Fgargranite https://x.com/Pokets3/status/1711804029083258977 diff --git a/gfx/pokemon/feradactyl/front.png b/gfx/pokemon/feradactyl/front.png index 28adbbde0f15f880c8cd19b6e49d0aa028840193..ff3ade3cf497fb2518c2ab1483490788677f0922 100644 GIT binary patch delta 553 zcmV+^0@nTZ47UW38Gi!+005s@%Par@01Qw}R7L;)|E;a9Qd*?|006TCu%rM00p>|W zK~#9!wU>!;C3N$XeK=Q!Q?d%|Id9L^%hU^nZjKz*DXV`7F)>yq@nN zsKrK;ZoM*^rW8P1&{gb6Bh5(J1`258)!A|h4f0v@;OKq5KKx~wfTAa+lz-RzuXP1{00L2;S0NEl**a>QWb(L zi%U{-ixoWclJkoS@{1BnQd59xA?^bML5M<7h-m;dT4<8!Z-M|64-nSpKydgnik(4- zAwY6zQ5lrU$bV!^n2#`HjsydP|5649mOltFlU@df1v(52{8JHPYK9C90{RRL`{n=u zz{XGgpotJg00004b3#c}2nYxWdaB^>EX>4U6ba`-PAVE-2 zF#rGvnd3@N%}XuHOjal;%1_J8N##-i17i~|6H60IqklvL0|N^K2rx7-Fg65|MnJYX zR4CB^1(+I`S(+J}8JYtzh|dK8NVXKoI@Cil000DlNklqc(M0D;!bD}g@TRLNZ(ztuH8mVY2KXI=@*vivx5j|XJt974ddESGBe zbgWSf4=Ut-qFQPUsc4|Ji`-AZ5Wz+WRp3uc4;b@9_{DI9LN=dHA0$h=sjoT8m$*CrHyu-YaBPxuJ5LlK)t1V#2 zEz1H-vc5yvgcy(-xsw!kbp?KFfbA9p#cgf9`9x%3288{mYJvmWPt-dw@V1MRfaby7o=Tybe9_+Dp%v`t+ZDq9zzl|YB z-!m~H0l!{M%VUw_X z={C}rZU-PsDL>GfRayTLdL)>2iCv^+rNXfcvFO7^8;(gF_+eq?s+I6fFffEGf`7Sn zeo&|>e+u&QDdc$FT!utK5}WE+)x%SgErPjLxV7P$b^%AQz2}BRRHRm3e?roJ*UvFX zvME6)=S@h1yA*n%Z8KI%bh{oob*p*Ul02cTv4!VvY+r7Q<8kjy6U`<+rE0 zvyRX5DTr32WTHA01GX%n>X;cQ z>oBs~nxsB2yo=W*s0~Y?)txwiQ?AF%MFwFfsZ%P6aO6|NT36gmr#vH5{C~cZpd~Hp zqW>3G2ElXQUPVqnH*Iex!&QP;t7l2|o>vHZ+G>?= z%(aPDqi-YGf#EVn&B$b+?-Xg2oNj9ua>m{hcq>zcX;;Q#@8eDo?2c*2(EHge-Ysd` zm)$?`ID=H%-x%w7UoU9W-+x|f$!QE%MJ2jmX17y)km3wr2l4I!VyP<;j)hoT9rehi z`Z<+3nvOn%aFEoUb*^NM7*H`_9Fr?S>sx^>D3D7B4T>m$v!nmwm|i*MQ8@bVaqc2H zssBhDd)A@j-95s}s4Q?%F~cr)@7@D~SM7@`Tdh*3D|WV8C;d0AsA(#td-p~m#CrNT zErM6_*U*wAqWT{6h)g;=Xzk6~yT?UD?*4P;*@RW0Kl(?44jk%TF00000onfG0>J{1B!3K0OjJex|NsBBF})!W0000hEh(b_008hwL_t(|+U=7|5`-WO zL`nDk?>r%(L>)qym5Yg0YH7dxDdlf(Hf-vt*N%Htlh~10lO!^75g~W<3MjJC9Y}`Y zO}`>s0Stj&UA>E5_AU`&gHlTUc0%G1hrH{>T1rMaSzh)3(0>E<3!`eK5$4wjMHu(T z>kTMmTHlf~n>O}n%wa7h2D4~#IKuo)_V!E!gXm+Q0DXV10LpaD&uwr(B`6C37b4nN zo_Ysx3EUzuI1+7}?h%3`WPs_@0KY{*pl6@M1z?E={it~fJTjWjd2G_V0Q?A~2Iuv; sNqYdf)c~FZz#o*pBlesngo%0J1NI*WKCY-hEdT%j07*qoM6N<$g7K??761SM delta 325 zcmV-L0lNOd0^kCWB!2;OQb$4nuFf3k0000CP)t-s|NsB`wl=#b7XSbN?p%9?00033 zNkl4 X_8$j6Na)-M00000NkvXXu0mjfPoR(^ diff --git a/gfx/pokemon/pupperon/front.png b/gfx/pokemon/pupperon/front.png index 9d170ce39bf96264acea0e056ac6f608eb665a8d..9451bed10dc0f6363fa8c43b24663680a7c2d454 100644 GIT binary patch delta 657 zcmV;C0&e~G1)T+u7=H)@0000I4@rjr000b7OjJex|NsBBF})!W0000hEh(b_00K-& zL_t(|+U=X$uHzsKMUD6W|MOsz3pvEt8g(>B)#jlO>5?%4yaZ}RzPiCbHNzB6;@~%! zNCVJXL)xn}ZyRvrrLAS;@y#HCB%r0Z#qJEDu$F zyS~pc+gOey5hQ2eczL3l%Any z=oxy3o}p*xnVVedO5~Ykam1c!WzRsWp3#D55D96q2TEWk6MJ06IoOY@XM$a^dL~*z zi)TVD&@FVhG9kv^oX56ShBdFHN-`;eDD6kE@nkAE8y&kTLYLkjVjN8v>3nRD)V zp5b|h=NWqD3p~?4?U{zu9zXOU6@8$fkJK|d)qt&MK+n)K^b9>iA^pC4vr9CYko4pC zW)r9d@V;Qvy$kOj3}Ej7dj+BQv-6jLk9V z8G44Ep?_!S8G5FJsx{9%xzICK=1ZP&u;iITEA$LK!$!~0GxUtr_=;yntlTs9)Js_6 z86BkNo^h_=8TFVI&*(WV^b9>i&-`D{@c%RXUGv}Eo4FGT_hzRQGS6t!riJs2i%=`) r8SAd*8I{#YZ=TVQdq(M*u>AoXa4a3Lb!mA3015yANkvXXu0mjfLp4ns delta 746 zcmVFqLk@VyjVR*U%Zr(uKFZ5Tbj#oiQ5jCt(M zKp~_ID&xGI(Xn>3O0j6UV71j|S!}dgU5;HS+>|y-2VgdJ@eS0cz{0w6`MJ5CLjl=| zKHZY!%gSh|Yk%yA!M!l7lehQ03=*zU2Iu%U*a`!QUf+_?#b`_h>uUh+t0q-OADug1 z)ON>H^;#bIaN#U1o_O>uOqEnDyv6(6@Rh_K+*{n6XG4!KyNdzXJzch$eqx>DoTpCK zbjR3pw5NaBc9+`&!)>!_xDl0v+d%d|a(hS_nA^PJwtr)|saWRLub^D};Y0Ws6ad;| ztHMR1bp(5nn_%zkF-!IjaR6cwr&(eTmLGG|ZSFF+KZKPvu=f8BOUDu{oy@kszR!=C0S(c}utrV#Cf!FmrOm%t=Sj zNlqR$k%4Aa&q>=}RnH}8xnSdnhEZ%>xsND#dVW&e)bzyNVQ#R<+)y6$aTOt>+&9MD z=*G)3;kNgZV+?pk0;#rHn)=Dc4J9K+{Cn}xe3?WrstB{)QSkgm57`B zQQeZb1+l5Kdyng9R*07*qoM6N<$f`*cIi~s-t diff --git a/maps/LakeOfRage.asm b/maps/LakeOfRage.asm index cf4d77c..2692bf8 100644 --- a/maps/LakeOfRage.asm +++ b/maps/LakeOfRage.asm @@ -1,3 +1,10 @@ +; The Lake of Rage has had its original layout restored and edited to work with JEP. +; It's based on Lake Biwa, a 4 million year old lake known for its natural beauty and humongous catfish. +; The catfish are said to know when earthquakes will occur through detecting unusual vibrations or water chemistry. In Japanese mythology, Onamazu 大鯰 (lit. giant amur catfish) is said to cause earthquakes underground. +; What does this mean? Gyarados is a flying catfish. Also, this inspired Whiscash. In pracice? Absolutely nothing. +; *ahem* anyway, this context is what's informing the changes made to the Lake of Rage. +; Given the forced evolution, we've themed the new town around evolution. Evolution stones, the trader NPC, and so on, all found here. + object_const_def const LAKEOFRAGE_LANCE const LAKEOFRAGE_GRAMPS @@ -126,8 +133,53 @@ LakeOfRageSuperNerdScript: LakeOfRageCooltrainerFScript: jumptextfaceplayer LakeOfRageCooltrainerFText +; Did you know DPP canonically takes place at the same time as GSC? +; Let's canonise that in JEP. + +; This will technically be two individuals. +; The first is the guy from the Battle Zone, who gets there first. A happy larrikin for sure. +; The second is the exploration team from the DP intro. They got here too late, so...oops. LakeOfRageCameramanScript: - jumptextfaceplayer LakeOfRageCameramanText + faceplayer + opentext + checkevent EVENT_LAKE_OF_RAGE_RED_GYARADOS + iftrue .GyaradosDefeated + writetext LakeOfRageCameramanText + waitbutton + closetext + end + +.GyaradosDefeated: + writetext LakeOfRageCameramanText_GyaradosDefeated + waitbutton + closetext + end + +LakeOfRageCameramanText: ; Reference to the Battle Zone + text "Hohoho!" + + para "Am I lucky to" + line "have been here" + cont "when that MAGIKARP" + cont "evolved!" + + para "This film is" + line "gonna make me" + cont "rich!" + done + +; Slightly doctored for the poor innocent Game Boy screen... +LakeOfRageCameramanText_GyaradosDefeated: + text "Despite the team's" + line "best efforts, the" + cont "red GYARADOS has" + cont "eluded detection." + + para "It has failed to" + line "appear, even fl-" + cont "eetingly, to our" + cont "crestfallen team!" + done LakeOfRageSign: jumptext LakeOfRageSignText @@ -515,24 +567,11 @@ FishingGurusHouseSignText: line "HOUSE" done -LakeOfRageCameramanText: ; Reference to the Battle Zone - text "Hohoho!" - - para "Am I lucky to" - line "have been here" - cont "when that MAGIKARP" - cont "evolved!" - - para "This film is" - line "gonna make me" - cont "rich!" - done - LakeOfRagePryceSign: jumptext LakeOfRagePryceSignText LakeOfRagePryceSignText: - text "PRYCE's House" + text "PRYCE'S HOUSE" done LakeOfRage_MapEvents: diff --git a/maps/LakeOfRageMart.asm b/maps/LakeOfRageMart.asm index 5caa4c1..72e2fa9 100644 --- a/maps/LakeOfRageMart.asm +++ b/maps/LakeOfRageMart.asm @@ -33,8 +33,8 @@ LakeOfRageMartGrampsText: line "me evolve my" cont "RAICHU!" - para "...what's with" - line "that look?" + para "Huh? Sure it does!" + line "Try it yourself!" done LakeOfRageMart_MapEvents: diff --git a/maps/LakeOfRagePokecenter1F.asm b/maps/LakeOfRagePokecenter1F.asm index c1caa28..0bfeb35 100644 --- a/maps/LakeOfRagePokecenter1F.asm +++ b/maps/LakeOfRagePokecenter1F.asm @@ -13,7 +13,20 @@ LakeOfRagePokecenter1FNurseScript: jumpstd PokecenterNurseScript LakeOfRagePokecenter1FGentlemanScript: - jumptextfaceplayer LakeOfRagePokecenter1FGentlemanText + faceplayer + opentext + checkevent EVENT_LAKE_OF_RAGE_RED_GYARADOS + iftrue .GyaradosDefeated + writetext LakeOfRagePokecenter1FGentlemanText + waitbutton + closetext + end + +.GyaradosDefeated: + writetext LakeOfRagePokecenter1FGentlemanText_GyaradosDefeated + waitbutton + closetext + end LakeOfRagePokecenter1FScientistScript: jumptextfaceplayer LakeOfRagePokecenter1FScientistText @@ -56,6 +69,17 @@ LakeOfRagePokecenter1FGentlemanText: done +LakeOfRagePokecenter1FGentlemanText_GyaradosDefeated: + text "The LAKE OF RAGE" + line "is known for its" + cont "shell middens." ; Lake Biwa has a giant shell midden called the Awazu site, which dates back to the Jomon period (~10,000 years ago). + + para "They date back" + line "thousands of" + cont "years!" + + done + LakeOfRagePokecenter1FYoungsterText: text "Dad said I have" line "to stay inside."