clementgallet / libTAS

GNU/Linux software to (hopefully) give TAS tools to games
GNU General Public License v3.0
494 stars 56 forks source link

Issues with VVVVVV under Wine #307

Open InfoTeddy opened 4 years ago

InfoTeddy commented 4 years ago

I know that VVVVVV has native Linux support (and it's been recently open-sourced so it could be ported to Linux anyways), but I'm attempting to run the Windows version under libTAS to check if one of my TASes syncs, for further glitch research and experimentation.

Anyway, I can run the game normally under Wine, and here's the logs of me doing so:

 ~/v/map/windows  wine VVVVVV.exe
 0009:fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub
 Base directory: C:\users\infoteddy\My Documents\VVVVVV\
 Save directory: C:\users\infoteddy\My Documents\VVVVVV\saves\
 Level directory: C:\users\infoteddy\My Documents\VVVVVV\levels\
 0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32c888,0x00000000), stub!
 0009:fixme:win:EnumDisplayDevicesW (L"\\\\.\\DISPLAY1",0,0x32c888,0x00000000), stub!
 0009:fixme:win:EnumDisplayDevicesW (L"\\\\.\\DISPLAY1",0,0x32c4b0,0x00000000), stub!
 0009:fixme:win:EnumDisplayDevicesW (L"\\\\.\\DISPLAY1",1,0x32c888,0x00000000), stub!
 0009:fixme:win:EnumDisplayDevicesW ((null),1,0x32c888,0x00000000), stub!
 0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32c888,0x00000000), stub!
 0009:fixme:win:EnumDisplayDevicesW ((null),1,0x32c888,0x00000000), stub!
 0009:err:ole:CoGetClassObject class {5a508685-a254-4fba-9b82-9a24b00306af} not registered
 0009:err:ole:CoGetClassObject no class object {5a508685-a254-4fba-9b82-9a24b00306af} could be created for context 0x1
 SteamworksNative.dll not found!
 002c:fixme:win:RegisterDeviceNotificationW (hwnd=0x1004e, filter=0xe0fe30,flags=0x00000000) returns a fake device notification handle!
 0009:fixme:win:RegisterTouchWindow (0x10050 00000003): stub
 0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32c3f4,0x00000000), stub!
 0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32bf84,0x00000000), stub!

                        VVVVVV

                  8888888888888888
                88888888888888888888
                888888    8888    88
                888888    8888    88
                88888888888888888888
                88888888888888888888
                888888            88
                88888888        8888
                  8888888888888888
                      88888888
                  8888888888888888
                88888888888888888888
                88888888888888888888
                88888888888888888888
                8888  88888888  8888
                8888  88888888  8888
                    888888888888
                    8888    8888
                  888888    888888
                  888888    888888
                  888888    888888

