• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Crystal hack: Pokémon Polished Crystal (update 2.2.0)

FIQ

  • 251
    Posts
    11
    Years
    • Seen Sep 15, 2022
    Spiky-Eared Pichu would be cool, and I've thought about it before, but there's no simple way to represent a unique Pokémon in the data structure. You can always catch a Pichu with the same DVs, the same moves, etc.
    You could perhaps mess with the pokémon structure. The following major source of potential to free up space comes to mind:
    * Use 1 instead of 2 bytes for EVs (like in later generations), 5 bytes
    * Juggling around PP data in such a way that the unused byte (0x21) stores PP for a move, making it possible to use one byte to be retained in the storage
    * Pokérus only needs 2 bits rather than an entire byte.
    This would obviously break saves unless you were to make some type of conversion code, so if you take adventage of this at all, I guess it would be for a potential 3.0 release in the future...

    On another note, I see that you've used a bunch of code from Anniversary Crystal. Do you know how hard it would be to implement an option to enable its "Advanced AI" mode? It isn't that good really (allthough definitely better than the usual in-game AIs), but I've been intending to abuse its functionality myself to potentially make a better AI in C, or to port Technical Machine.
     
    Last edited:
  • 755
    Posts
    7
    Years
    • NY
    • Seen Oct 9, 2023
    As I recall, Anniversary Crystal's advanced AI is an external program (written in Lua?) that manipulates the game's memory. Rewriting it in Z80 assembler would take a long time and probably run slower. On the other hand, if you start with Crystal's AI I'm sure you could find ways to improve it.
     
  • 278
    Posts
    9
    Years
    • Seen Sep 17, 2023
    Nice hack dude and its awesome that you added The shrine and stuff but what does The blessing to your pokemon do exactly?
     

    FIQ

  • 251
    Posts
    11
    Years
    • Seen Sep 15, 2022
    As I recall, Anniversary Crystal's advanced AI is an external program (written in Lua?) that manipulates the game's memory. Rewriting it in Z80 assembler would take a long time and probably run slower. On the other hand, if you start with Crystal's AI I'm sure you could find ways to improve it.

    OK, I should clarify.

    Anniversary Crystal relies on external functionality for VBA (and somewhat recently, support for another emulator's similar features were added) to provide Lua scripts. While I don't know exactly how it works like from the game's point of view, what happens is that the game, when battles are in process, before you make your turn (or when opponent mons faints for switchouts, etc), outputs "Waiting!" (Link cable functionality repurposed perhaps?) in which a Lua client springs into action. Said client polls a server written in Python locally using http, sending json, and then idly waits, polling it continuously and on each attempt advance the game 15 frames (so it tries 4 times every second) to avoid the game softlocking in the process, until the python AI is done in which it gives a proper response to the Lua client's queries. This is how it looks like in-game: https://youtu.be/O-NwKWLT8KA?t=13s
    What I was asking was for you to add the in-game part of the logic, so that the "Advanced AI" could be used.

    EDIT: It should be noted that the AI in the actual TPP run seems to run significantly slower than it does on my personal computer. Perhaps due to the additional logic it has for all the TPP stuff.
     
  • 9
    Posts
    10
    Years
    So, I found the other day this hackrom and It's amazing, for real. But I have a problem, I want to update from 1.1.2 to 2.0.0 and I can't. The savefile doesn't load and forcing save states make it crash.

    I tried out the build you recently gave and It doesn't work either. I can keep playing if I keep using the old patch but I want to meet Lyra and don't restart my save file, because I actually was heading to the League and I had a 15/11/11/15/15/15 Suicune that I got after a few resets.

    Besides that, loving the hackrom(I already love Crystal and this is making loving it even more)
     

    FIQ

  • 251
    Posts
    11
    Years
    • Seen Sep 15, 2022
    So, I found the other day this hackrom and It's amazing, for real. But I have a problem, I want to update from 1.1.2 to 2.0.0 and I can't. The savefile doesn't load and forcing save states make it crash.

    I tried out the build you recently gave and It doesn't work either. I can keep playing if I keep using the old patch but I want to meet Lyra and don't restart my save file, because I actually was heading to the League and I had a 15/11/11/15/15/15 Suicune that I got after a few resets.

    Besides that, loving the hackrom(I already love Crystal and this is making loving it even more)
    2.0 broke save compatibility with 1.x
     
  • 755
    Posts
    7
    Years
    • NY
    • Seen Oct 9, 2023
    What I was asking was for you to add the in-game part of the logic, so that the "Advanced AI" could be used.

    I'd rather not. I don't want to maintain support for a whole separate program, nor do I want to add the basic feature and ignore bug reports. Plus it's a very limited use case. Usually when I play a ROM it's on a tablet or phone; few people are going to run a Python server for better AI. I do want to make improvements to the in-game AI, eventually.

    Both TPP:AC and Polished Crystal are open source, so if you want to fork it and add the AI support, feel free.

    Edit:

    But I have a problem, I want to update from 1.1.2 to 2.0.0 and I can't. The savefile doesn't load and forcing save states make it crash.

    Yeah, 2.0 broke old save files. I've made an effort to avoid this for at least the next couple of updates; a lot of major features were added in 2.0 so that 2.1 or 2.2 can add save-compatible tweaks. Sorry about your Suicune.
     

    FIQ

  • 251
    Posts
    11
    Years
    • Seen Sep 15, 2022
    So I can't do nothing to save my gamefile besides keep playing on the old patch?

    Correct. Well, I guess Rangi could potentially make a save conversion tool in the game, but I have no idea how much was actually changed...

    EDIT:
    I'd rather not. I don't want to maintain support for a whole separate program, nor do I want to add the basic feature and ignore bug reports. Plus it's a very limited use case. Usually when I play a ROM it's on a tablet or phone; few people are going to run a Python server for better AI. I do want to make improvements to the in-game AI, eventually.

    Both TPP:AC and Polished Crystal are open source, so if you want to fork it and add the AI support, feel free.
    Fully understandable, was just wondering.
    While I knew TPP:AC was open source, I didn't realize Polished Crystal also was, clearly I didn't read the OP well enough. I'll look into it myself then. Thanks anyway!

    Also, I have a VBA build I compiled to ARM for this explicit purpose, so yeah :P

    EDIT2: AC improves the in-game AI if you have the external thing off. Just saying in case you want to continue what it did for the in-game AI and not start over from Crystal standards and wasn't already aware of this.
     
    Last edited:
  • 755
    Posts
    7
    Years
    • NY
    • Seen Oct 9, 2023
    So I can't do nothing to save my gamefile besides keep playing on the old patch?

    Right. Tell you what, 01FB11D2 91BF12D2 is the Gameshark code to encounter all wild Pokémon with the DVs of your Suicune (15Atk/11Def/11Spd/15Spc if I understood you), so just use that when you get to it. (I tested that with the latest build, which should have the same cheats as 2.0.1 when it's released today. I'm just waiting to find any more game-breaking bugs first.)

    AC also improves the in-game AI if you have the external thing off. Just saying in case you want to continue what it did for the in-game AI and not start over from Crystal standards and wasn't already aware of this.

    Maybe I'll borrow some of their improvements for a future release, then, or build on them. At first glance their battle/ai/scoring.asm file looks very similar to the original; do you happen to know any specific changes they made?

    Edit: Comparing them side by side. There are some tweaks, like adding Burn as one of the status effects to not repeatedly try and inflict (since they added Will-O-Wisp), and taking the Physical/Special split into consideration, but most of the code is identical.
     
    Last edited:
  • 9
    Posts
    10
    Years
    Right. Tell you what, 01FB11D2 91BF12D2 is the Gameshark code to encounter all wild Pokémon with the DVs of your Suicune (15Atk/11Def/11Spd/15Spc if I understood you), so just use that when you get to it. (I tested that with the latest build, which should have the same cheats as 2.0.1 when it's released today. I'm just waiting to find any more game-breaking bugs first.)



    Maybe I'll borrow some of their improvements for a future release, then, or build on them. At first glance their battle/ai/scoring.asm file looks very similar to the original; do you happen to know any specific changes they made?

    Edit: Comparing them side by side. There are some tweaks, like adding Burn as one of the status effects to not repeatedly try and inflict (since they added Will-O-Wisp), and taking the Physical/Special split into consideration, but most of the code is identical.

    It was 15 on everything besides attack and defense. But It's okey, man. I'll just continue playing 1.1.2 or restart over. Also could you make Thyplosion learn Flamethrower at 36 rather than Fire Punch? It has a better Special Attack(Base 109 against Base 79 Attack) and being forced to use Swift because mine had literally no attack was painful. Or does it learn it at 48 like in the last games?
     

    Splash

    But nothing happened.
  • 658
    Posts
    14
    Years
    Right. Tell you what, 01FB11D2 91BF12D2 is the Gameshark code to encounter all wild Pokémon with the DVs of your Suicune (15Atk/11Def/11Spd/15Spc if I understood you), so just use that when you get to it. (I tested that with the latest build, which should have the same cheats as 2.0.1 when it's released today. I'm just waiting to find any more game-breaking bugs first.)



    Maybe I'll borrow some of their improvements for a future release, then, or build on them. At first glance their battle/ai/scoring.asm file looks very similar to the original; do you happen to know any specific changes they made?

    Edit: Comparing them side by side. There are some tweaks, like adding Burn as one of the status effects to not repeatedly try and inflict (since they added Will-O-Wisp), and taking the Physical/Special split into consideration, but most of the code is identical.
    Will you be releasing a new candidate patch or will it be 2.0.1 any time soon?
     
  • 755
    Posts
    7
    Years
    • NY
    • Seen Oct 9, 2023
    It was 15 on everything besides attack and defense.

    Then you want 01BB11D2 91FF12D2.

    Also could you make Thyplosion learn Flamethrower at 36 rather than Fire Punch?

    I try to only edit movesets when there's a missing move or a really good reason (like increasing symmetry among the legendary trios or the Eeveelutions). If you want Flamethrower early, you can get it at the Game Corner.

    Will you be releasing a new candidate patch or will it be 2.0.1 any time soon?

    2.0.1 later today, just testing for last-minute bugs.
     
  • 9
    Posts
    10
    Years
    Oh, okey thanks, I wasn't sure that it was Flamethrower(Although I have really bad RNG on the Casino LOL)

    I may wait until the 2.0.1 and start over. Also thanks for the cheatcode, I don't know if i'll use it but still, thanks :P
     
  • 138
    Posts
    8
    Years
    • Online now
    Thanks, sorry to hear that you're stuck. I fixed the crashes with Bellchime Trail and Valerie's house earlier, and just now fixed the (rather complicated) conditions for when she should be in which location.



    Interesting, I didn't think I had made things that much harder. Is there a particular point when you started having difficulty? I only really raised the levels past Jasmine, before that I basically just gave the boss trainers better teams and fixed the biased AI (missing unnaturally often, etc). Don't know if I'll make anything easier, but I am curious about your experience.

    Not really that. It's just that I grew bored of fighting lower leveled pokemon in the first two towns that the grinding felt more like a chore than necessary. The trainers even had pokemon with levels lower than mine at times! The first two gyms weren't too bad. I may try again soon though if nothing else comes down the pipes. I'm waiting for Prism and Bronze 2 and I'm a beta tester on an upcoming Metroid hack as well. I love this hack but it could be a little better.
     
  • 755
    Posts
    7
    Years
    • NY
    • Seen Oct 9, 2023
    Haven't noticed any more bugs in my own playthrough. I have made some tweaks, but they're a matter of taste. I did get another report of the Nuzlocke-mode-on bug even with the 2.0.1 release candidate.

    I grew bored of fighting lower leveled pokemon in the first two towns that the grinding felt more like a chore than necessary. The trainers even had pokemon with levels lower than mine at times!

    Huh. Isn't this typical for Pokémon games? And maybe I'm misunderstanding, but too much grinding and too-weak trainers seem like problems that solve each other: grind less and they'll be more of a challenge.

    I don't mean to argue over subjective taste; if you're bored, you're bored. But I would just expect those to be problems with Kanto, especially before I revised the levels, but not with Violet and Azalea.

    Is there a hack that you'd say does things differently? I've started playing Pyrite, but it's intentionally a difficulty hack. Polished Crystal is meant to be like the regular version but with issues ironed out (like Kanto being way underleveled). What do you think of Pokémon Christmas?
     
  • 755
    Posts
    7
    Years
    • NY
    • Seen Oct 9, 2023
    Update 2.0.1 is officially out! There were pretty many bugs in 2.0.0, including multiple crashes and some that made progressing almost impossible. They've all been fixed. The only major bug remaining is that Nuzlocke mode sometimes turns itself on; I might release a 2.0.2 update if it gets fixed later.

    2.0.1 is compatible with 2.0.0 save files, so just replace the ROM and you should be all set.


    Patches:

    There are two patches, regular and "faithful". The faithful patch does not change any Pokémon types or base stats, or any move attributes. This will be more familiar, but can have some odd consequences, like a Ghost trainer using a Ninetales that lacks STAB on its Shadow Ball.

    Patches should be applied to a Pokémon Crystal (UE) (1.0) ROM. The one I used has the MD5 hash 9f2922b235a5eeb78d65594e82ef5dde if you need to make sure your copy is correct.


    The source code on GitHub has a readme and feature list with more details, an FAQ, and a guide to using the patch files.


    Changelog:

    • Add: Item balls for TMs are blue (based on Gen VI's yellow).
    • Add: The Zephyr Badge lets you use traded Pokémon up to level 20.
    • Add: Respawn Sudowoodo if uncaught after the Elite Four, like legendaries.
    • Add: Splash effect in puddles.
    • Add: Update some boss trainers' teams.
    • Add: Mantine can learn Fly.
    • Add: Crabhammer has 95% accuracy.
    • Add: Unique wild moves are rarer (25%, not 50%).
    • Add: Move Nuzlocke mode option away from common ones.
    • Add: X/Y Gym Leader music for Valerie.
    • Add: Fairy tale references.
    • Add: Nidorina and Nidoqueen, not just Nidoran♀, can produce either gender of Nidoran eggs.
    • Fix: Flash no longer requires the Zephyr Badge, since earning the Zephyr Badge requires using Flash.
    • Fix: The Rocket Grunt♀ who gives you a password has a glitched unbeatable team.
    • Fix: The Day-Care gives back fainted Pokémon in Nuzlocke mode.
    • Fix: Calling Bill to switch boxes corrupts the PC.
    • Fix: Destiny Bond glitch.
    • Fix: Ecruteak fairy-tale house crash.
    • Fix: Bellchime Trail crash.
    • Fix: Conditions for Bellchime Trail event.
    • Fix: Swimmer♂s on Route 40+41 have the Super Nerd sprite.
    • Fix: Viewing the Ruins of Alph wall patterns crashes the game.
    • Fix: Incorrect cries for some Pokémon.
    • Fix: TM learnsets for Electivire, Magmortar, and Rhyperior.
    • Fix: Icicle Crash is still called Razor Shell.
    • Fix: A battle with Lyra is skippable.
    • Fix: Two trainers overlap on the S.S. Aqua.
    • Fix: Sending a caught Pokémon to the PC asks whether to nickname in Nuzlocke mode.
    • Fix: Plural trainers say "are about to use", not "is about to use".
    • Fix: Viridian Forest is dark.
    • Fix: S.S. Aqua location on Town Map.
    • Fix: Tile error in Cherrygrove Bay.
    • Fix: Twins Ann & Anne → Twins Tori & Til.
    • Fix: Lass's text spread over multiple lines.
    • Fix: Trainer Card badges in Kanto.
    • Fix: Game Corner still mentions Blizzard, not Ice Beam.
    • Fix: Game Corner games in Goldenrod use Celadon music.
    • Fix: Adjust some event timing.
     

    Deokishisu

    Mr. Magius
  • 990
    Posts
    18
    Years

    Just crashed against a Trainer in the Route beneath Blackthorn in Shift mode. Used Selfdestruct to knock out an enemy Pokemon. It prompts me to switch as the Trainer is sending out another Pokemon, and I do so. Switched in Pokemon gains full exp from the Selfdestruct kill. Then it forces me to switch again and softlocks, which absolutely sucks because I haven't saved since before going through Ice Path and doing the Rising Badge shenanigans. Any suggestions for edits to make in the memory viewer to end the battle so that I don't have to redo all of that?
     
  • 755
    Posts
    7
    Years
    • NY
    • Seen Oct 9, 2023
    Just crashed against a Trainer in the Route beneath Blackthorn in Shift mode. Used Selfdestruct to knock out an enemy Pokemon. It prompts me to switch as the Trainer is sending out another Pokemon, and I do so. Switched in Pokemon gains full exp from the Selfdestruct kill. Then it forces me to switch again and softlocks, which absolutely sucks because I haven't saved since before going through Ice Path and doing the Rising Badge shenanigans. Any suggestions for edits to make in the memory viewer to end the battle so that I don't have to redo all of that?

    I just tried this in 2.0.1. Fainting a trainer's Pokémon with SelfDestruct and Explosion works correctly now, in Shift and Set mode. I think it was related to the Destiny Bond glitch.

    Unfortunately I think you'll have to resume from an old save.
     
  • 13
    Posts
    14
    Years
    • Seen Sep 17, 2016
    Some more fixes. There are no random encounters while surfing on Cherrygrove Bay. I suppose this wasn't intentional. Fishing works OK.

    Crunch's description still says it may lower Sp. Defense. The move correctly lowers Defense, though.

    Ice Shard's description is buggy, it seems Toxic's also shows up at the same line after it and causes some graphical issues.

    ...Which brings us to the next 'glitch'. While trying to track which move was being mentioned in that description, I found out that Toxic actually does hit through Fly and Dig when used by Poison types. Sorry. I didn't know about it. Looks like you'll have to refix it.
     
    Back
    Top