There cold be two cases: either the pathnames are not correct (but this can't be the case since Dippy's tracklen.nfo successfully points to these files) or the file open operation failed for some different error. The attached release tries to throw some light on the mystery by printing the error code whenever the file is there but can't be opened.
I would bet it's a permission problem, though the file operation is performed in read-only mode, so there's no reason why it should fail here and succeed when the player plays them.
Please, repeat the experiment (delete tracklen.nfo, update dxwplay.dll, run the game, send dxwplay.log)
I just thought, do you both have the same version of the game? Here I see patch 1.04 (which indicates that there could have been older versions). https://www.patches-scrolls.com/rainbow_six.php
Although I don't know how it would affect the creation of tracklen.nfo. Anyway, there is a suspicious file in the Saptadeep Nath log LoadLibraryA: file=C:\Windows\system32\MVoice.vxp
but by name it will probably not be related to music.
Last edit: huh 2021-04-01
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I tried installing the games at multiple different locations and there are some specific folders where the music isn't detected in C:\which are: Program Files (x86), Program Files, ProgramFiles(x86), ProgramFiles.
Any other location where I install the game, the music gets detected.
Last edit: BEEN_Nath_58 2021-04-02
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It seems some of the crazy policies in MS that try to judge the events by the folder name. I think I saw sometimes some warning message telling that I should not copy files to these folders, but honestly it is crazy that DxWnd can have write permission (it does create the tracklen.nfo file) but doesn't have read permissions (apparently, it can't detect / read the sound files).
I have all my test games on C:\games, it seems that this avoided me some troubles.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The final thing is the game shouldn't be installed on any Program Files (x86), Program Files, ProgramFiles(x86), ProgramFiles or any spacing variations of these folders or any folders with long file names.
You could add this in the notes section, and also enable VCDA by default as the game doesn't repeat music without it .
Last edit: BEEN_Nath_58 2021-04-02
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The mention of the long name is interesting. Maybe the game requires an abbreviated DOS name? E.g. C:\games\RAINBO~1
However, for a Windows game from 1998, this should not be necessary.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Installing games in "Program Files" or "Program Files (x86)" is well known No-No from at least Windows Vista days. I did not mention it because I thought everyone and their dog already knew this. :-)
Those folders are system protected and assume that the software in question places all run time generated files into the "User" folder. You can see this with all modern software that installs by default in the Program Files directories that they generate and seek all their configuration files in the "C:\Users\User Name\AppData\Roaming (or Local) folder. It is the standard Microsoft rule for all programs that install in the Program Files folder on modern Windows operating systems.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
But by all means there should be a warning about this in the help docs for Dxwnd. Maybe in the tutorial section something like this:
NOTE: Do not install old games under "Program Files" or "Program Files (x86) folders. Doing so will result in the cdaudio emulation failing because the tracklen.nfo file can not be properly generated in these system protected folders.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Also long folder names should be prevented, they cause the same problem. With long folder names the cache generation was cancelled as seen in dxwplay. log
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Well the theoretical limit is 260 characters but that includes the full path of all folder names including the executable name. In addition it might be that the Dxwnd buffer for the path can not hold that many characters. But as a general rule you should try to avoid writing novels with your folder names.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I think the problem lies in the DxWnd path buffer. "C:\Prog (x86)\Red Storm Entertainment\Tom Clancy's Rainbow Six\RainbowSix.exe" was the longest path that could play music excluding the inverted commas. The number of characters in the path is 77.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Regarding the character limit for successful tracklen.nfo generation I found this in "player.cpp" _snprintf_s(path, sizeof path, 80, "%s\\Music%s\\Track%02d.%s", sRootPath, folderSuffix, i, ext);
80 seems a bit low considering MAX_PATH is 260.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yes, this sounds reasonable. The "Program files" folders may be subject of some check by installers that should suggest where to install things, but there's no reason why files in there could be writable but not readable!!!
Evidently, when I wrote that 80 I was thinking to the size of the line buffer (where 80 is far more than enough) instead of the size of the path buffer (where MAX_PATH = 260 is the bare minimum on nowadays configurations).
I should add a note to the help (where nobody ever reads anything, sic!) stating clearly that DxWnd doesn't use extended path lengths so that 260 is the maximum size that the program can manage.
Thank you again, Dippy!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
There cold be two cases: either the pathnames are not correct (but this can't be the case since Dippy's tracklen.nfo successfully points to these files) or the file open operation failed for some different error. The attached release tries to throw some light on the mystery by printing the error code whenever the file is there but can't be opened.
I would bet it's a permission problem, though the file operation is performed in read-only mode, so there's no reason why it should fail here and succeed when the player plays them.
Please, repeat the experiment (delete tracklen.nfo, update dxwplay.dll, run the game, send dxwplay.log)
I just thought, do you both have the same version of the game? Here I see patch 1.04 (which indicates that there could have been older versions).
https://www.patches-scrolls.com/rainbow_six.php
Although I don't know how it would affect the creation of tracklen.nfo. Anyway, there is a suspicious file in the Saptadeep Nath log LoadLibraryA: file=C:\Windows\system32\MVoice.vxp
but by name it will probably not be related to music.
Last edit: huh 2021-04-01
I tried installing the games at multiple different locations and there are some specific folders where the music isn't detected in C:\which are: Program Files (x86), Program Files, ProgramFiles(x86), ProgramFiles.
Any other location where I install the game, the music gets detected.
Last edit: BEEN_Nath_58 2021-04-02
This looks like a permission issue. Is it Win10? Maybe an error with permissions on this system. I assume you tried running DxWnd as an administrator.
P.S.
I don't think it's a good idea to install the game in the "Program Files" folder, on a 64bit system this folder is reserved for 64bit programs.
Last edit: huh 2021-04-02
The game also doesn't load on folders having a long filename.
It seems some of the crazy policies in MS that try to judge the events by the folder name. I think I saw sometimes some warning message telling that I should not copy files to these folders, but honestly it is crazy that DxWnd can have write permission (it does create the tracklen.nfo file) but doesn't have read permissions (apparently, it can't detect / read the sound files).
I have all my test games on C:\games, it seems that this avoided me some troubles.
The final thing is the game shouldn't be installed on any Program Files (x86), Program Files, ProgramFiles(x86), ProgramFiles or any spacing variations of these folders or any folders with long file names.
You could add this in the notes section, and also enable VCDA by default as the game doesn't repeat music without it .
Last edit: BEEN_Nath_58 2021-04-02
The mention of the long name is interesting. Maybe the game requires an abbreviated DOS name? E.g. C:\games\RAINBO~1
However, for a Windows game from 1998, this should not be necessary.
Not necessary this way, I tested the problem on a folder named "A folder for old Games"
It still works fine on folder names longer than 6 characters.
Last edit: BEEN_Nath_58 2021-04-02
Installing games in "Program Files" or "Program Files (x86)" is well known No-No from at least Windows Vista days. I did not mention it because I thought everyone and their dog already knew this. :-)
Those folders are system protected and assume that the software in question places all run time generated files into the "User" folder. You can see this with all modern software that installs by default in the Program Files directories that they generate and seek all their configuration files in the "C:\Users\User Name\AppData\Roaming (or Local) folder. It is the standard Microsoft rule for all programs that install in the Program Files folder on modern Windows operating systems.
But by all means there should be a warning about this in the help docs for Dxwnd. Maybe in the tutorial section something like this:
OK, but it should be verified by multiple users or worded as "in some cases may failing...."
Just replace "will" with "may" if there is doubt. ;-) It's been so long since I installed anything in Program Files folders that I may be biased.
Also long folder names should be prevented, they cause the same problem. With long folder names the cache generation was cancelled as seen in dxwplay. log
Well the theoretical limit is 260 characters but that includes the full path of all folder names including the executable name. In addition it might be that the Dxwnd buffer for the path can not hold that many characters. But as a general rule you should try to avoid writing novels with your folder names.
I think the problem lies in the DxWnd path buffer. "C:\Prog (x86)\Red Storm Entertainment\Tom Clancy's Rainbow Six\RainbowSix.exe" was the longest path that could play music excluding the inverted commas. The number of characters in the path is 77.
The mouse trails problem still exist for me:
I dont know what's going wrong there. The DirectX tab option "Compensate Flip emulation" should have taken care of that issue.
it does in Direct3D but not in software rendering
Regarding the character limit for successful tracklen.nfo generation I found this in "player.cpp"
_snprintf_s(path, sizeof path, 80, "%s\\Music%s\\Track%02d.%s", sRootPath, folderSuffix, i, ext);
80 seems a bit low considering MAX_PATH is 260.
I think 2 characters are for the location inverted commas if the program needs that. However if possible it's better if he can increase it
Good catch! This seems absolutely plausible. Let me fix it ....
here it is:
Does it fix the problem?
Last edit: gho 2021-04-02
Yes, it seems to fix it in my testing. And I bet it was also the reason for the problems with the Program Files directory.
Yes, this sounds reasonable. The "Program files" folders may be subject of some check by installers that should suggest where to install things, but there's no reason why files in there could be writable but not readable!!!
Evidently, when I wrote that 80 I was thinking to the size of the line buffer (where 80 is far more than enough) instead of the size of the path buffer (where MAX_PATH = 260 is the bare minimum on nowadays configurations).
I should add a note to the help (where nobody ever reads anything, sic!) stating clearly that DxWnd doesn't use extended path lengths so that 260 is the maximum size that the program can manage.
Thank you again, Dippy!