Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
A GB TAS can't be converted to an SGB TAS, at least not for pokemon red/blue. When the game changes palettes there is a pause, basically the game telling the gameboy what to change everything to then resuming, and during the pause RNG continues to change. I recall that MrWint wanted to do his Pokemon R/B TASes on SGB but couldn't because there was no suitable emulator for his needs.
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
Skilled player (1040)
Joined: 7/24/2013
Posts: 175
luckytyphlosion wrote:
Since the new TAS won't reach RED (Rival) in Cerulean, I've decided to break down the data of the level 9 Metapod. (4th Pokemon of one of the Bug Catchers) Index No. - 7C Current HP value - 00 00 ??? - ?? (It doesn't say on datacrystal) Status Effect - 00 Type 1 - 07 (Bug) Type 2 - 07 (Bug) Catch Rate - 78 Move 1 - 6A (Harden) Move 2 - 00 (None) Move 3 - 00 (None) Move 4 - 00 (None) Trainer ID - 2E 5E Total Experience - 00 01 A3 HP EV - 00 00 Attack EV - 00 00 Defense EV - 00 00 Speed EV - 00 00 Special EV - 00 00 Attack/Defense IV (Combined as one byte) - 98 Speed/Special IV (Combined as one byte) - 88 PP of Move 1 - 1E PP of Move 2 - 00 PP of Move 3 - 00 PP of Move 4 - 00 Level - 09 Total HP - 00 1D Attack - 00 0A Defense - 00 10 Speed - 00 0A Special - 00 0B As raw data: 7C 00 00 ?? 00 07 07 78 6A 00 00 00 2E 5E 00 01 A3 00 00 00 00 00 00 00 00 00 00 98 88 1E 00 00 00 09 00 1D 00 0A 00 10 00 0A 00 0B
You miscalculated slightly, the correct values are 7C 00 00 00 00 07 07 78 6A 00 00 00 2E 5E 00 02 D9 00 00 00 00 00 00 00 00 00 00 98 88 1E 00 00 00 09 00 1D 00 0A 00 10 00 0B 00 0A There is a problematic D9 (reti) byte, seems the trainer must be avoided.
Skilled player (1040)
Joined: 7/24/2013
Posts: 175
Chamale wrote:
I did get the game to do something unusual with an invalid text ID, but I'm not sure it can be used for arbitrary code execution. Here is the .bkm file that gets to that point. I'm not sure why the stored text ID isn't working in Mount Moon, but I was able to use it for other dialogue in Viridian Forest. It appears that the anomalous dialogue won't come up even if I return directly to Mount Moon, maybe something is resetting the value to 0 on its own. I'll do some testing and try to find a way to use this bug to pick up a Rare Candy.
Ok, I looked into it now. The text box ID is stored in $cf13, and this is what is played when you trigger the trainer-fly encounter. For Viridian Forest, it has 14 valid text IDs (including NPCs, Items, Signs, ...), and the old man text is 0xf, i.e. out of bounds. There are a few other OOB values you can get in Pallet and Viridian (so far I found 0x0f, 0x1f, 0x20, 0x21, 0x24, 0x3f, 0x40, 0x42), but I found none of them to be useful, as they're all pointing to ROM addresses and execute random text commands, which output some random text or (in case of 0x3f) crash the game by overwriting your RAM. There are, however, useful indices (like 0x10, 0x16, 0x1c and a few others) which put you in a convenient location in RAM (like $d7f3), which, combined with the fact that text commands support inline asm (command 08), could very well lead to arbitrary code execution. Unfortunately, I have not yet found a way to get a "good" value before Viridian Forest. There are some in Pewter, but I also havn't found a way to skip the mandatory bug catcher first and use him for trainer-fly later (There is a way to skip him by fighting two trainers at one and therefore corrupting the map script index, but I don't know yet how to reverse the process. Also, the other two trainers can't be used for trainer-fly, there is no grass patch to get an encounter in). So for now it seems that arbitrary code execution from a text box in Viridian Forest is in theory possible, but our luck with the existing text ID numbers is out. Maybe there is a way to get a good text ID value or bypass the mandatory bug catcher that I havn't seen yet. And you can't get this in Mt. Moon, because the same address $cf13 is used while checking for trainers you ran into, which resets the value to 0 constantly. Some maps don't do this check (becasue they have no trainers, mostly the starting areas, town and indoor maps). You can't enter Mt. Moon without resetting the value, so getting something else than the start menu won't work.
Player (27)
Joined: 3/2/2014
Posts: 34
Location: Canada
MrWint wrote:
You miscalculated slightly, the correct values are 7C 00 00 00 00 07 07 78 6A 00 00 00 2E 5E 00 02 D9 00 00 00 00 00 00 00 00 00 00 98 88 1E 00 00 00 09 00 1D 00 0A 00 10 00 0B 00 0A There is a problematic D9 (reti) byte, seems the trainer must be avoided.
The Caterpie and Weedle lines are in the Medium Fast Experience Group, not Medium Slow, despite being a 3-Stage Evolutionary line. Ironically, the Medium Fast Group takes longer to grow from Level 1 to 68 than the Medium Slow group does. You're right about the Speed and Special Stats. Generation 1 keeps getting me confused about stat order. Also, I was wondering if using a wild encounter for the arbitrary code would be faster than using Charmander, because after fighting all mandatory trainers and a Pidgey/Rattata before the first Bug Catcher (the small exp. from Pidgey allows to jump from Level 6 to 8 after the first Bug Catcher), Charmander is 121 short from 566 (0x0236). Would it be faster to use a different Pokemon as the boxed Pokemon, so Charmander's DVs could be manipulated to be higher? Having 54 (0x0036) for the special EV can be easily achieved by fighting two Paras and switching out to split the special EV into 27.
Meerkov wrote:
The human element of the run is far more entertaining than the game itself. If it wasn't for someone lying about their record 40 years ago, I don't think we'd take a second look at this run/game. Meh vote.
Skilled player (1040)
Joined: 7/24/2013
Posts: 175
luckytyphlosion wrote:
The Caterpie and Weedle lines are in the Medium Fast Experience Group, not Medium Slow, despite being a 3-Stage Evolutionary line. Ironically, the Medium Fast Group takes longer to grow from Level 1 to 68 than the Medium Slow group does.
I'm not sure what your conclusion is here, but my values are definitely correct, I checked the RAM after beating the trainer.
Player (27)
Joined: 3/2/2014
Posts: 34
Location: Canada
MrWint wrote:
I'm not sure what your conclusion is here, but my values are definitely correct, I checked the RAM after beating the trainer.
I guess I read the exp values wrong. Since it isn't possible to defeat the Bug Catcher anymore, the EV spread Charmander goes through would be (first number is amount given in each fight, , second amount is the amount Charmander has right now: Da Jerk Rival: 50|50 Level 2 Rattata: 25|75 (Fighting a wild Pokemon before the Weedle Fight allows you to jump from Level 6 to 8, which allows you to get ember one level earlier. Level 2's are easier to defeat, and Rattata is required for the correct EVs) Weedle Bug Catcher (Weedle): 20|95 First Bug Catcher on Route 3 (Caterpie, Weedle, Caterpie): 20, 20, 20 (60)|155 Shorts Guy (Rattata, Wraphax Ekans): 25, 40 (65)|220 Lass (Rattata, Nidoran-M): 25, 40 (65)|285 Done Like Dinner Bug Catcher (Caterpie, Metapod): 20, 25 (45)|330 Level 5 Spearow (Needed for its odd Special Value of 31): 31|361 Paras x2 (Again for their special value): 110|471 Rocket in Ether room (Zubat, Ekans): 40, 40 (80)|551 Half a Geodude (Switch out from Charmander to Mew and use Water Gun): 15|566 The Route would look something like this: 1. Use the same route until after delivering Oak's Parcel. 2. Defeat a Rattata for Exp. and Special EV. 3. Defeat Weedle Guy. 4. Buy one Poke Ball (For Mew) 5. Fight the First Bug Catcher, get Ember one Level Earlier. 6. Defeat all mandatory trainers and fight the Lass instead of the Bug Catcher. The special EV of Charmander should be 330. 7. Defeat a Level 5 Spearow for Special EV. 8. Pick up TM12 and Blackout Trainer Fly on the Bug Catcher. It should be a Level 10 Zubat with 0 DV Speed (so Charmander can hit itself in confusion first). 9. Defeat 2 Paras to increase Special DV. 10. Defeat Rocket in Ether Room and pick up Ether. Special EV increases. 11. Encounter a Level 12 Clefairy with 21 Special, and run away. 12. Catch Mew 12.5. Teach Mew Water Gun. 13. Encounter a Geodude, switch to Mew, use Water Gun. 14. Walk to the green ladder here 15. Swap Mew with Charmander and defeat 3 Geodudes. Mew should be Level 10 by then. 16. Fight the closest Rocket, use Transform, Raticate uses Hyper Fang but doesn't defeat Mew. 17. Swap Tackle with Hyper Fang, have Raticate make Mew faint, switch in Charmander, have Raticate make Charmander faint, death warp to Poke Center. 18. Deposit Charmander and walk back into Mt. Moon. 19. Win. Or another route, with these minor changes. - In Pewter Poke Mart, buy a Poke Ball and an Escape Rope - Don't pick up TM12 - After you get Mew, switch Mew to the front, encounter a level 8 Geodude in B1F, switch out to Charmander and defeat it with Ember. - Defeat 3 Level 12 Zubats. - Escape rope out. - Deposit Charmander - Fight the Clefairy Lass, use Transform, swap first and third move. - Defeat Clefairy. - Use Cooltrainer move. - Win. If anyone knows any possible route improvements (other than these), don't hesitate to suggest.
Meerkov wrote:
The human element of the run is far more entertaining than the game itself. If it wasn't for someone lying about their record 40 years ago, I don't think we'd take a second look at this run/game. Meh vote.
Skilled player (1040)
Joined: 7/24/2013
Posts: 175
I havn't routed this myself, yet, but you seem to require a lot of wild encounters to boost your EVs. Maybe going for Special EV of 0x136 instead of 0x236 is faster (ways to save EV are e.g. catching a wild as EV drain and/or losing to rival). Other smaller route variants are probably not that important for now, first you need to make sure the code execution works at all. There are so many things that may screw up your code execution, some of which I didn't even mention in my submission text (like the position on the map is not arbitrary). At least you'll likely need a different means of manipulating register h than me, the name I chose to do it was dependent on the register values and they are probably different. When you have the conditions for the code execution figured out, then you can start routing with these constraints in mind. Also, my way of getting the byte where I wanted it is surely by no means the only one, maybe looking for a different code execution approach (maybe with less setup time) is worth while. I may start looking into alternative code execution strategies myself in the near future, now that there is a good reason to go back working on this game, but first I want to try a bit more on the arbitrary code execution in Viridian Forest. If it's possible to make that work, it's way faster and figuring out this route may become obsolete. I managed to get the PC into RAM ($d808) now, but it seems impossible to avoid crashes on a 0xFF byte down the line.
Player (27)
Joined: 3/2/2014
Posts: 34
Location: Canada
MrWint wrote:
I havn't routed this myself, yet, but you seem to require a lot of wild encounters to boost your EVs. Maybe going for Special EV of 0x136 instead of 0x236 is faster (ways to save EV are e.g. catching a wild as EV drain and/or losing to rival).
Then you would fight a wild Weedle, a Pidgey later, and catch a Clefairy to deal with the Rocket you need to fight. It may be faster, but I don't count on it. Switching also takes too long.
MrWint wrote:
Other smaller route variants are probably not that important for now, first you need to make sure the code execution works at all. There are so many things that may screw up your code execution, some of which I didn't even mention in my submission text (like the position on the map is not arbitrary). At least you'll likely need a different means of manipulating register h than me, the name I chose to do it was dependent on the register values and they are probably different. When you have the conditions for the code execution figured out, then you can start routing with these constraints in mind. Also, my way of getting the byte where I wanted it is surely by no means the only one, maybe looking for a different code execution approach (maybe with less setup time) is worth while.
I was thinking that it may be would be faster to directly execute the Hall of Fame. I may look into it.
Meerkov wrote:
The human element of the run is far more entertaining than the game itself. If it wasn't for someone lying about their record 40 years ago, I don't think we'd take a second look at this run/game. Meh vote.
Experienced player (705)
Joined: 2/5/2012
Posts: 1800
Location: Brasil
i'm not sure which topic to choose to ask this but here it goes: Is it possible to ditto glitch with special 251,capture the glitch monster and send it to GSC to get a celebi?
I want all good TAS inside TASvideos, it's my motto. TAS i'm interested: Megaman series, specially the RPGs! Where is the mmbn1 all chips TAS we deserve? Where is the Command Mission TAS? i'm slowly moving away from TASing fighting games for speed, maybe it's time to start finding some entertainment value in TASing.
GoddessMaria
She/Her
Reviewer, Experienced player (867)
Joined: 5/29/2009
Posts: 518
Location: Hell...
grassini wrote:
i'm not sure which topic to choose to ask this but here it goes: Is it possible to ditto glitch with special 251,capture the glitch monster and send it to GSC to get a celebi?
Problem is that Generation II will split it into Special Attack (Sp. ATK) and Special Defense (Sp. DEF).
Current projects: failing at life
Joined: 7/30/2013
Posts: 79
grassini wrote:
i'm not sure which topic to choose to ask this but here it goes: Is it possible to ditto glitch with special 251,capture the glitch monster and send it to GSC to get a celebi?
Don't think so, the game will say the Pokémon appears to be abnormal. There is another way to get Celebi via glitch on Gen 2 though.
(◕‿◕)
Joined: 12/29/2007
Posts: 489
The Ditto glitch won't work for special 251 anyway; you'll get a ZZAZZ glitch Trainer.
Joined: 5/9/2007
Posts: 93
Location: The Netherlands
Hey guys, After spending god knows how much time to try and figure out a good way to finish Pokémon fast. I've tried different stuff like JACRED and I was also able to use the Super Glitch to trigger the glitched menu, but then MrWint's Item Underflow TAS was published and I had to change my plans lol. I had already started a segmented run but luckily I was still stuck on catching an Ivysaur in Viridian Forest so I only had to change my strat a little to include Nidoking and go from there. A few days ago, I finally finished the run and I'm in the progress of writing up the comments so that I can send it to SDA. The run has some mistakes here and there, a few because of stuff found later (after I had already done said segment) and some because honestly, I was a bit lazy and it was only a second lost (I'm guessing I lost at max like 5-6 seconds total). I finished in 0:39:xx. But while all that is going on, I've frequently wondered wether the newest published run is possible for a segmented, non-TAS run. Or even a run like you guys are mentioning right now. I have a Mega Memory Card so redoing segments wouldn't be too difficult. Aside from the rediculous luck required, would it actually be possible if you saved inbetween? My (edited) run btw, which is basically a tweaked TAS route lol: http://www.youtube.com/watch?v=6OL1sOvFgN0
Chamale
He/Him
Player (182)
Joined: 10/20/2006
Posts: 1355
Location: Canada
Thomaz wrote:
Hey guys, After spending god knows how much time to try and figure out a good way to finish Pokémon fast. I've tried different stuff like JACRED and I was also able to use the Super Glitch to trigger the glitched menu, but then MrWint's Item Underflow TAS was published and I had to change my plans lol. I had already started a segmented run but luckily I was still stuck on catching an Ivysaur in Viridian Forest so I only had to change my strat a little to include Nidoking and go from there. A few days ago, I finally finished the run and I'm in the progress of writing up the comments so that I can send it to SDA. The run has some mistakes here and there, a few because of stuff found later (after I had already done said segment) and some because honestly, I was a bit lazy and it was only a second lost (I'm guessing I lost at max like 5-6 seconds total). I finished in 0:39:xx. But while all that is going on, I've frequently wondered wether the newest published run is possible for a segmented, non-TAS run. Or even a run like you guys are mentioning right now. I have a Mega Memory Card so redoing segments wouldn't be too difficult. Aside from the rediculous luck required, would it actually be possible if you saved inbetween? My (edited) run btw, which is basically a tweaked TAS route lol: http://www.youtube.com/watch?v=6OL1sOvFgN0
I don't think the current route is possible for a TAS, since it depends on your trainer ID and you'd need thousands of resets to get the correct ID.
Joined: 5/9/2007
Posts: 93
Location: The Netherlands
Don't you mean non-TAS? =P It would be very annoying yes, but not undoable. =P I'm not too worried about that. I'm more worried about the rest being possible. With the Mega Memory card, I can even reset for Charmander's DV's while keeping the correct Trainer ID. Before I decide to do all this though, I have to be sure that what I'm doing is actually possible. Testing on the emulator would be easy though, but I'm not sure how well that would translate to the real cart.
Joined: 12/29/2007
Posts: 489
There's someone over at PokemonSpeedruns.com (repository of lots of real-time speedrun strategies) attempting just that: http://www.pokemonspeedruns.com/index.php/User:Dabomstew/Gold_Coin_Case_CrazyReset_Route Not exactly the same route of course, but it does require getting the high byte of the Trainer ID to one of two specific values, thus a 1/128 chance, meaning that 99.2% of real-time runs must reset before even moving a step. The current real-time record is about 47 minutes, using this Coin Case route that doesn't require Trainer ID manipulation: http://www.pokemonspeedruns.com/index.php/Pok%C3%A9mon_Gold/Silver/Any%25_Guide
Editor
Joined: 11/3/2013
Posts: 506
^Actually wersterlobe cracked out a 42:44. http://www.youtube.com/watch?v=47dksDoavWw&list=UUO_0coJ_V8PFPaXRtLlHNhw However he didn't submit it to the site because he doesn't believe it to be an official category. He only made the run because he was pissed off with people using a subpar route.
Joined: 12/29/2007
Posts: 489
^That's Gen I, not Gen II.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Zowayix wrote:
There's someone over at PokemonSpeedruns.com (repository of lots of real-time speedrun strategies) attempting just that: http://www.pokemonspeedruns.com/index.php/User:Dabomstew/Gold_Coin_Case_CrazyReset_Route Not exactly the same route of course, but it does require getting the high byte of the Trainer ID to one of two specific values, thus a 1/128 chance, meaning that 99.2% of real-time runs must reset before even moving a step. The current real-time record is about 47 minutes, using this Coin Case route that doesn't require Trainer ID manipulation: http://www.pokemonspeedruns.com/index.php/Pok%C3%A9mon_Gold/Silver/Any%25_Guide
Uh...coin case? Are we talking about the same game (Pokemon Red/Blue)? :o
Joined: 12/29/2007
Posts: 489
Oh crap, just wrote two posts in the wrong thread; both of the above were supposed to go in the G/S thread. Sorry!
Joined: 5/9/2007
Posts: 93
Location: The Netherlands
thatguy wrote:
^Actually wersterlobe cracked out a 42:44. http://www.youtube.com/watch?v=47dksDoavWw&list=UUO_0coJ_V8PFPaXRtLlHNhw However he didn't submit it to the site because he doesn't believe it to be an official category. He only made the run because he was pissed off with people using a subpar route.
Well, he was right though, the other runs were pretty bad. The only thing I dislike is that it seems I copied his route or something, while I had routed the game long before that. Oh well, nothing to do about that. My fault for not finishing the run I suppose, although running segmented takes so much more time in comparison.
ALAKTORN
He/Him
Former player
Joined: 10/19/2009
Posts: 2527
Location: Italy
thatguy wrote:
He only made the run because he was pissed off with people using a subpar route.
funny to hear that, when he himself doesn’t always use optimal routes, lol
Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
<delete>
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
Joined: 12/29/2007
Posts: 489
^Wrong thread; this is Gen I.
Joined: 12/29/2007
Posts: 489
Question: According to the Pokemon Speedruns Wiki, in Gen I, the Thunder Badge raises Defense while the Soul Badge raises Speed; this is the opposite of what almost everywhere else (including the game itself) claims (link). The page explicitly mentions that "the game is wrong". I'm sure this game has been disassembled to the ends of the earth by now, so can anyone verify this (with actual disassembly if possible)? On a side note, the same page states that being hit by a stat-lowering move causes any Badge boosts that might apply to other stats to stack; this has been verified directly. My question is, according to this very reputable site, if the Badge boost stacking is true, then burn and paralysis drops should also stack. That is, if a Pokemon is burned (cutting its Attack in half) and its Defense is then lowered, the burn drop should stack causing Attack to be halved again. Can someone verify this part?