Movie made using the TAS editor in FCEUX v2.2.2. For those of you not familiar with Shadowgate, it's a point-and-click puzzle adventure game where you play as a glasses-loving, suicidal hero who must defeat the evil warlock.
The following apply:
  • uses death to save time
  • Corrupts memory
  • Major skip glitch
This run saves approximately 3 minutes and 24 seconds or 12,291 frames over the previous run.

Improvements

The main improvement over the previous run is the discovery of a large-skip glitch using the glasses trick. When interacting with the unlabeled item spaces past the end of the normal inventory, it's possible to execute random memory as a command. I use this to execute the command that is normally called when defeating the final boss.

About the skip

The familiar glasses trick makes its return, which allows us to overflow the inventory past its intended bounds. The memory just after the inventory -- memory accessible to us after overflowing -- contains flags about the current item state in the world. You can continue to overflow past these flags and access memory containing torch burn duration, sprite animation frame counters, etc. but for this run we don't use anything past the flags.
The goal of this run is to manipulate item state so that we can use an invalid item code with value #$DD (though this is not the only usable value for this glitch). In certain rooms, this results in executing the end-of-game event, defeating the behemoth. After using an action on an item, the game has a series of lookup tables to figure out what scripting command to execute as a result. It first looks by type to ensure the verb is appropriate, then by specific item code. By using the world-state flags as item values, we gain access to a large number of invalid values, i.e. values that don't correspond to an actual item. When taking an action on invalid values, garbage data gets interpreted as a list of addresses to load the resulting event from. In this case, the resulting address points to palette data for the current screen. In this room the palette data at the loaded address is value #$50, which is the value for the command to run the end-of-game event.
In order to get value #$DD in memory, we raise the bucket in the courtyard well and take the torch from the red carpet hallway.
Many thanks to HHS for details about how this skip works.

About the route

The actual setup for the skip is on the way to getting the glasses, which are the only other prerequisite for the glitch. So, the main goal is to get to the library as quickly as possible.
The main time saver early on is to die and continue to get into the fire drake room without the cloak -- this saves detouring by 3 rooms and a lot of actions.
I take 3 stones instead of 1 in the waterfall room for the sake of inventory management. Taking these extra 2 prevents having to change inventory pages somewhere along the route. Almost any item saves time to pick up if it prevents page turns, because having more items also saves time later when trying to overflow the inventory with glasses. These 3 were the fastest items to take, and additional items do not prevent any more page turns.
During the inventory overflow section (while taking the glasses repeatedly), I avoid having to scroll through the entire inventory by ensuring we have no torches, so the one I pick up goes to the end of the list. Lighting a torch during this section is not required -- the other strategy is to use a room where torch charges don't diminish. Randil used this alternate strategy in the previous run. However, the closest rooms with this property take more time to travel to than simply using the torch.

Making of

Many years ago I thought a skip like this might be possible, and managed to find it despite lack of tools. However, I was unable to reproduce it, and so abandoned it.
The first steps were to spend a few days doing a test run and re-finding the original skip. After that I worked on optimizations and inventory management for a while.
Most of the work this time around was spent on figuring out which values could be used to do the skip and where the skip could be done. The second question was handily answered by HHS, but for the first I tested every invalid value with every possible verb in a few rooms. This was done to be sure I had the fastest skip and the fastest setup. I wrote a python script to calculate the possibilities and the setups for these to help with this process.

Potential further improvements

Having tested all possible invalid values, I can confidently say that there remains no known significant improvement to a route using this skip. This route takes barely any actions past a basic inventory overflow, so the most I see any glasses glitch related skip saving is maybe 100-300 frames.
I did find that certain invalid item values ended up pointing to frame-variable data, which I have used to successfully run the end-of-game event once. This could potentially lead to a room-independent skip that could avoid moving rooms and reduce the inventory actions needed. However, the only setup I found to do this required waiting a large number of frames before the data was the correct value, and so was much slower.
Of course, any additional glitch/skip discoveries in the early rooms would save time.

Major thanks to

  • HHS, for providing details on his disassembly and for helping me understand various technical details.
  • Randil, for advice, data, and scripts to help me out during testing, and also for his previous movie, from which input and strategies were heavily reused.
  • Jiseed, a runner who originally showed that the skip was possible in the grand hall. My original route at the time backtracked to an early room. This finding pushed me to test every invalid value in relevant rooms and generally make sure I was using the fastest setup.
  • Everyone else who participated in the Shadowgate thread now and so many years ago -- reading through it has been immensely helpful.

