• 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
    How so? It's useful for stealing Leaves from wild Bellsprout and Oddish, or Nuggets from Rich Boys and Ladies. And once I figure out how link battles remember the held item and return it after battle, I'll add that for regular battles. (Although it shouldn't return consumed items, of course, even though link battles do.)



    The latest commit still crashes right away on many battles, including the first Lyra battle.

    Lovely. I'll have to take a look then...
     

    FIQ

    251
    Posts
    11
    Years
    • Seen Sep 15, 2022
    The move was ember. I thought the physical/special split meant special attacks didn't make contact.
    I was using the most recent version at the time, which I believe is still the most recent build.

    No, some special attacks do make contact. However, Ember doesn't, so that's a bug.
     

    Unown Seer

    Earnest
    179
    Posts
    14
    Years
    • Seen Dec 6, 2020
    If I could make a suggestion about the list of removed Pokemon (Spearow, Fearow, Lickitung, Goldeen, Seaking, Hoppip, Skiploom, Jumpluff, Shuckle, Aipom, Stantler, Cleffa, Igglybuff, Smoochum, and Delibird)... All of the final stages of the above are viable in-game, at least with Drayano's stat changes. Why not remove first-stage Pokemon only? For example:

    Caterpie, Weedle, Spearow, Nidoran (both), Paras, Venonat, Goldeen, Hoppip, Pichu, Cleffa, Igglybuff, Sunkern, Smoochum, Elekid, Magby, Munchlax

    Doesn't that make more sense?
     
    Last edited:
    755
    Posts
    7
    Years
    • NY
    • Seen Oct 9, 2023
    If I could make a suggestion about the list of removed Pokemon (Spearow, Fearow, Lickitung, Goldeen, Seaking, Hoppip, Skiploom, Jumpluff, Shuckle, Aipom, Stantler, Cleffa, Igglybuff, Smoochum, and Delibird)... All of the final stages of the above are viable in-game, at least with Drayano's stat changes. Why not remove first-stage Pokemon only? For example:

    Caterpie, Weedle, Spearow, Nidoran (both), Goldeen, Hoppip, Spinarak, Ledyba, Pichu, Cleffa, Igglybuff, Sunkern, Smoochum, Elekid, Magby, Munchlax

    Doesn't that make more sense?

    Thanks for the suggestion, but I don't think it makes sense to remove Caterpie while keeping Metapod and Butterfree, for example.

    I'm experimenting to see if I can add one or two Pokémon back by using slots 0 (Bad Egg/Missingno) or 254 (Egg). Will probably add back Shuckle and then Stantler if so. No promises, though, it might not be possible.
     

    Unown Seer

    Earnest
    179
    Posts
    14
    Years
    • Seen Dec 6, 2020
    Thanks for the suggestion, but I don't think it makes sense to remove Caterpie while keeping Metapod and Butterfree, for example.
    But you removed some of the babies, didn't you? Yes, they weren't catchable in the original games, but that doesn't really matter.

    I'd like to see Delibird in the game. There aren't many Ice types and Drayano made it good. If nothing else, please ditch Munchlax for it.
     
    Last edited:
    755
    Posts
    7
    Years
    • NY
    • Seen Oct 9, 2023
    But you removed some of the babies, didn't you? Yes, they weren't catchable in the original games, but that doesn't really matter.

    I'd like to see Delibird in the game. There aren't many Ice types and Drayano made it good. If nothing else, please ditch Munchlax for it.

    I do think babies are different from first-stage evolutions. Cleffa and Igglybuff can only be acquired by breeding and have no use but to fill the Pokédex. (Elekid, Magby, and Munchlax are useful on their own; Togepi is in Mr. Pokémon's Egg and iconic to Gen 2; and Pichu is also too iconic to remove. Smoochum could have been good, but I needed a slot, and this way Jynx and Mr. Mime are more parallel.)

    Delibird will not be added because I'd also have to replace a move with Present, and there's barely enough space for a balanced set of 255 moves as-is.
     

    Unown Seer

    Earnest
    179
    Posts
    14
    Years
    • Seen Dec 6, 2020
    Delibird will not be added because I'd also have to replace a move with Present, and there's barely enough space for a balanced set of 255 moves as-is.
    It doesn't need Present at all. Just use something along the lines of the movepool Drayano created.
     

    Unown Seer

    Earnest
    179
    Posts
    14
    Years
    • Seen Dec 6, 2020
    Fine. Hopefully one day you'll be able to add all sorts of Pokemon. Any ideas how likely that is?
     

    FIQ

    251
    Posts
    11
    Years
    • Seen Sep 15, 2022
    I think that considering how few extra species Polished Crystal actually needs, that you could get away with extending Form functionality (you need to do this anyway for Alolan mons) and simply make the missing Pokémon piggyback on that. That allows you to ignore the can of worms that is extending species to 65535. That'd be for 4.0 if anything though.

    By the way, my damage calc refactor's actual code is mostly done (Damage calculation itself is actually done, what I'll have to do now is to tweak battle scripts to take the rewrite into account and ensure that things work correctly). What I am afraid of now is how potentially buggy it is. Hopefully not too bad, or I guess I'll have to push that aside similar to the switch-out rewrite. This is something I'd rather not though, because then I'll have to figure out another way to get some free space in battle related banks...

    Also, in the process, I properly implemented damage abilities (several of them lacked physical/special checks), all damage-changing items (not their side effects yet like Choice locking, etc) as well as Pixilate and Sturdy, and made self-hits in confusion no longer completely broken. I also made damage calculation far more commented because as-is it was a pain to follow in general. And now, every "special" damage type, or moves with dynamic power, goes through damage calculation rather than seperate scripts. This consolidates the logic better, and would also help the AI.

    As for the current crash issues in HEAD, they weren't there before my small fixes here and there, so it should be trivial to track down. Should be either my pinch ability fix or BattleRandomRange that crashes the game.
     
    Last edited:

    ChrisTheWhiteWolf

    White Lighting
    19
    Posts
    10
    Years
  • Well, it's a moot point, since trying to add another Pokémon causes a lot of glitches and I don't want to delay 3.0 fixing them.

    First of all bravo for this hack
    It gives Crystal one of my most beloved childhood memories a breath of fresh air with with everyting you put together

    I just wanted to ask what are the planned features for 3.0 version and changes and also is it going to be a long while until it comes out?I am just asking because i start my second playthrough of this game and I can wait

    THX
     
    16
    Posts
    9
    Years
    • Seen Mar 5, 2023
    I ran into a Meowth on Route 38, and instead of simply crashing the game my emulator's debugger appeared with this message.
    I have no idea what I'm looking at, but it seems like a pretty big deal.
     

    Linnie

    Mmmmmmmmmmmmmmmmm
    40
    Posts
    10
    Years
    • Seen Jan 16, 2022
    Would making multiple, separate species of Pokémon sit under the same index slot via multiple formes really be less of a can of worms than expanding the data structure to have 16-bit species indexes? Obviously neither are easy by any stretch of the word, but I was under the impression that most of the difficulty of the latter is just that going through every line of code in the game, checking for every time the game uses the 8-bit species index for something, and rewriting it to check for 16-bit instead. Not complex but just requiring a massive amount of time. What you're suggesting about the formes seems much more complex.
     
    755
    Posts
    7
    Years
    • NY
    • Seen Oct 9, 2023
    Would making multiple, separate species of Pokémon sit under the same index slot via multiple formes really be less of a can of worms than expanding the data structure to have 16-bit species indexes? Obviously neither are easy by any stretch of the word, but I was under the impression that most of the difficulty of the latter is just that going through every line of code in the game, checking for every time the game uses the 8-bit species index for something, and rewriting it to check for 16-bit instead. Not complex but just requiring a massive amount of time. What you're suggesting about the formes seems much more complex.

    Formes vary the sprite, base stats, and learnset. Different species also vary the name, Pokédex entry, cry, and probably other tables that I'm forgetting. Plus, there's a lot more to update. For Alolan formes, I'm pretty sure I just need to update GetBaseData and everything that refers to EvosAttacksPointers. For species, every data structure and routine that uses a Pokémon ID needs updating. Like wild Pokémon—formes can have a few special cases in the stat initialization like "if we're in the Seafoam Islands, make Sandshrew be form 2" (similar to the already-existing code for Unown, regional Arbok, Flying/Surfing Pikachu, and other varied-sprite Pokémon). For species, I'd have to edit the whole wild data structure. And part of the problem is that single bytes can use the a register, but two-byte values need bc, de, hl, or stack/WRAM if all of those are in use (which they often are).
     

    Linnie

    Mmmmmmmmmmmmmmmmm
    40
    Posts
    10
    Years
    • Seen Jan 16, 2022
    If you're just doing it for Alolan formes then it makes sense, I was just replying to FIQ suggesting you should use it for the other missing Pokémon in the hack (i.e. the removed Johto lines).
     

    FIQ

    251
    Posts
    11
    Years
    • Seen Sep 15, 2022
    Thing is, the game already has code for handling Formes. So it would be a matter of extending that code. You don't need to rewrite the handling of Pokémon data structures since it already handles Formes correctly. Similar case for sprite handling, etc. All you need is to change base data functions to account for Form. This is something you also have to do if you are messing with 2-byte species, but 2-byte species also requires you to rework data structures (again...), and also makes it more awkward to work with register-wise for reasons Rangi mentioned. For formes, you only really need to dedicate a single species ID as a special case that looks at Form instead as a "species". IIRC Polished Crystal has 6 bits for form data (that is 64 different possible values) which is enough to handle all the removed species to make up for new ones, and the few additional ones.
     

    FIQ

    251
    Posts
    11
    Years
    • Seen Sep 15, 2022
    I ran into a Meowth on Route 38, and instead of simply crashing the game my emulator's debugger appeared with this message.
    I have no idea what I'm looking at, but it seems like a pretty big deal.

    Looks like an invalid instruction. IIRC this happened before with Poison in the overworld when I made Immunity/etc either heal it outright or (in the case of Poison Heal) not deal damage, and the fix was trivial. Not sure what it is this time though.
     

    sonic65101

    Johto Champion
    98
    Posts
    10
    Years
  • An interesting thing would be if you could use the Celebi from the GS Ball event to travel back in time and battle Giovanni like you can in Pokémon HeartGold and SoulSilver. Any plans to implement something like this?
     
    Back
    Top