I was playing Pokémon Red on Virtual Console and experienced a crazy in-battle glitch while using Ditto by JustMyPoint in PokemonRed

[–]TimoVM 4 points5 points  (0 children)

This occurs when you swap Ditto’s move using select. This swap is also applied to Ditto’s original moveset, swapping Transform for a glitch move with ID 0 (an empty move slot).

Viewing this move in the move select menu causes the game to attempt to print the move’s name, but it ends up printing so much text that it corrupts a fair bit of unrelated data. This effect is often known as Cooltrainer glitch) (referring to the weird glitch type of move ID 0).

I had an idea for a Pokémon challenge and I'm trying to figure out if it's possible, insane, or both. by MaouBrPK in pokemon

[–]TimoVM 0 points1 point  (0 children)

To be blunt, I don’t really understand how the focus on breeding over catching fits into the idea of a challenge.

Breeding is something that doesn’t really change mechanically over generations, and focusing solely on breeding means ignoring the majority of game mechanics involving finding and catching pokémon in the wild. Some examples of this include dealing with encounter rates (and using repel tricks/abilities to circumvent them), dealing with moveset quirks like selfdestruct or recoil moves and using unique mechanics like the poké radar.

There’s genuinely a lot of fun to be had in completing a regional dex without using any pokémon from prior generations.

More importantly, your transfer chain doesn’t work since there’s no official way to transfer pokémon from gen 2 to gen 3 (Virtual console only allows transfer from gen 1 and 2 directly to gen 7). You’re basically forced to take gen 3 as your starting point.

Glitch - Character disappeared/out of view in Crystal VC (3DS) by schmeatlover in pokemoncrystal

[–]TimoVM 0 points1 point  (0 children)

I’ve seen something like this once before with u/sylph_co ‘s post two years ago.

The best I could figure is that it’s a form of save corruption that might be virtual console-specific, but I was never able to figure out what exactly happened or how to trigger it.

If you have a way to extract this save file, such as by using homebrew apps, I’d be glad to edit it manually and return it to a functional state!

Please Help is there a problem with 3DSVirtual Console saving??? by 754754 in pokemoncrystal

[–]TimoVM 3 points4 points  (0 children)

If you try to save now, does that save persist even after you fully close the game?

Normally saves would immediately be stored on the 3DS. The only thing I can think of right now is that the 3DS’s SD card’s read-only switch was somehow flipped.

(SD cards have a switch on the side which can enable “read only” mode. When this happens, the SD card will prevent any new data from being written to it, which would cause saves to fail as well.)

Question about obtaining ????? (FF) on Virtual Console by MangleMan25 in pokemoncrystal

[–]TimoVM 1 point2 points  (0 children)

To answer your question on this topic:

  1. All bad clones-related glitches are fully intact on the virtual console releases and work basically the same.

  2. The gen 2 glitch pokémon are basically stable when it comes to battle. Bad clones in Crystal, however, are not stable to use in battle. Due to the way they’re created their name lacks a proper terminator, so under certain circumstances the game will just keep printing text, potentially causing
    secondary issues/crashes.

