Introduction

The categories for Generation I of Pokémon games have shifted towards being all about the glitches, and efforts to limit which glitches are allowed to show more actual gameplay have been largely ineffective (see the current any% publication). Since I feel partly responsible for this shortcoming, I'll try with this submission to fix it.
That said, creating this run took way longer than I anticipated or care to admit. The routing alone took months before even starting the first frame of the run, and small improvements came up constantly requiring to re-do parts of it. This is submission is the fifth complete start-to-finish attempt I created, the previous four I re-did because of obvious routing improvements I noticed along the way.

About the run

Goal choice

The goal of this run is to collect all 150 obtainable Pokemon in both versions and obtain the diploma. No glitches are allowed.

Why glitchless?

The main purpose of this submission is to show more of the actual gameplay and variety, which remain unexplored in other categories just because using glitches is faster. The whole dual GB setup wouldn't make any sense when allowing glitches, you'd be faster just not trading at all, and end up with a solo Catch 'Em All run. And history has shown that trying to limit the amount of glitches does not work, the games are too broken and you'll always find ways around it.

Why Coop Diploma?

First of all, I think it's just a fun category, and something most people have not seen as a category. The concept has been explored before, but there was no polished route developed yet, largely because the possibilities for how to go about things are so vast. I considered doing any% glitchless at first, but the route for this is mostly fixed and everyone has probably seen it. A TAS wouldn't add much to it.
In Coop Diploma, you get to do things you wouldn't do in other categories, like fishing, trading, gambling, etc. It shows off most of the things the game has to offer at some point during the run.
Also, I always wanted to explore the dual GB capabilities of BizHawk. There aren't too many dual GB TASes around, and Pokémon Red/Blue is a game that can actually benefit from these capabilities. Having to sync the games up in the middle of the run poses an extra routing challenge.

Emulator Choice/Rant

This run uses BizHawk's dual GB capabilities, and runs on BizHawk 1.7 and later. Due to how dual GB is implemented in BizHawk, it was unavoidable to use the new frame timing introduced in BizHawk 1.7. This frame timing can cause issues that have been discussed before, but being forced to use it gave me some more insight in which problems actually occur. The main issue arises when the joypad input is split between frames. The Gameboy polls the joypad in two stages with 4 bit each, one for the directional keys and one for the buttons. If they end up on different sides of the arbitrary frame boundary, weird things happen. You need to press your directional keys on a different frame than the buttons, even though they are used at the exact same time. In the worst case, multiple joypad polls happen on the same frame, so there is no input frame for you to do the inputs you want, and you need to wait frames until it fixes itself or work around it by using a different set of inputs that doesn't run into this problem.
That's enough of a rant over technical details, I'm happy to have the choice of frame timing at least in the single GB case.

The route

Instead of forcing you to read through the comments here and then match them with the corresponding point in the run, I've created an annotated encoding of the run that contains general information and optimization details, at the top of this submission text.
Big shoutouts to BizHawk at this point for making it easy to create recordings from your input files. The video was created entirely with tools that BizHawk provides without any editing in post. The bars and overlays are done using a lua script, and the subtitles are actual subtitles in the movie (I excluded them in the submitted file). The encoding is done with custom ffmpeg parameters to scale the video (to allow 720p60 playback on YouTube) and to mix the audio streams (hearing one game in each stereo channel is not the most pleasurable experience).

Used tools and resources

This movie, like all my previous movies, was not created in BizHawk, but in a piece of code I wrote to automatically run Gameboy emulation and create BizHawk-compatible movies. This has the advantage that you have full fine control over every CPU cycle, you can inspect the running Gameboy emulation arbitrarily and create automation to complete common tasks or overcome random events. The main disadvantages are that you need complete in-depth knowledge about the game's internals, including ROM addresses for different operations and interesting events, and that it takes a lot of time, likely more than it'll take when doing manual inputs in BizHawk.
You can find the code I used for this movie (and all previous movies) on GitHub, but be warned that this is not a polished or easy-to-use piece of software. It expects you to create a program that creates the run, with no option to do inputs manually while it's running.

