1 2
10 11 12 13
Joined: 4/27/2013
Posts: 29
Location: MI
"When possible, the game determines item pickup, if any, from Pickup ability at the end of battle, a few frames before the fadeout." I was assuming battle was from any battle scene (wild, trainers, tuts).
Editor, Skilled player (1939)
Joined: 6/15/2005
Posts: 3247
I believe there are some battles where Pickup cannot occur. Trainer battles and KO wild Pokemon (not catch) definitely work though. I can double-check through disassembly but I don't have time now. It is unlike Pokerus which can be contracted after any battle scene (tutorial, catch wild Pokemon, run away from battle, etc.)
Joined: 4/27/2013
Posts: 29
Location: MI
Had to look it up to make sure and I guess you have to KO a pokemon to get it (Not catching of course). *sigh* back to the drawing board.
Joined: 4/27/2013
Posts: 29
Location: MI
I think to make up the shortage of rare candies, you can have taillow kill off either of Roxanne's pokes after mudkip does much of the damage. Taillow at most can do 6 damage to Nosepass, so if Mudkip dies after using a Torrent boosted water gun, Taillow can finish off the rest. It is possible to do, but I'm not quite there yet.
Experienced player (647)
Joined: 5/16/2009
Posts: 235
I think I found a walking / running timesaver (I think this has never been done before): Link to video It's just walking to the direction of the person / wall for one frame before changing your walking /running direction. Saves aroun 8, 9 frames i think (havent checked exactly how many). The reason of this is that it avoids that slow first step that the character makes to turn.
Joined: 4/27/2013
Posts: 29
Location: MI
Wow, that's a pretty amazing find.
N._Harmonik
She/Her
Joined: 8/27/2006
Posts: 502
Location: Canada
Could this be applied to other Pokémon games?
Why, oh, why do I even <i>try</i> to understand my own species?
Joined: 4/27/2013
Posts: 29
Location: MI
N. Harmonik wrote:
Could this be applied to other Pokémon games?
Based on how the trainer moves in 3rd gen, the animations look different (then all gens), but the mechanics seem to be the same for 2nd and 1st gen games. In all games, the trainer can just change direction by lightly tapping one of the directional inputs, so I think that's what's being applied in the video. To shorten the animation, you go the direction your facing and then go the direction you need to go. I guess the game's interpretation of movement is that if you are already in walking motion (even for 1 frame) you can turn more easily. The standing position and then inputting a direction is slow because you're not in motion by at least one frame. That was a really great find and if it works for all games, that would be nice too. Also, is there a LUA script that can be made by using a search function to find RNG's you need? Example: You have a table that displays when a wild appears. The LUA script can decode the RNG ahead of time to see what pokemon it is (shiney,nature,stats). I figure this would be kind of impossible, but I was just wondering if you can predict RNG's wayyyyy ahead of time by using LUA scripts. And by wayyy ahead of time, I mean like.... 10,000 frames.
Editor, Skilled player (1939)
Joined: 6/15/2005
Posts: 3247
I am currently writing up a new script. Anyone who does testing in Pokemon Gen. 3 will find this file package useful. http://www.mediafire.com/download/2ywt7d9t71w6a46/pokemonstats.zip Note: All files should be placed in the same folder. "pokemonstatsdisplayv2.0.lua" displays Pokemon stats. It is an extension of the stats viewer in "rng.lua". Among new things is the ability to show Pokerus status, and a Pokemon's moves. You can now check the opponent Pokemon's moves if you need to know for whatever reason. I have disabled RNG functionality for now. "pokemonpatch.lua" hacks a Pokemon's stats. Currently it is set to hack the first player's Pokemon's Attack IV to 31. You can code other hack options in the file. Read the file's code for more details. Anyway, here are some more things that I found: - None of the Pokemon in Petalburg Gym have any paralyzing moves. This makes it very hard to consider deathwarping from Lavaridge Gym back to Petalburg. - Testing Pokerus shows that the Pokemon seems to lose the ability to spread Pokerus immediately upon catching it, although it still has Pokerus effect of double EV growth. (After running from battle, Mudkip's Pokerus status went from 0 to 18; then from 18 to 16, preventing it from spreading anymore.) I don't know why this is, or if it occurs unconditionally in Ruby/Sapphire. I will do some more testing later. Edit: Seems like most of the time Pokemon catch Pokerus as normal (ability to spread). I don't know why Pokerus was removed immediately upon catching it that one time.
Editor, Player (94)
Joined: 5/27/2006
Posts: 239
FractalFusion wrote:
Edit: Seems like most of the time Pokemon catch Pokerus as normal (ability to spread). I don't know why Pokerus was removed immediately upon catching it that one time.
i remember reading somewhere that spreadable pokerus lasts a random amount of time once you get it. maybe that was why.
Active player (434)
Joined: 2/5/2012
Posts: 1690
Location: Brasil
http://www.youtube.com/watch?v=R5KR_Y5-HOQ Can someone explain this? I've never seen this before.
TAS i'm interested: megaman series: mmbn1 all chips, mmx3 any% psx glitched fighting games with speed goals in general
Patashu
He/Him
Joined: 10/2/2005
Posts: 4017
You could PM 0xwas and ask what it is/to add an english description, he speaks english.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Spikestuff
They/Them
Editor, Publisher, Expert player (2297)
Joined: 10/12/2011
Posts: 6337
Location: The land down under.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Active player (434)
Joined: 2/5/2012
Posts: 1690
Location: Brasil
he could have explained in the video already,but i just PM'ed him to see what will be the answer. And spikestuff,it doesn't seem to start with diving at all on the other video,since he starts on ground.
TAS i'm interested: megaman series: mmbn1 all chips, mmx3 any% psx glitched fighting games with speed goals in general
Joined: 4/27/2013
Posts: 29
Location: MI
There's a similar glitch in Emerald, but I'm not sure if it's verifed that it works...
Joined: 12/29/2007
Posts: 489
Much later, here's an English video and explanation: https://www.youtube.com/watch?v=_JCUkA0UWJg The glitch only seems to work on Japanese R/S, as future games prevent Tricking Mail. It's still not known exactly what causes the single map-tile glitch, but as it appears to be some form of memory corruption, maybe this could lead to more exploits later on?
MarbleousDave
He/Him
Player (12)
Joined: 9/12/2009
Posts: 1555
I would like to TASes of the Ruby Destiny series of hacks.
Fortranm
He/Him
Editor, Experienced player (780)
Joined: 10/19/2013
Posts: 1115
RD Life of Guardians can be a good game to TAS. The completion of the game should be the defeat of the final boss with Lv100 team, just like the defeat of Red in GSCHGSS. Shinx/Luxio/Luxray might be a good choice for main battle Pokemon because one of their abilities is Guts and they can learn facade. Roar can be used to skip many bosses as well.
Active player (434)
Joined: 2/5/2012
Posts: 1690
Location: Brasil
Zowayix wrote:
Much later, here's an English video and explanation: https://www.youtube.com/watch?v=_JCUkA0UWJg The glitch only seems to work on Japanese R/S, as future games prevent Tricking Mail. It's still not known exactly what causes the single map-tile glitch, but as it appears to be some form of memory corruption, maybe this could lead to more exploits later on?
http://forums.glitchcity.info/index.php/topic,7002.msg196093.html#msg196093 the images show how it's not relative to trainer position but actually to the map's coordinates.
TAS i'm interested: megaman series: mmbn1 all chips, mmx3 any% psx glitched fighting games with speed goals in general
Skilled player (1706)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Sir_VG
He/Him
Player (39)
Joined: 10/9/2004
Posts: 1911
Location: Floating Tower
The surf on land glitch in general isn't too useful, except for maybe the Fortree Entrance skip (your 2nd vid). However, since you appear to need the Acro Bike and I think the current run uses the Mach bike, it probably won't save time in the end. Interesting glitch though.
Taking over the world, one game at a time. Currently TASing: Nothing
Joined: 12/29/2007
Posts: 489
This is Emerald and not R/S, but I had a bunch of questions on how the "Access Pokemon beyond the sixth slot" glitch in the current submission worked. From the submission text:
The "new" Pomeg Berry Glitch -Make a team with 3 to 6 Pokemon. Your first Pokemon must be alive, with HP EVs and 1 HP. You'll give him a Pomeg Berry to KO it later in the process. Your last Pokemon must be alive, preferably with full health. All the other Pokemon (between first and last) must be KO or Eggs (considered as KO Pokemon because they can't fight). -Go make a wild battle. In this battle, switch to your last Pokemon, then flee. The game will update the slot of the last Pokemon seen alive in Battle with your last Pokemon's slot. -Deposit the last Pokemon. Now, there's no Pokemon on the slot previously memorized by the game, but your team still has an alive Pokemon remaining. -Use a Pomeg Berry to KO your first Pokemon (and last alive Pokemon). Now your team is full of KO Pokemon. -Go into a wild battle again. The game will first check your team to see if he finds an alive Pokemon. If he doesn't see one, he will launch the "Pokemon" in the slot of the last Pokemon seen alive, as in normal gameplay, it is automatically an alive Pokemon. But here, there is no Pokemon into this slot. The game will still follow its script and interprete the zeroes as a Pokemon. Thus, a ? will be launched, with no moves, 0 PPs, 0 HP, Lv 0, ID 0,... This Glitched Pokemon is called Decamark because of its summary name being ??????????. -Go into the Pokemon selection. The game is puzzled : he found out that there are 4 (for example) "concrete" Pokemon into the party, but he also sees that there is 1 battling Pokemon, and 4 Pokemon in reserve. For now, the Pokemon selection pointer is set to select 4 Pokemon, so the last Pokemon of your team can't even be selected. -Check the Summary of one of your Pokemon, and go back. Due to anti-cheat scripts, the game will now consider the Decamark as a "concrete" Pokemon. But under Decamark's data, there's a wide RAM area full of zeroes. Thus, the game will also interpret these zeroes as Pokemon, and the number of Pokemon the pointer can select becomes higher than 6. -Push Up or Down to move the Pointer on the Cancel button. A Glitch happens here since the pointer is still selecting a Pokemon, but he's also selecting the Cancel Option. This makes the Pointer position glitch, and teleports it way down into RAM.
- Why do you need at least 3 Pokemon? What happens if you attempt to perform the glitch with only 2 Pokemon in the party, one Pomeg glitch'd to -1 HP and the one regular unfainted Pokemon? - It looks like a major initiation point of the glitch is when the game figures out who to send out at the start of a battle. The submission text says that the game first checks the team, and if that fails, then checks the data of the Pokemon last sent out. But what's the point of the second check entirely? In normal gameplay the first check should always succeed. - Similarly, I've performed the Pomeg glitch in the past, and what makes the 'regular' Pomeg glitch sometimes send out a Pokemon with 0 HP instead of a ??????????, and sometimes send out an Egg (for the competitive version of the glitch)? - Two lines in the submission text mention the term "concrete" Pokemon; what does that mean? I have never heard this before. - I'm guessing that pressing Up from the top of the party onto the Cancel button somehow forces the game to also select the "-1th"/"255th" Pokemon in the party, which is what teleports the pointer into the PC data and begins the corruption? Is this accurate? What does it mean for a pointer to be simultaneously selecting a Pokemon and the Cancel button (how does this work internally/in memory)? - Below the part of the text I've quoted, it says that the party isn't healed after blacking out (allowing the Bad Egg to be sent out) because the Pokemon selection pointer has been glitched. How does the selection pointer have anything to do with the game being unable to find the party Pokemon? The top of the party should be in a fixed hardcoded location in memory. I would greatly appreciate any help in understanding the mechanics of all this better. Thanks!
Editor, Player (44)
Joined: 7/11/2010
Posts: 1022
Zowayix wrote:
- It looks like a major initiation point of the glitch is when the game figures out who to send out at the start of a battle. The submission text says that the game first checks the team, and if that fails, then checks the data of the Pokemon last sent out. But what's the point of the second check entirely? In normal gameplay the first check should always succeed.
I can't answer your other questions, as I'm not an expert on the game internals, but this one can be answered just based on normal programming mechanics. The second "check" isn't a check exactly, it's a loop fallthrough. What's almost certainly happening is that the code does something like this:
for each team member:
    if that team member is not fainted:
        set that team member as the currently sent out team member
        break out of the loop
