Glitch City Laboratories Archives

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.

Generation I Glitch Discussion

Unintended differences for Virtual Console Red/Blue/Yellow - Page 1

Unintended differences for Virtual Console Red/Blue/Yellow

Posted by: Torchickens
Date: 2016-09-17 10:29:08
This is a thread for differences in glitch effects/glitch data between Virtual Console and cartridge Generation I games, such as the effects of glitch items and glitch moves.

These differences could be due to minor differences in code, or due to the Virtual Console games ignoring unknown opcodes and invalid stops.

If you have any other differences you would like to share, let me know and I'll add them to the list. :)

Warning that when a glitch item etc. freezes the game, you may risk losing your save file. This could be an issue for Virtual Console Red/Blue/Yellow because they do not feature save states/cannot be backed up with Mega Memory Card.

Glitch items:

English Yellow:

10F (hex:5F) - 10F executes code from 62FA, according to luckytyphlosion. On a Game Boy, when 10F is used out of battle the game may freeze. When it is used from within a battle the game may encounter an unknown opcode in the 0C bank at 0C:5295. If you use this in battle in Virtual Console Yellow, you may get the message "(Pokémon in battle) is refusing" (as if the Thunder Stone was used on Pikachu) even if it isn't a Pikachu and then have the game freeze after you advance the message. Edit: I tried this glitch item again and got a freeze without the message.

Re: Unintended differences for Virtual Console Red/Blue/Yellow

Posted by: Charmy
Date: 2016-09-17 12:15:59
I can test some stuff that doesn't have a risk of corrupting the save, but i don't know what to test.
I haven't encountered any differences for now.
Of course 8F\w  s m codes will yeld different results. That's what I know.
Will edit this post when i find anything.

Re: Unintended differences for Virtual Console Red/Blue/Yellow

Posted by: Torchickens
Date: 2016-09-17 12:37:54

I can test some stuff that doesn't have a risk of corrupting the save, but i don't know what to test.
I haven't encountered any differences for now.
Of course 8F\w  s m codes will yeld different results. That's what I know.
Will edit this post when i find anything.


Thanks Charmy!

