Feature Suggestion: Implementation of the audiere.dll fix that fixes crashes...
Window hooker to run fullscreen programs in window and much more...
Status: Beta
Brought to you by:
ghotik
What's up? Have you figured out a way to fix the crash bug in the winmm.dll module that I wrote about? Have you just tried connecting DxWnd to the debugger and somehow triggered this crash? Of course, it appears when starting some games with the "Inject suspended process" option turned on, and the crash is in the GetNumDevCaps function
GetNumDevCaps? I can't get any reference to that call. What library it should belong to?
The error with this function was in the winmm.dll module, but it was enough to delete this file and winmm.ini from the DxWnd folder and the crashes disappeared
Go to C: \ Users \ [your account name] \ AppData \ Local \ CrashDumps, read the dmp files with WinDbg and see what file is listed as the cause. If it's winmm.dll then it's the bug I described above
I will come back to the crash topic in the winmm.dll module. I noticed this problem also in Minuit Phantome and in a few other games, for example today I came across it while testing some Russian Neighbors from Hell (called Nasty Neighbors). I tried to encounter this error in the debugger, but I could not register any crashes in this module. Interestingly, the bug is in the auxGetDevNumCaps function and it is because of the wrong instruction injection, but I don't know how to check which instruction is wrong and which is right. I guess @gho only you can do it. Oh, and in earlier versions of DxWnd it was not there, it appeared somehow from version 2.05.63 (or earlier, I don't remember exactly)
Oh and the link to the game - https://mega.nz/file/52xXUYaQ#D41dWu6tNK3MHuJ59ZflVzQySRNssw7C1bvlaN4lTcE
Is it possible that you have a winmm.dll file in the same folder with dxwnd.exe?
Dxwnd builds 2.05.57 - 2.05.59 came with a winmm.dll wrapper in the same folder as dxwnd.exe (when GHO merged the CDAudio proxy with the main Dxwnd project). This was causing a conflict with some games so the proxy dll was moved in a "vcda" sub-folder starting with the 2_05_60_build.
Thanks for the info, actually after removing the winmm.dll and winmm.ini files the crash disappeared although the game in question still does not start under DxWnd, but I will create a separate thread about it. OK, it turns out that the Alchemist Wizard should already run under DxWnd, which should allow you to implement the patch under audiere.dll
Beware, the link you posted is signaled as viral in a quite assertive way.
The crash dump of "Alchemy Wizard" starts from dxwnd procedure GetThreadStartAddress, which is reasonable because this call is used to find where to suspend the target process when using the "Inject suspended process" thread. Unfortunately, that call can't be enriched with log messages or other diagnostics, so it won't be easy to make a fix, admitting that this is possible.
False alarm, the game has no virus. I also didn't notice any advertising elements in the game installer or in the game itself, so I don't know where it comes from. Unfortunately, the game has to be added to the exceptions - https://www.virustotal.com/gui/file/b1bcabec9c6c3a0bcb42ffd33264a5079856c65ab8678657d03d7eea37a16ed4/detection
https://www.virustotal.com/gui/url/8b3bc8368ed1062a789b69d861a9a6f7b37b347c2a0a82a1d3ed4e9826242997/detection
Last edit: MrPepka 2021-02-14
I come back to the topic. I found another game that seems to be using the audiere library with a buggy version. This game is Hugo Bitwa Pingwinów and you can download it for polish abandonware - https://mirror.polish-abandonware.pl/Gry/HUGO%20-%20Bitwa%20Pingwin%C3%B3w%20PL.7z
Last edit: MrPepka 2021-05-14
Have you noticed that within the Hugo bitwa pingwinów CD image there is a LIBRARY folder that holds two full library projects, Audiere and ClanLib? I mean, with all the source code and instructions to compile? What a valuable resource!
Yah, I noticed that before. Maybe we will finally be able to implement this fix, the more that this game from the Hugo series does not have an audiere version that works OK
Found another game with audiere issues. This game was even mentioned in the thread on old-games.ru to which I pasted the link on the previous page. This is an Electric Billy game. Although it is a Russian game (looking at the title of the game window), I really have it ... from the Polish newspaper (PC & Go). Link to the image - https://archive.org/download/redump_pc_P/PC%20%26%20Go%201-2004%20%28Poland%29.7z
I found another game using the audiere.dll library and obviously crashing on Windows 7 and above. This game is Bajeczna Przygoda (Jungle Heart), BTW: It used to be sold in Tesco stores (and only there you could buy it). It is on polish-abandonware (I remember the password "polish-abandonware.pl")
https://mirror.polish-abandonware.pl/Gry/Bajeczna%20Przygoda%20%28Jungle%20Heart%29%20PL.7z
Last edit: MrPepka 2021-10-14
OK so replacing the audiere.dll library with a newer one helps with Hugo and Bajeczna Przygoda. As for Electric Bill, this fix works so that you have to replace the audiere.dll library with a newer one and add kernelog.dll to the game folder and then the game starts - https://cdn.discordapp.com/attachments/617495809226965036/898267813054120006/Electric_Billy_Fix.zip
Last edit: MrPepka 2021-10-14
I tried the patch on "Hugo bitwa pingwinów" but here it doesn't work, there's some mismatch of library entry points:
Regarding Hugo, download the new version of audiere from sourceforge and extract it to the folder where you have the game installed by replacing the file - https://sourceforge.net/projects/audiere/files/audiere/1.9.4/audiere-1.9.4-win32.zip
Same problem with "Bajeczna Przygoda". Maybe it depends on Win10? Or what else?
Hmm, I changed the audiere library in Hugo and in the game "Bajeczna Przygoda" and it worked. And at Electric Billy did you check if it works?
No, and I found the culprit: tha games search for
_AdrOpenSampleSource@4
and the new dll from teh audiere project exposes this one:_AdrOpenSampleSource@8
. This means that they added a second DWORD function argument, who knows what for? But I may try to rebuild the new audiere adding the missing call for back-compatibility. Of course, it's not granted it could work ....It seems that I spent some time trying to write an audiere proxy dll but without success. The proxy is ready, but something on the
__cdecl
convention calls must be wrong because the program likes the new dll but terminates immediately, as if I did something wrong with the call return codes.Well, I have to learn something more about this
__cdecl
convention call. Be patient.Wow! I was so close .... it works now!!
In attach the audiere proxy that makes "Electric Bill" working perfectly, no more blocks or delays. You have to follow these instructions:
1) download the latest audiere.dll in audiere-1.9.4-win32.zip from the SF page (you know this already) and copy it to the game folder
2) rename this audiere.dll as audiere.bin
3) extract my audiere proxy to the game folder
4) run the game.
The architecture is pretty simple: my proxy audiere.dll loads all functions from audiere.bin but changes the interface of
_AdrOpenSampleSource@8
into_AdrOpenSampleSource@4
so that the game is pleased with this interface but is using the fixed audiere lib.@MrPepka: please, if you have some time you could kindly provide a list of all games that get fixed by this patch, it could be interesting to know ...
Last edit: gho 2021-10-17
Just to ask, is there a complete list where such secondary patches for DxWnd are available? Like if this isn't implemented in the main release of DxWnd and someone 10yrs from now looks for it, it may be impossible to find.