0009:err:winediag:MIDIMAP_drvOpen No software synthesizer midi port found, Midi sound output probably won't work.
The complete reloaded file size: 53749836
data/music/0levelcomplete.ogg unpacked
data/music/1pushingonwards.ogg unpacked
data/music/2positiveforce.ogg unpacked
data/music/3potentialforanything.ogg unpacked
data/music/4passionforexploring.ogg unpacked
data/music/5intermission.ogg unpacked
data/music/6presentingvvvvvv.ogg unpacked
data/music/7gamecomplete.ogg unpacked
data/music/8predestinedfate.ogg unpacked
data/music/9positiveforcereversed.ogg unpacked
data/music/10popularpotpourri.ogg unpacked
data/music/11pipedream.ogg unpacked
data/music/12pressurecooker.ogg unpacked
data/music/13pacedenergy.ogg unpacked
data/music/14piercingthesky.ogg unpacked
data/music/predestinedfatefinallevel.ogg unpacked
The complete reloaded file size: 53749836
data/music/0levelcomplete.ogg unpacked
data/music/1pushingonwards.ogg unpacked
data/music/2positiveforce.ogg unpacked
data/music/3potentialforanything.ogg unpacked
data/music/4passionforexploring.ogg unpacked
data/music/5intermission.ogg unpacked
data/music/6presentingvvvvvv.ogg unpacked
data/music/7gamecomplete.ogg unpacked
data/music/8predestinedfate.ogg unpacked
data/music/9positiveforcereversed.ogg unpacked
data/music/10popularpotpourri.ogg unpacked
data/music/11pipedream.ogg unpacked
data/music/12pressurecooker.ogg unpacked
data/music/13pacedenergy.ogg unpacked
data/music/14piercingthesky.ogg unpacked
data/music/predestinedfatefinallevel.ogg unpacked
Quick Save Not Found
Teleporter Save Not Found
0009:fixme:imm:ImmReleaseContext (0x10050, 0x16629b8): stub
0009:fixme:msctf:ThreadMgr_ActivateEx Unimplemented flags 0x4
0009:fixme:msctf:ThreadMgrSource_AdviseSink (0x21b6b8) Unhandled Sink: {ea1ea136-19df-11d7-a6d2-00065b84435c}
0009:fixme:imm:NotifyIME NI_CLOSECANDIDATE
0009:fixme:msctf:ThreadMgrSource_AdviseSink (0x21b6b8) Unhandled Sink: {ea1ea136-19df-11d7-a6d2-00065b84435c}
0009:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (0x32c8d8 1 C) semi-stub
0009:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (0x32c6b8 1 C) semi-stub
002d:fixme:d3d:state_linepattern_w Setting line patterns is not supported in OpenGL core contexts.
002c:fixme:win:UnregisterDeviceNotification (handle=0xcafeaffe), STUB!
0009:fixme:imm:NotifyIME NI_CLOSECANDIDATE

Here's the logs of whenever I launch it under libTAS, though:

