Tool-assisted game movies
When human skills are just not enough

Submission #5319: c-square & mrprmiller's DOS Hero's Quest in 00:42.92

Console: DOS
Game name: Hero's Quest
Game version: unknown
ROM filename: SIERRA.EXE
Emulator: JPC-RR 11.2 (Modified)
Movie length: 00:42.92
FrameCount: 2575
Re-record count: 2646
Author's real name:
Author's nickname: c-square & mrprmiller
Submitter: c-square
Submitted at: 2016-12-10 04:59:32
Text last edited at: 2016-12-26 09:41:18
Text last edited by: fsvgm777
Download: Download (14306 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
... also known as Quest For Glory 1 (EGA)

The land of Spielburg is overrun by monsters and terrorized by brigands. The people cower in their town, waiting for their hero to arrive. One day, a young stranger enters the town...
and then this happens:

(Link to video)

For anyone wanting a closer look at the action, here's a 1/4 speed encode (no sound):

(Link to video)

Game Objectives

  • To become a Hero!
  • Aims for fastest time
  • Emulator used: JPC-rr 11.2 (Modified for added mouse support)
  • Game Version 1.0.0

Game Choice

Technically, there are three different versions of this game. Sierra originally released this EGA game in 1989 under the name "Hero's Quest". It was one of the first graphical text adventure RPG's and won Computer Gaming World's Adventure Game of the Year award in 1990. Shortly after their initial release, Sierra had to rename the game to "Quest for Glory" because of copyright issues, and re-released it with a number of bug fixes and small enhancements. In 1992, Sierra released a VGA version which ditched text input for their new point-and-click interface.

This TAS uses Hero's Quest 1.0.0 for two reasons:
  1. Hiden Goseke
    In the cave path to the brigand's hideout, there is a troll that guards the route. If the hero says the password, "Hiden Goseke" before entering the cave, the troll will walk away and let the hero pass. In all of the other versions, the hero can't say the password until he has overheard someone else saying it (which happens after the Baron is freed). However, in Hero's Quest 1.0.0, the password works regardless of when you use it, making the cave path available right from the beginning of the game. This is used to skip the majority of the game and go straight to the brigand's hideout.
  2. High-Speed Hero
    Hero's Quest has a setting called High-Speed Hero, which was removed from subsequent releases of the game. The original intent was to speed up the hero on slow computers that otherwise crawled under the processor load this game required. High-Speed Hero mode works very well when the hero is going straight, however if any maneuvering is required, it is highly impractical. On RTA's, High-Speed Hero is almost never used, as it is too easy to overshoot your destination. However, in a frame-precise TAS, High-Speed Hero is an amazing tool to be harnessed.

Emulator Choice (c-square)

I used the same modified JPC-rr 11.2 emulator that I used for my Space Quest 4 TAS. I won't go into the details here, but the short version is that JPC-rr has very limited mouse options, making a run like this almost impossible to create. I modified the emulator, adding the ability to drag the mouse pointer around, which makes it a lot easier to TAS mouse-based games. If you want more details on the modifications, check out my Space Quest 4 submission text or shoot me a private message.

TAS Challenges (c-square)

Text Entry

The absolutely slowest part of the game was the text entry. The game polls the keyboard buffer once every 7 frames (0.1 seconds). That means it can take an excruciatingly long time (in TAS time) to type out anything, and it is vital that the least possible typing be done. This means that having the hero run, instead of walk, only is worth it if you can save more than the 28 frames it takes to type in "RUN<enter>". And seeing as the hero can walk across the screen in less than 12 frames (in High-Speed mode), there are a number of times that walking is the better mode of locomotion.

Furthermore, there are multiple ways of entering the same command, so it is important to always find the shortest way of typing things. I had to redo two screens after I learned from mrprmiller that you can just type "Open" instead of "Open Door". I had to redo another two screens after I realized that, instead of typing out "Push Candle", it was faster to repeat "Push Chair", then delete the "hair" and type "andle". Other examples of shortening text was changing "Close Door" to "Bar Door" and "Throw Dagger" to "Toss Knife" (when that was still part of the route, see below).

On the flip-side, having text entry allowed me to fill the keyboard buffer with the commands to cast the last spell and move out of the room, so that I could end input almost two seconds early.

Mouse Entry

Unlike text entry, mouse input is polled every frame, which means 6 out of 7 times, using the keypad is slower than using your mouse for movement. This is why having the modified JPC-rr is necessary for this TAS. On the rare occasion, I am fortunate to be on that 7th frame that allows me to use the keypad and get the input polled immediately, which is nice when it works out.

Route Selection (mrprmiller)

There are two endings to the game: a good ending and a better ending. The good ending is triggered when you exit the Brigand Leader's room without grabbing a magic mirror on her desk. To get the better ending, you need to grab the magic mirror, exit the room, and then go off to save Spielburg Valley from an evil ogress. The Any % route involves just accomplishing the good ending.

To be able to exit the Brigand Leader's room, you need to remove a curse on her with a dispel potion that is created by collecting various ingredients during the course of the game. If you fail to use the potion (or if you don't have it), the leader kills you in typical Sierra adventure fashion with no chance at redemption. Or, at least that's how we all believed the game to work. However, last year, while working on the speedrun for the VGA remake of the game, I discovered that there was a glitch that unlocked the movement of the main character in the final room and allowed you make quick escape that was very unintended, but ended the game with a win in hilarious, troll-faced fashion.

