RBY On literal game-breaking.

If we're looking for 100% transparency to cartridge, there are a few situations where the game literally freezes or desyncs and I feel it's appropriate to discuss all of them in the same thread.

Here's the ones I know about.

I) If a Pokemon has a Defence or Special stat of 1-3 (only attainable with a negative stat stage), and is attacked by an opponent with an Attack or Special stat of 256+, the Defence or Special stat will become 0 when both are divided by 4. The game then freezes when attempting to divide by 0 during damage calculation.

II) If a Pokemon has a Defence or Special stat of 512 or 513 (only attainable with a positive stat stage), it is protected by Reflect or Light Screen, and it's attacked on that side, the Defence or Special stat will become 256 (which rolls over to 0) after being doubled and divided by 4. Again, the game freezes when attempting to divide by 0.

III) The game will accept a damage roll of 0 for an enemy Psywave, but it won't for your Psywave. Thus, if Psywave rolls 0 damage in a link battle, the user's Game Boy will reroll while the defender's Game Boy will accept the 0. Not only does this result in two different quantities of damage, but because the two Game Boys use separate pseudo-random number generators and they're thrown out of sync, any effect depending on chance for the rest of the game may have different effects in the two games. As such, the games will diverge.

IV) If a Pokemon that's already in play is thawed from a freeze by a Fire move (other than Fire Spin) from a faster Pokemon, it will be forced to use a move. However, since it was frozen last turn, no move was allowed to be selected. It may be forced to use the "last move selected" (which may be different between the two games, causing a desync with the disastrous effects described above), or it may use a glitch move and directly destroy the game. I am not sure of the precise details regarding which move it ends up using.

V) I believe there's also a case with Counter, though I'm not yet sure of the details.

VI) Mirror Move + Wrap/Bind/Fire Spin/Clamp
 
Last edited:
Here are my proposed rules. Feel free to discuss.

I: Ban the use of Pokemon with less than 16 Defence or Special in all level-100 tiers. Low-level tiers may need more attention.

II: In general contexts like the ladder, ban the use of Reflect + Defence-boosting moves, and of Light Screen + Special-boosting moves (either in the teambuilder, potentially including Mimic/Mirror Move/Metronome in combination with one of these moves, or via direct move-choice restriction). In tournaments, disqualify the defender if a divide-by-zero error occurs (I could envision the use of, say, Reflect + Defense Curl Chansey).

III: In general contexts like the ladder, ban Psywave. In tournaments, disqualify the user of Psywave if it rolls 0 (when used by a level-100 Pokemon, it's only a 0.7% chance, and it's a significant coverage move for several Pokemon).

IV: I can't be sure about this until I know a bit more, but the only solution I can really see is to ban or disqualify use of Fire moves that aren't Fire Spin on in-play frozen Pokemon if they aren't guaranteed to KO. Kinda harsh, but on the other hand deliberately thawing an opponent is such an incredibly stupid idea that it shouldn't really come up. It doesn't happen if they switch a frozen Pokemon into a Fire move, so that's still OK.


Obviously, in some cases the "ban" choice is the only one available at the moment.
 

Ortheore

Emeritus
2 1 3 3 1 1 2 2
The thing with the freeze is that one game uses the last move actually used by the player with the frozen pokemon, while the other uses the move the cursor was last pointing to.

So if I were to go to select psychic, then change my mind and switch to my frozen pokemon which then gets thawed the turn after, one game would use Psychic (mine), the other would use the last move used by my frozen pokemon, or the first listed move in my frozen pokemon's set.


It's the same kind of deal with Counter. One game uses the last move actually used, while the other uses the one that was last pointed to by the cursor.

I think this is theoretically avoidable by simply implementing a rule that players that change their mind must return the cursor to the move they last used. With relation to sims, because they use a different interface and the desync is avoidable, I think that we're justified in not including this particular desync.

I could be wrong about it being avoidable tho


Apparently there's also one with Mirror Move and partial trapping moves

If I understand it correctly the Mirror move user must use a wrap move on the opposing pokemon via Mirror Move. If the wrapped pokemon then switches one game reads it as wrap continuing while the other reads it as Mirror Move (which fails)


I just so happened to look all this up on bulbapedia when Mirabel compared dig/fly to desyncs.
 
Last edited:
The thing with the freeze is that one game uses the last move actually used by the player with the frozen pokemon, while the other uses the move the cursor was last pointing to.

