I was given instructions a while ago on how to run "lost in time" on xp using dosbox which was great. My problem is the 1st set of cut scenes are distorted and the game crashes when it gets to the second set of cut scenes every time in the same place. Task manager says the program is still running but it just seems to hang. The disk is not scratched or smudged. Has anybody else experienced this or does anybody have any suggestions?
I get the distortion when talking to Aruba through the hole behind the poster (the cutscene plays way too fast, without any sync to the audio). Haven't tried any further.
The games list mentions that the cdrom should be mounted with -ioctl, but that doesn't make a difference in my case.
Lowering cycles won't help. LIT synchs its cutscenes to the Q channel from CD audio playback. DOSBox doesn't seem to support that. The second cutscene, when talking to the time agent, does indeed crash.
The game currently can not be finished in DOSBox. The cutscenes take their timing from the CD audio, which, as you have seen, does not work right. there are some scenes that just lock up the game. VDMS works better (if you use SAPUCDEX), but will lock up at least one cutscene, too. It really wants to run in pure DOS.
I experimented with trying to run the game in DOSBox booting to a DOS 6.2 image, but could find no way to mount the CD or an image of the CD at the same time. ScummVM is adding support for the Coktel Vision CD games, but there is no mention of LIT.
Would it be possible to implement functionality in DOSBox to support this method the game is trying to use? Is it used in any other games as far as anyone knows?
Hmmm... Seems LIT doesn't use the Audio QSubChannel, but instead uses IOCTL INPUT subfunction 01 - determine the position of the read head. (This uses the QSubChannel internally).
The problem is that this subfunction returns the position of the read head in either HSG or Red Book format. This is at the driver's discretion. The driver can choose either format and sets a flag to indicate which one it has used.
DOSBox chooses Red Book format, and sets the flag correctly. Lost In Time, though, ignores this, and assumes the returned value is an HSG sector number. This causes the jumps.
Changing DOSBox to return an HSG sector number fixes things.
In dos_mscdex.cpp, function MSCDEX_Interrupt_Handler, case value 0x03, sub case value 0x01, there is this code:
1mem_writeb(buffer+1,0x01); // Red book 2mem_writeb(buffer+2,pos.fr); 3mem_writeb(buffer+3,pos.sec); 4mem_writeb(buffer+4,pos.min); 5mem_writeb(buffer+5,0x00);
You'd be more compatible with unpatched LIT. I have no idea how many other games are borked in this way. I'd suspect that there wouldn't be too many programs that handle this incorrectly. I guess it's more likely that a bad programmer would ignore a zero byte at the start of the return structure and assume HSG is always returned than that he would ignore a 0x01 byte on his devsystem.
harekiet should include them.
I brought it to his attention.
but if they aren't present in his video update commit I will add them.
Anyway. We just try to mimic the original dos as close as possible. So if some weird game has a programming error that works because it's dos default then it might be an idea to include it.
Yes, the patch can solve cut scenes problem, but I read some complaints on other forums that it has a negative effect on mouse movement that becomes jerky with it. I tried it with my copy of the game and can confirm that (changing mouse sensitivity did not help).
That patch causes LIT to lock up at the very start of the game for me. I know several other people that have had the same problem with the patch when using DOSBox.