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".


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15629
Location: 127.0.0.1
Spikestuff
They/Them
Editor, Publisher, Expert player (2656)
Joined: 10/12/2011
Posts: 6449
Location: The land down under.
Mouth drops Mine to publish, if this gets accepted. Aw.... no subtitles, even though the YouTube got annotated, that's fine.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Skilled player (1041)
Joined: 7/24/2013
Posts: 175
Spikestuff wrote:
Aw.... no subtitles, even though the YouTube got annotated, that's fine.
I do have the subtitles, but I decided to not include them in the submission. Subtitles in BizHawk are specified in client coordinates, which means they shift around depending on how you scale the game. I didn't want to assume things about how the movie is played back, so I left them out and created an encode for them instead.
Spikestuff
They/Them
Editor, Publisher, Expert player (2656)
Joined: 10/12/2011
Posts: 6449
Location: The land down under.
MrWint wrote:
I do have the subtitles, but I decided to not include them in the submission. Subtitles in BizHawk are specified in client coordinates.
Understood, you can still provide the subtitles though, without putting into a BizHawk file, by making it a downloadable file to the subs.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Dashjump
He/Him
Experienced player (579)
Joined: 8/18/2012
Posts: 82
Whoa, I'm really excited to watch this as soon as I have the time to! Apologies for not watching the whole thing first before commenting, but I'm wondering if this run was bot-created for the most part (just like one of your any% runs)? 226 million rerecords is simply incredible, but it doesn't seem like you'll load savestates that many times if the entire run is done by hand. EDIT: sorry, I didn't read the submission text carefully. I guess my question has been answered.
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
and to mix the audio streams (hearing one game in each stereo channel is not the most pleasurable experience)
Would it be better if the default sound output from bizhawk dual gb worked differently?
Active player (459)
Joined: 1/28/2008
Posts: 143
Location: Germany
never seen that amount of re-records.. holy god
2-do: Smurfs Nightmare, The (EU) GBC 10% fin : Mega Man: Dr. Wily's Revenge improvement: submitted Mega Man II Improvement: submitted Mega Man IV Improvement: submitted Mega Man V Improvement: submitted future plan: -n-
Skilled player (1041)
Joined: 7/24/2013
Posts: 175
Spikestuff wrote:
MrWint wrote:
I do have the subtitles, but I decided to not include them in the submission. Subtitles in BizHawk are specified in client coordinates.
Understood, you can still provide the subtitles though, without putting into a BizHawk file, by making it a downloadable file to the subs.
Not sure I got you right, but here you go: http://pastebin.com/svrKv1rP
natt wrote:
and to mix the audio streams (hearing one game in each stereo channel is not the most pleasurable experience)
Would it be better if the default sound output from bizhawk dual gb worked differently?
No, I think this is fine, because it allows you to extract the isolated audio streams and manipulate them as you want. It's hard to assume anything about how to best setup the audio mixing. For this encode I ended up mixing them into a single mono channel with Red in the foreground and Blue more quiet in the background (-af pan=1:c0=.015*c0+.085*c1), but that may not at all be what you want for other instances. The comment was more about that you need to do something when encoding, because while the default output is convenient for post-processing, it's not easy to listen to in that state, at least when you constantly hear two slightly offset overlapping versions of the Pokémon tune.
xRavenXP
He/Him
Joined: 4/15/2012
Posts: 116
Location: Brazil
Awesome run, voted YES!
I love games and love to record videos (longplays). Visit my Youtube channel https://www.youtube.com/user/xRavenXP
Lex
Joined: 6/25/2007
Posts: 732
Location: Vancouver, British Columbia, Canada
Holy fuckin' shit. This is amazing. I voted yes. It's so beautiful. It's funny to think that I thought 3000 redubs on my most optimized TAS of a Worms Armageddon rope race map was a lot. 226 million is actually a lot. Is that number entirely from your program reconsidering things in order to reach its goal state? Is it a sort of brute-force input algorithm, or does it know a lot about the game? Anyway, the result is insanely impressive.
Skilled player (1743)
Joined: 9/17/2009
Posts: 4986
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
I don't have time to watch it as of late, but I'll sure try once classes are over. I always liked 100% runs (or similar) of sorts since it gives a free savefile to any point towards 100% gives a look on how vast the game is compared to the any% (usually lol). Probably GB TAS of the year, since holy shit. x.x
Skilled player (1041)
Joined: 7/24/2013
Posts: 175
Lex wrote:
Is it a sort of brute-force input algorithm, or does it know a lot about the game?
It knows a lot about the game mechanics and makes assumptions based on that. It basically has an internal state about what it thinks the game state is, presses buttons blindly trusting that the game will behave in the way it expects. E.g. in battles it calculates the min and max damage you can do with each attack based on your and your opponents stats and plans the turns of the fight according to this. This may sound brittle and unreliable, but is useful to test your assumptions, because your route likely relies on them. For example if your calculation of how much damage you can do is off, you want to know that since it may mean your route as a whole is flawed. I had the whole run planned out in a spreadsheet before starting, with all fights, which attacks to use, how much damage they will do, which trades to make, etc. Without that knowledge, you can never be sure that the route you chose will work out in the end, since there's a lot that can go wrong: You're missing items you didn't buy, you ran out of PP for a move you need, your box is full when you want to catch something, etc. (these are all things that actually happened to me despite the planning by the way).
Fortranm
He/Him
Editor, Experienced player (879)
Joined: 10/19/2013
Posts: 1122
Here comes the redemption of the person who destroyed Gen 1 Pokemon TASes. Voting YES and probably will vote for GB TAS of the year.
Plush
Other
Player (157)
Joined: 9/1/2014
Posts: 235
Location: Italy
I still haven't watched it yet, but I'm curious of how you get Bulbasaur. I guess reset game file but idk
Editor, Skilled player (1824)
Joined: 8/25/2013
Posts: 1200
226021275 rerecords u crazy also Yes vote, obviously
effort on the first draft means less effort on any draft thereafter - some loser
Noxxa
They/Them
Moderator, Expert player (4128)
Joined: 8/14/2009
Posts: 4090
Location: The Netherlands
Plush wrote:
I still haven't watched it yet, but I'm curious of how you get Bulbasaur. I guess reset game file but idk
The Red run goes up to Celadon to get an Eevee, then trades over Charmander and the Eevee, and resets to get Bulbasaur and another Eevee (to get all three Eeveelutions).
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.
Editor
Joined: 11/3/2013
Posts: 506
Okay, saw this just as I was about to go to sleep. RIP getting to bed at a reasonable time. Sorry boss, I might be a little bit slow tomorrow. The only thing that could make this more awesome is if you had somehow managed to complete the co-op diploma using the same input on both games...
Joined: 6/4/2009
Posts: 893
hi, i'm still 40 Min in, but wouldn't it be faster to invert the starters ( charamander in blue and squirtle in red) and trade them right after the first fight ?it would allow you to not stop the first evolution and save frame for every levels , or is it longer to initiate a first trade ?
Twisted_Eye
He/Him
Active player (410)
Joined: 10/17/2005
Posts: 636
Location: Seattle, WA
No Mew means Voted No! ...awesome run, I love the concept. You're right about it showing off more of the natural game. Only bummer is that choosing to make Red's audio the main source of the encode prevents us from hearing the awesome Champion battle song,but that's superficial. Love this.
Skilled player (1041)
Joined: 7/24/2013
Posts: 175
Nicos wrote:
hi, i'm still 40 Min in, but wouldn't it be faster to invert the starters ( charamander in blue and squirtle in red) and trade them right after the first fight ?it would allow you to not stop the first evolution and save frame for every levels , or is it longer to initiate a first trade ?
This wouldn't work, you can't evolve them even after trading them, since Red will still need to restart, wiping Red's Pokédex. And trading them only for boosted XP is likely only making the problem worse, since you'll gain more levels you need to cancel the evolution for, on top of the time it takes to do the trade. Still, I must confess I didn't properly consider this when making the run. There are just too many possible things you could do.
Twisted Eye wrote:
Only bummer is that choosing to make Red's audio the main source of the encode prevents us from hearing the awesome Champion battle song,but that's superficial.
I had to make a choice, I'd have chosen Blue's sound if it weren't for the gambling. The constant jackpot sounds gets old very quickly.
Joined: 10/23/2009
Posts: 545
Location: Where?
I'll definitively watch the run when I can. Can't wait! Watched 2 hours of it. Loved it... I'm in awe of the massive planning you had to do. Respect in that planning. Will latch the last hours later.
Twisted_Eye
He/Him
Active player (410)
Joined: 10/17/2005
Posts: 636
Location: Seattle, WA
MrWint wrote:
Twisted Eye wrote:
Only bummer is that choosing to make Red's audio the main source of the encode prevents us from hearing the awesome Champion battle song,but that's superficial.
I had to make a choice, I'd have chosen Blue's sound if it weren't for the gambling. The constant jackpot sounds gets old very quickly.
True, true. A slider would be neat for a viewer but that's clearly not possible with a youtube encode, and sliding back and forth in post-processing is probably more effort than possibly is necessary.
fcxiaopengyou
He/Him
Experienced player (559)
Joined: 7/25/2015
Posts: 123
Location: Republic of China
226021275,YES
Working on: [NES] Downtown Special - Kunio-kun no Jidaigeki Dayo Zenin Shuugou! (J) ''2 players 100%'' Plan: [SNES] Kenyuu Densetsu Yaiba (Japan) _________________ My English is pour. 
Joined: 6/6/2004
Posts: 223
In the third series of trades, wouldn't it be better for Red to send over a Wigglytuff instead of Pikachu? That would let Blue trim out the Wigglytuff encounter in Cerulean Cave, and let Red skip catching a second Pikachu at the Power Plant, since it still has the first one and can just evolve that instead.
Joined: 2/28/2009
Posts: 99
I was highly giddy when I saw this movie under Recent Submissions. Did not disappoint; voted Yes. When the original Catch 'Em All TAS was submitted I watched it all in one nostalgia-spiked sitting, declining to fast forward through any of the Rare Candy binges. It was the first time since childhood that I was able to experience the special joy of encountering and capturing all the Pokemon you never see in traditional speedruns of the games, and I savored every minute of it. Although it's since been improved and it's not a TAS I'm prone to rewatching, it still stands out in memory as one of my most enjoyable initial viewings of any TAS. Gen 1 Pokemon has been thoroughly ravaged by glitches at this point, and so the TAS at hand is a welcome new entry on this site. Although I didn't have the same tingly nostalgia blasts as I did when first watching the original Catch 'Em All TAS, the dual-game action and the chance to see pokemon like Kabuto, Pidgeotto, and Mankey (!) used for actual battling more than made up for it. The routing effort here must have been obscene, and timing the trades between the two games to efficiently balance populating both Pokedexes and getting good experience gains on the right pokemon is a unique challenge not seen elsewhere anywhere in the speedrunning world. This TAS must have required a huge amount of planning, work, and frustration - I salute and thank you for it. I only have one issue with this run, though it applies to all TAS's of this game that see the main body of the game. I personally don't think constant red-bar negatively affects entertainment. Perhaps I'm in the minority being neutral to the beeping noise, but the rushed animations and comically altered pokemon cries significantly add to the entertainment value for me. (What a joy to hear any ordinary pokemon's cry change to Gastly's...!) This has been a long-standing complaint of mine regarding Pokemon TAS's, one that I don't expect the majority of the audience to sympathize with, and it's only a very minor issue. So far this is my favorite TAS of 2016. Thanks a lot again for making this, MrWint.