Submission #9560: tigrou's DOS Alone in the Dark in 05:51.22

DOS
Alone in the Dark
libTAS 1.4.6 + PCem v17+st-1
35122
100
4583
PowerOn
GOG
Alone in the Dark
3aedf883c08724d869a8c14d86b8d935
OS: Ubuntu 22.04 LTS, Linux kernel 6.8.0-52-generic
libTAS: Version 1.4.6
PCem: TASVideos v17+st-1
Game: Alone in the Dark (GOG version)

This movie is based on the premade Early 90s PCem config: http://files.tasvideos.org/common/Wiki/pcem/dos/PCem-Early90s.7z

Follow the readme provided with the config to install it. Name the files AITD.cfg, AITD.pb570.nvr, and AITD.img.

The config will need the following ROM files (all case-sensitive) in the ~/.pcem/roms/pb570/ folder. If there is a flash.bin in this folder, delete it or you will get desyncs!

26d8f651e468874e852bdd1ffb6e6804  1007by0r.bi1
15d245587d08979f16383190c55fb153  1007by0r.bio
7138354ba08f606ba51df60c18015635  gd5430.bin  

The following files should exists in your AITD GOG installation (path should be ~/GOG Games/Alone in the Dark/) :

4a5b14d75ff02c2bc7ae3569d77c6b4a	GAME.INST
9a1ec8ab71cd8a0a2106fb84007680ad	GAME.GOG

In AITD.cfg, set cdrom_drive = 200, cdrom_path = /path/to/GAME.INST, and hdc_fn = /path/to/AITD.img.

In libTAS, make sure Runtime -> Prevent writing to disk is checked, otherwise you might have to remake the hard drive after running the movie once. Set the executable to your PCem path and set the command-line options to `--config /path/to/AITD.cfg`.

The game will be installed in C:\INFOGRAMES\INDARK\ during the movie.

Notes : 
Sound FM is disabled during installation as it crash the game. It seems to be an issue related to FreeDOS rather than PCem (sound FM works great with DOS 6.22 under PCem). Additionally (not related), CD music does not work. It seems to be a well known issue under PCem. Installing OAKCDROM driver does not help. I managed to get CD music working by installing SB16 drivers and increasing CD level in mixer. Still, volume is lower than what it should be which might indicate CD music works but is simply muted.

			
Submitted by tigrou on 3/3/2025 1:42 PM
Submission Comments

Introduction

This is my first TAS.
I've been working on Alone in the Dark for several years (since late 2015) with LotBlind and NHG. There's an official topic and guide on Speed Demo Archive if you want more information. After NHG published its run (2016), some of us continued to discuss the game privately (for many years).

Game objectives

Trigger the end as quickly as possible (by beating Pregzt and getting out of the mansion).

Routing

Based on the NHG run (6:21). Here are a few improvements:
  • The crack on the 3rd floor can be skipped by entering the inventory and introducing a lag. This causes a snap (e.g. a move by a large offset), allowing to pass over the crack.
  • Similarly, the space snap can be used to rotate the player suddenly, in a single frame (up to a maximum of 90 degrees).
  • Fast rotation allows the player to turn twice as fast when running (can only be used for the first 90 degrees).
  • Instead of opening the doors to exit the library, you can clip yourself against the doors.

Glitches used

  • It is possible to run through certain walls due to a glitch in the collision engine.
  • Nightgaunts on the 3rd floor can be avoided by touching the triggers leading to the 2nd floor when the camera is not focused on the player.
  • Gravity can be deactivated by interrupting the jumping action (e.g. by dropping an object on the ground).

Things more difficult than expected

  • The lantern cannot be picked up at the beginning because the game hasn't been running for more than 5 seconds. There's a mechanism that prevents an object from being picked up if it's been found recently. Most players and speed runners will never experience this mechanism as it only occurs after a cold start and timers are not reset when a new game is started.
  • After taking the stairs or tunnels (in the attic or cave), the player sometimes immediately returns to the previous room/floor. This is due to the game running faster than it should. One way to alleviate this issue is to optimize/delay things a little (as this is related to FPS periodically going up and down) or to enter the trigger from a slightly different angle (this works for the cave entrance). If you're unlucky, you'll need dozens of tries to get it right.
  • It is not possible to edit a previous segment as the slightest change will always result in desync. Even pressing keys or moving the mouse in past frames (which have no impact on the gameplay) will result in a desync.
  • Similarly, optimizing interaction with inventory is difficult because the number of frames to do something varies (e.g. moving the current object down may take 2 or 5 frames).

PCem / libTAS synchronization

Some of the problems reported above are due to the fact that the game is not synchronized with libTAS. One frame in libTAS will translate into 2 or 3 frames in AITD. Additionally, a new frame in libTAS will almost never start at the beginning of a frame in AITD, but rather somewhere in the middle. This is because libTAS runs at 100 FPS to match PCem's 10 ms increments, whereas the game runs at 70 FPS. The game uses vertical synchronization, but this is a kind of spin-wait that cannot be detected by libTAS. On top of this, there's a bug in the game that causes FPS to exceed 70 FPS every 2 seconds (e.g.: 70, 292, 69, 287,...). The game should cap at 70 FPS.
PCem v17+st-2 can be used to improve this. This is a special version that allows a specific framerate to be used in libTAS (to match the game's framerate). Using this version and a patched game executable (to cap it at 70 FPS), make game frames to be 1:1 with libTAS. This makes everything much easier to control (and in finer gradients). At the time of writing, PCem v17+st-2 is not authorized by tasvideo.org. Moreover, this patch is not official (it may not be approved).

Special thanks

LotBlind on SDA (this run wouldn't have been possible without him, many of the tips came from our internal discussions) and the tasvideo.org Discord community (the guys there were very helpful).

eien86: Claiming for judging.
Last Edited by eien86 9 hours ago
Page History Latest diff List referrers