This would be a perfectly sensible and idiomatic way to code a check like this. You might notice that there's no code whatsoever dealing with the case where no Pokémon is found; because that situation is something that should never happen, then if you're writing for limited hardware (like the typical games console), you don't bother putting in any code to handle that case; it'd take up space on the cart and you'd hope it'd never have a purpose. So what happens if all team members are fainted? The loop runs and doesn't do anything, so the "currently sent out team member" variable still has the same value it previously had, because nothing changed it. So you start with that team member sent out.
Joined: 1/6/2012
Posts: 51
Location: France
- If you perform Pomeg Glitch with 2 Pokemon, you won't be able to trigger the pointer Corruption. Because when you make the last fight, the game thinks you have 1 Pokemon in your party, and he sends out the "Pokemon" in party place 2 to battle, who is Decamark since there's no Pokemon in this place (thus, no data other than zeroes). Then, if you look at the Party, the selection pointer will let you go over "number of Pokemon in party" Pokemon (so 1), and the Cancel button. But the pointer starts over the Pokemon that's in battle, who happens to be Decamark (and the game crashes if you view its summary), meaning that you can't move the pointer on your KO Pokemon, that appears in second, because the pointer is only allowed to go over the 1st Pokemon, and the Cancel button. With 2-5 KO Pokemon remaining in your team, you'll at least be able to move the pointer on one of your KO Pokemon to view its summary and glitch the pointer out. - For the explanation about why the game sends out the "Pokemon" located in the "last Pokemon seen alive" Party Slot if all the team happens to be KO (he really seems to do it), I just gave the one that sounded the most understandable, as I don't know the whole mechanic behind this, and as I only needed to explain this specific case. - Your third point is covered by the second : The Pokemon that's sent out is the Pokemon on the "last Pokemon seen alive" party slot. But yeah, some of my explanations can be not that understandable (I'm French so I may have used inexistant words or grammatically incorrect sentences), don't worry. If you have other questions about them or other things, feel free to ask (even if for more deeper explanations that could serve ACE, I wouldn't be that useful, but for Pokemon Corruption or routing a 4 star run, I can). - What I wanted to say by "concrete" Pokemon would be correctly translated by "existing" Pokemon. My explanation was a bit wrong, and thanks to your post, I have a better understanding of how things happen. I'll try explaining that in another way. On certain times, the game checks the position of the first party slot filled with data different from 0000, and this value becomes the "number of Party Pokemon". This is used to determine how many positions the pointer can take. (ex : Smeargle - Blank - Smeargle team is seen as a single Poke team by the game, as you normally can't do this). However, if the game determines this "number of party Pokemon" when your first party slot is empty, the value becomes zero, and the pointer is allowed to select Pokemon "everywhere". Going down is well coded, as once you hit the 7th Pokemon, you go onto the Cancel button, and go back to 1st Pokemon, but this isn't the case if you go Up from the "7th" slot, who sends the pointer into an adress far away (in PC Pokemon) instead on the 6th Party Pokemon adress. This is obviously what we want to have in order to make the pointer read a ton of data, and corrupt it along. This determination isn't done when you start a battle or open the Pokemon party during the fight, but it is done if you open the Pokemon party outside of a fight or close a Pokemon's summary. This is why we need to open and close a Pokemon's summary to glitch the pointer out, as Decamark (only 0000) has been put into first place at the start of the fight, since he was sent to fight. Why is the data corrupted ? Because when the Pokemon selection Pointer goes to a new adress, the Anti-Cheat Detection script is used on the data that would theorically be the data of a Party Pokemon (but here, it isn't, since the Pointer went to glitched adresses). Since the data doesn't correspond to a valid Pokemon's data (the checksum test fails), the script modifies the 2 of the "Pokemon" values, so that the game will recognize it as a Bad Egg later on. One of these values is on a fixed position on a Pokemon's data (a block of 80 bytes), whereas the other has 4 possible positions, depending on the congruence of the Pokemon's PID modulo 24 (a part of a Pokemon's data are separated into 4 substructures that are disposed in na order depending on PID modulo 24). The first affected byte gets its bits 0 and 3 set to 1 (not toggled) (basically, 0x05), and the second affected byte (the one that has 4 possible location) has its bit 6 set to 1 or 0, depending on the value of the bit 6 of the leftmost byte of the Pokemon's PID and TID (the bit is set to 1 if the 2 other mentioned bits are both to at 0 or 1, and set to 0 else)(basically 0x40). Thus, you know what RAM adresses will be corrupted by the Anti-Cheat Detection script, and you can influence the 0x40 corruption to have a more convenient location or bit set (it is used on the run to corrupt Ever Grande Fly Location, and to Castform data on the same fight as the Ever Grande Fly Location Corruption). (without the 0x40 corruption manipulation, which is done by fighting Route 104 or Route 103 twins, the EGFL couldn't have been corrupted. This thing prevented Werster to get that corruption when he first tried to test his route). So yeah, the Corruption is only possible thanks to the anti-cheat scripts. Another anti-cheat scripts also moves some parts of RAM data, allowing us to corrupt every leftmost byte of the double words in these parts with both corruptions, as they have 32 possible locations and a Pokemon's data only takes 20 double-words (so each corruption occurs every 20 double-words). - And for the last part, yeah, leaving the pointer on a glitched position (or maybe just closing the summary to have the ability to move the pointer everywhere) makes the game unable to heal your party Pokemon after the black out. This is linked to the / a heal command that's used when you black out, but I don't know more about this. In FrLg, your team is healed at Pokemon Center after the black out (it maybe is healed during the black out too), and this always works, unfortunately (as keeping the team KO allows for consecutive Pomeg Glitch Corruptions).
Joined: 4/8/2011
Posts: 15
I wonder if this glitch I came across would be suitable for a Japanese Ruby/Sapphire run? I do not know some specific details about it yet. You probably don't need to buy 40 dolls or those specific desks, and I know you can have two (maybe a significant amount) different types of dolls and get the glitch to work too. What I did was: *Get 40 Pichu dolls *Place 16 in your room *Place 12 in your base using a Heavy Desk, Ragged Desk and Pretty Desk This caused the first doll's name to become glitched. I tossed items below it and did some messing around, and I ended up accessing Secret Base items beyond Cancel. I selected one of them with an extremely long name to toss, and the screen turned mainly black and flashed colours. The glitch: https://www.youtube.com/watch?v=qvoMpTlfPnU Perhaps you can pull off helpful memory corruption or even arbitrary code execution using this glitch. My Pocket Monsters Ruby (JP) save set up before the glitch. https://mega.co.nz/#!Y1FSwapD!zF2bLIs2Kn3LCUBY89Wvj3cyYkTZ5Godr6ViJzrqrC8
1 2
10 11 12 13