Actually 1024 is genius because that would correspond to our coordinates!
I wonder if you can get the glitch to work via trainer ID so we could just simply get any charmander and use it.
And my estimate is around 12 minutes Real time, closer to 11 In game time.
Actually 1024 is genius because that would correspond to our coordinates!
That would explain why he chose those DVs, then. Is there any way to use different DVs, perhaps through trainer ID manipulation? An attack DV that's too low costs an extra attack at the Weedle fight, and an HP DV above 2 costs an extra 66 frames in Celadon.
Joined: 5/9/2007
Posts: 93
Location: The Netherlands
Yeah, I just tested it and 1/0/2/4 does work like you said.
It would be really great to be able to use a Charmander with higher Atk...I'm not gonna like the segmented run if a specific ID is gonna be needed, but there's nothing I can really do about it (although hard, I have the means to get both a good Charmander a workable ID).
I'd like to test setting the trainer ID to 0x1024, does anyone know what memory address stores trainer ID? Edit: I did a manual RAM search, trainer ID appears to be a 2-byte big-endian number stored at address 1359. I did a quick test poking the ID to 1024, or decimal 04132, and the game stopped and wouldn't accept input when I talked to the Brock skip trainer from the right.
I looked at the table of values, and it looks like it won't be possible for the player name to have 0x1024 in it - the alphabet starts at 0x80.
Thomaz wrote:
Yeah, I just tested it and 1/0/2/4 does work like you said.
It would be really great to be able to use a Charmander with higher Atk...I'm not gonna like the segmented run if a specific ID is gonna be needed, but there's nothing I can really do about it (although hard, I have the means to get both a good Charmander a workable ID).
Is there a special luck-manipulation method, or would you be sitting down and grinding it out? It would take almost 50,000 resets for a 50% chance of getting the correct trainer ID, and the odds are equally bad if there's only 1 set of DVs that works.
I'd like to test setting the trainer ID to 0x1024, does anyone know what memory address stores trainer ID? Edit: I did a manual RAM search, trainer ID appears to be a 2-byte big-endian number stored at address 1359. I did a quick test poking the ID to 1024, or decimal 04132, and the game stopped and wouldn't accept input when I talked to the Brock skip trainer from the right.
That happens when it cannot find the coordinates, it keeps looking for them forever, softlocking the game. Most trainer IDs are not in the right location to trigger this, you need to have it on an address ending in {2,6,A,E}, the Trainer ID addresses are at $d359 (master), $d177 (party), $d8b0 (opponent), $cfa4 (selected), none of which is working. Only the boxed Pokémon's Trainer ID at $daa2 (and some subsequent) will work, so you need to box (any) Pokémon to make it work. Also, the Trainer ID is followed by the experience data, which needs to have the right values for it to overwrite the memory in the right way. The first usable (if not ideal) value is 0x0004, which requires at least 1024 exp.
Also, a bit more clarification on the goals of the memory corruption (i.e. the choice of the address to read the path data from): The goal is to overwrite $cd3b to mask any button that can be used for or held down while moving (B and Select work, or the directional buttons directly), while not disabling these buttons by masking them at $cd6b. The third important address is $cd60, which contains a bunch of flags that control overworld interaction: Bit 0 makes the game think you are being engaged by a trainer, which causes the same effect as Trainer-Flys do and should be avoided. Bit 1 causes the dust cloud animation, which costs some frames, but clears $cd6b and thus may allow you to move when you otherwise couldn't. The other overwritten bytes are not that interesting as far as I can see, it's mostly a buffer storing screen tiles (the same used for the Cooltrainer encounter glitch).
Speaking of Cooltrainer, using the transform glitch to finish the game is likely still faster than using item underflow, but it's even harder to set up than in the current TAS, since it's even earlier in the run and you need to spend some of your manipulation potential already to make walking through walls work. I presume there will be a good amount of trickery required to execute this. I will experiment with this and see this will work out.
That happens when it cannot find the coordinates, it keeps looking for them forever, softlocking the game. Most trainer IDs are not in the right location to trigger this, you need to have it on an address ending in {2,6,A,E}, the Trainer ID addresses are at $d359 (master), $d177 (party), $d8b0 (opponent), $cfa4 (selected), none of which is working. Only the boxed Pokémon's Trainer ID at $daa2 (and some subsequent) will work, so you need to box (any) Pokémon to make it work. Also, the Trainer ID is followed by the experience data, which needs to have the right values for it to overwrite the memory in the right way. The first usable (if not ideal) value is 0x0004, which requires at least 1024 exp.
Also, a bit more clarification on the goals of the memory corruption (i.e. the choice of the address to read the path data from): The goal is to overwrite $cd3b to mask any button that can be used for or held down while moving (B and Select work, or the directional buttons directly), while not disabling these buttons by masking them at $cd6b. The third important address is $cd60, which contains a bunch of flags that control overworld interaction: Bit 0 makes the game think you are being engaged by a trainer, which causes the same effect as Trainer-Flys do and should be avoided. Bit 1 causes the dust cloud animation, which costs some frames, but clears $cd6b and thus may allow you to move when you otherwise couldn't. The other overwritten bytes are not that interesting as far as I can see, it's mostly a buffer storing screen tiles (the same used for the Cooltrainer encounter glitch).
Speaking of Cooltrainer, using the transform glitch to finish the game is likely still faster than using item underflow, but it's even harder to set up than in the current TAS, since it's even earlier in the run and you need to spend some of your manipulation potential already to make walking through walls work. I presume there will be a good amount of trickery required to execute this. I will experiment with this and see this will work out.
I see, thank you. Using the 1024 DVs costs about 5 seconds compared to better DVs if something else were to work, so it's not worthwhile catching and boxing a Pokemon. I'll get to work on a faster opening that finds a Charmander with those DVs, but it'll take a lot of work unless I get a working script to brute-force test for me.
I don't think you should worry about this kind of optimization quite yet, as long as the route isn't ironed out. Chances are the setup won't work out/be suboptimal in the end, or you need additional steps (like a specific Trainer ID), which will be especially true when using Cooltrainer in the end.
When using the DVs to create the necessary coordinates, the PP of the first two moves is used to determine the data that is read. The PPs I used in the proof-of-concept are not ideal, since they cause the Trainer-Fly effect and require fighting a trainer or saving and resetting to get rid of it. There are probably better ways to set this up, which may or may not use the DVs, so spending time on optimizing getting these DVs may be futile in the end.
I don't think you should worry about this kind of optimization quite yet, as long as the route isn't ironed out. Chances are the setup won't work out/be suboptimal in the end, or you need additional steps (like a specific Trainer ID), which will be especially true when using Cooltrainer in the end.
When using the DVs to create the necessary coordinates, the PP of the first two moves is used to determine the data that is read. The PPs I used in the proof-of-concept are not ideal, since they cause the Trainer-Fly effect and require fighting a trainer or saving and resetting to get rid of it. There are probably better ways to set this up, which may or may not use the DVs, so spending time on optimizing getting these DVs may be futile in the end.
I see. In that case, I'll work on a run using something similar to the Abraless RTA route so we can have a TAS of the new route. I understand that your method gets more precise results but can take much longer to make the videos.
edit to add: If you use Potion after duplicating to 255 and visiting the PC box, does that disrupt the glitch? I'm thinking about the best way to walk to Celadon and poison-warp back after catching Missingno. The route will have caught Missingno at that point, so won't it be correct to deposit Pidgey and use the newly caught Missingno/Rhydon to get poisoned?
Joined: 5/9/2007
Posts: 93
Location: The Netherlands
Ok. So I just did a Blue run using Charmander and I noticed something really weird, but very annoying... I couldn't walk to the left during all this! Due to my route from Route 3 to Saffron, I couldn't enter the Pokécenter. I have to go left once after reaching Saffron. If I don't, the game freezes because I walk over something nonexistant. So, to get rid of BtW, I had to enter Mr.Psychic's house, then walk out and heal in the Pokécenter. =X
I was a bit lazy so I went for a critical Gust from Pidgey for the death-warp, but in reality, it should't be much more time. And I also didn't get a perfect Bellsprout encounter on the lower left patch of grass on Route 7 (when I walked up, I got the right DV, but when I went left, it was different lol).
No matter, the only effect this had, was that I had to use my second Potion I picked up. I will skip that Potion in a segmented run, although I will hate myself for it. Also, in this run, I should've saved more often due to mimicing a segmented run and I shouldn't have critted so much...
Regardless, final time is 00:13:56.
Assuming I can fix the going left issue, skip TM18 and buy another item instead, a segmented run might just sub 14. It's gonna be tough though.
Edit: I realise that this a TAS topic, so I really don't want to smother it with segmented stuff, but I'm not even sure if sub 14 is possible right now. Seeing how tough the few battles in this run would be, I'd need at least 5 saves (1: manip Charmander's DVs; 2: Rival battle; 3: Route 1-Route 2 with yolo grass; 4: Viridian Forest + shopping; 5: Route 7 Bellsprout + the rest). That's 24 seconds extra...
Oh btw, I checked "Z " as the Rival's name and that worked. I only needed to toss 9 PokéTrainers to warp! =)
Ok. So I just did a Blue run using Charmander and I noticed something really weird, but very annoying... I couldn't walk to the left during all this! Due to my route from Route 3 to Saffron, I couldn't enter the Pokécenter. I have to go left once after reaching Saffron. If I don't, the game freezes because I walk over something nonexistant. So, to get rid of BtW, I had to enter Mr.Psychic's house, then walk out and heal in the Pokécenter. =X
I was a bit lazy so I went for a critical Gust from Pidgey for the death-warp, but in reality, it should't be much more time. And I also didn't get a perfect Bellsprout encounter on the lower left patch of grass on Route 7 (when I walked up, I got the right DV, but when I went left, it was different lol).
No matter, the only effect this had, was that I had to use my second Potion I picked up. I will skip that Potion in a segmented run, although I will hate myself for it. Also, in this run, I should've saved more often due to mimicing a segmented run and I shouldn't have critted so much...
Regardless, final time is 00:13:56.
Assuming I can fix the going left issue, skip TM18 and buy another item instead, a segmented run might just sub 14. It's gonna be tough though.
Did you manipulate for 1024 DVs, or level up Charmander to the correct Special, or something else?
On the TAS, it makes me chuckle that I saved 2 frames before leaving the first room. It's no longer necessary to change the battle style to Set, since this run will never win a fight against a trainer with multiple Pokemon.
Joined: 5/9/2007
Posts: 93
Location: The Netherlands
I set Charmander's DVs to 1024 yeah (and by setting, I meant I'm using the emulator to speed up the process. No need to make it difficult if it's still testing).
And lol, good point, I won't need to set that either. =P
You should be able to walk directly down as soon as you enter Cerulean. It'll look a bit glitchy, but you'll arrive in Saffron just fine, and won't need to ever walk left.
Joined: 5/9/2007
Posts: 93
Location: The Netherlands
Oh, you're right! I guess there's just an unloaded area between those two spots.
But yeah, that does save me a bit of time. =) Now, if I can fix the other issues I have, it might just be possible to sub 14 segmented.
Edit: I just redid the last part. Had a battle on the lower left patch of grass on Route 7 and didn't need to enter Mr.Psychic's house. I walked some extra distance just to get that an encounter in that part. A real run would just get it on the first grass, so that's 2-3 seconds saved? I did have to remove the extra Potion I picked up, so assuming I skip that, I gain maybe 7 seconds?
Anyway, final time is now 13:43. As it is looking right now, I'd say I can get sub 14 by about 3 seconds lol...
Anyway, final time is now 13:43. As it is looking right now, I'd say I can get sub 14 by about 3 seconds lol...
I remember when people joked about how ridiculous it would be to create a sub-90 run. These developments are great, and please post as much as you want about the segmented run, it's very relevant to my TASing.
I am now unable to use the faint trainer-fly to make a wild Pokemon appear without fighting another trainer first. Shenanagans, do you know if there are specific circumstances necessary to make that happen?
edit: I figured it out. You need to be standing directly in front of the trainer when he spots you, if there's any space in between it won't work.
Testing has shown the existence of problems with my planned route. I think it might be faster to do a route like this:
- Buy 3 Poke Balls, Parlyz Heal, Burn Heal at Viridian City.
- Catch level 5 Pidgey before Viridian Forest.
- Swap out Bulbasaur in battle, use Pidgey to fight Weedle, leaving Pidgey with 17/22 HP. Pidgey can win with 3 attacks, Bulbasaur will reach level 7, Pidgey will reach level 6.
- Buy enough items to have 6 in Pewter, Potion last.
- Proceed to do Brock Through Walls to Saffron.
- Deposit Bulbasaur, heal, execute faint Trainer-Fly
- Get Pidgey poisoned by a level 19 Bellsprout with 31 or 32 Special.
- Buy Fresh Water
- Faint on Celadon roof, then deposit Fresh Water in PC.
- Fight Missingno., using two potions and then catching it.
- Deposit items, withdraw Fresh Water, trigger item underflow.
This route makes it possible to use two items in battle against Missingno. before visiting Celadon, and still ensures the fastest possible way to faint out of Celadon.
Joined: 5/9/2007
Posts: 93
Location: The Netherlands
A few things:
1) I would still get the Antidote in Viridian Forest, because it's literally in front of you, unless TAS can walk around it and buy something else instead in a faster time?
2) I'm pretty sure Pidgey can't reach the Fresh Water before dieing. He needs exactly 23 HP. Remember that the moment Pidgey gets Poisoned, it receives damage at the end of the turn. =(
3) When you faint after the Fresh Water, you can walk down towards the gate and MissingNo will appear before you enter the gate. There's no need for depositing the Fresh Water at all.
I assume you'll whif an attack on your first turn so that MissingNo can Water Gun you btw?
The Pidgey fast kill on Weedle sounds intruiging. However, a level 6 Charmander can 5HKO the Weedle with 2 normal attacks and 3crits. Sure, the rival fight is slow, but even Bulba isn't that much faster. What I'm trying to say is that I think the Charmander route is faster because although Charmander's DVs are bad, they are perfect for the death-warp and it doesn't involve depositing your starter either. And by skipping Poke Balls until Pewtwer City, you skip the Viridian Mart entirely.
The biggest issue I have with my own route (except for difficulty..........) is that I'm not too sure about buying stuff VS picking up. Gonna require some extensive testing I think.
Should I write down my route (no big difference aside from those I mentioned) to see if there's anything I missed?
A few things:
1) I would still get the Antidote in Viridian Forest, because it's literally in front of you, unless TAS can walk around it and buy something else instead in a faster time?
You're right, I forgot to mention the Antidote. It's faster to pick up the Antidote, but I'm not sure if I want 2 Potions and 3 Poke Balls or 1 and 4.
2) I'm pretty sure Pidgey can't reach the Fresh Water before dieing. He needs exactly 23 HP. Remember that the moment Pidgey gets Poisoned, it receives damage at the end of the turn. =(
Good point. However, Pidgey won't take that damage if I use a Poke Ball on Bellsprout and have it miss. According to my testing, it's faster to have that failed catch animation in order to avoid needing to use a potion in the field. I also know that a higher level Pidgey will speed up the Missingno fight by taking less damage off Water Gun.
3) When you faint after the Fresh Water, you can walk down towards the gate and MissingNo will appear before you enter the gate. There's no need for depositing the Fresh Water at all.
I've always been a little unclear on the workings of that glitch. So, I would want to toss all the items above my 255 Potions after doing that, and then toss the potions until the inventory menu broke? Or would it only be necessary to start tossing the potions from slot 6?
I assume you'll whif an attack on your first turn so that MissingNo can Water Gun you btw?
Yes, a failed Sand-Attack is the fastest way.
The Pidgey fast kill on Weedle sounds intruiging. However, a level 6 Charmander can 5HKO the Weedle with 2 normal attacks and 3crits. Sure, the rival fight is slow, but even Bulba isn't that much faster. What I'm trying to say is that I think the Charmander route is faster because although Charmander's DVs are bad, they are perfect for the death-warp and it doesn't involve depositing your starter either. And by skipping Poke Balls until Pewtwer City, you skip the Viridian Mart entirely.
That's also a possibility I'll try to test. The big problem is that I'm not as adept at manipulating RNG entropy as MrWint, and a search with only 2 degrees of freedom will have an average delay of 256 frames to get the correct DVs.
Should I write down my route (no big difference aside from those I mentioned) to see if there's anything I missed?
Please do. I apologize for constantly thinking of difficult-to-manipulate events that make the segmented run even more challenging.
There's a problem with the Pidgey route, and I'm not sure exactly why. I end up stuck in something similar to the faint Trainer-Fly glitch, where I can't talk to most NPCs and I need to use a PC to save and restart. It doesn't stop the route from working but it's a serious time waste, and I need to find a way to make the Pokemon Center work. I have all the difficult luck-manipulation out of the way, so I'll finish up this version for a demonstration, but I'm frustrated that I can't find the reason for this glitch and couldn't catch it in testing.
Here is a link to that .bkm file, it becomes extremely sloppy after the Weedle fight because I just wanted to show the problem.
edit: If the problem persists with the Level 6 Pidgey route, I'll try catching a level 2 Rattata with 13 HP. This has the advantage over Level 6 Pidgey, level 4 Pidgey, or level 7 Charmander in that it can go into red bar from a critical Water Gun, which saves over 15 seconds. I'll have to test it, however, to ensure it doesn't have the same problem as this level 6 Pidgey run.
There's a problem with the Pidgey route, and I'm not sure exactly why. I end up stuck in something similar to the faint Trainer-Fly glitch, where I can't talk to most NPCs and I need to use a PC to save and restart.
Yeah this is an issue which we just recently discovered. 16 hp Pidgey puts you into the trainer fly state which forces a reset in Safferon. 8, 10, 13, 15, and 17 HP Pidgey all work fine and don't force a reset.
There's a problem with the Pidgey route, and I'm not sure exactly why. I end up stuck in something similar to the faint Trainer-Fly glitch, where I can't talk to most NPCs and I need to use a PC to save and restart.
Yeah this is an issue which we just recently discovered. 16 hp Pidgey puts you into the trainer fly state which forces a reset in Safferon. 8, 10, 13, 15, and 17 HP Pidgey all work fine and don't force a reset.
That's not too bad, then. I just need to manipulate one more max-damage crit in that fight. I'll need to compare that with the time for a level 2 Rattata that can get red HP against Missingno.
Poison works differently than I expected, so using a Pokeball still results in Rattata losing 1 HP in the Bellsprout fight. That puts the route back at 3 Pokeballs, 2 Potions.
I wonder if you can do the trainer fly glitch after doing the safari zone glitch? (like walk in front of the trainer right when the timer hits 0) It may be impractical, but I wonder if it can be done in Pokemon Brown. (holding start to enter the menu in front of a trainer is not possible in the hack)
I wonder if you can do the trainer fly glitch after doing the safari zone glitch? (like walk in front of the trainer right when the timer hits 0) It may be impractical, but I wonder if it can be done in Pokemon Brown. (holding start to enter the menu in front of a trainer is not possible in the hack)
Now I'm wondering what happens if you did that in a gym or some building.
Also, forced reset? Are there any triggers other than reset?