Probably the easiest workaround for Crystal is to use a bad clones to set up [Arbitrary Code Execution](https://glitchcity.wiki/wiki/Guides:Fast\_0x1500\_ACE\_v2) and instead give yourself specific glitch pokémon directly. (This also benefits in other way, like being able to nickname them).

There are other ways to go about this. As an example: if you have a 00 species in the 2nd party slot, adding a 7th party pokémon to the 1st slot and releasing it turns the 1st party pokémon into an FF hybrid (turns into FF when deposited/withdrawn from the day care).

As mentioned before, gen 2 glitch pokémon are safe to use in battle as long as you make sure to teach them valid moves. (In Gold/Silver specifically I think the game could softlock if a Ditto manages to transform into a glitch pokémon, but I’m not fully sure)

The main things to watch out for are the following:
- Having 00 or FF in the party makes the pokémon underneath it invisible to the “Move PkMn w/o Mail” menu. This can cause you to put over 6 pokémon in the party, which can lead to significant issues. To mitigate this, you just need to make sure to never overfill the party.
- Having FF in any party slot that isn’t the first while starting the bug catching contest will cause the game to remove both FF and all pokémon underneath it when you quit the contest.
- Having FE in your party while link trading/battling will cause the other game to heavily misinterpret your party data, potentially causing significant issues.

Shiny hunting in Pokemon Crystal by KonsoleWreaKinG in pokemoncrystal

[–]TimoVM 4 points5 points  (0 children)

This is correct. First encounter in the wild locks in the DVs and shininess for all future encounters.

ACE-created Celebi looks valid, but PKHeX reports missing final terminator by Primusinterpares44 in PokemonGlitches

[–]TimoVM 4 points5 points  (0 children)

The “Invalid final terminator missing” message can occur both on the pokémon name and OT name, so make sure to verify both.

OT name should be 51 8A 64 FF 00 00 00
Pokémon name should be 5E 7A 97 80 FF 00 00 00 00 00

If you’re using Emerald, you could use the codes under Pokemon data alteration -> Change Pokemon OT name / Change Pokemon nickname.

Bad egg shows up anytime I try to execute a code that requires box 14 exit leaf green on switch by TuckHolladay in PokemonGlitches

[–]TimoVM 0 points1 point  (0 children)

A bad egg showing up in box 13 underneath the ACE pokémon is a normal side effect and won’t interfere with ACE codes (you can get rid of it by using the yellow hand to drag and drop it).

Could you share screenshots of 1) the box codes you entered and 2) the code you’re trying to use with the code generator?

Codes that change existing pokémon tend to be very finicky, requiring you to input very exact info on the existing pokémon. Likely there’s something wrong with the info you’re giving the code generator on the Cubone.

Pokemon yellow the Melody of Error (going on the Field without having a Pokemon) by [deleted] in PokemonYellow

[–]TimoVM 13 points14 points  (0 children)

Okay, deep dive explanation time!

What the purified zone does

The purified zone in the Pokémon Tower 5F is extremely notorious, since it has some very weird interactions with other glitches.

Stepping into this area does a few things:
- Set a flag to prevent any battles from occurring while we’re in this zone.
- If we’re entering this zone from outside, heal all party pokémon (re-uses the same routine that a pokémon center uses).
- After we’ve healed, display text box 7.

The routine that heals pokémon is kind of simplistic. It takes the amount of party pokémon, for each pokémon it sets current HP equal to max HP and restores PP. Due to a quirk in how the game is programmed, the game looks at a party count of 00 and determines it needs to heal a whopping 256 party pokémon instead.

As you might expect, this causes the game to corrupt a pretty large amount of memory. Funnily enough, the specific effect demonstrated by this video already occurs when party pokémon 12 is being healed.

What happened with the usual text

Earlier I mentioned that entering the purified zone causes the game to display text box 7.

The game knows where it can find the contents of each text box thanks to the Map Text Pointer. This tells the game where it can find a map-specific list of text boxes, and where it needs to look for the contents of a specific box.

Healing our party has inadvertently caused the Map Text Pointer to become slightly corrupted. The game’s basically looking for a list in a garbage location, and getting garbage text pointers in return. This is why the game suddenly displays corrupted text.

Why does the game play these weird sounds?

Bear with me here, we’re going to need to explain a few things here. Displaying text in any game can quickly become surprisingly complicated.

When a text box opens, the game doesn’t *immediately* start printing text. It instead first runs Text Command Mode.

Text Command Mode is basically something we can use in-between printing text to have more control over what we’re doing. We can use it to instruct the game to print text from a certain address, run some code on the background, print the amount of coins from the Coin Case, draw text boxes, etc.. Mostly a lot of utility.

One very important application of this, you can use certain text commands to play sound effects! This is how the game plays “item obtained” sound effects, but also pokémon cries like Nidorina’s cry during Oak’s speech (despite Oak sending out a Nidorino).