Tompa: I'll judge this!
Tompa: It's interesting to see that this, not incredibly complex, game still have new things up its bytes 11½ years after the first TAS!
Congrats on your first submission, and a very good one too. Accepting as an improvement to the published movie and will also give back the moon!
Spikestuff: Glasses.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14876
Location: 127.0.0.1
This topic is for the purpose of discussing #4851: Zekna, Randil's NES Shadowgate in 04:17.48
Skilled player (1885)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Frame 8200: "What? I can't walk through flames? I don't deserve to continue this quest! *thrusts spear through heart*" This is a beautiful piece of work that I think really shows what gems you can find if you dig deep enough into the game's mechanics and how it shuffles memory in the RAM. As I've said before, really great work on this, I'm very happy that new people show interest in storybook TASing :) Yes vote, of course. Deja Vu next? I wouldn't be surprised if the bullet underflow trick can be used in a similar way (I know I've been able to teleport back to the first room in the game, so there are some major stuff that can happen).
Joined: 3/12/2013
Posts: 36
Location: Bullhead City, AZ
Damnit, I wish I had an emulator to watch this on right now. This sounds amazing.
Player (28)
Joined: 8/10/2015
Posts: 22
I made a quick encode for viewing convenience: Link to video And thank you Randil! I was definitely planning to at least look into the bullet underflow glitch, so I may be messaging you asking for details sometime soon :)
Player (79)
Joined: 8/5/2007
Posts: 865
mklip2001
He/Him
Editor
Joined: 6/23/2009
Posts: 2224
Location: Georgia, USA
Wow. That's pretty nuts. Great job! Would the death abuse also speed up a run without large skips? It amazes me that death could possibly save time in this game :)
Used to be a frequent submissions commenter. My new computer has had some issues running emulators, so I've been here more sporadically. Still haven't gotten around to actually TASing yet... I was going to improve Kid Dracula for GB. It seems I was beaten to it, though, with a recent awesome run by Hetfield90 and StarvinStruthers. (http://tasvideos.org/2928M.html.) Thanks to goofydylan8 for running Gargoyle's Quest 2 because I mentioned the game! (http://tasvideos.org/2001M.html) Thanks to feos and MESHUGGAH for taking up runs of Duck Tales 2 because of my old signature! Thanks also to Samsara for finishing a Treasure Master run. From the submission comments:
Shoutouts and thanks to mklip2001 for arguably being the nicest and most supportive person on the forums.
Editor, Experienced player (894)
Joined: 1/23/2008
Posts: 529
Location: Finland
Those glasses are like something straight out of a cosmic horror story. Sure, the run is short and glitchy, so a yes vote.
Player (28)
Joined: 8/10/2015
Posts: 22
mklip2001 wrote:
Wow. That's pretty nuts. Great job! Would the death abuse also speed up a run without large skips? It amazes me that death could possibly save time in this game :)
Thank you! On a glitchless run, the death abuse there won't save time, because you need to go to the area where the cloak is for several other things required to beat the game. So just picking it up on your way is faster than killing yourself. In a run where you're still using the glasses glitch but no large skips, the death could speed it up if you create the other items that're nearby the cloak via the glasses glitch, and then skip the whole section altogether.
ars4326
He/Him
Experienced player (764)
Joined: 12/8/2012
Posts: 706
Location: Missouri, USA
Now THAT was an entertaining surprise at the end! It's always nice to see new tricks discovered for old games like these, even in 2015 :D
"But as it is written, Eye hath not seen, nor ear heard, neither have entered into the heart of man, the things which God hath prepared for them that love him." - 1 Corinthians 2:9
d-feather
He/Him
Joined: 2/12/2015
Posts: 149
Location: Everett, WA
Bobo the King wrote:
My sentiments exactly, Bobo the King. Also, I watched the WIP of this run in this game's thread a while back. Yes vote.
:shrug: I'm more active on Twitter nowadays: @HunterCoates5
QuizmasterBos
He/Him
Joined: 6/23/2013
Posts: 136
Awesome run! Might I suggest this image for the publication?
Skilled player (1706)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
This was nice and short. I support this obsoleting the current run since as much as I like fast menu action, 7+ minutes just wears on my patience.
Editor, Expert player (2459)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
Pussycat likes this trope.
Skilled player (1650)
Joined: 7/1/2013
Posts: 433
You have chosen an excellent first project. The current publication for this game may be my favorite TAS on this site. I am thrilled to see further improvement! YES to dead genres! (And by extension, yes to Déjà Vu and yes to Uninvited, as well.) Obvious bias aside, I would like to see runs of this game stop bouncing between Moons and Vault, and be placed in Stars Tier.
Joined: 9/1/2014
Posts: 58
Very interesting skip with a satisfying graphical glitchfest to end on. The actual set-up spamming the glasses also didn't take very long to do so it didn't lower the entertainment as a result.
Enjoys speedruns but hasn't actually tried making any yet.
Post subject: Re: #4851: Zekna & Randil's NES Shadowgate in 04:17.48
Editor, Experienced player (608)
Joined: 11/8/2010
Posts: 4012
TASVideoAgent wrote:
where you play as a glasses-loving, suicidal hero who must defeat the evil warlock.
I was going to say, I don't remember the hero being suicidal in the last run! That's what I get for reading the description before watching the movie. Nice improvement with a cool glitch with a funny result at the end! Yes vote.
Skilled player (1768)
Joined: 5/7/2008
Posts: 187
Location: Japan
Bobo the King wrote:
GLASSES GLASSES GLASSES GLASSES GLASSES YES VOTE GLASSES
Joined: 1/13/2007
Posts: 335
hilarious. i actually solved that room that way my first time, and got stuck later on because i was missing the stuff in the secret passage before. great job, and something that could be done real time i think?
Player (28)
Joined: 8/10/2015
Posts: 22
zaphod77 wrote:
great job, and something that could be done real time i think?
Thanks! And yes, nothing in the run requires frame precision and the end skip is completely consistent, so an RTA or similar could follow this exact route.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14876
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. ---- [2968] NES Shadowgate "game end glitch" by Zekna & Randil in 04:17.48