dsoal
dsoal copied to clipboard
Princess Maker 3 crashes with DSOAL
My recently built DSOAL or any other DSOAL found online can't the audio issues with the game. The problem was expressed in the DxWnd forums but I thought it would be better to share it here, since DSOAL is constantly being improved.
The original thread: https://sourceforge.net/p/dxwnd/discussion/general/thread/3fd8ae2874/ (game is provided there as well)
The issue: The game crashes when internal voiceover and/or PCM sound is enabled.
Settings: On the left panel, select PCM from the 2nd box (PCM problem), and/or the 1st option in the third box on the left (voiceover problem).
Where to find the problem:
The PCM sound issue is emulated when you go to "New Game" and start typing. The internal voiceover issue is emulated after crossing this screen to type the name, and the lady starts speaking.
The posted sourceforge link has a link to the video which shows the issue.
Thank you.
Logs would help far more than a video https://github.com/kcat/dsoal#environment-variables
Also try these I guess https://community.pcgamingwiki.com/files/file/1338-dsounddll-for-tarzan https://www.play-old-pc-games.com/compatibility-tools/_inmm-dll-tutorial/
EDIT: I see someone also reported XP to have problems. In this case, I'm not really sure dsoal can do anything to help. It may be as well they were still relying on some DOS api (in this case I would recommend you to check whether english W98 or japanese XP help in any way)
Also try these I guess https://community.pcgamingwiki.com/files/file/1338-dsounddll-for-tarzan https://www.play-old-pc-games.com/compatibility-tools/_inmm-dll-tutorial/
Game has no remaining issue with CD audio. The game would crash without DxWnd cd audio so I have that enabled. But if I disable it, the game works fine without cd audio emulation, so I am testing it like that for minimum interference. I tried the other dsound.dll and it gives the same behaviour. For a rough explanation, the freeze is "the same lock as in Pitfall: The Mayan Adventure", i.e., stops when sound effect plays.
EDIT: I see someone also reported XP to have problems. In this case, I'm not really sure dsoal can do anything to help. It may be as well they were still relying on some DOS api
Those references are for PM2, released in 1993 and for DOS. Having DOS api reliance would be normal there. This game was natively for Windows, so I can't think of a reason why the game would load a DOS library.
(in this case I would recommend you to check whether english W98 or japanese XP help in any way)
The original user confirmed it worked on his japanese windows 98 (probably he no longer has it and thus needs help?). I installed it on my English win98 with daemon tools and it works well there as well.
Logs would help far more than a video https://github.com/kcat/dsoal#environment-variables
It looks like it's failing to open a device:
15f4:trace:dsound:DSShare_Create Opened AL device: OpenAL Soft on Speakers (2- USB Audio Device)
15f4:err:dsound:DSShare_Create Could not create context (0xa001)!
An OpenAL Soft log would be helpful (set ALSOFT_LOGLEVEL
and ALSOFT_LOGFILE
instead of the DSOAL_LOGLEVEL
/FILE
env vars).
An OpenAL Soft log would be helpful (set ALSOFT_LOGLEVEL and ALSOFT_LOGFILE instead of the DSOAL_LOGLEVEL/FILE env vars).
That's still a DSOAL log. Make sure to unset the DSOAL env vars. Oddly though, that shows the device succeeds to open that time. It's immediately closed though, and no indication of why it crashes.
That's still a DSOAL log. Make sure to unset the DSOAL env vars. Oddly though, that shows the device succeeds to open that time. It's immediately closed though, and no indication of why it crashes.
I had the old variables removed but now I am using the latest openal file: String.txt
For a rough explanation, the freeze is "the same lock as in Pitfall: The Mayan Adventure", i.e., stops when sound effect plays.
I mean, that has a known solution.
This game was natively for Windows, so I can't think of a reason why the game would load a DOS library.
It's not inconceivable for a windows 9x game (even more for 95) to have relied on some even-older assumption/function. Though yes, this was just me brainstorming for clues.
I installed it on my English win98 with daemon tools and it works well there as well.
I see... It's really strange then, given the korean and chinese versions would seem just fine with the normal windows compatibility modes.
I mean, that has a known solution.
Unlike the game doesn't use Wail.
More about the game, the manual talks about needing to enable "Audio and Video Compression in the Settings". I don't think the setting is present on modern windows, and they are already enabled by default.
With API Monitor the game was using imapdcm.acm but deleting the file on Win98 still allowed the game to play sound, so I don't have a lead at what the codec is.
Should be these, these and these (in turn having some of the codecs mentioned here and here?). Lacking any shred of an idea, I'd just stupidly recommend you try to see millennium or 2000.
Lacking any shred of an idea, I'd just stupidly recommend you try to see millennium or 2000.
I would assume it to work on Me atleast (since not NT like 2000). The user with the issue didn't intend to utilise a ME machine, and VM drivers are abysmal (PCem performance may be poor as well). I am curious if kcat found anything. DxWnd forum seems to have found something with internal voiceover (just time before it is discussed properly).
The only weird thing I see is the DSOAL log doesn't find the EAX5.0 (or EFX) extension, despite the OpenAL Soft log saying 1.22.2, which should have it. But regardless, it never gets to a point where it would use EAX (if it uses it at all), and instead just closes the device after opening it and calling SetCooperativeLevel
. It doesn't even query anything about the device. After which, a few more threads start and stop, before the log ends (presumable from the crash). I don't see anything in the log the app could have a problem with (unless it expects the device handle to stay valid/open even after releasing it), and nothing that could result in a crash.
I'll need to try get it running in Wine to see if I can get a backtrace, or try a few things to see if it's a bad/unexpected call to DSound causing a problem.
The dxwnd guys hint there's something to do with the mmioDescend function, which in turn means winmm is probably the culprit. So I doubt there's really much left to do here. I would really try to test all the many wrappers that have been created for that during the years.
(btw, another desperate shot in the dark at debugging could be using regmon and filemon to see what gets accessed right before and during the crash)
I'll need to try get it running in Wine to see if I can get a backtrace, or try a few things to see if it's a bad/unexpected call to DSound causing a problem.
The games is from 1997 so I doubt it uses EAX. The problem with the voice baffles me because I expect it to atleast use DSound in some way, but everyone I asked has no clue what do do next...
The dxwnd guys hint there's something to do with the mmioDescend function, which in turn means winmm is probably the culprit.
The game crashes on a XP VM so I can't say with certainty that it's a Win7+ issue. But that's the clue we have, maybe gho will start from here. I will check what Regmon and Filemon say, and report back if there's anything useful. The issue can be left open, if someone has an opinion/question or a solution.