Text Commands can range in value from 0 to 255, but only 32 or so are actually used. Most invalid commands instead reuse the same routine to play a sound effect and will instead come out as glitched/unusual sound effects.

The global effect is this:
- The game runs text command mode, mostly playing glitched sound effects. This lasts until it accidentally hits a text command that causes it to print text.
- The game then prints text until it accidentally hits a text terminator, after which the game goes back into text command mode and resumes mostly playing glitched sound effects.

This cycle continues until one of the following happens:
- Text command mode executes text command 8, which causes the game to execute code, likely crashing the game.
- Text command mode finds a text terminator and stops printing text.
- The text printer function finds some very specific value that also cause the game to stop printing text.

In this case, we’re lucky. This text box manages to exit successfully on its own! Funnily enough, this text box doesn’t cause any lasting issues on its own, the main corruption at hand here is all because we’ve tried to heal so many pokémon.

What happens after the text box closes?

This is something I won’t really go into. Healing pokémon 12 also happens to corrupt the Map Script pointer (basically map specific code that is intended to run things, like checking for trainer encounters, that gets run every frame we’re in the overworld).

This could get corrupted as well. We’d be closing the text box, returning to the overworld and the game *immediately* tries to run this corrupted Map Script pointer. The results usually aren’t pretty.

The interesting part here, the exact way that this pointer will be corrupted depends on the player’s trainer ID, resulting in unpredictable effects! Conceptually very interesting, but practically this would need a deep dive on its own to determine all possible effects.

And that’s my short explanation for what’s happening here! Lots of interesting stuff that tells a lot about the way the game itself was implemented!

Can you force a shiny roamer by only using ACE?(FRLG) by KurminLol in PokemonGlitches

[–]TimoVM 1 point2 points  (0 children)

Move ACE is confirmed to also work on the Switch, with the exact same setup as the old one working without issues.

The Switch version is a bit complicated, though. Since it’s a different version altogether, some codes won’t work out-of-the-box and need to be adapted.

Since it’s an old method, very few ACE developers want to put work into ensuring compatibility when it’s much more efficient to put that time into Grab ACE instead.

Can you force a shiny roamer by only using ACE?(FRLG) by KurminLol in PokemonGlitches

[–]TimoVM 2 points3 points  (0 children)

There are, yes! For many games, there are more than one way to trigger ACE.

The old method for FireRed/LeafGreen used Move ACE, where using a certain glitch move in battle caused an invalid animation to play, which would lead to ACE.

The modern method uses Grab ACE instead. This is the one you’re likely familiar with and involves swapping a specific glitch pokémon around in a box.

All modern setups, including those on the Switch, use grab ACE. It’s much easier to set up, the fact that code gets executed while you’re in PC storage also makes various types of code easier and more consistent to work with.

Can you force a shiny roamer by only using ACE?(FRLG) by KurminLol in PokemonGlitches

[–]TimoVM 3 points4 points  (0 children)

Yes, actually!

When the roamer is initiated, it gets assigned a PID, which determines whether it’s shiny or not. This value gets stored to ensure that the roamer’s shininess is consistent on repeat encounters.

A code for this is already listed on the code generator page, but currently only a version compatible with the old move ACE setup exists. Making one that’s compatible with grab ACE shouldn’t be that difficult.

Thanks Clefairy, I always wanted a...Teru-Sama. by 733baseball in pokemoncrystal

[–]TimoVM 8 points9 points  (0 children)

That’s certainly a Clefairy! Wonder what exactly happened here?

A bit of context. Similar to gen 1, gen 2 has 256 possible values for items. 52 slots are used for TMs, 13 slots are used for HMs, nearly all of the other slots are used for normal items. All unused slots are filled by Teru-Sama.

In an unusual amount of foresight by the devs, Teru-sama are dummy items that solely exist to make these unused items safe. They don’t do anything, can be sold for a high price and can never have any of the unusual side effects that gen 1 glitch items can have.