~/T  ./vvvvvv-map
Interim commit 7e285b2 built on 2020-02-24
ERROR: ld.so: object '/usr/local/bin/libtas32.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
[libTAS f:0] Thread 0 (main) Skipping libtas init
Attempt 1: Connected.
0009:fixme:ntdll:find_reg_tz_info Can't find matching timezone information in the registry for PST, bias 480, std (d/m/y): 0/00/0000, dlt (d/m/y): 0/00/0000
0009:fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub
Base directory: C:\users\infoteddy\My Documents\VVVVVV\
Save directory: C:\users\infoteddy\My Documents\VVVVVV\saves\
Level directory: C:\users\infoteddy\My Documents\VVVVVV\levels\
0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32c888,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW (L"\\\\.\\DISPLAY1",0,0x32c888,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW (L"\\\\.\\DISPLAY1",0,0x32c4b0,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW (L"\\\\.\\DISPLAY1",1,0x32c888,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW ((null),1,0x32c888,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32c888,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW ((null),1,0x32c888,0x00000000), stub!
0009:err:ole:CoGetClassObject class {5a508685-a254-4fba-9b82-9a24b00306af} not registered
0009:err:ole:CoGetClassObject no class object {5a508685-a254-4fba-9b82-9a24b00306af} could be created for context 0x1
SteamworksNative.dll not found!
002c:fixme:win:RegisterDeviceNotificationW (hwnd=0x1004e, filter=0xe0fe30,flags=0x00000000) returns a fake device notification handle!
0009:fixme:win:RegisterTouchWindow (0x10050 00000003): stub
0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32c3f4,0x00000000), stub!
[libTAS f:0] Thread 31827 (main) OpenGL vendor: VMware, Inc.
[libTAS f:0] Thread 31827 (main) OpenGL renderer: llvmpipe (LLVM 9.0, 128 bits)
0009:fixme:d3d:wined3d_guess_card No card selector available for card vendor 0000 (using GL_RENDERER "llvmpipe (LLVM 9.0, 128 bits)").
0009:err:d3d:wined3d_adapter_find_polyoffset_scale PolygonOffset scale factor detection failed, using fallback value 2^23.
0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32bf84,0x00000000), stub!
0009:fixme:d3d:wined3d_guess_card No card selector available for card vendor 0000 (using GL_RENDERER "llvmpipe (LLVM 9.0, 128 bits)").
0009:err:d3d:wined3d_adapter_find_polyoffset_scale PolygonOffset scale factor detection failed, using fallback value 2^23.

                        VVVVVV

                  8888888888888888
                88888888888888888888
                888888    8888    88
                888888    8888    88
                88888888888888888888
                88888888888888888888
                888888            88
                88888888        8888
                  8888888888888888
                      88888888
                  8888888888888888
                88888888888888888888
                88888888888888888888
                88888888888888888888
                8888  88888888  8888
                8888  88888888  8888
                    888888888888
                    8888    8888
                  888888    888888
                  888888    888888
                  888888    888888

0009:err:winediag:MIDIMAP_drvOpen No software synthesizer midi port found, Midi sound output probably won't work.
terminate called after throwing an instance of 'libtas::ThreadExitException'
wine client error:32: write: Bad file descriptor
0032:err:seh:raise_exception Exception frame is not in stack limits => unable to dispatch exception.
wine client error:32: write: Bad file descriptor
0032:err:seh:raise_exception Exception frame is not in stack limits => unable to dispatch exception.
wine client error:32: write: Bad file descriptor
0032:err:seh:raise_exception Exception frame is not in stack limits => unable to dispatch exception.
wine client error:32: write: Bad file descriptor
0032:err:seh:raise_exception Exception frame is not in stack limits => unable to dispatch exception.
wine client error:32: write: Bad file descriptor
0032:err:seh:raise_exception Exception frame is not in stack limits => unable to dispatch exception.
wine client error:32: write: Bad file descriptor
0032:err:seh:raise_exception Exception frame is not in stack limits => unable to dispatch exception.
wine client error:32: write: Bad file descriptor
0032:err:seh:raise_exception Exception frame is not in stack limits => unable to dispatch exception.
wine client error:32: write: Bad file descriptor
0032:err:seh:raise_exception Exception frame is not in stack limits => unable to dispatch exception.
wine client error:32: write: Bad file descriptor
Got unknown message!!!
clementgallet commented 4 years ago

You need to disable "Runtime > Recycle threads" when running Wine games (it is disabled by default now).

InfoTeddy commented 4 years ago

So when I uncheck "Runtime > Recycle threads", the game actually launches. However, it renders strangely (I'm running the game at 1000/34 FPS):

Also, from what I can tell from the audio, it looks like libTAS isn't hooking the audio in under its determinism? So the audio is basically a super-laggy game, where the music still plays regardless of if you're going frame-by-frame or not, and sound effects just play fully on the frame they start to be played, even though normally it would take several frames for such sound effects to fully play through.

Here's the logs:

~/T  ./vvvvvv-map
Interim commit 7e285b2 built on 2020-02-24
ERROR: ld.so: object '/usr/local/bin/libtas32.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
[libTAS f:0] Thread 0 (main) Skipping libtas init
Attempt 1: Connected.
0009:fixme:ntdll:find_reg_tz_info Can't find matching timezone information in the registry for PST, bias 480, std (d/m/y): 0/00/0000, dlt (d/m/y): 0/00/0000
0009:fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub
Base directory: C:\users\infoteddy\My Documents\VVVVVV\
Save directory: C:\users\infoteddy\My Documents\VVVVVV\saves\
Level directory: C:\users\infoteddy\My Documents\VVVVVV\levels\
0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32c888,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW (L"\\\\.\\DISPLAY1",0,0x32c888,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW (L"\\\\.\\DISPLAY1",0,0x32c4b0,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW (L"\\\\.\\DISPLAY1",1,0x32c888,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW ((null),1,0x32c888,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32c888,0x00000000), stub!
0009:fixme:win:EnumDisplayDevicesW ((null),1,0x32c888,0x00000000), stub!
0009:err:ole:CoGetClassObject class {5a508685-a254-4fba-9b82-9a24b00306af} not registered
0009:err:ole:CoGetClassObject no class object {5a508685-a254-4fba-9b82-9a24b00306af} could be created for context 0x1
SteamworksNative.dll not found!
002c:fixme:win:RegisterDeviceNotificationW (hwnd=0x1004e, filter=0xe0fe30,flags=0x00000000) returns a fake device notification handle!
0009:fixme:win:RegisterTouchWindow (0x10050 00000003): stub
0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32c3f4,0x00000000), stub!
[libTAS f:0] Thread 5841 (main) OpenGL vendor: VMware, Inc.
[libTAS f:0] Thread 5841 (main) OpenGL renderer: llvmpipe (LLVM 9.0, 128 bits)
0009:fixme:d3d:wined3d_guess_card No card selector available for card vendor 0000 (using GL_RENDERER "llvmpipe (LLVM 9.0, 128 bits)").
0009:err:d3d:wined3d_adapter_find_polyoffset_scale PolygonOffset scale factor detection failed, using fallback value 2^23.
0009:fixme:win:EnumDisplayDevicesW ((null),0,0x32bf84,0x00000000), stub!
0009:fixme:d3d:wined3d_guess_card No card selector available for card vendor 0000 (using GL_RENDERER "llvmpipe (LLVM 9.0, 128 bits)").
0009:err:d3d:wined3d_adapter_find_polyoffset_scale PolygonOffset scale factor detection failed, using fallback value 2^23.

                        VVVVVV

                  8888888888888888
                88888888888888888888
                888888    8888    88
                888888    8888    88
                88888888888888888888
                88888888888888888888
                888888            88
                88888888        8888
                  8888888888888888
                      88888888
                  8888888888888888
                88888888888888888888
                88888888888888888888
                88888888888888888888
                8888  88888888  8888
                8888  88888888  8888
                    888888888888
                    8888    8888
                  888888    888888
                  888888    888888
                  888888    888888

0009:err:winediag:MIDIMAP_drvOpen No software synthesizer midi port found, Midi sound output probably won't work.
The complete reloaded file size: 53749836
data/music/0levelcomplete.ogg unpacked
data/music/1pushingonwards.ogg unpacked
data/music/2positiveforce.ogg unpacked
data/music/3potentialforanything.ogg unpacked
data/music/4passionforexploring.ogg unpacked
data/music/5intermission.ogg unpacked
data/music/6presentingvvvvvv.ogg unpacked
data/music/7gamecomplete.ogg unpacked
data/music/8predestinedfate.ogg unpacked
data/music/9positiveforcereversed.ogg unpacked
data/music/10popularpotpourri.ogg unpacked
data/music/11pipedream.ogg unpacked
data/music/12pressurecooker.ogg unpacked
data/music/13pacedenergy.ogg unpacked
data/music/14piercingthesky.ogg unpacked
data/music/predestinedfatefinallevel.ogg unpacked
The complete reloaded file size: 53749836
data/music/0levelcomplete.ogg unpacked
data/music/1pushingonwards.ogg unpacked
data/music/2positiveforce.ogg unpacked
data/music/3potentialforanything.ogg unpacked
data/music/4passionforexploring.ogg unpacked
data/music/5intermission.ogg unpacked
data/music/6presentingvvvvvv.ogg unpacked
data/music/7gamecomplete.ogg unpacked
data/music/8predestinedfate.ogg unpacked
data/music/9positiveforcereversed.ogg unpacked
data/music/10popularpotpourri.ogg unpacked
data/music/11pipedream.ogg unpacked
data/music/12pressurecooker.ogg unpacked
data/music/13pacedenergy.ogg unpacked
data/music/14piercingthesky.ogg unpacked
data/music/predestinedfatefinallevel.ogg unpacked
Quick Save Not Found
Teleporter Save Not Found
0009:fixme:imm:ImmReleaseContext (0x10050, 0x215bf0): stub
0009:fixme:msctf:ThreadMgr_ActivateEx Unimplemented flags 0x4
0009:fixme:msctf:ThreadMgrSource_AdviseSink (0x215990) Unhandled Sink: {ea1ea136-19df-11d7-a6d2-00065b84435c}
0009:fixme:imm:NotifyIME NI_CLOSECANDIDATE
0009:fixme:msctf:ThreadMgrSource_AdviseSink (0x215990) Unhandled Sink: {ea1ea136-19df-11d7-a6d2-00065b84435c}
0009:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (0x32c8d8 1 C) semi-stub
0009:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (0x32c6b8 1 C) semi-stub
002d:fixme:d3d:state_linepattern_w Setting line patterns is not supported in OpenGL core contexts.
[libTAS f:1] Thread 5965        Switching main thread from 4146645376 to 1953291072