Submission Text Full Submission Page
This is an update to MrWint's original SRAM glitch run that saves 7 frames, although run time is longer since it includes the BIOS (which runs twice.)
The original run has a delay of 17 frames. This run has a delay of 10. The savings come from different RNG using GBC with GBA mode. Using GBA mode allows for console verification.
I originally didn't think GBA mode offered an advantage, but entrpntr pointed out in the game thread that changing the palette can change the RNG (since it takes extra cycles to do so.) Using this I was able to achieve a delay of 10 frames, identical to what can be achieved in GBC mode without GBA set.
I did some testing, and it turns out that where you change it, and how long you hold down the buttons to change it doesn't matter. You can change it at the end of the BIOS and delay BIOS end, but that didn't result in short overall times in my testing. You can also just hold down a button during the BIOS that doesn't change palette to change RNG, but I didn't get good results this way. I didn't test exhaustively though. I changed the palette to grey scale so it would still look decent.
I believe for console verification you can split it up into 2 halves and run them separately, there is no RTC here so when you start the second half after the reset doesn't really matter.
Other inputs after manipulating RNG are identical to the original.

ThunderAxe31: File replaced with a fix to the arbitrary code execution.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15594
Location: 127.0.0.1
Editor, Reviewer, Skilled player (1359)
Joined: 9/12/2016
Posts: 1646
Location: Italy
Nice job, but did you take in consideration the fact that there is a faster SRAM glitch for the Japanese version? User movie #35593301208919904 Though I'm not sure if that movie should be considered for comparison, since it fails to trigger the final routine after showing "THE END" screen at the end of the credits roll, as pressing A doesn't send you back to the intro and it doesn't save the progress to the save data. More explanations in this post. I'd also like to try if changing GBC color multiple times can allow more RNG possibilities, or delaying the GBC BIOS sequence by changing color later.
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Emulator Coder, Judge, Experienced player (730)
Joined: 2/26/2020
Posts: 783
Location: California
ThunderAxe31 wrote:
I'd also like to try if changing GBC color multiple times can allow more RNG possibilities, or delaying the GBC BIOS sequence by changing color later.
Yes and no, mostly has no effect, and when you actually get an effect, it's more because the bios is being delayed by some amount of frames (which eventually eats into the delays). Also, the main issue with console verification is that just, you kinda have to have a human to do the reset (this reset is perfectly possible for a human to perform, so console verification should be possible, although console verification will be under the "human is performing reset," and humans don't have the precision that a TAS does for resetting), as GBI's input script can't do resets (for whatever technical reason I don't know, perhaps one day it'll be possible but not today).
Editor, Reviewer, Skilled player (1359)
Joined: 9/12/2016
Posts: 1646
Location: Italy
CasualPokePlayer wrote:
(this reset is perfectly possible for a human to perform, so console verification should be possible, although console verification will be under the "human is performing reset," and humans don't have the precision that a TAS does for resetting)
I'm not sure if you're saying that it's possible or that it's not, but I have to note that the Speed Demos Archive keeps a recording of speedrun for this category: http://speeddemosarchive.com/demo.pl?PokemonRed_UberLargeSkips_SS_000 From the metadata inside the file mp4, the referring encoding time is 2013-04-09 23:32:37
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (155)
Joined: 3/17/2018
Posts: 358
Location: Holland, MI
Awesome work, I'll take a look at how the cores track cycle count through hard reset for GBI export. I tried to export the counts for my Yellow theory TAS which has 2 resets and I was getting the cycle count since the start of the TAS instead of from each power on event. GBHawk could be reporting differently.
Emulator Coder, Judge, Experienced player (730)
Joined: 2/26/2020
Posts: 783
Location: California
ThunderAxe31 wrote:
CasualPokePlayer wrote:
(this reset is perfectly possible for a human to perform, so console verification should be possible, although console verification will be under the "human is performing reset," and humans don't have the precision that a TAS does for resetting)
I'm not sure if you're saying that it's possible or that it's not, but I have to note that the Speed Demos Archive keeps a recording of speedrun for this category: http://speeddemosarchive.com/demo.pl?PokemonRed_UberLargeSkips_SS_000 From the metadata inside the file mp4, the referring encoding time is 2013-04-09 23:32:37
https://www.speedrun.com/pkmnrbyext#Any (there's a src category for it, how is sda still relevant lol) By this, I simply mean console verification will simply not have the same time as the TAS (due to the human reset likely happening later than the TAS). Just a slight asterisk in console verification.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3824)
Joined: 11/30/2014
Posts: 2832
Location: US
ThunderAxe31 wrote:
Nice job, but did you take in consideration the fact that there is a faster SRAM glitch for the Japanese version? User movie #35593301208919904 Though I'm not sure if that movie should be considered for comparison, since it fails to trigger the final routine after showing "THE END" screen at the end of the credits roll, as pressing A doesn't send you back to the intro and it doesn't save the progress to the save data. More explanations in this post. I'd also like to try if changing GBC color multiple times can allow more RNG possibilities, or delaying the GBC BIOS sequence by changing color later.
I did do some limited testing with delaying BIOS end, not that extensive since I just ended up with 10 total again (2 BIOS delay + 8 regular delay.) Here is the script I used to test stuff: http://tasvideos.org/userfiles/info/63900696766348833 You can fiddle with the palette however you want, let the game run to frame 500, make a state in slot 1, then run the script. It will brute force check the remaining 4 delay points from there. (If you are going to delay the BIOS you need to add that into the script though.) Even with Gambatte this takes a long time to run. I'm not going to look too deeply into a movie that doesn't properly call the ending.
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
Nice work, yes vote! How would I do something similar for Yellow version? I'm thinking of improving the Yellow TAS by some frames if possible, with the 10 frames improvement by MrWint without GBC load... probably more with it. I may have worded that wrong, but it's the best I could say it.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Editor, Reviewer, Skilled player (1359)
Joined: 9/12/2016
Posts: 1646
Location: Italy
I just noticed that the current movie manipulated the Trainer ID to be 0x64BD, while instead you got 0x64C3. Does the second byte make no difference, or did you have to adjust the ACE accordingly?
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3824)
Joined: 11/30/2014
Posts: 2832
Location: US
ThunderAxe31 wrote:
I just noticed that the current movie manipulated the Trainer ID to be 0x64BD, while instead you got 0x64C3. Does the second byte make no difference, or did you have to adjust the ACE accordingly?
C3? Oops it needs to be C2 to advance the ending, please replace the movie with this one (save 10 frame delay, except this one is 0,0,5,5 instead of 0,0,4,6): http://tasvideos.org/userfiles/info/63901586009883608 Other then that no it works out the same, see this post by entrpntr: http://tasvideos.org/forum/viewtopic.php?p=492203#492203
Emulator Coder, Judge, Experienced player (730)
Joined: 2/26/2020
Posts: 783
Location: California
ThunderAxe31 wrote:
pressing A doesn't send you back to the intro and it doesn't save the progress to the save data..
Looking at it, the game actually *does* save, you don't actually have to press A for the game to save, the game saves anyways a little before the song ends and when THE END is shown, and yep, if you hard reset, you can see the save made... albeit the game crashes instantly because the map script is fucked, but you can clearly see the Pokedex count is 64, so this is the "correct" save.
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
That makes sense, the map script is scrambled. I just wish the save would load normally.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Editor, Reviewer, Skilled player (1359)
Joined: 9/12/2016
Posts: 1646
Location: Italy
Ok, now this is getting complicated.
  • In this submission, as well as the current publication, the game does advance when you press A at "THE END" and does save the progress, but you can't play with the save file anymore.
  • In the Japanese version run, the game does not advance when you press A at "THE END" but it still does save the progress and you can continue playing from your save file.
So, each movie has one thing that the other run doesn't and vice versa... Then which one should be considered the "more appropriately" beating the game??
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
Alyosha wrote:
ThunderAxe31 wrote:
I just noticed that the current movie manipulated the Trainer ID to be 0x64BD, while instead you got 0x64C3. Does the second byte make no difference, or did you have to adjust the ACE accordingly?
C3? Oops it needs to be C2 to advance the ending, please replace the movie with this one (save 10 frame delay, except this one is 0,0,5,5 instead of 0,0,4,6): http://tasvideos.org/userfiles/info/63901586009883608 Other then that no it works out the same, see this post by entrpntr: http://tasvideos.org/forum/viewtopic.php?p=492203#492203
What do you mean by 0,0,5,5? Also, I can't seem to manipulate 0X64D0 or EA or anything like that in Yellow. I have tried many different frame delays, but I could only do the delays in Pokeguy's any% world record, with the soft resets.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Emulator Coder, Judge, Experienced player (730)
Joined: 2/26/2020
Posts: 783
Location: California
ThunderAxe31 wrote:
Ok, now this is getting complicated.
  • In this submission, as well as the current publication, the game does advance when you press A at "THE END" and does save the progress, but you can't play with the save file anymore.
  • In the Japanese version run, the game does not advance when you press A at "THE END" but it still does save the progress and you can continue playing from your save file.
So, each movie has one thing that the other run doesn't and vice versa... Then which one should be considered the "more appropriately" beating the game??
I would personally lean towards the former, but let's say for the sake of argument, they are equal. The English version is far more entertaining than the Japanese version (simply be, most TASVideos users use English, good example would be TCG1 and TCG2 game end glitch TASes), so, shouldn't the English version be preferred anyways for entertainment value?
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3824)
Joined: 11/30/2014
Posts: 2832
Location: US
DJ Incendration wrote:
What do you mean by 0,0,5,5? Also, I can't seem to manipulate 0X64D0 or EA or anything like that in Yellow. I have tried many different frame delays, but I could only do the delays in Pokeguy's any% world record, with the soft resets.
I don't know how to do yellow. There are 4 places to delay input in order to effect trainer ID. The 0,0,5,5 is just my shorthand for how many frames is delayed at each point. So no delay for the first two inputs, then 5 frame delay at third input and 5 frame delay at fourth input. Changing the palette is not included in this shorthand. I'm not concerned by having an invalid save file, the game was completed successfully, which is the goal.
Editor, Reviewer, Skilled player (1359)
Joined: 9/12/2016
Posts: 1646
Location: Italy
CasualPokePlayer wrote:
I would personally lean towards the former, but let's say for the sake of argument, they are equal. The English version is far more entertaining than the Japanese version (simply be, most TASVideos users use English, good example would be TCG1 and TCG2 game end glitch TASes), so, shouldn't the English version be preferred anyways for entertainment value?
This submission aims primarily for fastest-completion, so it doesn't matter if it's entertaining or not. Worst case scenario it gets accepted for Vault and obsoletes the current publication, regardless of which one is more or less entertaining than the other one.
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
Japanese Yellow would be even faster than Japanese Red, since you don't have to advance through as much text before turning off the game. I'll look into more ways for English Yellow now. But how do you change the palette?
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
Encode of the 0X64C3 version: https://youtu.be/VlQnCjd5yPo
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Emulator Coder, Judge, Experienced player (730)
Joined: 2/26/2020
Posts: 783
Location: California
DJ Incendration wrote:
What do you mean by 0,0,5,5? Also, I can't seem to manipulate 0X64D0 or EA or anything like that in Yellow. I have tried many different frame delays, but I could only do the delays in Pokeguy's any% world record, with the soft resets.
You realize that the last Yellow TAS used 0x64D0 too, and that Yellow is just slower than R/B regardless (R/B will obsolete Yellow save glitch TASes, so there's no point to this really).
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
Yes, I do realize that. I just hope to see what the TAS of Yellow with the latest BizHawk would look like.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (155)
Joined: 3/17/2018
Posts: 358
Location: Holland, MI
New cycle export Lua: https://pastebin.com/NbTRNePD I was able to use this to verify the TAS in two parts, flashing SRAM before each part.
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
I hope that you do it in one part at some point.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
I mean, if that's possible at some point.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
I'm having trouble manipulating the TID for Yellow (both versions.) What should I do to ensure an optimal TID manipulation? I don't know how to write LUA scripts or anything like that, and the closest I could find is either for an older version of BizHawk so the frame to save on is inaccurate, or is for VBA which doesn't guarantee it being optimal and VBA is obsolete.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!