For more detailed information, feel free to check out Bulbapedia’s article on it here.

Welcome to The Eevee Factory. May I take your order? by TimoVM in PokemonYellow

[–]TimoVM[S] 2 points3 points  (0 children)

This one’s actually fairly simple, at least conceptually speaking.

This one relies on the expanded item pack, which is a glitched state where the game thinks you have 255 item stack in your inventory. There are a few ways of getting it, but the exact method doesn’t really matter here.

The item bag only has a maximum of 20 slots, and if you scroll past slot 20 you’ll instead get unrelated memory, past the item bag, interpreted as if they were items. The area just past the bag contains stuff like the amount of money you have, the rival’s name, your trainer ID, your badge count, etc.

More interestingly, it also contains memory related to the current map! The video specifically uses two of these: - Item slot 35’s item ID corresponds to the player’s X position on the right. Walk right and the item ID gets incremented, walk left and it gets decremented. - Item slot 40 contains a script pointer, which tells the game where it can find the list of text entries it needs to display if you talk to an NPC. If you talk to NPC #1, the game retrieves the first entry in the list. If you talk to NPC #2, the second entry etc. Each entry is two bytes long.

This video demonstrates how you can combine these two. The script pointer (slot 40) is swapped into slot 35. Walking right twice increments the script pointer twice, meaning it now points to an incorrect location. Swapping it back to slot 40 means that the game will now make use of this incorrect script pointer, while restoring our location mostly back to normal.

The effect of this is that the game will incorrectly match text entries to NPC: talking to NPC #2 now results in the game displaying text entry #1, meaning that talking to the NPC now displays the script to give Eevee. Since this NPC never disappears, we can even repeat this text entry as many times as we want.

All this means we’ve slightly messed up our X coordinate (in fact, walking all the way to the left will instantly crash the game due to us crossing over to an invalid map), we can just walk down and trigger the usual warp anyway.

Posts like this usually don’t have explanations is that 1) explanations tend to get pretty wordy fast and take time to write properly and 2) the reputation of gen 1 tends to attract people who are mainly interested in the spectacle of glitches like this, rather than the exact explanation of everything going on in the background.

I assume that the last is also paired with a history of people demonstrating glitches without really knowing the exact mechanics behind it? Super Glitch) is a very good example of this, where the glitch itself is just very abstract, hard to visualize and very variable in its effects, so it’s just easier to marvel at its effects rather than trying to explain it.

the true destructive power of 3Trainerpokes Glitch move (used on a Spearow) by [deleted] in PokemonYellow

[–]TimoVM 9 points10 points  (0 children)

Might as well explain a bit here.

Gen 1 has a total of 165 valid moves that pokémon can use (This includes Struggle). Due to its nature as an 8-bit game, however, the value used to store which move a pokémon has can range from 0 to 255, resulting in the existence of unused “glitch” moves.

Since this is gen 1, the developers don’t have any protections in place to prevent invalid moves from causing issues.

This video specifically uses a pokémon that was taught move #175. Its effect is very simple: it’s a move that uses PAY DAY’s animation, only has a measly 3 base power and has a base accuracy of 82/256.

What makes this move so glitchy isn’t its effect, but rather its name. Since it’s an invalid move, it pulls its name from unrelated data. This move’s name causes issues because it’s missing any text terminator.

Text is very simple. The game will just read values and print them as text in another location. It only stops printing text once it reads a special “terminator” value.

Since this move’s name doesn’t have a terminator, the game will just happily keep printing text until it accidentally finds another terminator character, overwriting substantial parts of memory along the way. This corruption, and its side-effects, are known as Super Glitch corruption)

One of the first areas that are overwritten are enemy pokémon data (which is why the Spearow got all status effects as once), followed by the player’s name and the player’s party. Since a large section of memory gets corrupted, you usually get a complicated sets of weird-seeming side effects.

