I looked into it, and it's possible in the UE version as well, basically rendering all current TASes (except for the save corruption one) obsolete. I wish you would've dug this up before I did my 151 run, but oh well, at least it makes it easier to decide on potential future projects...
Short explanation on how it works: For these cutscenes, the game represents the path the player will walk along as a list of simulated joypad inputs. However, it's possible to override a simulated input with specific user inputs (defined in $cd3b). Doing this pauses the execution of the cutscene for that input. Also, while the cutscene is playing, collision and encounter checks are turned off.
Since you're not supposed to be able to talk to Pewter Gym guy from the right, there is no walking path defined for it, and the game searches for one beyond the actual path data. By manipulating the RAM to contain the exact coordinates of the player's position (16, 36), an invalid path is loaded that may be too long for the buffer, overflowing it and writing its data to other areas of memory, especially the aforementioned $cd3b, which sets override inputs that allow you to walk around by yourself while the cutscene stays paused, enabling you to walk through any object in the process. Note that the buffer overflow may also overwrite $cd6b, which defines a mask for joypad inputs that are discarded and can render you unable to press the needed buttons.
The setup to make this work will be different in J and UE, becasue the memory addresses are shifted (mainly because of shorter text buffers). 0xwas used Rattata's party menu sprite to create the needed coordinates at $cc5c, reading path data from $1000 that happens to allow free roaming in the cutscene. In UE, this setup doesn't work since the alignment of the RAM data is different. However, it can be achieved by other means. I created a quick proof-of-concept which uses Charmander's DVs to enable free roaming. Note that the dust clouds that appear are not strictly necessary for it to work, they are most likely a side-effect caused by one of the overwritten bytes, and is useful since it sets $cd6b to 0, re-enabling all buttons that may have become disabled in the course of the memory corruption.
This also raises the question whether there may be more "J only" glitches that actually are not, and just require a different setup.
tl;dr: Almost all Gen I runs can be improved using this, probably by several minutes.
I assume that there is, but I don't have language skills to dig them up. I'll be happy to check out how they work an test them in UE if someone manages to gather information about them.
He'll be there as long as you don't beat Brock, so you can use it multiple times.
That's brilliant, great work MrWint.
As for other glitches in the Japanese versions, the first thing that comes to mind is the glitch with Select. Since the Select button's functionality is patched in the English version of the games, I can't think of a way to exploit that particular trick, so I'll work on figuring out the fastest route to ACE with this walk-through-walls glitch.
edit: I think the fastest way to get a Pokémon with Transform is by entering Cerulean Cave. Ditto has a 1% chance of appearing on 1F of the cave, and all the other encounters there have at least two moves. If you could set up the right prerequisites for ACE, then the run would only need the Brock skip WTW once.
In that case, would using Red/Green be faster for save corruption due to text? If so, can that TAS finally obsolete the yellow one along with the "Door trick" one that is the the vault despite unvaultable goal?
In that case, would using Red/Green be faster for save corruption due to text? If so, can that TAS finally obsolete the yellow one along with the "Door" one that is the the vault despite unvaultable goal?
IIRC, someone said earlier that using Yellow is the fastest for save corruption.
^I think it might have something to do with lag - scrolling through the glitched menus and so on causes a lot of it and Yellow might have better lag management than earlier Gen I games simply because it was made later.
In that case, would using Red/Green be faster for save corruption due to text? If so, can that TAS finally obsolete the yellow one along with the "Door" one that is the the vault despite unvaultable goal?
IIRC, someone said earlier that using Yellow is the fastest for save corruption.
I thought they only compared blue/red against yellow, and not green/red, but I might be wrong.
Quite possibly, but much less entertaining. Most of our audience is English-speaking, and wouldn't know the difference between broken Japanese text vomited onscreen and grammatically correct Japanese.
Joined: 8/14/2009
Posts: 4090
Location: The Netherlands
Note that faster text never was, and still is not a valid reason to switch game versions.
http://www.youtube.com/Noxxa
<dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects.
<Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits
<adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.
http://tasvideos.org/forum/viewtopic.php?t=10165
Why is the door glitch run labeled as vault anyway? There isn't a single NO vote.
The run looks pretty entertaining for me. Being the first Pokemon game ever released is probably enough for the run to deserve a moon already.
I'm trying to plan a route for the any% TAS now that we know about the Mount Moon glitch. There are only 2 necessary battles, against the Rival and against a level 9 Weedle, and we don't even need to win the first one. If we still need to get Charmander's lower special EV byte to 0x36, the fastest way to do that is through those two battles. Squirtle grants 50 special EV and Weedle grants 20, so to get it to a hexademical value of 36 (DEC 54), we want to split the Weedle's experience 5 ways. That means catching 4 Pokemon before that fight, and they should all be the same species to save time on Pokedex entries. Since Pidgey has the shortest cry in the game, it would be fastest to catch 4 Pidgey on Route 2, although this means taking 2 extra steps in the grass because of the encounter rule. A level 5 Pidgey should be able to defeat the level 9 Weedle more easily than Charmander, because it gets a same-type attack bonus with Gust.
So if the assembly code works the same way in this run, the route would involve buying 5 Poke Balls in Viridian City, catching 4 Pidgey on Route 2, sending out Charmander against Weedle and then switching between Pidgeys until using a level 5 Pidgey to defeat that Weedle. Then the run would go to the spot that allows the cinematic walk-through-walls, proceed to Cerulean Cave, and catch Ditto.
The problem with this route is getting an Ether or Elixir. It's impossible to pick up items while executing the cinematic walk-through-walls glitch, so it may be necessary to execute the glitch twice in order to get an Ether from Mount Moon or somewhere else.
I'm trying to plan a route for the any% TAS now that we know about the Mount Moon glitch.
Link? I missed this if it's new.
It is indeed new. Here:
MrWint wrote:
Chamale wrote:
Has anyone seen the trick used in this Youtube video? The first use is at 8:12 and it shows up repeatedly, it's a variant of the Brock glitch that gives the player the ability to walk through walls. I haven't managed to replicate it yet, I tweeted at the uploaded asking how it works. It's a very impressive run, and using that glitch to encounter Ditto sooner could shave more minutes off the possible improvement to the current TAS. It could even be used to enter Cerulean Cave and directly catch a wild Ditto, although I'm not certain that's faster than catching level 7 Mew and raising it a few levels.
I looked into it, and it's possible in the UE version as well, basically rendering all current TASes (except for the save corruption one) obsolete. I wish you would've dug this up before I did my 151 run, but oh well, at least it makes it easier to decide on potential future projects...
Short explanation on how it works: For these cutscenes, the game represents the path the player will walk along as a list of simulated joypad inputs. However, it's possible to override a simulated input with specific user inputs (defined in $cd3b). Doing this pauses the execution of the cutscene for that input. Also, while the cutscene is playing, collision and encounter checks are turned off.
Since you're not supposed to be able to talk to Pewter Gym guy from the right, there is no walking path defined for it, and the game searches for one beyond the actual path data. By manipulating the RAM to contain the exact coordinates of the player's position (16, 36), an invalid path is loaded that may be too long for the buffer, overflowing it and writing its data to other areas of memory, especially the aforementioned $cd3b, which sets override inputs that allow you to walk around by yourself while the cutscene stays paused, enabling you to walk through any object in the process. Note that the buffer overflow may also overwrite $cd6b, which defines a mask for joypad inputs that are discarded and can render you unable to press the needed buttons.
The setup to make this work will be different in J and UE, becasue the memory addresses are shifted (mainly because of shorter text buffers). 0xwas used Rattata's party menu sprite to create the needed coordinates at $cc5c, reading path data from $1000 that happens to allow free roaming in the cutscene. In UE, this setup doesn't work since the alignment of the RAM data is different. However, it can be achieved by other means. I created a quick proof-of-concept which uses Charmander's DVs to enable free roaming. Note that the dust clouds that appear are not strictly necessary for it to work, they are most likely a side-effect caused by one of the overwritten bytes, and is useful since it sets $cd6b to 0, re-enabling all buttons that may have become disabled in the course of the memory corruption.
This also raises the question whether there may be more "J only" glitches that actually are not, and just require a different setup.
tl;dr: Almost all Gen I runs can be improved using this, probably by several minutes.
Another way to wall zipping
https://www.youtube.com/watch?feature=player_detailpage&v=nN8FEJysbgs#t=623
If you select 31th(32? I don't remember exact number) and select pokemon during battle then run, field bgm will be changed to bicycle theme even if you don't ride bicycle.
Jumping over ledge triggers wall zipping.
This one is caused by manipulating the byte $d693, which is used in the jumping animation. Jumping over a ledge is actually a short cutscene, so the same rules as for the other glitch apply. When setting $d693 to a value of at least 7, the animation will be aborted prematurely, which causes the remaining cutscene joypad inputs to reside and not be consumed, even though the cutscene itself ended. This allows you to walk through objects as if you are still in a cutscene.
In UE, the corresponding address is $d714, which is unfortunately inaccessible by the usual memory manipulation methods. It's possible to do it similar to the J version by swapping the 33rd Pokémon with any that has a speed stat of at least 7. This would require breaking the party Pokémon counter first, for which there is no good setup either afaik.
MrWint, on one of my saves Dabomstew's setup (a certain Bulbasaur) worked, but for me and ThomazSDA the glitch didn't work for a Bulbasaur (position 1, no other Pokémon) with its required PPs obtained from a new game.
Do you have an idea why? This eludes me. It could be as simple as a copy of 24 10 existing before the PP data, but VBA's cheat searcher wouldn't bring one up, except one where a 'correct' pointer followed.
Now, on Glitch City Laboratories, Sanky said the coordinates need to be at an address ending with xxx2, xxx6, xxxA, or xxxE, but D189 (PP move 2) doesn't end in one of those values, and I didn't need data in D02E (in battle PP move 2 address) to get this to work on the save file it was working.
On both the save file it worked and the new game save, I noticed there was a copy of the relevant data in the SRAM, at AF52; an address that does end in one of those values. Yet the glitch didn't work on the new game save.
Also, after I was switching around Pokémon the glitch stopped working. Why might this be?
Hope you can help. Thanks.
Joined: 5/9/2007
Posts: 93
Location: The Netherlands
I figured I'd reply also.
My first try used a nicknamed Bulbasaur. That didn't work so I figured, maybe it's the name and thus I redid my file and didn't nickname anyone. But as you might have guessed, that didn't work either.
I then proceeded to catch two Pokemon, a Pidgey and Rattata. And that worked! I'm not sure if the amount of Pokemon matters or it's species, but I'll try and see what happens if I deposit some of them.
To confirm: using just one Pokemon extra works also. This doesn't rule out the fact that catching two matters, but I assume it doesn't.
I made a mistake in my post on GCL and it's caused a lot of confusion. Apologies.
A Lv. 8 Bulbasaur with 16 PP of move 2 and 32 PP of move 3 will work (not the other way around).
Another way to wall zipping
https://www.youtube.com/watch?feature=player_detailpage&v=nN8FEJysbgs#t=623
If you select 31th(32? I don't remember exact number) and select pokemon during battle then run, field bgm will be changed to bicycle theme even if you don't ride bicycle.
Jumping over ledge triggers wall zipping.
That's interesting, and quite useful for Japanese version runs. Do you think it could be combined with the Dokokashira Door glitch to improve the current Pokemon Green TAS? That's another run using the Select glitch, so anything else that uses the glitch to increase movement speed would be fair game.