The original Quest for Glory 1 EGA route was done by a speedrunner named Renault in late 2007, and while at the time it was viewed by Quest for Glory enthusiasts (that small group) as a neat achievement, it was very unpolished, collecting all of the things required for the dispel potion and winning in 9 minutes, 29 seconds. My optimizations to the route brought the time down to 5 minutes, 32 seconds. I later attempted the same skip that I had found while running the VGA remake in the original EGA version and found that the glitch exists there also. The VGA remake code uses quite a bit of code copied from the earlier EGA version (verbatim in some cases). With the large skip discovered, the time came down to 2 minutes, 9 seconds. This TAS is less than one-third of that time.

The route is a matter of finding out how to get to the Brigand Leader as fast as possible. The normal course and philosophy of the game is a progressive stat-based adventure-RPG hybrid. Whereas most Sierra games depend on items to progress through the game, the puzzles in the Quest for Glory series have multiple solutions depending on your skills. The classic example is Toro the Minotaur, who is the gatekeeper to the endgame, as there are multiple ways to get past him. The Fighter can, obviously, fight him. Any class is able to fight and potentially win in battle, but with the Fighter in particular it is expected. The Magic-User is able to use the Calm spell to put him to sleep, and then use the Open spell to get into the Brigand's Fortress. The Thief's route involves sneaking past him and climbing over the fence in one of the two possible places. But because of the skill distribution system at the beginning, you can create a hybrid character that can do a mix of these solutions. We used the hybrid approach in routing to get past obstacles in the fastest way possible... at least before TASing came along and found a new way past the previously mentioned Minotaur.

Magic is a panacea that cures most skill-requirement issues in routing. This is seen in solving the first task of getting into the secret passage to the Brigand's Lair. The second part is learning the password to get into the passage without fighting the troll, who is arguably the most difficult battle in the game; he can be killed, and indeed, is killed in the 100% speedrun of the game due to point requirements, but at our beginning game stats, it would be literally impossible even at TAS levels - I would love to be proved wrong :D. The password learning is skipped for reasons already stated above in the Game Choice section. The third hurdle then is getting past the Minotaur; which originally was solved with a quickly acquired Calm spell... until it was discovered Calm was not needed at all in the EGA version.

Once these three hurdles can be passed, the rest is clear sailing until the final encounter with the Brigand Leader.

Area-Specific Comments (c-square)

Hero Creation

You need exactly 40 strength to push the boulder-door to the cave. Since you can only allocate stats using the keyboard, it's faster to use the mouse to start the game and acknowledge that you don't need the remaining 20 points, than it is to use the keyboard to spend those points. I also spend 21 frames (0.3 seconds) making a name, just because it's nice to have a name.

Magic Shop Entrance

Here I had to take off High-Speed Hero to get close enough to the magic shop's door to let me in. I turned it back on immediately after the door started to open.

The White Stag and Pushing the Boulder Door

Once you reach the white stag, the game forces you to walk again. Also, once you push the boulder door, it forces you to walk. So, between these two, it cost more to type 'Run' than it saved by running between them.

Toro the Minotaur