So if I were to use body slam, then the following turn go to select psychic, then change my mind and switch to my frozen pokemon which then gets thawed, one game would use Psychic (mine), the other would use body slam (opp).

Fire Spin, getting thawed on the switch, or being faster all avoid it, right?

If you assume in simulation that you don't point the cursor to moves you don't actually use, does that fix it (outside of the case where the thaw happens before the frozen Pokemon's player has used any moves)? I mean, obviously that might result in the thawed Pokemon using moves it doesn't know, but does that assumption reliably avoid desyncs?

It's the same kind of deal with Counter. One game uses the last move actually used, while the other uses the one that was last pointed to by the cursor.

What's the trigger (I mean, I presume they have to be the same when a move's actually used on that turn)? And, likewise, can it be reliably avoided by practices implicit in simulation?

Apparently there's also one with Mirror Move and partial trapping moves

If I understand it correctly the Mirror move user must use a wrap move on the opposing pokemon via Mirror Move. If the wrapped pokemon then switches one game reads it as wrap continuing while the other reads it as Mirror Move (which fails)

Ugh.

(Also, I remembered a couple of other game-breaking cases. Adding them to the OP.)
 

Ortheore

Emeritus
2 1 3 3 1 1 2 2
Fire Spin, getting thawed on the switch, or being faster all avoid it, right?

If you assume in simulation that you don't point the cursor to moves you don't actually use, does that fix it (outside of the case where the thaw happens before the frozen Pokemon's player has used any moves)? I mean, obviously that might result in the thawed Pokemon using moves it doesn't know, but does that assumption reliably avoid desyncs?
I think they do, yeah

The issue with this one is that it allows the defrosting pokemon to use moves it doesn't even know. If pokemon x (non-frozen) uses a move (let's say Psychic), then switches to a frozen pokemon y (let's say it's Magneton), which gets defrosted the following turn or later, pokemon y will use the move belonging to pokemon x (in this case Magneton uses Psychic, which it doesn't even learn)

List of glitches in Generation I - Bulbapedia, the community-driven Pokémon encyclopedia

What's the trigger (I mean, I presume they have to be the same when a move's actually used on that turn)? And, likewise, can it be reliably avoided by practices implicit in simulation?

The trigger is Counter hitting in one game and missing in the other. Obviously they're the same when a move is actually used, it only arises if the player switches as Counter is used. So it depends on the type of the move highlighted by the cursor. If my memory of Counter's mechanics are correct it is only the type of the move that can cause issue.

Counterable move->Consider Counterable move->Switch => No glitch
non-Counterable move->Consider non-Counterable move->Switch => No glitch

non-Counterable move->Consider Counterable move->Switch => Glitch
Counterable move->Consider non-Counterable move->Switch => Glitch
 
Last edited:
I think they do, yeah

