Submission #3185: Randil, ZenicReverie's NES Shadowgate in 08:23.84

Console Nintendo Entertainment System Emulator
Game Version USA Frame Count 30280
ROM Filename Shadowgate (U).nes Frame Rate 60.0988138974405
Branch Rerecord Count 28714
Unknown Authors Randil, ZenicReverie
Game Shadowgate
Submitted by Randil on 6/19/2011 3:07:09 PM

Submission Comments
This run is 1892 frames, 31.53 seconds, faster than the published run. This run features an item overflow glitch, a new route, abusing how the sphinx question works (involving the broom), abusing that some rooms don't drain torch charges, and more minor improvements. See below for details.
  • Emulator used: FCEUX 2.1.4a
  • Genre: Storybook
I have put ZenicReverie as co-author since he was the one who sparked my interest in revisiting this game, and has continually found improvements and provided feedback. It is safe to say that this run would not have been made if it wasn't for him.
This game is quite edit friendly, so thank god that .fm2 files are text based. This made life a lot easier for me as a big part of this TAS was made by splicing sections together. The rerecord count is still pretty accurate.

About this run

This run started about 7 weeks ago when ZenicReverie posted on the forum that he was going to make a console speedrun of this game, and that he had put together a a new route. I tested this route, and found it to be slightly faster than the published run. After that, ZenicReverie posted additional improvements to his route, making it gain a few seconds over the published run. By that time it was clear that his route was faster than the published run. He and I continued to make a few tweaks to this run, in particular I worked out how the sphinx teleportation worked, and abused that to be teleported to the coffin room. I also discovered the broom trick (see below), which didn't save a whole lot of time in the TAS, but is a weird bug and a welcome addition.
A lot of the findings we did were negated when I found a practical use of the so called "Glasses trick" (see details below), which is that you can pick up the glasses over and over, and can get access to items outside the normal inventory. After a lot of research I found how to use this to save time (I knew about this trick when I made the currently published run, but didn't know of any practical use of it). Read below for details.
Of course there are as always some cursor navigation improvements scattered through out the run, a lot of them are thanks to ZenicReverie.

Tricks and glitches

Spoiler alert: This section will contain spoilers on the run, so don't read if you want to be surprised when watching the run!

Glasses trick

All items in this game have a hexadecimal value between $0 and $FF, but it's only the first 104 values (up to $67) that are "normal items" - for values higher than this, the game acts weird when you interact with that item.
Whenever you pick up and item, the game knows that you carry this item by setting a flag (one unique flag for each item) to 1. So if you try to pick up an item from your own inventory, you can't do this because this flag has been set, and not because it is in your inventory (if you set this flag to 1 in the Hex Editor before picking up the item, the game says that you can't pick it up). The Glasses trick abuses that the programmers of this game forgot to add this flag for the Glasses, so the game always allows you to pick up the Glasses, over and over. This can cause your inventory to overflow, giving you access to RAM addresses outside the reserved space for inventory items.
I abuse this trick to get the staff by reaching RAM addresses outside the normal inventory range. This not only allows me to skip getting the Staff, but also a lot of other items (suchas the Sword and Wand) as well as the Humana spell.
The first inventory item you pick up gets placed on RAM address $0496. For every new item you pick up, the list will keep filling up, so item 2 will be placed on $0497, and so on. The game has only reserved space for items up to RAM address $04DA, so if you manage to fill up your inventory with more items than this, you get access to a block of RAM addresses determining game state.
For this trick, RAM address $04DE is the most interesting. For all those stones that I pick up, and using the sphere in lake, taking sphere again, and taking key 3, this RAM address will change value. No other action in the game makes this value change, so you won't have to worry about that. If you do all these things, the hex value of $04DE will be $50, corresponding to the Staff item, when the game interprets this value as an item. There is no random element to this, it will always be set to this value if you do exactly these things. It doesn't matter what order you do these things in, but you have to pick up exactly the stones that I pick up (if you don't, $04DE will have another value, and won't correspond to the staff).
So, after doing these things, $04DE is set to $50, and stays this way through the whole run. Then, when I reach this RAM address in the inventory list by filling it up with glasses, I can simply pick up the staff, since the game knows that I still haven't picked it up yet.
I chose to pick up all the Glasses in the final room of the game, because this is one of the rooms in the game where your torch don't drain any charges (see this forum post).

Broom trick

I found that the initial state for the sphinx question is the broom question. This means that on game start-up, the sphinx will expect the broom as answer to his question. If you don't talk to him, but just walk up to him and give him the broom, it will have answered his question correctly. This allows me to skip some dialogue with the sphinx, saving quite a few frames.

Other info

Randomness is on a global timer so there is some luck involved in getting the right sphinx question and 3 lightnings at the warlock. In this run, no time was lost for luck manipulation purposes, which was very nice. I made a lua script that looked for mistakes in this run, and this script found a few frames of improvements.

Thanks to

Of course, first of all, my biggest thanks goes to ZenicReverie for all his help, feedback, and for being generally helpful. I think both of us benefited from this collaboration. I wish him good luck on his console speedrun (here is the SDA discussion thread). I would also like to thank everyone in the Shadowgate thread for feedback and keeping my motivation up.

Mukki: Judging...
Mukki: A very impressive improvement, I did not expect so much time to be saved. Accepting as an improvemant to the currently published run.

Brandon: Publication underway.

Last Edited by Brandon on 6/24/2011 4:40:07 AM
Page History Latest diff List Referrers