Tools that made creating this run a whole lot easier:

Pokanalysis - Easy and convenient tool to look at maps and encounter tables. Its coordinate system for maps seems like such a small thing, but saves so much time counting squares when defining routes.
pokered - Disassembly of Pokémon Red and Blue. Invaluable for finding out the actual game mechanics and important ROM addresses. The whole approach would be infeasible without a disassembly.
BGB - Gameboy emulator with an awesome debugger. Lets you test out stuff very easily, find interesting RAM addresses and follow the disasssembly through actually running the game.
BizHawk - Supports dual GB emulation even though there's no real demand, just because it's cool to have it. Without this the run wouldn't be possible.

fsvgm777: Site parser mistakenly recognised it as NES, I changed it to the proper GB.
Noxxa: Judging.
Noxxa: This is really a quite amazing run. It takes routing to unparalleled levels, considering the way both runs have to interact with each other and have to sync up with each other on occasion. It is not just trading between the games out of necessity to fill the Pokédex in both games, but it is also taking into account what Pokémon would be faster to trade over instead of capture in both versions, while keeping the number of trades required even for both games. And having to determine which version to catch (or obtain in other ways) which Pokémon in if they are going to be traded over. And taking into account that one game has to reset for a third Eevee and one of the starter lines. The way the run is handling getting 300 Pokédex entries in total across both games is absolutely astounding, to say the least.
This run is also unique in another way, in that it is a completely glitchless Pokémon Red or Blue TAS, whereas all currently published Generation 1 TASes are very heavily glitched. This provides a nice contrast to those runs, as it shows off a lot of what the game has to offer that other runs never show. The eight gyms are challenged in a proper order, often skipped areas such as Rocket Hideout are entered and cleared correctly, rarely seen features such as trading with NPCs are shown off, and the run even features some slot machine action. This run also shows that the seemingly practically impossible goal of catching them all and getting the diploma without glitches is actually quite possible in a reasonable time frame with two games. Now, I think I have written enough words and paragraphs about this run. Accepting for Moons as a new category.
Spikestuff: Publishing.
Welp, time to "Phone a friend".


