The goal of this submission is to complete the game as quickly as possible without using save corruption. Save corruption glitches were worked out by CasualPokePlayer (https://youtu.be/uUpyJTIXA3s) and this submission aims to complete the game without it.
Glitches, however are still used, namely Arbitrary Code Execution (ACE).
The Route Without save corruption, the fastest way to achieve ACE is through the use of the moves Thief or Covet alongside a Mail. When a pokemon's Mail is stolen, the corresponding memory address is not updated accordingly. The thief's Mail memory address is incorrect and taking the 'Mail' from it results in garbage data (which interestingly in this case, is map data) being written into the mail. If said mail is sent to the PC, it will attempt to display the name of the author which just map data. The game then attempts to parse through a very very long string (remember, just the map data) which causes the parser to overflow into data it's not supposed to be in, first the Mauville man and Dewford trend data then the data of the first party slot. By manipulating certain bytes (the Dewford trends and the lead pokemon's PID), the parser then reads PC box data, which is good for us since we can input in code into the PC box names and the deposited pokemon's nicknames
With all that in mind, the first goal is to get Thief or Covet as quickly as possible. FractalFusion's initial TAS (https://youtu.be/Mw-H8zRjsyI) did this through playing through the first gym and several story cutscenes until he reached the Slateport museum, to get the TM for Thief, resulting in a time of 79129 frames. However, there was always another idea that was lurking around: leveling up a Zigzagoon or Skitty to 29 or 31 respectively, as they learn Covet at those levels. To do this quickly, we need Zigzagoon ❤️ to use its ability Pickup, to gain several Rare Candies. This essentially means we need to do wild battles over and over until Zigzagoon picks up enough candies to level up Skitty to 31. We would need to catch multiple Zigzagoons so that they can occasionally get Double Pickups (getting more than one Rare Candy per battle, comes out to around a 1/10000 chance overall). This skips the entire first gym and several cutscenes, however, the sheer amount of wild battles this required meant that it was initially deemed to not be worth it.
Regardless, I still wanted to try it, as the novelty of completing Pokemon Sapphire with 0 badges was still worth an entire category (in my opinion). My very first attempt put the time at 81137 frames, using RNG seed 0x3e9a. This was later improved to 80653 frames, as glitchhunter Mettrich pointed out how the glitch can still work with more than one poke in the PC (by nicknaming one of the PC pokes 'AAAA oo'). Although having pokes in the PC would interfer with the text parser, that nickname has code that causes it to jump past the pokes, allowing it to continue to the box names. Afterwards, I decided to try different RNG seeds to see if they would yield better results. Lo' and behold, seed 0xe7f3 dropped the time to 79405. This is mostly because this seed was able to get every Double Pickup with just three Zigzagoons instead of four.
One of the harder aspects of optimizing this TAS was the fact that it was difficult to reduce the delay for Double Pickups. Since they are extremely rare, we would often need to wait several frames for an RNG frame containing a Double Pickup to show up. However, FractalFusion pointed out that running near randomly turning NPCs (often called spinners), advances RNG by one for *every* frame that you are running near them. This is because running near a randomly turning NPC cause them to "hear" the player and instantly face towards them. Since spinners spin at random intervals each time, the game then needs to call RNG another interval for them to spin. This call happens *every* frame that the player is running near them. This lets us advance RNG at mach 1 speeds, making it much faster to get to not only Double Pickup frames, but for wild battle frames. This brought that TAS's time to 79024, officially beating FractalFusion's TAS.
From there, several more optimizations would be made. Another glitchhunter named Final came up with a combination of Zigzagoon nicknames and box names that would both a) reduce the overall amount of namings by 1 and b) allow for the three Zigzagoons to be named instead of boxes. Since the Zigzagoons can be nicknamed during large delays (the killable Ralts, a Double Pickup, and Skitty), naming them loses very little time overall compared to naming the boxes. This brought the TAS down to 78041, completely eliminating any chance badgeful had at beating it. FractalFusion took a crack at the TAS and found several microoptimizations that added up, not least of which was with how he passed the Petalburgh Woods spinners. Although my previous method of walking three steps while manipping them to look away was faster short term, his method of running extra steps near them to force them to look down and then walking one step past them was faster overall, since this took place during a long delay and thus, more RNG frames advancing helped. He ultimately brought the TAS down to 77121 frames

Tegron: Claiming for judging.

Tegron: Replacing movie with a shorter one, provided by the authors

Tegron: This TAS completes the game using ACE without using Save Corruption as fast as possible, 6 minutes faster than the RTA WR using Ruby version and over 13 minutes faster on the Sapphire version, this movie is incredible and optimized in terms of route and RNG, the text commentary also explained many of the things mentioned in terms of what was happening in this TAS, it’s amazing, nice work!
Also, thank you GoddessMaria for your console verification
Accepted to Alternative
fsvgm777: Processing.


TASVideoAgent
They/Them
Moderator
Location: 127.0.0.1
Joined: 8/3/2004
Posts: 18100
Location: 127.0.0.1
Player (202)
Location: Washington
Joined: 1/1/2022
Posts: 16
Location: Washington
https://tasvideos.org/UserFiles/Info/639091367626726745 accidentally uplaoded a version with 2k empty frames at the end, here's the correct version
CoolKirby
He/Him
Editor, Experienced player (710)
Joined: 11/8/2010
Posts: 4301
Your text commentary helped a lot to understand what was happening. The PC portion was surprisingly fast! Good improvement of an already good TAS.
GoddessMaria
She/Her
Reviewer, Experienced player (964)
Location: Hell...
Joined: 5/29/2009
Posts: 529
Location: Hell...
I went ahead and did a console verification of the updated movie file. Had to make a few minor adjustments to accommodate my rev1.0 cart as the movie uses rev1.1, but I'm positive it'll playback fine on a rev1.1 cart. Link to video
Current projects: failing at life
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Location: 127.0.0.1
Joined: 8/3/2004
Posts: 18100
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. ---- [7056] GBA Pokémon: Sapphire Version "game end glitch" by gabraltar & FractalFusion in 21:31.214