Fortranm
He/Him
Editor, Experienced player (879)
Joined: 10/19/2013
Posts: 1122
Skilled player (1743)
Joined: 9/17/2009
Posts: 4986
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Kinda late, but given all the new discoveries, would there be any thing thats applicable to this old run: [1639] SGB Pocket Monsters: Green "warp glitch" by p4wn3r in 04:24.37 It's also from 2010, uses a poorly emulated SGB mode (vba back then at least apparently wasn't emulating it right at least).
Fortranm
He/Him
Editor, Experienced player (879)
Joined: 10/19/2013
Posts: 1122
Maybe it's a good idea to determine whether there is still a relatively non-arbitrary category/goal for the application of this glitch. "No SRAM corruption, no ACE" should work?
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (155)
Joined: 3/17/2018
Posts: 358
Location: Holland, MI
Gifvex has done an NSC TAS since the new RTA discoveries http://tasvideos.org/5859S.html
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I wanted to take another look at the save corruption run since it doesn't include BIOS time and timer emulation is now console accurate. The first thing i wanted to check is if there are any easy manipulations in CGB in GBA mode for red, since it has console verifiability and the color bios is much shorter then the gb bios. There are 4 places you can delay to do TID manipulation, from masterjun's old submission here are the values we want for the second byte (the birst one needs to be 0x64): 0x11, 0x13, 0x15, 0x16, 0x17, 0x1A, 0x1B, 0x1D, 0x5A, 0x71, 0x76, 0xCF, 0xD0 and 0xEA. Also in Mrwint's submission we see that 0xBD is possible as well. Here is a complete list of possiblities with delay values 0-9 for each of the four inputs (starting from the first possible frame each input is selected.)
CGBinGBA	         CGB		         GB
0 8 0 9 0x38		0 3 7 5 0x50		0 9 1 2 0x48
0 8 1 8 0x37		0 3 8 4 0x50		0 9 2 1 0x48
0 8 3 6 0x39		0 3 9 3 0x50		0 9 3 0 0x47
1 6 7 6 0x6D		0 4 0 1 0x54		0 9 6 1 0x94
1 6 8 5 0x6D		0 4 0 3 0x78		0 9 7 0 0x95
2 3 3 8 0x6A		0 4 1 0 0x54		1 4 2 9 0x9A
2 3 4 7 0x68		0 4 1 2 0x78		1 4 5 6 0x9A
2 3 5 6 0x67		1 0 0 4 0x65		1 4 6 5 0x99
2 3 7 4 0x67		1 0 1 3 0x65		1 4 8 3 0x9A
2 5 8 1 0x37		1 0 2 2 0x66		1 9 2 7 0xC5
3 5 8 9 0xDA		1 3 1 4 0xE6		1 9 4 5 0xC6
3 5 9 8 0xDB		1 7 8 1 0x65		1 9 7 2 0xC5
3 8 0 9 0x6E		1 7 9 0 0x66		2 0 6 5 0x70
3 8 1 8 0x6F		1 8 5 0 0xF7		2 1 7 7 0xBD
3 8 3 6 0x6F		1 9 1 4 0x07		2 6 2 8 0xBD
3 8 6 3 0x6E		2 4 0 6 0xD2		2 6 5 5 0xBE
3 8 7 2 0x6E		2 4 0 8 0xF8		2 6 7 3 0xBE
3 8 8 1 0x6E		2 4 2 4 0xD2		2 7 8 9 0x94
3 9 2 4 0x42		2 4 2 6 0xF8		2 7 9 8 0x95
3 9 3 3 0x43		2 8 0 6 0x1F		2 8 0 1 0x30
3 9 8 6 0xD6		2 8 1 8 0x58		2 9 0 3 0x6F
4 3 9 5 0xC6		2 8 2 4 0x1F		2 9 1 2 0x6F
4 7 1 8 0xA9		2 8 3 3 0x20		2 9 2 1 0x6F
4 7 9 0 0xA8		2 8 5 1 0x21		2 9 8 9 0x78
6 2 3 8 0x5E		3 3 7 0 0x2A		2 9 9 8 0x78
6 2 4 9 0x82		3 7 7 2 0x91		4 0 8 5 0xB8
6 2 5 6 0x5D		3 7 8 1 0x91		4 6 7 9 0x4E
6 2 7 6 0x81		4 8 5 8 0xC8		4 9 0 0 0x5B
6 2 8 5 0x82		4 8 6 7 0xCA		4 9 2 0 0x80
6 2 9 2 0x5F		4 8 8 5 0xC8		5 5 4 9 0x23
6 9 3 7 0xC1		7 2 5 9 0x9F		5 5 5 8 0x23
6 9 4 6 0xC1		7 4 5 9 0xC9		5 5 7 6 0x21
6 9 6 4 0xC2		7 4 6 8 0xC7		5 5 8 5 0x21
6 9 9 1 0xC2		7 6 6 6 0xC9		5 5 9 4 0x21
8 1 5 8 0xA4		7 6 9 3 0xC9		5 8 6 8 0x5F
8 1 7 6 0xA4		8 0 0 2 0xC1		6 4 7 8 0x37
8 6 7 2 0xA7		8 0 1 1 0xC1		6 6 0 4 0x93
8 6 8 1 0xA6		8 0 2 0 0xC1		6 6 1 3 0x94
8 7 0 3 0x86		8 2 0 3 0xE7		6 6 3 1 0x93
8 7 1 8 0xF2		8 2 2 1 0xE7		6 6 4 0 0x93
9 0 1 8 0x59		8 3 1 8 0xB4		6 8 5 9 0x73
9 1 0 4 0x14		8 3 9 0 0xB7		6 8 7 7 0x72
9 1 2 2 0x14		9 6 2 9 0xDC		7 6 4 2 0xCC
9 3 8 4 0x06		9 6 3 8 0xDD		7 7 6 9 0xCE
9 3 9 3 0x06		9 6 6 5 0xDC		7 7 8 7 0xCE
         			9 6 7 4 0xDC		8 1 7 9 0x51
	         		9 6 8 3 0xDC		8 1 8 8 0x51
	         		9 8 0 8 0xC8		8 4 7 8 0x60
	         		9 8 1 7 0xC7		8 8 3 6 0x3E
	         		9 8 2 6 0xC7		8 8 6 3 0x3D
		         	9 8 8 0 0xC7		8 9 4 0 0xF1
	                 	 				9 0 7 8 0x3F
		                  				9 0 8 7 0x3F
		                  				9 5 3 6 0x27
		        	          			9 5 4 5 0x28
		                	  			9 5 5 4 0x28
		                	  			9 8 8 5 0x95
