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

DOS
baseline
(Submitted: SIERRA.EXE 1.0.0)
JPC-rr 11.2 (Modified for Mouse Support)
2514
59.991409344723905
219
Unknown
Submitted by c-square on 1/16/2018 4:40 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 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!!

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)

Changes

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
	(properties)
	
	(method (doit)
		(if
		(and (== state 1) (== (elsaSong prevSignal?) 10))
			(self cue:)
		)
		(super doit:)
	)
	
	(method (changeState newState)
		(switch (= state newState)
			(0
				(leader setLoop: 4 setCel: 1 posn: 164 122)
				(= seconds 5)
			)
			(1 (elsaSong play:))
			(2
				(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.
Example:
+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:
FAdv:3
Type:<lctrl>cc<lctrl>ooppeenn<enter><enter>
FAdv:42
Save:801
FAdv:6
Save:816
Type:<esc><esc>ggeett  rroocckk<enter><enter>
FAdv:8
Save:817
MXMove:-54
MYMove:29
FAdv:1
MClick:0
FAdv:1
MClick:0
FAdv:1
MXMove:64
MYMove:-40
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.

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: Judging.
Noxxa: Accepting as an improvement to the published movie.
thecoreyburton: Processing.
Last Edited by adelikat on 10/25/2023 12:47 AM
Page History Latest diff List referrers