I was under the impression that many glitch items/moves (which don't execute code from RAM etc.) might be different but it seems there maybe aren't so many.

I found another different effect which is TM38 (move hex:EE)'s effect in Yellow. In the originals it results in an unknown opcode at 0:628. In the VC release it takes you partially outside of battle to a glitchy version of Oak's Lab, but you can still throw Poké Balls to catch the foe and then Ditto.

Re: Unintended differences for Virtual Console Red/Blue/Yellow

Posted by: Charmy
Date: 2016-09-18 11:49:58
I can test only Blue sadly, but it's enough.
For now i only found one thing. The item 9F (possibly 6F in Yellow) which overflows "the stack" normally causes a unknown opcode if enough shifting was done, but on the VC edition I got some results other than what TheZZAZZGlitch got including:
-"You can't deposit your last POKéMON!" even though i had 3 Pokémon in my party after depositing the Parasect.
-The game randomly rejecting the Parasect and giving it back to me…
-More 00 39 crashes.
-The game "whiting out" on me when I encountered a Drowzee.
But i couldn't reproduce the glitchy cries.
Important note:
I got CoolTrainer to work! Yaaaay!
It works with 3 Pokémon in the current box, the items doesn't matter there.
I got:
A level 55 Koffing
Two level 127 Missingno.s
A level 55 Cubone
A level 91 Kabutops
A level 55 Fearow
and some more.
I can also share some interesting spots I remember.

EDIT:I just watched your video and you forgot to mention 6F…
Also, how does linking work in VCGen1? Is it by friend list? If no, then I could battle your glitches vs my team of glitch-obtained Pokémon.

Re: Unintended differences for Virtual Console Red/Blue/Yellow

Posted by: SatoMew
Date: 2016-09-19 19:14:23
I'm still wondering if the Game Boy Printer-related changes other than the Pokédex one are intentional. Neither the Japanese nor English patch files make it obvious. [tt]Fix_print[/tt] is an unused alternative for [tt]disable_print[/tt], which is what patches the Pokédex's print function. As to [tt]disable_print_check[/tt], please refer to this post of mine.

Re: Unintended differences for Virtual Console Red/Blue/Yellow

Posted by: Crystal_
Date: 2016-09-28 13:49:33
So is anybody able to understand the attack animation changes, as in, which bytes in the ROM were changed to what?


;rsm033659
;no151 mega punch
[FPA 001 Begin]             
Mode = 3                     
Type = 0                     
Address = 0x7816F           
MotionBEnable0 = 3           
MotionBlur0 = 21
MotionBEnable1 = 3
MotionBlur1 = 21               
ConditionType = 11           
ConditionValueA = a38: 4b cf 4c cf 4d cf 4e cf 50 cf 7c d0 00 00 4b cf 4c cf 4d cf 4e cf 4f cf 7c d0 00 00 4b cf 4c cf 4d cf 4e cf 7c d0 
ConditionValueB = a38: 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 
ConditionValueC = a38: 8c 00 84 00 86 00 80 00 8f 00 05 00 00 00 92 00 84 00 8b 00 85 00 83 00 05 00 00 00 84 00 97 00 8f 00 8b 00 05 00 

Re: Unintended differences for Virtual Console Red/Blue/Yellow

Posted by: Torchickens
Date: 2016-09-28 20:05:55

EDIT:I just watched your video and you forgot to mention 6F…
Also, how does linking work in VCGen1? Is it by friend list? If no, then I could battle your glitches vs my team of glitch-obtained Pokémon.


I see, thanks. I never took note of all of the Lg- like items and I think it would be a good idea to list them.

The Virtual Console releases only support local multiplayer between two Nintendo 3DS systems sadly, so the only way to battle someone is to meet them in person. It would be cool if some day there was an update for online battles with people on your friends list though, although they probably wouldn't do that with the current linking because indeed there is probably no error prevention for battling with glitch Pokémon (I don't know for sure but I was able to send out glitch Pokémon C3 which appeared as a h POKé in Red and a ( Z4 in Yellow when Red and Yellow were linked).


So is anybody able to understand the attack animation changes, as in, which bytes in the ROM were changed to what?


;rsm033659
;no151 mega punch
[FPA 001 Begin]             
Mode = 3                     
Type = 0                     
Address = 0x7816F           
MotionBEnable0 = 3           
MotionBlur0 = 21
MotionBEnable1 = 3
MotionBlur1 = 21               
ConditionType = 11           
ConditionValueA = a38: 4b cf 4c cf 4d cf 4e cf 50 cf 7c d0 00 00 4b cf 4c cf 4d cf 4e cf 4f cf 7c d0 00 00 4b cf 4c cf 4d cf 4e cf 7c d0 
ConditionValueB = a38: 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 
ConditionValueC = a38: 8c 00 84 00 86 00 80 00 8f 00 05 00 00 00 92 00 84 00 8b 00 85 00 83 00 05 00 00 00 84 00 97 00 8f 00 8b 00 05 00 



Yeah, it doesn't seem to be really clear and the only thing I gathered is that 0x7816F (1E:416F) calls LoadSubAnimation (1E:417C) in the Pokémon Red disassembly.

Re: Unintended differences for Virtual Console Red/Blue/Yellow

Posted by: Stackout
Date: 2016-09-29 05:11:03

So is anybody able to understand the attack animation changes, as in, which bytes in the ROM were changed to what?


;rsm033659
;no151 mega punch
[FPA 001 Begin]             
Mode = 3                     
Type = 0                     
Address = 0x7816F           
MotionBEnable0 = 3           
MotionBlur0 = 21
MotionBEnable1 = 3
MotionBlur1 = 21               
ConditionType = 11           
ConditionValueA = a38: 4b cf 4c cf 4d cf 4e cf 50 cf 7c d0 00 00 4b cf 4c cf 4d cf 4e cf 4f cf 7c d0 00 00 4b cf 4c cf 4d cf 4e cf 7c d0 
ConditionValueB = a38: 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 
ConditionValueC = a38: 8c 00 84 00 86 00 80 00 8f 00 05 00 00 00 92 00 84 00 8b 00 85 00 83 00 05 00 00 00 84 00 97 00 8f 00 8b 00 05 00 



Do you want the incomplete .idb of the 3DS VC emulator that I've been working on?

Re: Unintended differences for Virtual Console Red/Blue/Yellow

Posted by: Charmy
Date: 2016-10-05 06:59:07
Well, I did some more shenanagans on VC Blue and 9F seems to corrupt some tile data, now the water has some bars on it. I also got a weird crash… The music froze as well.

Also, sorry for the gigantic picture, but I don't have any paint-like apps on my phone. Goddamn you Android, why you don't come with one?

Edit by Torchickens: Reduced size of image, original is here http://s1271.photobucket.com/user/Torchickens/media/IMG_20161005_135808.jpg.html if you need it.
[img]http://i1271.photobucket.com/albums/jj640/Torchickens/IMG_20161005_135808%202.jpg[/img]

Re: Unintended differences for Virtual Console Red/Blue/Yellow

Posted by: Torchickens
Date: 2016-11-01 10:05:37
That's OK Charmy. I've reduced the size of your image with a link to the original as it stretched the page.

Additionally, some old news, but there is an apparently an emulation error in how money works.

https://www.reddit.com/r/pokemon/comments/49ug82/actual_if_minor_differences_between_3ds_and_or/


Money is stored the same way : binary-coded decimal. From what I understand, the GameBoy has a CPU instruction "DAA" which deals with binary-coded decimal numbers.
When you lose to a trainer, you lose half your money. That's how you morph your TM40 into HM02 on the GameBoy. On the GameBoy, it just assumes the digits you have are correct and proceeds to the division. On the Virtual Console, it checks if the digit makes sense, change it to something that makes sense, then do the division.
TM40 is F0 in hexadecimal, and F isn't a digit that is correct, so you would have 11x0x6 money on your trainer card, where x is some weird tile. That's the same thing on GB or on VC! So it is stored the same way. But on GB, it would divide 11F0C6 in binary-coded decimal without any check and give some weird money count at the end (5C563 i think). But on VC, it would transform 11F0C6 into 108966 before applying the division which should give 54483, which would give 131 X Special.
So it's not an issue with the same, it's an issue with the emulator. It can be seen in other emulators: BGB deals with the digits just like the GameBoy, but Gambatte deals with them just like VC.