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

DOS
baseline
(Submitted: SIERRA.EXE 1.0.0)
JPC-rr 11.2 (Modified for Mouse Support)
2575
60
2646
Unknown
Submitted by c-square on 12/10/2016 4:59 AM
Submission Comments
... 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: [dead link removed]
For anyone wanting a closer look at the action, here's a 1/4 speed encode (no sound): [dead link removed]

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.

Cafeteria

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

c-square

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!

mrprmiller

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 [/Forum/Topics/9107&start=103|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


Files:
HDD, 16 tracks, 63 sectors, 16 sides.
FilenameSizeMD5Timestamp
ADL.DRV8896b2b4afb47ab5bc94d5bdd63b38b6265919900101000000
CGA320BW.DRV201767237a44391ea20481cd85bf3dd3962019900101000000
CGA320C.DRV23765a8ab7f0b418cb2b4e37dfb0c1b5082e19900101000000
CMS.DRV5807 8d5ad9b51c0c6b82a7abbcf13fe1b0b419900101000000
CSM1.DRV2532 da85de05261fd24096dc6b1e7ae9607919900101000000
EGA320.DRV1952d2f9e9ea730745558926518c930e737519900101000000
EXISTS.COM57461f35eec8998802abe2118b26e0c9cfa19900101000000
FB01.DRV2459 fa73279cd317612f802a1609f6ea283c19900101000000
GODIR.COM507 28d7efe8c850bfb52231fc58567e25cc19900101000000
HERCMONO.DRV2193f548ada27461194ed2671b8a236e666a19900101000000
HERO.BAT10 04a413f79a5e15bcad59ae5d3982469419900101000000
IBMKBD.DRV446ab91b093a010aeb63866f71bc491110e19900101000000
IMF.DRV2290 1b495562c5d107a0577f39ad1dcc606619900101000000
INSTALL.EXE24064a5a151689bfc0d0c5ab3ee61ff2f90ba19900101000000
INSTALL.HLP96987a0925b0cf9d429c4d598ecc774e168519900101000000
INSTGAME.BAT83783cd6f1fd6df591e15a2df654da4b60119900101000000
JOYSTICK.DRV536865fd157f28915c8c831c17ac8b55ed119900101000000
JR.DRV2990 5195148b419497549252ca91d491ff6619900101000000
MCGA320.DRV16267ced0fc0a7cc5395a1e4321250fcd94319900101000000
MT32.CFG75 c6b0d4b6e526a04134c74c82b8032c5719900101000000
MT32.DRV3099 07664f7d1fab316cf10c433c6b4e1fb719900101000000
MT540.DRV2528686177937d356346279f4cc582645eb619900101000000
PCJR320.DRV1660307e67dbdf6289bf7e0488030f4442af19900101000000
RESOURCE.00080334e4f2ab5f2e0cf5c78a3c072ef1d0dea319900101000000
RESOURCE.001462727308503aa041ff254197d561dba3b506319900101000000
RESOURCE.00264686967f08692e0457e84f81eed714309619019900101000000
RESOURCE.00364220314542d38474c3b36d0cedafbd8777caa19900101000000
RESOURCE.004641688ba7c4ac121c40a125f0b871f7cb8709a19900101000000
RESOURCE.CFG744e14592928598a4736830af6c59418b319900101000000
RESOURCE.MAP6474cb0ba17773dff6eab9628ceeed2e368619900101000000
SB.CFG74 4e14592928598a4736830af6c59418b319900101000000
SCIV.EXE750279c902990be12e95e82e5845d390cd98519900101000000
SIERRA.COM53848e6faeb6af8e540fed0523f17ec4c0d19900101000000
SPACE.COM500 c645587408e33998e9fc6f51be4ee63919900101000000
STD.DRV2471 b2f21c19f676932d09ffd8becd80533419900101000000
TANDY320.DRV16676881cad03cd7386836cab4d19b03bdf719900101000000
TANDYKBD.DRV473d51176ceeae179f95ae478933591a0f219900101000000
__INSTH.BAT1009af4fc6a3f46cda7216cdb0b98931434919900101000000

Noxxa: That was an interesting quest. Accepting for Moons.
fsvgm777: Processing.
Last Edited by adelikat on 10/19/2023 3:12 PM
Page History Latest diff List referrers