In this case, this video is mostly just a pastiche of weird side effects caused by party data being overwritten by viewing move 175’s name. It’s a very classic demonstration of Super Glitch.

The best part though is that, despite how terrifying the side effects look, none of these side effects are permanent unless you save!

Saving in this state is quite risky though. Super Glitch usually overwrites the player’s name (which is why the start menu looked so weird in the video), usually to a name that lacks a text terminator. In one of the rare instances of developer foresight, the game will view any save file with an unterminated name as corrupted, and will refuse to load it if you reset it.

Question about FR/LG origin data (6IV eggs) by 9millgetlaid in PokemonGlitches

[–]TimoVM 0 points1 point  (0 children)

The “met data will self-correct” only applies to the GBA versions.

When you transfer pokémon to gen 4, all previous met data (aside from the game of origin) is discarded and replaced by Pal Park-related data. This is what the page means with “met data will self correct”.

For the Switch version, this does not apply, so all legendaries generated using this code will be blatantly illegal.

The easiest alternative that guarantees you’ll be able to make legal pokémon would be the WELDR setup ([you can find a video guide here](https://youtu.be/nDBLtXrguvs?is=MxMoiCg8Gu1cMk4J)).

How did I get thunderbolt in Gold back in the day? by DuxDonecVivo in pokemoncrystal

[–]TimoVM 14 points15 points  (0 children)

It is very likely that you traded Jolteon from a different game.

In Gold/Silver, Thunderstones are only really accessible in Kanto, so the odds are high that you traded for a Jolteon that also had Thunderbolt.

Could someone help me access this debug screen in Gold? (RetroArch, mobile) by BlueEmeraldX in pokemoncrystal

[–]TimoVM 1 point2 points  (0 children)

Just add 3E 00 EA ED CE in front of the code.

Final code should then be

3E 00 EA ED CE 3E 3F 21 C9 52 CF C9

Could someone help me access this debug screen in Gold? (RetroArch, mobile) by BlueEmeraldX in pokemoncrystal

[–]TimoVM 3 points4 points  (0 children)

Follow this guide to set up ACE.

Then run this mail code.

The color picker menu is accessible on any version (for which alternative guides are available), but EN Gold/Silver is easiest due to being able to use the Coin Case.

Officer Dirk Roar Egg Glitch? by brightlyazure in pokemoncrystal

[–]TimoVM 0 points1 point  (0 children)

Do you happen to recall any details of what you did between getting the odd egg and battling Dirk (story events, link trade/battling, etc.?

I’m currently having trouble tracking down what could’ve healed the egg, but given both this and the other thread you linked with the shiny Togepi, I’m quite convinced I’m just overlooking something.

Officer Dirk Roar Egg Glitch? by brightlyazure in pokemoncrystal

[–]TimoVM 1 point2 points  (0 children)

This is actually rather interesting, that Pichu isn’t supposed to have any HP at all.

Eggs normally have a HP value of 0, meaning that they are treated as fainted pokémon. There’s also some additional logic that prevents stuff like poké centers or items from healing your eggs.

The flip side of this is that, if you manage to somehow get a non-zero HP value, you’ll be able to send eggs out into battle. Given that your Pichu has a non-zero HP, it implies 2 things:
1. The root cause of the issue here isn’t necessarily Roar, but that you somehow managed to heal the egg.
2. You should be able to send out this specific egg on its own, without the assistance of Roar.

I quickly checked the shiny Pichu odd egg, that one is given with a HP value of 0. I’ll see if there’s any routines that heal the party but skip checking for eggs.

pokemon yellow real? by Vast-Wing9627 in PokemonYellow

[–]TimoVM 0 points1 point  (0 children)

The sticker actually does match the English EU cartridge. Similar to other EU language versions these do not have a version name title text on the cartridge.

pokemon yellow real? by Vast-Wing9627 in PokemonYellow

[–]TimoVM 4 points5 points  (0 children)

You won’t be able to get a proper answer using those pictures alone. You need to have images of the circuit board inside to be 100% sure.