Joined: 5/16/2005
Posts: 21
So theoretically, if it were not necessary to defeat the Elite Four in order to get Mewtwo, what would you need to do to get enough experience for all the required evolutions, Dragonair specifically? Would fighting the Elite Four anyway be useful in that case?
Skilled player (1040)
Joined: 7/24/2013
Posts: 175
Even with the long credits sequence at the end, the Elite Four are a very good place to get XP, because trainers give 1.5 times the XP you get compared to wild encounters. There are a few faster ways to gain XP in the game, but most of them involve Cerulean Cave (a wild L64 Chansey is 2331 XP, which is the best you can get repeatably afaik).
Spikestuff
They/Them
Editor, Publisher, Expert player (2642)
Joined: 10/12/2011
Posts: 6438
Location: The land down under.
evknucklehead wrote:
You trade the Abra for a Mr. Mime, not Lickitung. The Lickitung trade comes later with a Slowbro.
Besides, this, is there any notable issues in this cleaned up version of the subs? http://pastebin.com/F2W97S6r Feedback would be nice. Don't mention how the numbers go from 202 to 204 while skipping 203 (for example), that's just merging stuff, it'll be fixed in the final.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Joined: 12/29/2007
Posts: 489
Holy crap, thanks so much for pulling the subs! I know I'm not the only one on here who enjoys reading long submission texts but doesn't have 3+ hours of free time to watch the whole movie. Reading everything immediately. :)
Player (137)
Joined: 9/18/2007
Posts: 389
I found a minor mistake at 14834 you are caught by Team Rocket, instead of going one step left and talking to them. It's only two extra steps, and you told us that up to three would be faster, so that wastes potentially about a fraction of a second. Or would they turn around and still catch you? More than 200 000 000 rerecords, that's really a lot.
Pokota
He/Him
Joined: 2/5/2014
Posts: 779
There's no turning npcs that do on-sight battles in Gen 1, so the next question is "do the runs no longer sync properly at the next trade point without that wasted time?"
Adventures in Lua When did I get a vest?
Post subject: Pokédex history
Pika25
He/Him
Joined: 7/18/2011
Posts: 11
Joined: 4/19/2013
Posts: 11
Location: Australia
Seriously good job man, I loved the explanation/commentary down the bottom of the encode.
Pokota
He/Him
Joined: 2/5/2014
Posts: 779
Spikestuff wrote:
evknucklehead wrote:
You trade the Abra for a Mr. Mime, not Lickitung. The Lickitung trade comes later with a Slowbro.
Besides, this, is there any notable issues in this cleaned up version of the subs? http://pastebin.com/F2W97S6r Feedback would be nice. Don't mention how the numbers go from 202 to 204 while skipping 203 (for example), that's just merging stuff, it'll be fixed in the final.
If anyone's confused as to how to actually view these subtitles, they're in .srt format; save it as a .srt file and point $media_player to them when you're watching your local encode of the run.
Adventures in Lua When did I get a vest?
Skilled player (1040)
Joined: 7/24/2013
Posts: 175
partyboy1a wrote:
I found a minor mistake: at 1:48:34 you are caught by Team Rocket, instead of going one step left and talking to them. It's only two extra steps, and you told us that up to three would be faster, so that wastes potentially about a fraction of a second. Or would they turn around and still catch you?
This is on purpose, getting seen is actually faster in this case. You need to consider that you are one tile further up in relation to the rocket, so when it walks away after the fight it has one less tile to walk before it leaves the screen, making it faster overall. The optimal route with these rockets is not obvious, but it turned out just heading straight up is the fastest.
Pokota wrote:
There's no turning npcs that do on-sight battles in Gen 1, so the next question is "do the runs no longer sync properly at the next trade point without that wasted time?"
You cannot sync them back up at any point, you'll always need to do everything again for both games after the next trade. The only bit you can re-use is the other game's run until the next set of trades.
Active player (279)
Joined: 4/30/2009
Posts: 791
I had a thought in rewatching this: why not gamble your way to Dratini in Red before trading over the Charmander/Eevee? You're already at Celadon, the Dratini will get the traded exp boost, it gets added to the party earlier so you can level it up earlier as the main attacking Pokemon, and might even free up some Rare Candy for levelling mons rather than having to battle with them. Sure it tacks on a few minutes longer for the reset, forcing Blue to have to do a bit more before the initial trade, but by the end Red ends up ahead before the final trades, so it might sync things up better. I'm sure there's things that I've overlooked in this line of thought, but it seems to make sense to me. EDIT: It seems I overlooked the fact that in Blue, you get Dratini at L24, but at L18 in Red. Sure, it's faster to get in Red (2800 coins vs 4600), but I'm sure the time spent levelling far outweighs the extra time gambling. In fact, it adds an extra 10k almost (17280-7290) exp compared to the L24 version (Really, 6660 exp extra given how the boosted exp works), but that extra will be paid for early on by the traded exp boost. Not sure if that makes it a faster option or not, I suspect the difference would be slim in fact.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15577
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [3134] GB Pokémon: Blue and Red Version "Coop Diploma" by MrWint in 3:48:04.10
Joined: 2/21/2008
Posts: 255
Any chance for a greyscale anaglyph version?
"The guy was fatally injured and wants to be covered by God's tears (rain) before he dies. God is too busy to bother because it wastes frames." Frames 16:26
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Applauds for going for a glitchless unique route!
Joined: 12/29/2007
Posts: 489
Love the screenshot choice for the publication. :)
Joined: 5/25/2017
Posts: 12
forgive me but how do i open the bk2 file ? i want to learn how to do tas videos myself