Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Torchickens

Pages: [1] 2 3 ... 161
What is the first glitch Pokemon that can be encountered in the first gen games, Other than level 100 nidoking?

If you use the save corruption glitch you get access to Q (FF)/'M (FF) and other glitch Pokémon from the expanded party. So possibly you might be able to deposit glitch Pokémon that appear there and do a glitchLocke with them.

Otherwise the first Pokémon you can encounter is possibly MissingNo., such as from Misty's Starmie or a trainer in Saffron City's Fighting Dojo (available early with Brock Through Walls) but be warned that in Yellow this MissingNo. (one of the regular MissingNo.) will freeze the game unless it's the first time you encountered a glitch Pokémon and you wiped your save file with Up+Select+B.

Other glitch Pokémon are possible with Special stats 191-199, and it's possible an underflowed Level 100 Pokémon could have the Special stat you need.

This image is also useful for showing the Pokémon you can obtain with trainers in Red/Blue:

Hope this helps. :)
I'm playing Pokemon Red at the moment, and for some reason when Gary sent out his Abra, Gastly's cry was played. This isn't the first time this has happened I just happened to have the page open. Why does this happen?

If this happened when your Pokémon was on low HP this is a known occurrence. Pokémon cries are stored in the format base, pitch, length, and out of the 151 Pokémon there are a limited number of base cries (only 38).

When the Pokémon is sent out when red bar sound is active it appears that the pitch is set to 0, hence some Pokémon can sound like other Pokémon when you're on low HP.

Exploiting 'redbar' is also a known technique in speedrunning.

I have more information about this here:

Hope this helps :)
Wiki Discussion / Re: The big hex list
« on: Yesterday at 05:30:00 am »
I just took a look.

It seems if you're willing to replicate the initial battle initialisation code, put the trainer class index in the a register then jump to the middle of InitBattleCommon, you can set up a trainer battle with any trainer class.

To be more clear, your payload would be doing everything up to the bankswitched call to InitBattleVariables, setting the a register then jumping to ld [wTrainerClass],a.

Awesome. Thanks Wack0! It seems that possibly TrainerClassDex could be yet another project then. :)
Thinking about it we could add TheZZAZZGlitch's trainer data (as a TrainerDex) to the wiki as well.
General Discussion / Re: The Member's Guide to Topiclessness
« on: Yesterday at 05:28:22 am »
I remember Paco! I haven't seen him in forever, along with a bunch of old members. Led Zeppelin, Axaj, FiveX, ACE91, Chaos, Yami Mutou, the list goes on...

Yeah. Thinking about the older Glitch City Laboratories days makes me feel nostalgic ha ha.
General Discussion / Re: The Member's Guide to Topiclessness
« on: September 18, 2017, 03:41:59 pm »
I had a dream Paco81 came back to Glitch City Labs and made a contribution on a recently discovered glitch and made a question about another glitch. I miss Paco and I wonder where he's been and if he still lurks these forums from time to time.
Wiki Discussion / Re: The big hex list
« on: September 18, 2017, 03:28:48 pm »
So other things I thought of that should be on the table are type ids and the ids the game uses for trainer battles (If that's how it works)

That's a good idea re: types :). I think the only issue with adding more columns is that it can restrict the space available to view on one page without having to scroll (i.e. with ▷).

With trainer battles all wild Pokémon IDs decimal 200-255 (hexadecimal: C9-FF) automatically become trainers when an encounter is initiated and a Pokémon hasn't already been sent out.

I believe 200 is actually glitch trainer class 0. 201 is Youngster, 202 is Bug Catcher (class 1, 2) and so on with 248-255 also being glitch Trainer classes (this split is on the table but may be hard to notice at first). Perhaps with a Game Genie code you could access otherwise unavailable classes with IDs which -200 are 56+, but I don't know much more about how this works and you might not be able to do it without modifying the ROM (which the Game Genie simulates by essentially making temporary ROM patches).
If it uses Echo RAM it's not going to work in VBA lel

This was done on a version of VBA that supports Echo RAM. The problem may have been related to how the code changes HRAM and/or incorrect VRAM inaccessibility emulation (which apparently means the execution is done at F8FF instead of F80F according to entrpntr in the above video's comments).
Wiki Discussion / Re: The big hex list
« on: September 18, 2017, 06:54:10 am »
So I use the big hex list alot and I feel like it needs updating to add things like quantity ids(what numbers are worth in Hexadecimal) , text and tile ids, building ids, etc. Unfortunately I am not the most knowledgeable on these subjects so I may not be of much help.

Quantity IDs are on the table already if you look under decimal (ID) and refer to the other fields like hexadecimal (ID), ASM instruction on the row.

Adding what the glitch tiles in hexadecimal mean for every tileset sounds good though. :)

There is a tileblock dex already actually that was done by the people at PRAMA, but we might not have a tiledex.
Very interesting! I'll work on this asap. There should be a way to use it smoothly. Ways to get the expanded item packs without MissingNo. are game changers for all those games who can't do it :)

