Masterjun
He/Him
Site Developer, Skilled player (1968)
Joined: 10/12/2010
Posts: 1179
Location: Germany
sockfolder wrote:
From $0602, it executes some instructions based on the note in the music (I think), and tends to hit a JMP $0000 instruction (after some side effects). At $0000, there are a bunch of mostly fixed values (i.e. fixed instructions). It executes a couple of instructions based on Link's X, Y. Then it moves into a chaotic section that I don't know how to manipulate yet and in the movie, jumps to $EC6E and from there, back into the normal game play without any side effects other than the game being totally screwed up.
I can confirm that. To be more specific, Link's X position is the address of an ASL instruction, and the Y position is a new instruction (might be useful). The "chaotic section" that you are talking about is probably the area from $0018 to $0024 which looks like RNG. The bits for the 13 bytes are just shifted to the right and the leftmost bit (MSB of $0018) is determined by XORing bit 6 of the first byte and bit 6 of the second byte together (which is done before the shifting): Executing music data seems like it would be really unlikely to always execute the JMP $0000, but it actually isn't that unlikely, because there is always a 4C 00 00 (JMP $0000). The code just has to survive to there, which isn't too unlikely. The fact that a code that makes the game continue was executed IN THE RNG (or whatever those crazy addresses are) is really unlikely... (well, due to the shifting of the crazy addresses, the JMP $EC6E does indeed pop up at 11 different times, but still, actually getting those values in the first place is unlikely...) Edit: Oh and of course... the JMP $EC6E which is 4C 6E EC in bytes isn't actually 4C 6E EC to begin with. It is actually 4C 6E F6, but the UNDEFINED instruction (1F) at $0614 actually shifts $0021 one bit to the left, which happens to be the F6 which is shifted to EC... wow.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Player (248)
Joined: 1/26/2014
Posts: 14
Nice job figuring out that section. That is certainly an interesting way to do RNG. Using that memory would require frame precision. Timing that with the right music note would also be hard. I didn't see any way to get something useful with the Y instruction. Feels like we need the music to do something else to make this possible real time (my primary interest).
Editor, Skilled player (1502)
Joined: 7/9/2010
Posts: 1317
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Joined: 12/29/2007
Posts: 47
Editor, Skilled player (1502)
Joined: 7/9/2010
Posts: 1317
Isn't it possible to glitch warp all throught level 9?
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Joined: 12/29/2007
Posts: 47
Other than the starting point, it was not possible to warp to the other room.
Editor, Skilled player (1502)
Joined: 7/9/2010
Posts: 1317
RAT926, did you know you can prevent crashes caused by glitch warping by pausing the game with Start. There's also another item for warp glitching: User movie #22661854390314577. A better one: User movie #22662980833139671 Here's an optimized WIP up to the graveyard: User movie #22658755306120550
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Editor, Skilled player (1502)
Joined: 7/9/2010
Posts: 1317
For those who are interested: The glitch items happen to become available in the routine at $EC6E. It overwrites the values of a large chunk in the RAM including items available and the item index at $0656. The item index needs to be greater than 8 to use the glitch items, preferably $66, because that is the index for the warp bomb. The flag wheter this item is possesed or not is at $06BD for the warp sword at $06CF. All flags for glitch items need to be true, else the item index jumps back to the nomal items if it hits a false flag to some extend, I think if there are to much zeros between to addresses it jumps back. It might be possible to write a routine into the enemies positions, but manipulating 11 enemies is a horrible task, plus other stuff the to be at good condition too.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Skilled player (1703)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
That got me thinking. Since there's already a 2nd quest category, a swordless and also a 100%ish, would it be fair that a warped route obsolete the any%? Mind you, the any% route also has the "heavy glitch abuse" tag too.
Joined: 7/13/2014
Posts: 36
jlun2 wrote:
That got me thinking. Since there's already a 2nd quest category, a swordless and also a 100%ish, would it be fair that a warped route obsolete the any%? Mind you, the any% route also has the "heavy glitch abuse" tag too.
I think there's an interesting difference between this new warp route and the existing any% route, which more or less resembles the way humans play the game, only with inhuman precision and luck. I like the idea of having both runs listed. Just my 2¢.
Skilled player (1703)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Nickolas wrote:
jlun2 wrote:
That got me thinking. Since there's already a 2nd quest category, a swordless and also a 100%ish, would it be fair that a warped route obsolete the any%? Mind you, the any% route also has the "heavy glitch abuse" tag too.
I think there's an interesting difference between this new warp route and the existing any% route, which more or less resembles the way humans play the game, only with inhuman precision and luck. I like the idea of having both runs listed. Just my 2¢.
Wouldn't the any% be more like this this though: [1205] NES The Legend of Zelda "2nd quest" by Baxter & Morrison in 24:59.83 Which may make it somewhat redundant?
Joined: 7/13/2014
Posts: 36
jlun2 wrote:
Wouldn't the any% be more like this this though: [1205] NES The Legend of Zelda "2nd quest" by Baxter & Morrison in 24:59.83 Which may make it somewhat redundant?
I must admit some confusion. I watched RAT926's glitch route in 05:47 video and it's qualitatively very different than the existing any% video. I think there's value in having both. Where do you perceive redundancy?
Skilled player (1703)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Nickolas wrote:
jlun2 wrote:
Wouldn't the any% be more like this this though: [1205] NES The Legend of Zelda "2nd quest" by Baxter & Morrison in 24:59.83 Which may make it somewhat redundant?
I must admit some confusion. I watched RAT926's glitch route in 05:47 video and it's qualitatively very different than the existing any% video. I think there's value in having both. Where do you perceive redundancy?
Other branches cover what the any% do and more.
Editor, Skilled player (1502)
Joined: 7/9/2010
Posts: 1317
The glitched TAS will not obsolete the current 2nd quest TAS. In the glitched run none of the dungeons are beaten, if game end glitch works out, the 2nd dungeon is visited to get the flute. In case game end glitch doesn't work, the last dungeon is beaten by warping to the room with Zelda. Also I don't even know why the published runs are tagged with heavy glitch abuse, the screen wrapping can be done by real time runners.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Skilled player (1703)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
TASeditor wrote:
The glitched TAS will not obsolete the current 2nd quest TAS. In the glitched run none of the dungeons are beaten, if game end glitch works out, the 2nd dungeon is visited to get the flute. In case game end glitch doesn't work, the last dungeon is beaten by warping to the room with Zelda. Also I don't even know why the published runs are tagged with heavy glitch abuse, the screen wrapping can be done by real time runners.
I was thinking more of the warped route obsoleting the any%, since all other categories showcase the game more. I linked the 2nd quest because people seemed to think the any% was unique, but then what does the current any% (if it remains) offer that's different from the other categories? Sorry for the confusion.
Skilled player (1399)
Joined: 5/31/2004
Posts: 1821
jlun2 wrote:
I was thinking more of the warped route obsoleting the any%
The glitch does not work on the (U) version.
Skilled player (1703)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Baxter wrote:
jlun2 wrote:
I was thinking more of the warped route obsoleting the any%
The glitch does not work on the (U) version.
I recall other TASes using different regions because its faster. Like OoT. Why would this warrant a new category? Isn't there enough categories for this game already? What more of the game can the existing any% show compared to others?
Joined: 11/26/2010
Posts: 444
Location: New York, US
I personally don't see why the current runs are labeled Heavily Glitched. To be honest I believe this warrants another category.
My name is 4N6/Forensics.
Skilled player (1399)
Joined: 5/31/2004
Posts: 1821
jlun2 wrote:
Baxter wrote:
jlun2 wrote:
I was thinking more of the warped route obsoleting the any%
The glitch does not work on the (U) version.
I recall other TASes using different regions because its faster. Like OoT. Why would this warrant a new category?
The (J) version of OoT has faster text. It doesn't feature any glitches that are not possible on the (U) version as far as I know. If the any% (U) version had a completely different route due certain glitches not being possible, then there probably would have been multiple versions.
jlun2 wrote:
Isn't there enough categories for this game already?
Any% first quest and any% second quest seem like obvious goals. The first TASes for these categories are nearly as old as the site. About the 100% first quest and the swordless first quest, you can debate. (I personally wasn't the person who first submitted these runs. They were judged like any other run and apparently there was enough support to publish these categories.)
jlun2 wrote:
What more of the game can the existing any% show compared to others?
You can ask the same question for any other game that features a 100% run. This particular run shows a unique route compared to the 100% run (and less arbitrary goals), which can't be said for all any% TASes. I think the main reason people enjoy any% TASes in general is that it truly shows the fastest way to beat the game.
Skilled player (1703)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Editor, Expert player (2310)
Joined: 5/15/2007
Posts: 3854
Location: Germany
Can someone post a small movie/savestate near Zelda, 2nd quest, Japanese version 1.1? The glitch TAS desyncs for me on all Fceux versions I try. Sorry, it turns out I don't need it anymore.
Player (248)
Joined: 1/26/2014
Posts: 14
I made a real time full total control method (i.e. you can execute arbitrary code of arbitrary length), though it can be adapted and improved for TAS. Then the goal would be to find the minimum instructions needed to beat the game. Also, I didn't realize sadly that you can add characters after ZELDA and still get second quest, so this method can be improved easily. So first, if you trigger the glitch with AB, then you branch based on the note of the music. If you get a large branch, you actually jump just before the names of your files. That is, you just execute your names as code. The major limitation is the name characters only go up to $64. My (now obsolete) strat is first set the first two names with the bytes:
File 1:
$0e 45 06   ASL $0645
$46 12      LSR $12   // Reload first are
$46 16      LSR $16   // Change active file to file 1
$60         RTS

File 2:
$33 02      RLA(0x02), Y
$4C 38 06   end: JMP start ($0638)
$36 2F 64   input: JMP ($642f)	 // Turns into $6C 2F 64
This changes the second name and saves it. Then you rename the first file for the final code package:
File 1:
$20 45 06   start:	JSR input ($0645)
$0A         ASL A
$0A         ASL A
$0A         ASL A
$10 02      BPL end (#$2)

File 2:
$33 02      RLA(0x02), Y
$4C 38 06   end: JMP start ($0638)
$6C 2F 64   input: JMP ($642f)
In the first pass, it changes the second file name to bypass the character limit. Then the second pass does a loop calling the "retrieve input" subroutine. Reg. A is the buttons just pressed, and reg. Y is the complete set of buttons held. It writes on a start press, shifting in whether or not select was pressed at that time into a register determined by Y. In short, the location you write is determined by A, B, and the directions. You shift in a 1 if you hit select and start at the same time, and you shift in a 0 if you hit select before start. Using this you can write more code, and you escape the tight loop by first breaking an ASL instruction, and then breaking the JMP. Now that I know you have 3 more bytes from the ZELDA file name, the above method could be done in a single pass. Also, TAS can use other things such as ghost position for addition instructions. One question is, what exactly is the minimum to call credits?
Masterjun
He/Him
Site Developer, Skilled player (1968)
Joined: 10/12/2010
Posts: 1179
Location: Germany
You genius. I'm gonna try to figure out some credits requirements.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Joined: 3/17/2010
Posts: 33
Baxter wrote:
The (J) version of OoT has faster text. It doesn't feature any glitches that are not possible on the (U) version as far as I know. If the any% (U) version had a completely different route due certain glitches not being possible, then there probably would have been multiple versions.
The N64 NTSC releases are identical save for a character that sets the game language, but there are a set of wrong warps that behave differently because a different language is used. Reason is that with these warps the cutscene pointer ends up pointing to a space that previously had a texture with text on it, but was not overwritten. I don't think any major routes are affected by this though. GIM could potentially be affected for similar reasons, but we'd need to find a special way to trigger Get Item Delay. OoT in general is messed up though because the current any% route is impossible on a proper N64 emulator.
Joined: 12/29/2007
Posts: 47
This route is 10F fast. Please use in the next run.