[Bug 42620] Stardew Valley (.NET 4.0 XNA4 game) crashes on startup (' IXAudio2Impl_CreateSourceVoice' doesn't support 'WAVE_FORMAT_ADPCM')

wine-bugs at winehq.org wine-bugs at winehq.org
Fri May 25 05:09:51 CDT 2018


https://bugs.winehq.org/show_bug.cgi?id=42620

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |DUPLICATE
            Summary|Stardew Valley crashes      |Stardew Valley (.NET 4.0
                   |                            |XNA4 game) crashes on
                   |                            |startup
                   |                            |('IXAudio2Impl_CreateSource
                   |                            |Voice' doesn't support
                   |                            |'WAVE_FORMAT_ADPCM')
             Status|NEEDINFO                    |RESOLVED
                 CC|                            |focht at gmx.net
          Component|-unknown                    |xaudio2
           Keywords|                            |dotnet

--- Comment #7 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

since there was no response I've tested on my own using a distributed backup of
Stardew Valley v1.3.11

Prerequisite:

* 'winetricks -q dotnet40'
* 'winetricks -q xna40'

Running game results in managed CLR exception:

--- snip ---
System.InvalidOperationException: An unexpected error has occurred.
   at Microsoft.Xna.Framework.Audio.SoundBank.GetCue(String name)
   at StardewValley.SoundBankWrapper.GetCue(String name) in
C:\Users\gitlab-runner\gitlab-runner\builds\5c0f9387\0\chucklefish\stardewvalley\Farmer\Farmer\SoundBankWrapper.cs:line
31
   at StardewValley.Game1.Initialize() in
C:\Users\gitlab-runner\gitlab-runner\builds\5c0f9387\0\chucklefish\stardewvalley\Farmer\Farmer\Game1.cs:line
1133
   at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
   at StardewValley.Program.Main(String[] args) in
C:\Users\gitlab-runner\gitlab-runner\builds\5c0f9387\0\chucklefish\stardewvalley\Farmer\Farmer\Program.cs:line
122003b:Ret  KERNEL32.WriteFile() retval=00000001 ret=7943cd23 
--- snip ---

'winetricks -q xact' works around and lets the game successfully start.
In fact setting 'xaudio2_6' override only makes it work.

Relevant part of log:

--- snip ---
$ WINEDEBUG=+seh,+relay,+xaudio2 wine ./Stardew\ Valley.exe >>log.txt 2>&1
...
003b:Call KERNEL32.CreateFileW(00f5a448
L"Z:\\home\\focht\\Downloads\\Stardew.Valley.v1.3.11\\Stardew
Valley\\Content\\XACT\\Sound
Bank.xsb",80000000,00000001,00000000,00000003,00100000,00000000) ret=0502fe06
003b:Ret  KERNEL32.CreateFileW() retval=00000220 ret=0502fe06 
...
003b:Call msvcrt.strcmp(288b005c "Wave Bank",03b02492 "Wave Bank") ret=0528028f
003b:Ret  msvcrt.strcmp() retval=00000000 ret=0528028f 
...
003b:trace:xaudio2:IXAudio2Impl_CreateSourceVoice (0x1f5008)->(0x3bf37bc,
0x3bf3778, 0x8, 4.000000, 0x3bf14e4, (nil), (nil))
003b:trace:xaudio2:dump_fmt wFormatTag: 0x2 (Unknown)
003b:trace:xaudio2:dump_fmt nChannels: 2
003b:trace:xaudio2:dump_fmt nSamplesPerSec: 44056
003b:trace:xaudio2:dump_fmt nAvgBytesPerSec: 52316
003b:trace:xaudio2:dump_fmt nBlockAlign: 76
003b:trace:xaudio2:dump_fmt wBitsPerSample: 4
003b:trace:xaudio2:dump_fmt cbSize: 32
003b:trace:xaudio2:dump_fmt wSamplesPerBlock: 64
003b:Call ntdll.RtlAllocateHeap(00110000,00000008,00001088) ret=f4ad0994
003b:Ret  ntdll.RtlAllocateHeap() retval=001f8d30 ret=f4ad0994
003b:Call KERNEL32.InitializeCriticalSection(001f8d40) ret=f4ad09fa
003b:Ret  KERNEL32.InitializeCriticalSection() retval=00000001 ret=f4ad09fa
003b:warn:xaudio2:IXAudio2Impl_CreateSourceVoice OpenAL can't convert this
format!
...
003b:Call KERNEL32.RaiseException(e0434352,00000001,00000005,0033f104)
ret=791cac08
003b:trace:seh:raise_exception code=e0434352 flags=1 addr=0x7b446f66
ip=7b446f66 tid=003b
003b:trace:seh:raise_exception  info[0]=80131509
003b:trace:seh:raise_exception  info[1]=00000000
003b:trace:seh:raise_exception  info[2]=00000000
003b:trace:seh:raise_exception  info[3]=00000000
003b:trace:seh:raise_exception  info[4]=79140000
003b:trace:seh:raise_exception  eax=7b435631 ebx=00000005 ecx=00000000
edx=0033f0c0 esi=0033f0c0 edi=0033f080
003b:trace:seh:raise_exception  ebp=0033f058 esp=0033eff4 cs=330023 ds=33002b
es=f7c5002b fs=f7c50063 gs=f7c5006b flags=00200212
003b:trace:seh:call_vectored_handlers calling handler at 0x791f5a7c
code=e0434352 flags=1 
--- snip ---

wFormatTag: 0x2 -> WAVE_FORMAT_ADPCM

Some interesting tidbit I found while researching:

https://github.com/FNA-XNA/FNA/issues/90

https://github.com/flibitijibibo/flibitBounties/issues/4

--- quote ---
Introductory Information:

XAudio2 is Microsoft's low-level audio library made primarily for game
developers.
XAudio2 is split up in to multiple parts, including XAudio2 itself
(confusingly), X3DAudio, and XAPOFX.

FAudio is FNA's upcoming replacement for the Audio subsystem.
It was originally designed as just an XACT reimplementation, but was eventually
expanded to
act as an DirectX Audio implementation with support for XAudio2, X3DAudio, and
XACT3.
The repository is currently here.

The Project:

We need to take FAudio and create a series of Wine DLLs that reimplement the
XAudio2 2.7 set of libraries.
This will most likely be done by taking the existing framework in the Wine
source and filling them in to use FAudio,
removing any of CodeWeavers' existing implementation.
The resulting source will be kept in the FAudio source tree as a separate wine/
folder.
Naturally this will only be used for Wine hacking, most notably because it will
be released under the LGPL,
unlike FAudio itself which is released under the zlib license.

For this bounty we only care about XAudio2 and X3DAudio;
XACT will not be a primary focus here and it's unlikely we'll ever look at
XAPOFX.

A large part of portability research is seeing how compatible our work is with
existing Windows code.
In addition to having a much larger pool of data to test with, it also makes
pitching ports a whole lot easier;
many XNA Linux/macOS ports can be directly traced back to having FNA prototypes
already built by the time we contacted the developer.
With FAudio now being its own separate entity, it's now possible for us to try
and do the same for XAudio2,
which has often been a point of contention for porting away from Windows, Xbox
360, and Xbox One.
Similar projects include XnaToFna, our relinker for testing XNA games with FNA,
and DXVK, a Direct3D11 reimplementation using Vulkan.
--- quote ---

$ du -sh Stardew.Valley.v1.3.11.rar 
389M    Stardew.Valley.v1.3.11.rar

$ sha1sum Stardew.Valley.v1.3.11.rar 
57a19fa0d439986335b8dfc224c557480f1fe888  Stardew.Valley.v1.3.11.rar

$ wine --version
wine-3.8-215-gb70f0d723a

Regards

*** This bug has been marked as a duplicate of bug 39402 ***

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list