The issue with this one is that it allows the defrosting pokemon to use moves it doesn't even know. If pokemon x (non-frozen) uses a move (let's say Psychic), then switches to a frozen pokemon y (let's say it's Magneton), which gets defrosted the following turn or later, pokemon y will use the move belonging to pokemon x (in this case Magneton uses Psychic, which it doesn't even learn)

But, if nobody points to a move they don't actually use, would that guarantee avoiding a desync (unless it calls a glitch move due to no prior move having been used)? What if I used Blizzard, tried to use Thunderbolt but got fully paralysed, then switched to a frozen Pokemon, then they defrosted me - would one GB have me using Blizzard while the other has me using Thunderbolt, or would they both be Thunderbolt?

If it can be guaranteed to avoid desync and glitch moves, I'd just suggest implementing it and making the simulator assume nobody pointed to moves they didn't use. Sure, Pokemon might end up using moves they don't know/haven't "really" selected, but given that the opponent has to deliberately thaw you for that to happen it's not exploitable (the only case I can think of where I'd choose to do it is if in Tradebacks I had a Fire Punch Gengar that was low on PP for its other moves and their last move used was Explosion - in almost any other circumstance you'd choose to just kill the frozen Pokemon with your other moves).

The trigger is Counter hitting in one game and missing in the other. Obviously they're the same when a move is actually used, it only arises if the player switches as Counter is used. So it depends on the type of the move highlighted by the cursor. If my memory of Counter's mechanics are correct it is only the type of the move that can cause issue. So if you used BSlam, then considered using HBeam only to switch instead there would be no glitch. Different case if you considered using Blizzard.

What about full paralysis and confusion? Say I used Body Slam, then attempted to use Blizzard and got fully paralysed while they used Counter, would that cause a desync?
 

Ortheore

Emeritus
2 1 3 3 1 1 2 2
But, if nobody points to a move they don't actually use, would that guarantee avoiding a desync (unless it calls a glitch move due to no prior move having been used)? What if I used Blizzard, tried to use Thunderbolt but got fully paralysed, then switched to a frozen Pokemon, then they defrosted me - would one GB have me using Blizzard while the other has me using Thunderbolt, or would they both be Thunderbolt?

What about full paralysis and confusion? Say I used Body Slam, then attempted to use Blizzard and got fully paralysed while they used Counter, would that cause a desync?
No it wouldn't. One GB has the thawing pokemon using the move last pointed to, the other has it using the first move listed on its set (unless it attacked, got frozen and then thawed again all without switching). In the scenario you described, one GB has it using Tbolt, the other has it using whatever move is listed first in that pokemon's set.

I'm honestly not quite sure in that case. I don't think so? Based on Crystal's wording here it's the selected move that matters in determining hit/miss, which full paralysis doesn't mess up since the move was still selected even if it wasn't executed. So I think that I was inaccurate in my initial description and that both games would record a miss. I could be wrong tho.

Also idk about transform, I don't remember that discussion
 
Well there's some info on three threads regarding Endless Battle:

All Gens - Infinite Matches | Smogon Forums
Endless Battle Clause | Pokemon Online
Pokemon Showdown improvements | Pokémon Perfect

Also useful thread:

Gen 1 - RBY recent discoveries resource | Smogon Forums

So my latest opinion on Endless Battle Clause, is to tie the battle if no damage is dealt for X turns and tie the game if the PP restoring effect of Mimic/Transform is shown to hold up the game (by no change in PP over Y Turns, or a dramatic increase back in PP Z times)
 
No it wouldn't. One GB has the thawing pokemon using the move last pointed to, the other has it using the first move listed on its set (unless it attacked, got frozen and then thawed again all without switching). In the scenario you described, one GB has it using Tbolt, the other has it using whatever move is listed first in that pokemon's set.

Eh? I thought you said "last move actually used by the player with the frozen pokemon" as opposed to "last move actually used by the frozen Pokemon". Were you misremembering? Either would be consistent with the video (in the first one, there is no "last move actually used" by either the player or the Pokemon and no "last move pointed to" and it uses glitch move in its own game/first on its set in the other game, in the second the "last move actually used" by the player and the Pokemon is either Toxic or nothing and the "last move pointed to" is Spike Cannon and it uses Spike Cannon in its own game/Toxic (which could be either from the selection or as the first on its set) in the other game.)

Sounds like we need more testing, in any case, for both scenarios. Or discussion with Crystal.

(If Normal/Fighting move -> FPed non-Normal/Fighting move, or the reverse cause desyncs, it'd mean we'd have to ban Counter or limit its use; if, however, it always stays in sync so long as "last selected move" is the same as "last pointed-to move", then we just configure the sim to not allow players to select a "pointed-to" move different from the "selected" move and Bob's your uncle. And with the freezes I haven't even wrapped my head around it yet. I'd like to get my hands on whatever emulator Crystal's using that can emulate the link cable so I can test it and get a feel for it myself.)
 
most of this makes my head hurt my god.. very complicated. Once you guys resolve the desync-related issues please summarise them somewhere for me :D I can't follow this discussion really.

If anyone wants to talk about Transform I can make a separate thread when I have the time.
 

Ortheore

Emeritus
2 1 3 3 1 1 2 2
Eh? I thought you said "last move actually used by the player with the frozen pokemon" as opposed to "last move actually used by the frozen Pokemon". Were you misremembering? Either would be consistent with the video (in the first one, there is no "last move actually used" by either the player or the Pokemon and no "last move pointed to" and it uses glitch move in its own game/first on its set in the other game, in the second the "last move actually used" by the player and the Pokemon is either Toxic or nothing and the "last move pointed to" is Spike Cannon and it uses Spike Cannon in its own game/Toxic (which could be either from the selection or as the first on its set) in the other game.)

I think I just phrased it wrong.

Fire attacker: thawing pokemon uses the move it last used (this is reset if it switches). If there is no last move used it will use the first move listed in its moveset.

Thawing pokemon: uses the last move pointed to by the cursor. If no move has been pointed to, it will use a glitch move (--) and break everything.
 
Top