So, none of them work in GBA mode. I'll try again for normal CGB mode, and the for GB mode and update this post with results. EDIT: done for CGB, no positive results. EDIT2: So it looks like at least for red, the only viable options are 2 1 7 7 and 2 6 2 8 in GB mode. Not sure if any of these other values have any usefulness. Also I'm not sure how big MrWint's original search space was. technically I guess I'd need to look up to 17 since that's the amount of delay in the current run, but that's beyond the current scope of what I wanted to do. http://tasvideos.org/userfiles/info/59639073305669766 Here is a resynced run of MrWint's movie to the current BizHawk builds. With a time of 1:21, it's quite a lot longer then the publication would indicate. If the yellow version run also worked, it would be several seconds faster since it uses the CGB instead, so my personal opinion is that yellow should be able to obsolete this one.
Joined: 7/10/2016
Posts: 10
Alyosha wrote:
There are 4 places you can delay to do TID manipulation, from masterjun's old submission here are the values we want for the second byte (the birst one needs to be 0x64): 0x11, 0x13, 0x15, 0x16, 0x17, 0x1A, 0x1B, 0x1D, 0x5A, 0x71, 0x76, 0xCF, 0xD0 and 0xEA. Also in Mrwint's submission we see that 0xBD is possible as well.
These are specific to the Pokémon Yellow TAS menu swaps; those are map ids for maps in bank $16 (2nd byte gets swapped to current map where the Hall of Fame scripts are located). For the Pokémon Red/Blue TAS menu swaps, the 2nd byte of the TID is used as part the map script address (map still in bank $16, but it's set from other memory). The 2nd byte can be one of: 0xBB, 0xBD, 0xBE, 0xC1, 0xC2, 0xC3, 0xC6. The following image shows why: Note that 0xBB is 3 frames slower than the others due to the Delay3. Also 0xC3 will leave the A and B buttons disabled, so you need the shortest Hall of Fame Text (TAS timing aims for this anyway so that inputs stop earlier). Predef $55 corresponds to HallOfFamePC.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Wow I'm dumb, I didn't even realize that I was looking at the completely wrong set of values. I just tried 8,0,0,2 in GBC and indeed it makes it to the end. So I guess GBC version can be submitted since it's faster. Too bad good values are so much slower in the GBC in GBA version. Here's a file: http://tasvideos.org/userfiles/info/61505883417763093
Joined: 7/10/2016
Posts: 10
There are also options for inputs in the bootrom that only delay by cycles rather than frames. There are 6 unique RNG outcomes without wasting any frames, described below by the "methods" to achieve them: (1) no inputs in bootrom (as is done in the posted userfile) (2) "tapping a palette" (press and release) at first possible input window in the bootrom (3) pressing/holding one of A/B/Start/Select in the bootrom (4) "holding a palette" through the bootrom The last two are complicated to explain; the easiest way to achieve them involves (a) holding a dpad button in the first possible input (frames 0-11 in TAStudio), (b) specific inputs during a 16 frame window in the middle of the bootrom (frames 70-85 in TAStudio): (5) Hold the dpad input through the bootrom, add A or B as a held input starting sometime between frames 70-85 and hold it until the end of the bootrom (6) Hold the dpad input during frames 0-11, release it frame 12, hold dpad input again starting from frames 70-85 and hold it until the end of the bootrom Hopefully I explained the methods well enough. There are other ways to achieve the same RNG as one method or another, but ultimately there are only 6 unique cycle offsets to exit the bootrom from without losing frames. Also worth noting that for GBC, method 2 results in unique "RNG", and for GBA, method 3 results in unique "RNG". Since GBC in GBA bootrom is just +4 cycles compared to GBC, the other methods have a correlate between the two platforms, as all methods finish the bootrom at consecutive multiples of 4 cycles apart (fwiw, the order of fastest to slowest method is 2->6->1->4->5->3, but I think that's just "luck" in where it escapes the final waitloop in the bootrom). This also means we could verify that previous userfile (or most other GBC movies) for GBC-in-GBA; method 1 in GBC matches method 6 in GBA, for instance. (For TAS, this stuff really only matters for the Red/Blue "SRAM glitch" run to my knowledge, since TID is the only hard luck manip requirement that exists. For RTA, this consistent source of variance is a blessing.)
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Good idea. I don't have time right now to bot it up though. Are you going to give it a try? If not I'll look into once I have finished a few of the other things higher up on my TODO list maybe in a couple months.
Joined: 7/10/2016
Posts: 10
I'm not too likely to search for a faster one, but it's not impossible I'll give it a try. That bit of knowledge about the bootrom only became "complete" a few months ago. Thought I should mention it before anything was submitted, and it's probably good to have the idea documented in general.
MarbleousDave
He/Him
Player (13)
Joined: 9/12/2009
Posts: 1560
Since now we can have 4 games running at the same time, how about doing a co-op diploma for all 4 versions. Of course it'll all be in Japanese since only 3 versions were localized overseas. The Japanese versions are incompatible with the overseas versions. On the 3DS versions, they added region locking in the communications so the Japanese 3DSes can't communicate with the overseas 3DSes specifically to these versions of Pokemon.
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
That seems like a cool idea. Speaking of the Japanese games, there should be an update to the single SRAM glitch movies. Japanese Yellow is the fastest out of the four games, since you don't have to advance through as much text before turning the power off. A resync of English Yellow may also be a good idea. Here are the TIDs I'm trying to manipulate (without success): English Yellow: 0x64D0/EA Japanese Yellow: Byte 1=0XD1 or 0XF1
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
I'm no good at LUA scripting. I read through the manual, but couldn't understand a lot of it, even though I took a computer programming class in school.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Emulator Coder, Judge, Experienced player (732)
Joined: 2/26/2020
Posts: 791
Location: California
DJ Incendration wrote:
Speaking of the Japanese games, there should be an update to the single SRAM glitch movies. Japanese Yellow is the fastest out of the four games, since you don't have to advance through as much text before turning the power off.
That's just natural for Japanese, since its grammar makes text very compact. However, that timesave does not count for comparing movies: http://tasvideos.org/MovieRules.html#JVsU
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
No, actually, if you compare Japanese Red to Japanese Yellow, you'll notice two less text boxes in Japanese Yellow that you have to click through to save. I'll give you two user files (ignore the trainer names) to compare.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
Here's how long it takes to do the SRAM glitch in Japanese Red and Yellow. Japanese Yellow: http://tasvideos.org/userfiles/info/64006462748476895; time (with default names): 00:45.37 (may be a different frame for turning on the GBC than RED) Japanese Red: http://tasvideos.org/userfiles/info/64006259231510984; time: 00:46.51
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Emulator Coder, Judge, Experienced player (732)
Joined: 2/26/2020
Posts: 791
Location: California
DJ Incendration wrote:
No, actually, if you compare Japanese Red to Japanese Yellow, you'll notice two less text boxes in Japanese Yellow that you have to click through to save. I'll give you two user files (ignore the trainer names) to compare.
So you're just proving my point that your timesave is just less text? As I said, Japanese is very compact. These timesaves do not count for comparison. Of course, if the actually glitchery itself has less swaps and that is faster, then that would count, but I have no idea about that.
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (155)
Joined: 3/17/2018
Posts: 358
Location: Holland, MI
DJ, CPP is saying that whether it's JPN Red or Yellow, the movie rules don't allow for a movie obsoleting another just due to text differences in languages. You may be correct that Yellow is the fastest among the JPN games, but it's irrelevant because neither would be accepted over the current publication unless an entirely different glitch was found.
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
In addition to text differences, the route is faster for the Japanese games. In English Red, you switch Pokémon 4 with 13, then 12 with 11, then 10 with 13. Then, switch item 1 with 5, then 3 with 13. After all of that, switch Pokémon 17 with 22 and then 23 with 18. In the Japanese versions, name your character with a certain name (version-dependent), then swap pokemon 7 with 8, 9 with 10, and then 15 with 26. No item switches required. There's an actual improvement in the Japanese games.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Emulator Coder, Judge, Experienced player (732)
Joined: 2/26/2020
Posts: 791
Location: California
Did some botting for TIDs and I've gotten fairly big lists for R/B TID manips, these should be useful for anyone looking to do any TAS glitching. https://www.dropbox.com/s/opetsatw1iij96r/red_tas_tids.txt?dl=0 https://www.dropbox.com/s/xoa3kfzx2rqvtf9/blue_tas_tids.txt?dl=0 EDIT: Added updated Red TID list, Blue is still outdated though, although it probably doesn't matter.
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
Thank you for that! I have a few questions, though: On the lines that say: red_pal(rel5)_gfskip1_hop1_title2_newgame5: TID = 0x765E (30302), Cost: 667144 Cycles" and "blue_pal(ab1)_gfskip6_hop0_title3_newgame1: TID = 0x765E (30302), Cost: 667830 Cycles", what do red_pal(rel5), blue_pal(ab1), gfskip6 and hop mean? I'm guessing the numbers (Title2 and newgame5), title2 means waiting for Charmander to be scrolled to the next pokemon, but I don't know for newgame0/1. Also, which input combinations would give those TIDs?
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
I mean, gfskip (any number, be it 6, 0, 4, etc.)
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Emulator Coder, Judge, Experienced player (732)
Joined: 2/26/2020
Posts: 791
Location: California
DJ Incendration wrote:
title2 means waiting for Charmander to be scrolled to the next pokemon
This isn't an RTA list. The numbers for gfskip, hop, title, and newgame all represent the amount of frames of delay used in each section. Waiting for the next mon to be scrolled would take way too much time (really, any strat that takes more than 20 frames is not viable for a TAS). For the pal strats, they are mostly the same entrpntr as explained earlier in this thread:
entrpntr wrote:
(1) no inputs in bootrom (this is nopal) (2) "tapping a palette" (press and release) at first possible input window in the bootrom (this is pal) (3) pressing/holding one of A/B/Start/Select in the bootrom (this is nopal(ab)) (4) "holding a palette" through the bootrom (this is pal(hold)) (5) Hold the dpad input through the bootrom, add A or B as a held input starting sometime between frames 70-85 and hold it until the end of the bootrom (this is pal(ab)) (6) Hold the dpad input during frames 0-11, release it frame 12, hold dpad input again starting from frames 70-85 and hold it until the end of the bootrom (this is pal(rel))
But now the pal strats have numbers in front of them. They are just the amount of frames that you delay the BIOS end (multiplied by 2, since the BIOS only accepts inputs every 2 frames and such only delays every 2 frames). To do this, you simply do the strat, but the last palette swap is done on frame (87 + 2x) where x is the number on the pal strat. So pal1 changes their pal on frame 89, 2 changes on 91, etc etc. Then there are the "funky" strats, which I've found on my own. Simply, they are like strats that delay the BIOS end, but you double change the palettes. So say on pal2funky, you change the pal on frame 89, and again on 91. Although only pal and pal(hold) have unique RNG this way, pal(ab) and pal(rel) ends up duplicating it. Hope this explains them all. (also, the frames are on Gambatte with EFL off) (also, as another note, the cost will be higher on Blue, since it will be taking into account the title screen being 7 frames slower than Red).
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
So for that line in Red version means: Hold the dpad input during frames 0-11, release it frame 12, hold dpad input again starting from frame 97 and hold it until the end of the bootrom, right? I'm just making sure because I'm finding it hard to understand, still.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Emulator Coder, Judge, Experienced player (732)
Joined: 2/26/2020
Posts: 791
Location: California
DJ Incendration wrote:
So for that line in Red version means: Hold the dpad input during frames 0-11, release it frame 12, hold dpad input again starting from frame 97 and hold it until the end of the bootrom, right? I'm just making sure because I'm finding it hard to understand, still.
Yes, that's correct.