As mrprmiller mentioned, this is where we had our biggest discovery, that we could forgo the Calm spell. Usually, if you walk out from the bush, you'll bump it and the Minotaur will see you; every time. It doesn't matter how far away he is, or in what direction he's facing, he'll see you. However, if you're running and you hit the bush, you bounce off and stay behind it. The Minotaur hears you but doesn't see you, and so you stay alive.

Now, you're able to walk/run out and not be caught, but only if the Minotaur is sufficiently far away. If he's too close, he'll still see you. BUT, if you cast open on the gate, then suddenly you can leave the bush immediately and the Minotaur will not notice you. In fact you can walk right in front of him and he still will not notice you. I'm guessing it has to do with changing from Fighter (fight) to Thief (sneak) to Magic User (magic) game scenarios.

By not having to get the "Calm" spell, the run's length was reduced by about 15% (or about 6 seconds).

Brigand's Trap Room

The next room is full of traps. There are two trip wires in this room, which usually require you to "step" over them. However, if you move diagonally over them, you can walk over them with out setting them off. This is absolutely a TAS-only trick, as in a RTA you would spend more time setting up and trying to get it right than it would be worth.


This room is the slowest of all the rooms, because you have to wait for Larry, Curly and Moe to make their way to the end of the table and back again. Also, the game turns off High-Speed Hero automatically while you're in this room. I've already mentioned how there were some savings found in using shorter commands. Finally, while waiting, I had a little fun with our hero. If you missed it, take a look at the 1/4 speed encode.

Yorick's Room

As this is the last major room of the game, it was appropriately the hardest. The corridors are narrow and the timing is tight. There is another trap in the lower-right hand corner that you can step over by walking diagonally, something that would be very hard to do in an RTA.

You can get rid of Yorick by Casting, however the text-entry combined with his escape animation makes that a very slow option. However, if you leave Yorick in the room, he starts throwing junk at you about once every second. He won't throw junk at you if you're in a doorway, but anytime you're walking in the open, you're vulnerable. The goal of TASsing that room was to leave Yorick in the room, but ensure that the hero was never vulnerable when Yorick's throwing trigger hit. I was finally able to accomplish this after many tries, saving a few seconds in the process.

Elsa's Brigand Leader's Room

Originally, the plan was to follow mrprmiller's RTA glitch of throwing a dagger, which I had reduced to "Toss Knife". However, just before wrapping up, I decided to see if there was another action that could be taken that had a shorter animation cycle. Casting Open did the trick. It also allowed me to end input sooner. The last input happens about 1 second before Elsa hops her desk, as I stuff the keyboard buffer with the commands to cast Open and escape the room, leaving Elsa standing there dumbfounded.

mrprmiller's note: I attempted this casting trick in the VGA version and found it has been patched out. However, the glitch still exists in the EGA V.1.2.0 which is the official GOG and Steam release version.

Potential Improvements (c-square)

I discovered the keyboard input cycle midway through the run, so there are possibly a few cases where a keyboard input could have been better than a mouse input on those rare 1/7th frames. Also, there's always the potential that I've missed some shorter way of inputting commands, or a shorter movement path in a screen. However, all-in-all this is a pretty solid run, and the route can't get any more direct. I don't see any major improvements happening on this TAS.

Other Comments


It's been a blast working with mrprmiller on this. He is a master of this series, knows them backwards and forwards, and I couldn't have TASsed this without his route and improvement suggestions. Be sure to check out his live-streamed marathon speed run of QFGs 1-5 for RPG Limit Break (run by a lot of the staff from AGDQ), where he did the run while talking with Corey and Lori Cole, the creators of the QFG series, at the same time! It's just amazing to see!


I was thrilled to hear that someone was finally willing to take up the QFG gauntlet I threw down, and it's been great to learn more about the QFG series with c-square's careful consideration and route adjustments. He's been great to work with. His findings and testing in this EGA version led to new skips in the VGA version that have brought the times of both down by at least 20-30 seconds in RTA (both are in verification in SDA as of this writing), but I wouldn't have found either of these skips as I had moved past experimentation in QFG1 and have been focused predominately in QFG3 currently.

A Request for Glory! :P

We have a request for you! Please go into the comments and tell us if you'd be interested in seeing a Quest for Glory II TAS. It will be much longer than this one, likely running 10-15 minutes. I want to make sure there's sufficient interest in a TAS of that game before investing the time and energy to do it.