Yeah :) at the very least it's a nice curiosity you can beat the game this early.

Adapting this exact method for general use is most likely impossible, since it requires insane levels of luck manipulation, and planning for it from the very beginning of the game. But a similar procedure can most likely be applied to any other map - so there should be a way to find a different route with different trainers, where the code execution happens from a more predictable location (like Pokemon boxes or inventory data).

Thanks for your research TheZZAZZGlitch! I thought so too in regards to game completion, but turns out if you have a Link Cable and a game with the 61896 (F1C8) ID (available from item 30's quantity and item 31 in item underflow) you could in theory trade it over to the other game. The 61896 manip for a real console/BGB as well might not be too hard.

I don't understand the FFF1 (Charmander) and FEF0 (Bulbasaur) Spearow manips though. Maybe those aren't needed if you're not speedrunning and just give Spearow with high enough stats to survive the battles.

I did some tests on BGB and I was able to replicate what they did in the speedrun (without the manips and a cheat code to apply the right ID) and the glitch worked, sending me to the Hall of Fame.  I think it's amazing how they could manipulate that with just two instances of the player's name and the F1C8.

When I tried the glitch on VBA though multiple times it didn't work, so maybe VBA doesn't emulate it correctly or I was just really unlucky.
It looks like an interesting new arbitrary code execution has been discovered, which with luck manipulation might be the fastest (and A-pressless) method so far. I don't know who discovered it though.

This method involves death-warping at the final Bug-Catcher in Viridian Forest. If you then return to the forest without pressing Start, it will trigger a battle with the Bug-Catcher again and activate meta-map script 06 (D618=06). Defeating him will trigger yet another battle, but if you win this one you're free to walk around with glitch script initiation active.

Then for some reason if you proceed to mash A in front of and defeat this Bug-Catcher;

The game will execute F8FF in Echo RAM, which falls through to F9AC (D9AC); a copy of your player's name. Then if your player's name is mMna.♀tF (ac e2 a0 f2 f5 b3 85 50), with some specific other requirements it is yet another way of entering the Hall of Fame.

I only just found out about this method today, but there is more information about this glitch in this document:

If we can modify this glitch for non-speedrunning purposes perhaps it could be useful for those wanting to do other things or obtain the expanded items pack without MissingNo.

Video by entrpntr:
Actually, did the bank receive an update already, if yes, we could look at the celebi valid OTs/IDs and possibly ACE them onto a celebi like we did with mew in general 1 VC...
If yes, bank compatible celebis may be a thing soon, and one of these days could help us get it.

Yeah, I suppose maybe an event Celebi could have been programmed in, and we should be able to do that if official VC Celebi are released, such as with specific box names.

According to Serebii though there is this fix:

Edit @ 19:24: The update doesn't seem to include Gold & Silver compatibility but does fix a glitch that existed when determining shiny Pokémon where it took the wrong IV in Gen 1 to determine shinieiss

Possibly Shininess is determined the original way now for compatibility with Red Gyarados, random Generation II shinies.
Thanks for the research Wack0. :)

Torchickens: did you try Flying away to reset the location value to something random? Just moving routes wouldn't work because the game won't find the location in the roamer-moving data (it does this before anything else), whereas Flying just checks if map_group if $FF or not.

