Uploaded January 2015 | Updated September 2026, 3 weeks ago
Around one year ago I made a video very similar to this one, and it's been one of my most successful videos so far so I thought I'd try it again!
Here is the old video: youtube.com/watch?v=mVTTXT_vxAc
Description:
A lot of the game's data passes through the routine at 0xB5 when it needs to be moved between registers. But we can easily apply a small hack to this routine so that each byte of each "chunk" of data has a predetermined chance of being overwritten by a completely random number. Obviously, the higher the chance we make it be, the more glitched the game will look, but the randomness of the process makes it so fun and unpredictable!
HEX (insert this at address 00B5): CD 5C 3E FE XX* 38 07 CD 5C 3E 23 12 18 02 2A 12 13 0B 79 B0 20 EA C9
0x100 - 0xXX out of 0x100 bytes get glitched
ASM:
GlitchedCopyData: ; 00B5
call GenRandom ; call 3E5C (generates random 8-bit number in a)
cp XX ; 0x100 - 0xXX out of 0x100 bytes get glitched
jr c, .dontGlitch
.glitchByte
call GenRandom
inc hl
ld (de),a
jr, doneGlitching
.dontGlitch
ldi a,(hl)
ld (de),a
.doneGlitching
inc de
dec bc
ld a,c
or a,b
jr nz,GlitchedCopyData
ret
Around one year ago I made a video very similar to this one, and it's been one of my most successful videos so far so I thought I'd try it again!
Here is the old video: youtube.com/watch?v=mVTTXT_vxAc
Description:
A lot of the game's data passes through the routine at 0xB5 when it needs to be moved between registers. But we can easily apply a small hack to this routine so that each byte of each "chunk" of data has a predetermined chance of being overwritten by a completely random number. Obviously, the higher the chance we make it be, the more glitched the game will look, but the randomness of the process makes it so fun and unpredictable!
HEX (insert this at address 00B5): CD 5C 3E FE XX* 38 07 CD 5C 3E 23 12 18 02 2A 12 13 0B 79 B0 20 EA C9
0x100 - 0xXX out of 0x100 bytes get glitched
ASM:
GlitchedCopyData: ; 00B5
call GenRandom ; call 3E5C (generates random 8-bit number in a)
cp XX ; 0x100 - 0xXX out of 0x100 bytes get glitched
jr c, .dontGlitch
.glitchByte
call GenRandom
inc hl
ld (de),a
jr, doneGlitching
.dontGlitch
ldi a,(hl)
ld (de),a
.doneGlitching
inc de
dec bc
ld a,c
or a,b
jr nz,GlitchedCopyData
ret

![The Snake game in Pokemon Silver (arbitrary code execution)
Update! You can see the snake game being programmed in an actual Pokemon Crystal cartridge (with different ACE exploits) in this video - https://www.youtube.com/watch?v=g2mCyh7Y2xM
********************************************************************************************************************************************
Arbitrary code execution with Coin Case (explained by Sanqui, who discovered the ACE exploit): http://forums.glitchcity.info/index.php?topic=6716.0
Two different coin case setups are required. The first one to write our program in multiple iterations and the second one to make the game jump to it.
Setup 1 item list / asm code: http://pastebin.com/RG5HE9Ks (there is an error in this one. It says I38 = 01, but should be I38 = Max Potion [11], although Master Ball [01] also works)
Setup 2 item list / asm code: http://pastebin.com/X2hAyN9t
Box name characters to hex conversion: http://pastebin.com/4ZDpQXGe
Program asm code: http://pastebin.com/t8Qu6Pc2
Raw bytes: http://pastebin.com/72vbixu4
Pokemon Silver save file (the program is already written and the items in the PC correspond to the second setup, so you only need to use Coin Case once): http://www.mediafire.com/download/gf29w70lh2jpoio/Pokemon_Silver.sav
Check out this video by TheZZAZZGlitch where I took the idea from: https://www.youtube.com/watch?v=D3EvpRHL_vk (nevermind, youve already seen it).
The Coin Case Glitch is a translation error that is only present in the english localizations of Pokemon Gold and Pokemon Silver. That means, it wont work in Pokemon Crystal, or in Pokemon Gold or Silver in any other language. As for emulators, it wont work on VBA (as it doesnt emulate Echo RAM correctly), but will work fine in BGB or TGB.
Everything else is explained in the video. The Snake game in Pokemon Silver (arbitrary code execution)](https://i.ytimg.com/vi/c81P5srA7vY/mqdefault.jpg)






![Pokemon Pyrite - Trainer Pokemon with EVs (sort of)
READ DESCRIPTION!
I have received comments saying that the game gets easier as it advances, that the last gyms and pokemon battles are easier that the first ones. Kinda got the same feeling myself too. Your Pokemons EVs start to make a difference, and you become able to teach better moves and all that stuff. Even if the opponents Pokemon also get better moves, good moves vs good moves favours the player over bad moves vs bad moves, for the mere reason that the player is more intelligent than the AI. So, inevitably, the game progressively becomes easier for the most part.
The solution Ive come up with is some sort of EV system that is applied to trainer Pokemon, instead of just going nuts overincreasing the levels of the opponents to keep the same level of competitivity. This EV system doesnt work exactly like EVs would so to speak, since it affects the stats directly insetad of affecting them indirectly via other variables like the EVs themselves. But regardless, these stat changes (boosts) are intended to resemble EVs. Why shouldnt the rest of the trainers be able to get bonus from EVs just like you, if they also train their Pokemon? :P
The increase in the stats depends on the level of the pokemon. The higher the level, the higher the stat boost is, obviously, since thats how EVs work. The stats affected are attack, defense, special attack, special defense and speed, and the boost is the same for the five stats.
The stat boosts applied are (for each of the following level ranges):
[1,32]: boost = 0
[33,54]: boost = level/16
[55,73]: boost = level/16 + level/16
[74,77]: boost = level/8
[78,99]: boost = level/8 + level/32
[100,100]: boost = level/4
Notice how it never comes close to the maximum possible boost provided by EVs, which is nearly level*64/100. Another thing to keep in mind is that, even when the players Pokemon reach level 100, they still dont have had their EVs maximized, and the most recently caught Pokemon would have low EVs at the beggining. So I had to make sure that the boosts arent too high. In the end, they still leave the opponents Pokemon a bit weaker than the players on average; after all, the players good training should be rewarded!
The video shows the comparison between a battle against an EVd Pokemon (right), and against the same pokemon before the boosts had been implemented (left). Obviously, its still subject to RNG, but I think the differences can be seen clearly enough.
This feature will be included in the next release of Pokemon Pyrite and is subject to minor adjustements.
For those interested, the asm implementation can be seen here: http://pastebin.com/F3B9tnCC
I do believe and hope its bug-free. Its free for anyone to use it on his/her hack if desired, but if so, crediting is always welcome :) Pokemon Pyrite - Trainer Pokemon with EVs (sort of)](https://i.ytimg.com/vi/eF_lfPgoQdY/mqdefault.jpg)