Also, if there's anyone else who is interested in doing a QFG TAS (#2 or otherwise), feel free to do it! I (c-square) don't have much time for TASsing, and mrprmiller and I would love to see these all TASsed. Both of us would be happy to lend you a hand at it, so just get in touch with us! And you should also know that you'd receive a bounty from mrprmiller for making the TAS! I've asked him to donate my portion of the bounty for this TAS to the TASBot block of AGDQ 2017.

Suggested Screenshots


HDD, 16 tracks, 63 sectors, 16 sides.

Filename Size MD5 Timestamp
ADL.DRV 8896 b2b4afb47ab5bc94d5bdd63b38b62659 19900101000000
CGA320BW.DRV 2017 67237a44391ea20481cd85bf3dd39620 19900101000000
CGA320C.DRV 2376 5a8ab7f0b418cb2b4e37dfb0c1b5082e 19900101000000
CMS.DRV 5807 8d5ad9b51c0c6b82a7abbcf13fe1b0b4 19900101000000
CSM1.DRV 2532 da85de05261fd24096dc6b1e7ae96079 19900101000000
EGA320.DRV 1952 d2f9e9ea730745558926518c930e7375 19900101000000
EXISTS.COM 574 61f35eec8998802abe2118b26e0c9cfa 19900101000000
FB01.DRV 2459 fa73279cd317612f802a1609f6ea283c 19900101000000
GODIR.COM 507 28d7efe8c850bfb52231fc58567e25cc 19900101000000
HERCMONO.DRV 2193 f548ada27461194ed2671b8a236e666a 19900101000000
HERO.BAT 10 04a413f79a5e15bcad59ae5d39824694 19900101000000
IBMKBD.DRV 446 ab91b093a010aeb63866f71bc491110e 19900101000000
IMF.DRV 2290 1b495562c5d107a0577f39ad1dcc6066 19900101000000
INSTALL.EXE 24064 a5a151689bfc0d0c5ab3ee61ff2f90ba 19900101000000
INSTALL.HLP 9698 7a0925b0cf9d429c4d598ecc774e1685 19900101000000
INSTGAME.BAT 837 83cd6f1fd6df591e15a2df654da4b601 19900101000000
JOYSTICK.DRV 536 865fd157f28915c8c831c17ac8b55ed1 19900101000000
JR.DRV 2990 5195148b419497549252ca91d491ff66 19900101000000
MCGA320.DRV 1626 7ced0fc0a7cc5395a1e4321250fcd943 19900101000000
MT32.CFG 75 c6b0d4b6e526a04134c74c82b8032c57 19900101000000
MT32.DRV 3099 07664f7d1fab316cf10c433c6b4e1fb7 19900101000000
MT540.DRV 2528 686177937d356346279f4cc582645eb6 19900101000000
PCJR320.DRV 1660 307e67dbdf6289bf7e0488030f4442af 19900101000000
RESOURCE.000 80334 e4f2ab5f2e0cf5c78a3c072ef1d0dea3 19900101000000
RESOURCE.001 462727 308503aa041ff254197d561dba3b5063 19900101000000
RESOURCE.002 646869 67f08692e0457e84f81eed7143096190 19900101000000
RESOURCE.003 642203 14542d38474c3b36d0cedafbd8777caa 19900101000000
RESOURCE.004 641688 ba7c4ac121c40a125f0b871f7cb8709a 19900101000000
RESOURCE.CFG 74 4e14592928598a4736830af6c59418b3 19900101000000
RESOURCE.MAP 6474 cb0ba17773dff6eab9628ceeed2e3686 19900101000000
SB.CFG 74 4e14592928598a4736830af6c59418b3 19900101000000
SCIV.EXE 75027 9c902990be12e95e82e5845d390cd985 19900101000000
SIERRA.COM 538 48e6faeb6af8e540fed0523f17ec4c0d 19900101000000
SPACE.COM 500 c645587408e33998e9fc6f51be4ee639 19900101000000
STD.DRV 2471 b2f21c19f676932d09ffd8becd805334 19900101000000
TANDY320.DRV 1667 6881cad03cd7386836cab4d19b03bdf7 19900101000000
TANDYKBD.DRV 473 d51176ceeae179f95ae478933591a0f2 19900101000000
__INSTH.BAT 1009 af4fc6a3f46cda7216cdb0b989314349 19900101000000

Mothrayas: That was an interesting quest. Accepting for Moons.

fsvgm777: Processing.

Similar submissions (by title and categories where applicable):