That's right, I thought it was interesting how it didn't update without flying/teleporting.
Mysteriously on my recent save file, map distortion glitch has started working.

While indeed Pokémon 1-6 must not have 0 maximum HP and over 0 current HP, it seems you can get away with Pokémon in slot 7 and beyond having 0 maximum HP, unless the addresses above are incorrect, because after browsing the summaries the game didn't freeze.

However testing another file with Pokémon 1-6 with above 0 maximum HP the game still froze. I wonder why :/

Edit: OK, I solved through a lot of trial and error this may work if max HPs are correct and DBFF, DC2F, DC5F, DC8F, DCEF are all 50, for when you have 24 Pokémon. It seems you don't need a 50 on DCBF. I don't know how post-6 names work and why this was the case, wonder if anyone has any technical insight on this please?

Edit 2: Going deeper, those addresses can be a value 04 or greater which seems odd. This would may make the party overloading prep easier though.

Edit 3: Turns out all those addresses were already listed as HP addresses. Weird that they had to have a value over 3, and after further analysis that is not necessarily true. With 26 Pokémon the rule (or similar non-00 value rule) applies all the way up to DE6F, but this time when DE6F was 1 it worked. I wonder if the current HP is involved.

Edit 4: So it looks like as long as we meet those values everything is fine. Using werster's method of fainting the top six Pokémon (without converting the ????? 00 to ????? FF), moving the ????? 00 to the bottom and depositing Pokémon 2 over and over again) we can end encounters immediately and beat the game, provided the distortions work properly.
Thanks for looking into it Krys3000.

I set a breakpoint to DFD6, DFDD, DFDF on Crystal.

For some reason after withdrawing a 16th Pokémon, the game moved the value of FFB6 to DFD6.

I believe at one point I got a Squirtle, but this time DFD6 became 14, DFDD became 00 and DFDF became 00.

Upon viewing Raticate (0x14)'s Pokédex entry, it seems like it worked and Raticate's location values became 00 0D.

These were taken from the values of FFB5, FFB6 during the 16th Pokémon withdrawal.

This Raticate doesn't want to move when I change routes though.

I wonder if you can manipulate what FFB5 and FFB6 are during the withdrawal.

Edit: I was able to get the location values to change again after flying away, so the location shouldn't be an issue (maybe unless registered as caught or defeated).

Edit 2: Level 0 roamer Raticate. I manually edited the location value but it may be possible without the need to do that. The legendary beast music was playing. It had no moves upon capture and it had 23/10 HP.

Edit 3: Wow! DFD6 is based on the Pokémon's Attack stat, meaning we should be able to encounter roaming Egg (possibly other ????? variants now) in the wild.

So interestingly it seems we can encounter every ????? as well as Egg this way, or get another Mew/Celebi etc. even though 00 appears as a species value in the structure.
I found out today that it's possible to manipulate the Day Care Pokémon from ????? party overloading. Specifically withdrawing a 24th Pokémon will modify the species of the stored Pokémon by the Day Care Lady (DC90 in Gold/Silver) based on the ninth character of the nickname of the Pokémon you withdraw. According to the Pokémon Crystal disassembly's WRAM map, the roamer data isn't far away from here.


wRoamMon1:: roam_struct wRoamMon1 ; dfcf
wRoamMon2:: roam_struct wRoamMon2 ; dfd6
wRoamMon3:: roam_struct wRoamMon3 ; dfdd

Is it therefore possible to create a custom roamer Pokémon? Perhaps it could even be a glitch Pokémon, which would be (one of, perhaps a battle could be triggered without cheating by an out of bounds Glitch City too) the only way(s) of encountering a glitch Pokémon in the wild without arbitrary code execution.

What is the roaming Pokémon structure like?

Wonder if anyone has any input on this. Thanks in advance!

Edit: It seems to have a structure like this.

(Species one byte) (Level one byte) (Location; two bytes) (Unknown three bytes)

Edit 2: Gold/Silver roamer addresses seem to start at DD1A.
Pages: [1] 2 3 ... 161