Re: Gen III: Access Pokémon beyond the sixth slot sub-glitches.
Posted by: Torchickens
Date: 2015-05-16 09:26:44
Glitch City Laboratories closed on 1 September 2020 (announcement). This is an archived copy of a thread from Glitch City Laboratories Forums.
You can join Glitch City Research Institute to ask questions or discuss current developments.
You may also download the archive of this forum in .tar.gz, .sql.gz, or .sqlite.gz formats.
If you want to know the hexadecimal values of the Glitch Pokemon you hatched, you can find them back with the extended 3rd Gen Pokedex (I forgot its exact name, but there is a subject on the forum where a download link is given, and I can't find it back) as they have a really clear name that you can trace back.
For the issue about levelling crashes, I don't know if this is due to the Pokemon trying to learn a new Glitch Move, its Exp curve being too glitchy, something about the stat increase he has, or the Glitch Pokemon trying to evolve, but it's something that is related either to the species or the stats increase.
Might it be Generation III Extended Hacking Suite?
Metarkai, do you know an easy way to edit the index number of a Pokémon in the party to any glitch Pokémon with memory viewer without having to do any glitching?
I have usually got an Egg from double corruption first then corrupted it again with Pomeg glitch or manually with memory editor to get any Pokémon (including unhatchable glitch Pokémon) based on its EVs. I couldn't locate CCD7 with cheat searcher sadly.
I would like to know of a way to manually change any Pokémon. In the Game Boy games it's relatively trivial because you could just change two memory addresses (species byte 1 and byte 2); but in Generation III with you having to take the modulo 24 of the personality value to know where the species ID address would be, and the Pokémon being protected by checksum, I don't know of a step by step way.
With anti-DMA enabled, can you tell me the addresses of the stored checksum, and the species ID for Pokémon for all four positions of "Growth" in the substructure orders please?
Yeah, perhaps without further knowledge it may be like Generation I (a Pokémon with a glitch experience curve that can normally never stay past level 1 after battle, or a Pokémon with a glitch experience curve that has division by zero)
Yup, exactly. It really helped me to determine the name lenght of glitch Pokemon and see what "families" had the biggest name lenght, in order to directly know approximative values of identifiants I should use if I wanted to corrupt certain values like Battle Pyramid Bag.
I also modified an US Emerald ROM in order to make it read French Pokemon names, as I wasn't able to fully modify the .ini to make it directly read a French ROM.
For specific searches of Glitch Moves effects or Glitch Pokemon specificities, TheZzAzZGlitch gave me python scripts to help me for that (they are basic scripts as it's only a matter of wanting a certain value on a certain place, but I had nothing to do that for me before).
For now, these scripts mainly helped me testing abuses of the "N° of party Pokemon in battle" value.
My goal was to have a glitch move with a name long right enough to corrupt that value, and use healing or self-damaging moves to change the HP of my Pokemon. This would force the game to update the hp of the Pokemon "sent in battle", which would have been the Pokemon at the corrupted party slot.
Depending on the party slot values, accurate corruptions of things like special islands flags, mirage island,… could have been possible. However, this value is right at the start of a block of values managing the battle, and all the glitch moves with a good name lenght make the game crash (another adress near the concerned one gets a value that makes the game freeze or reset).
But, writing this made me think about another possible way to exploit this, through the opponent's Pokemon HP. I'll look into this.
There's another thing I wanted to test, which was the evolution lines. Can a Glitch Pokemon with a non-glitched sprite and name evolve ? And is that evolution condition the element that makes the game freeze when you give Rare Candies to a Glitch Pokemon ?
I also wanted to check the Move Relearner a bit more accurately, as I confirmed that the list of relearnable moves contain one exemplary of each move present into the "Learnable Move" list of the Glitch Pokemon until Move 0000 shows (whereas in Gen III Extended suite, the learnable moves list goes further than that).
I also wanted to test the Glitch Move types, to see if there were some that could have nice effects.
I also wanted to test the effects of Glitched Special abilities, but I don't really know how to make a test for this (to know if they have an effect during a battle or outside a battle, and what that effect might be). I also don't know their full name lenght, as maybe something like Skill Swap could make new RAM overwriting cases.
Someone on PRAMA had a good idea about testing if Glitch Pokemon names could change the NPC's script to values that would be ROM adresses with interesting scripts (like Hall of Fame, engaging a battle against a legendary, …).
However, the answer was negative. I didn't find any set of 4 bytes that would be near the end of a Glitch Pokemon's name with a certain lenght (like 18.000 characters long) that would look like a ROM adress towards NPC/events scripts.
There are maybe some other values that could be exploited like this, but I don't really know what other values I could give for a NPC script adress in order to get nice results (it has to do someting like a teleport, as a glitch Pokemon species name of that lenght corrupts the player current location and he would be outside of the building, and taking a single step crashes the game).
While trying to check the existence of the rumoured Lotad Swarm in RSE (I found the ROM adresses managing swarms and he wasn't there, so unless someone shows it, I heavily doubt he existed), I came to think of another way to make the game read a Glitch Pokemon species name, which would be TV news.
I haven't tested it yet, but with news that display the species name of Pokemon like the name master or other ones, I think the game would read the species name of the ID stored in the adresses related to the news.
This could maybe be useful for RAM data overwriting as it could provide another starting adress for that overwriting.
For now, I know of 2 adresses for RAM data overwriting : 0x02021CC0 (the adress where the species name is stored when you talk to Slateport's Journalist in the Pokemon Fan Club), and another adress around 0x020283E8 (the trainer name is stored there when you reload your save, exit the Safari game, and maybe with other actions).
If we had other adresses where names of Glitch Pokemon, Glitch Moves, or Glitches Trainer Name were stored, this would help into overwiting certain interesting values (0x020283E8 helps to get a NidoranM swarm, and could maybe have other uses for certain adresses, but I don't really know what yet since it's quite afar from main flag adresses).
This would also help do RAM corruptions in RS, as the storage adress of a Pokemon species name by Slateport's Journalist is really afar from other interesting adresses, (in Emerald, party pokemon data was a good thing to corrupt, but it isn't there in RS).
I also haven't tested to see where the trainer's name is stored in RS in order to see if it could be helpful to corrupt it.
This reminds me that in RS, if the player's name is too long, you can't even use the pause menu or things like that, so you're really blocked if you want to overwrite too much data.
I doubt this comes from the experience curve as some glitch pokemon can eat their Rare Candies easily.
However, I didn't check precisely their exp curves, so there could be certain exp curves that make the game crash.
But I think there are multiple reasons behind these crashes since the game doesn't always freeze at the same time.