http://bugs.winehq.org/show_bug.cgi?id=27087
--- Comment #5 from Jörg Höhle hoehle@users.sourceforge.net 2011-05-11 04:09:33 CDT --- I'm sorry I cannot reproduce the hang in the demo, using a single core laptop with Ubuntu Intrepid. I finally managed to start it in wine-1.3.19. The key was to enable full screen mode in winecfg, although the app opens a window.
I can enter and exit the credits, select then cancel "new game" and hear the sounds such as Sounds\UIButtonPress.wav. Do you have a multi-core machine? Do you know how to switch other cores off (I don't know how to do that on my Mac), does it still happen then?
ALSA HW accel. must be used because the game uses dsound. With emulation mode, dsound already has winmm's sound device open, hence PlaySound fails -- unless you use Maarten's patch to enable multiple opens in winealsa (untested).
What I don't understand about how the app could possibly hang is: the sounds are extremely short. Thus they should have finished playing long before you get a change to click the next button. So typically PlaySound won't enter the WaitForSingleObject(psLastEvent, INFINITE) branch. However, your trace shows that thread 0036 send a single waveOutWrite and never terminates. There should be 2 for the 2 buffers.
Something is weird about your log. The first UIButtonPress.wav right at the beginning terminates without a single waveOutWrite(). You may add some traces in proc_PlaySound to find out why it terminates early, e.g. trace bPlaySoundStop + print the return value of mmioSeek and mmioRead.