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

Submission #5794: c-square & mrprmiller's DOS Hero's Quest in 00:41.91

Console: DOS
Game name: Hero's Quest
Game version: 1.0.0
ROM filename: SIERRA.EXE
Emulator: JPC-RR 11.2 (Modified)
Movie length: 00:41.91
FrameCount: 2514
Re-record count: 219
Author's real name:
Author's nickname: c-square & mrprmiller
Submitter: c-square
Submitted at: 2018-01-16 04:40:25
Text last edited at: 2018-02-20 14:45:33
Text last edited by: feos
Download: Download (5451 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 learns of the people's plight. Armed with the ultimate spell, our hero leaves to confront the leader of the brigands. None shall be able to withstand the power of OOOOPENNN!!

(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

(For a detailed explanation of what's going on, see the previous submission text)


This is a one second improvement over the previous submission, mostly thanks to FractalFusion's suggestions that:

- Text input should be "entered" by clicking on the input bar, not by pressing the enter key.

- You can stack nouns. In most cases, if the first and last words are correct, it will work.

Between these, and discovering you don't have to "Push" the rock, you can just "Get" it, 1.8 seconds is shaved off the previous run. Unfortunately, for some reason, it seems the last screen steals those 0.8 seconds away, with Elsa waiting longer now to hop the desk than she did before. I even went back and removed typing a name, which bought another 0.3 seconds, but that just made her wait equivalently longer to hop the desk. My only guess on that is that she may only be able to hop the desk on at the end of a full second, but I'm not certain. Below is the code for this, and I'd appreciate if anyone can add any insight to this added wait time:

  (instance leaderVaults of Script

  	(method (doit)
  		(and (== state 1) (== (elsaSong prevSignal?) 10
  			(self cue:)
  		(super doit:)

  	(method (changeState newState)
  		(switch (= state newState)
  				(leader setLoop: 4 setCel: 1 posn: 164 122)
  				(= seconds 5)
  			(1 (elsaSong play:
  				(User canInput: 1)
  				(leader setCel: 2 posn: 164 120)
  				(= cycles 2)
The goal is to get to that "(User canInput: 1)" as fast as possible, so the final commands can be entered.

TAS Script

Although it's disappointing not being able to squeeze more than a second out of this, that wasn't really the main point in redoing this run. My actual goal was to test out a new scripting system I set up for editing JPC-rr movie files. If you haven't used the emulator before, JPC-rr files are notoriously bad for trying to edit or patch. The main reason for this is that they store commands with very specific relative time increments, which can vary seemingly arbitrarily. Changing one of these can have huge cascading effects, causing errors and desyncs all down the rest of the movie.


  +87008950 SAVESTATE ca11a6f0219e1c4e48461de8b5641fca6ee5bfc0dc42ae0c 3
  +14268150 SAVESTATE 1ac0e82719240fc23c8222406999edb018d8463475ef46b4 4
  +55220 org.jpc.emulator.peripheral.Keyboard KEYEDGE 28
  +666660 org.jpc.emulator.peripheral.Keyboard KEYEDGE 28
  +614031020 SAVESTATE b6200e347c52b8ceeecc66dd64b47ab13b3dc878f66eece4 4
  +13044500 SAVESTATE 78314316d124332100e7d03ea6705f0b90cbe47b229e2c54 4
  +0 SAVESTATE d3d78c36ed464e355691fbe346b3d2057de3277fb28833a8 11
  +0 SAVESTATE 83a31f8ee5f07ef4a95ba118cb39feff85f7ae11b0afe868 15
  +51542 org.jpc.emulator.peripheral.Keyboard KEYEDGE 66
  +666660 org.jpc.emulator.peripheral.Keyboard KEYEDGE 66
  +666660 org.jpc.emulator.peripheral.Keyboard KEYEDGE 21
  +666660 org.jpc.emulator.peripheral.Keyboard KEYEDGE 21
  +666660 org.jpc.emulator.peripheral.Keyboard KEYEDGE 28
  +666660 org.jpc.emulator.peripheral.Keyboard KEYEDGE 28
  +666660 org.jpc.emulator.peripheral.Keyboard KEYEDGE 21
  +666660 org.jpc.emulator.peripheral.Keyboard KEYEDGE 21
  +666660 org.jpc.emulator.peripheral.Keyboard KEYEDGE 28
I decided to try and do something about this, and wrote some lua scripts to make the movies more readable and manageable:

  Type:<esc><esc>ggeett  rroocckk<enter><enter>
I've posted the details in a forum post, along with the lua scripts. The end effect was that it only took me about eight hours to refactor all the text submissions with mouse clicks, make two text entries more efficient, and remove desyncs. Doing that from scratch would have taken me 3 - 4 times as long. Then, when I found out about the desk hop limitations, it took me only two hours to edit out the name entry at the beginning of the movie and remove desyncs.

I'm now gunning to refactor my Quest for Glory 2 TAS where I made some critical errors, and I'm sure the refactoring will go more quickly as I get more and more practice with it.


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: Judging.

Mothrayas: Accepting as an improvement to the published movie.

thecoreyburton: Processing.

Similar submissions (by title and categories where applicable):