View Full Version : Trouble with sh3 steam + mods on GNU/Linux + wine
Dowasnas
02-25-21, 07:15 PM
Hello,
Pardon me; if something like this was already discussed, I did not find it.
I have downloaded SH3 from Steam to my Debian 10 GNU/Linux system. My objective is to run SH3 with GWX and Commander's. I've tried following this guide (using Wine 4.0):
http://www.donitzeliteflotilla.com/forum/index.php?topic=2838
The first problem I got was when I tried to use S3F to make a copy of the Steam-fixed game. Every file took around 2-60+ seconds to be processed, despite having an SSD. I thought that, if it's simply making a copy, I may as well manually do it with cp. It quickly copied the folder. Not sure if S3F was doing anything else other than copying.
The GWX installer then told me that apparently the game copy had been tampered with (I did actually do some tests with mods before, but I disabled them and reinstalled the game before doing the steam fix, so that's weird). In fact, there were many files that weren't supposed to be there in a normal installation, so I uninstalled and installed the game again. After doing that, I got a clean install, so GWX should work now. I now have to do the steam fix again.
I have a symbolic link, $HOME/Software/sh3, that has "$HOME/.steam/Steam/steamapps/common/Silent Hunter III" as target. I created it, because I knew some software has problems with spaces in paths, and because some programs don't index hidden directories and files (everything starting with "." in its name) (including SFSF).
Problem is SFSF fails now, for some reason, when running the steam fix, with "Z:\home\my_user\Software\sh-sf\stf" (directory exists) as installation path and "Z:\home\my_user\Software\sh3" as destination path, it fails saying that I should close all directories of SH3 and Steam. I killall'd everything with "steam" and "Steam" in its name and restarted my computer. Still happens. I do not have anything using that directory.
(I'm using the wineprefix mentioned here: https://steamcommunity.com/sharedfiles/filedetails/?id=1803072674)
I just noticed I seem to have created a symbolic link pointing to $HOME/Software/sh3 inside the game's directory, creating a circular reference, so to SFSF it probably looks like a directory extending into infinity, which most certainly can create unpredictable outcomes (should have read the man page for ln before guessing whether the target or the link comes first XD). Will fix that and see if it solves the problem. It probably will, since SFSF has succeeded in the past. If it does work I'll keep this topic open anyway, because I have spent one day and a half working on setting up SH3, and because more problems related to what I'm trying to do will likely show up.
Aktungbby
02-25-21, 10:32 PM
Dowasnas!:Kaleun_Salute:
Dowasnas
02-26-21, 05:08 AM
I removed the circular symlink, but the problem still remains. It still tells me I should close all SH3 and Steam instances and Steam directories.
What exactly does the steam-fix do? Maybe I can do it manually.
Edit:
Attempted making a normal copy without doing a steam-fix. Attempting to run SH3 outside of the Steam library fails with this error:
Steam Error
Application load error 2:0000065558
Edit2:
Managed to run SFSF. I had to temporarily rename $HOME/.steam to $HOME/steam. Using a symbolic link seems to have been the problem. Will see if I get it working now.
Edit3:
Ok, SH3 with GWX with H.SIE patch installed as indicated by the first guide I linked in this post, crashes some seconds after entering the game world. So, the loading screen passes, you see the u-boat's inside, look around a bit, then crash. That does not happen when the H.SIE patch is not applied. There are no other active mods (except GWX and H.Sie supplemental). I don't find anything about it online. Is it a known error?
Here's some debug info:
Unhandled exception: page fault on write access to 0xffffffc0 in 32-bit code (0x7f45eebc).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:006b GS:0063
EIP:7f45eebc ESP:0033ec84 EBP:00000000 EFLAGS:00210206( R- -- I - -P- )
EAX:7f45f410 EBX:00000000 ECX:006ed870 EDX:0052d830
ESI:12a6b738 EDI:12a6b2c0
Stack dump:
0x0033ec84: 40690000 00000000 0063511c 00000000
0x0033ec94: 43480000 00200202 11c36de8 00000000
0x0033eca4: 13107ac0 0033ecbc 00000000 0052d830
0x0033ecb4: 006ed870 3d273d0b 00635039 0044c764
0x0033ecc4: 3d273d0b 3d273d0b 13107ac0 006d4ce0
0x0033ecd4: 004cc7e8 3d273d0b 3d273d0b 100183c0
Backtrace:
=>0 0x7f45eebc (0x00000000)
0x7f45eebc: fstpt 0xffffffb8(%ebp)
Modules:
Module Address Debug info Name (66 modules)
PE 340000- 354000 Deferred intro
PE 360000- 36c000 Deferred messagenet
PE 370000- 376000 Deferred missionengine
PE 380000- 3a9000 Deferred simdata
PE 3b0000- 3ca000 Deferred filemanager
PE 3d0000- 3d7000 Deferred movietex.act
PE 3e0000- 3e8000 Deferred property
PE 3f0000- 3f8000 Deferred drawlib
PE 400000- 640000 Deferred sh3
PE 640000- 653000 Deferred utils
PE 660000- 674000 Deferred statemachine
PE de0000- de7000 Deferred anim.act
PE df0000- df7000 Deferred bezierwaypoint.act
PE e00000- e15000 Deferred camerabehavior.act
PE e20000- e28000 Deferred cameramanager.act
PE e30000- e3b000 Deferred effectmanagers.act
PE e40000- e65000 Deferred envsim.act
PE e70000- e78000 Deferred eventcamera.act
PE f90000- f99000 Deferred lipssync.act
PE fa0000- 1014000 Deferred multiplayer.act
PE 1020000- 1030000 Deferred particles.act
PE 1030000- 1054000 Deferred sh3collisions.act
PE 1060000- 1084000 Deferred sh3controllers.act
PE 1090000- 10de000 Deferred sh3sim.act
PE 10e0000- 10f2000 Deferred sh3sound.act
PE 1100000- 1149000 Deferred sound.act
PE 1150000- 115b000 Deferred statemachinectl.act
PE 10000000-1007e000 Deferred kernel
PE 30000000-30072000 Deferred binkw32
PE 6c700000-6c715000 Deferred hsie.act
PE 7a820000-7a824000 Deferred opengl32
PE 7b420000-7b5d0000 Deferred kernel32
PE 7bc10000-7bc14000 Deferred ntdll
PE 7dda0000-7dda4000 Deferred uxtheme
PE 7e020000-7e024000 Deferred winex11
PE 7e270000-7e273000 Deferred shcore
PE 7e2a0000-7eb71000 Deferred shell32
PE 7ec60000-7ec64000 Deferred imm32
PE 7ec90000-7ec93000 Deferred usp10
PE 7ecd0000-7ed4d000 Deferred comctl32
PE 7ee40000-7ee4b000 Deferred msvfw32
PE 7ee70000-7eee8000 Deferred winmm
PE 7ef20000-7ef29000 Deferred msacm32
PE 7ef50000-7ef5d000 Deferred avifil32
PE 7efd0000-7efd3000 Deferred msvcp71
PE 7f100000-7f108000 Deferred shlwapi
PE 7f170000-7f174000 Deferred rpcrt4
PE 7f200000-7f228000 Deferred ole32
PE 7f390000-7f394000 Deferred iphlpapi
PE 7f3b0000-7f3b4000 Deferred ws2_32
PE 7f3f0000-7f3f4000 Deferred wsock32
PE 7f410000-7f413000 Deferred msvcr71
PE 7f4d0000-7f5b7000 Deferred user32
PE 7f6d0000-7f6d4000 Deferred advapi32
PE 7f750000-7f757000 Deferred gdi32
PE 7f880000-7f884000 Deferred wined3d
PE 7f9d0000-7f9d4000 Deferred d3d9
PE 7ffd0000-7ffd4000 Deferred version
PE f57f0000-f57f8000 Deferred oleaut32
PE f74c0000-f74c3000 Deferred winepulse
PE f74e0000-f74e4000 Deferred mmdevapi
PE f79a0000-f79a4000 Deferred shfolder
PE f79b0000-f79b4000 Deferred dsound
PE f7a00000-f7a0b000 Deferred mpr
PE f7a30000-f7a4d000 Deferred wininet
PE f7ac0000-f7ac4000 Deferred msvcrt
Threads:
process tid prio (all id:s are in hex)
00000008 S3F.exe
00000030 0
0000002f 0
0000002c 0
0000002b 15
0000002a 15
00000029 0
00000009 0
0000000e services.exe
00000020 0
0000001b 0
00000013 0
00000010 0
0000000f 0
00000011 winedevice.exe
00000018 0
00000017 0
00000016 0
00000012 0
00000019 plugplay.exe
0000001d 0
0000001c 0
0000001a 0
0000001e winedevice.exe
00000025 0
00000022 0
00000021 0
0000001f 0
00000023 explorer.exe
00000028 0
00000027 0
00000026 0
00000024 0
0000005e (D) Z:\home\zerk\Software\sh3-sf\sh3-gwx-test-with-patch\sh3.exe
00000063 15
00000062 15
00000061 0
00000060 0
0000005f 0 <==
System information:
Wine build: wine-4.0 (Debian 4.0-2)
Platform: i386 (WOW64)
Version: Windows 7
Host system: Linux
Host version: 4.19.0-12-amd64
Dowasnas
02-27-21, 08:07 AM
Ok, I found out that, if I disable most of the fixes of H.Sie through the HsieOptionsSelector.exe, the game doesn't crash. Might be that a specific fix is causing issues. Will probably spend the afternoon enabling fixes until I find one that crashes the game.
Edit: It did take quite a while, but not the whole afternoon. I have determined that the problem lies in the Diesel Damage Fix. Which is unfortunate, because it is a fix I would like to have in my game. Do you have any recommendation on what to do?
Edit2:
I am indeed a little bit surprised that the diesel fix worked for 3 years (as far as I know) and now suddenly causes crashes. But of course I cannot guarantee that my work is without errors. I completely retired from SH3 modding and even from SH3 - and thus the only tip I can give you (if my work really is the cause of the problem): Disable the fix.
Hopefully, there is a good assembler guru available that can help.
Good bye.
Hi h.sie,
your "Diesel Damage Fix" is 100% o.k. I'm using it since releas of patch V16B1 without any problems. It's exactly as BL!TZKR!EG wrote the changed "msvcr71.dll" which causes the reported CTDs. I've changed that dll to the original msvcr71.dll from Stock-SH3 and the "Diesel Damage Fix" is running well. Hope this will be fixed by the LSH3-Team.
Greetings
rowi58
This post at https://www.subsim.com/radioroom/showthread.php?t=220285&page=2 seems to indicate that I should replace msvcr71.dll with the original. Will do that and see what happens.
Edit3: Ok, I'm stupid. I noticed the files didn't do anything, then I remembered that I had to tell wine to use the native msvcr71 library (as indicated by the second guide I linked here). Now the patch works without crashing. Will now try using more mods.
Edit4: Naval academy works, but career doesn't. It fails at the loading screen to enter the career:
wine: Unhandled page fault on read access to 0x00000000 at address 0x7c342969 (thread 0055), starting debugger...
Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x7c342969).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:006b GS:0063
EIP:7c342969 ESP:0033e3dc EBP:0033e3e8 EFLAGS:00210246( R- -- I Z- -P- )
EAX:00000000 EBX:00000003 ECX:00000003 EDX:00000000
ESI:00000000 EDI:00000000
Stack dump:
0x0033e3dc: 176681e8 1b680ad8 17675c88 00000000
0x0033e3ec: 0066d865 00000000 cfaf6044 00000003
0x0033e3fc: cfaf6044 1b680ad8 0033e4cc 17898824
0x0033e40c: 0066e9a3 cfaf6044 0127e0ed 00000000
0x0033e41c: 1b680ad8 cfaf6044 004b9443 1b680ad8
0x0033e42c: cfaf6044 0075f140 00000000 00000000
Backtrace:
=>0 0x7c342969 EntryPoint+0x6ca() in msvcr71 (0x0033e3e8)
0x7c342969 EntryPoint+0x6ca in msvcr71: repne scasb %es:(%edi)
Modules:
Module Address Debug info Name (65 modules)
PE 340000- 3be000 Deferred kernel
PE 3c0000- 3da000 Deferred filemanager
PE 3e0000- 3f4000 Deferred intro
PE 400000- 63a000 Deferred sh3
PE 640000- 64c000 Deferred messagenet
PE 650000- 658000 Deferred missionengine
PE 660000- 68a000 Export simdata
PE 690000- 6a4000 Deferred statemachine
PE 6b0000- 6c5000 Deferred utils
PE 6d0000- 6d7000 Deferred movietex.act
PE 6e0000- 6e8000 Deferred property
PE f60000- f67000 Deferred anim.act
PE f70000- f77000 Deferred bezierwaypoint.act
PE f80000- f95000 Deferred camerabehavior.act
PE fa0000- fa8000 Deferred cameramanager.act
PE fb0000- fbb000 Deferred effectmanagers.act
PE fc0000- fe4000 Deferred envsim.act
PE ff0000- ff8000 Deferred eventcamera.act
PE 1000000- 1009000 Deferred lipssync.act
PE 1010000- 1084000 Deferred multiplayer.act
PE 1090000- 10a0000 Deferred particles.act
PE 10a0000- 10c4000 Deferred sh3collisions.act
PE 10d0000- 10f4000 Deferred sh3controllers.act
PE 1100000- 114d000 Deferred sh3sim.act
PE 1150000- 1162000 Deferred sh3sound.act
PE 1170000- 11b9000 Deferred sound.act
PE 11c0000- 11cb000 Deferred statemachinectl.act
PE 10000000-10008000 Deferred drawlib
PE 30000000-30072000 Deferred binkw32
PE 64b40000-64b59000 Deferred shcore
PE 7a820000-7a824000 Deferred opengl32
PE 7b420000-7b5dd000 Deferred kernel32
PE 7bc10000-7bcbb000 Deferred ntdll
PE 7c340000-7c396000 Export msvcr71
PE 7dc80000-7dcae000 Deferred uxtheme
PE 7df00000-7df04000 Deferred winex11
PE 7e250000-7e26a000 Deferred imm32
PE 7e280000-7e2bb000 Deferred usp10
PE 7e2c0000-7e41a000 Deferred comctl32
PE 7e430000-7e453000 Deferred msvfw32
PE 7e460000-7e51b000 Deferred winmm
PE 7e460000-7e51b000 Deferred msacm32
PE 7e540000-7e592000 Deferred avifil32
PE 7e5b0000-7e5b4000 Deferred ucrtbase
PE 7e6a0000-7ef76000 Deferred shell32
PE 7f060000-7f0b5000 Deferred shlwapi
PE 7f0d0000-7f15d000 Deferred rpcrt4
PE 7f160000-7f2af000 Deferred ole32
PE 7f2e0000-7f3d3000 Deferred msvcp71
PE 7f440000-7f444000 Deferred iphlpapi
PE 7f470000-7f474000 Deferred ws2_32
PE 7f4a0000-7f4af000 Deferred wsock32
PE 7f4d0000-7f5b2000 Deferred user32
PE 7f6d0000-7f6d7000 Deferred gdi32
PE 7f800000-7f804000 Deferred wined3d
PE 7f950000-7fc19000 Deferred d3d9
PE 7f9c0000-7f9c4000 Deferred advapi32
PE 7ffd0000-7ffdd000 Deferred version
PE f57f0000-f590a000 Deferred oleaut32
PE f7620000-f7623000 Deferred winepulse
PE f7650000-f767a000 Deferred mmdevapi
PE f7a00000-f7a08000 Deferred shfolder
PE f7a10000-f7a68000 Deferred dsound
PE f7a60000-f7a80000 Deferred mpr
PE f7a90000-f7b16000 Deferred wininet
Threads:
process tid prio (all id:s are in hex)
0000000e services.exe
00000023 0
00000020 0
0000001b 0
00000013 0
00000010 0
0000000f 0
00000011 winedevice.exe
00000018 0
00000017 0
00000016 0
00000012 0
00000019 plugplay.exe
0000001d 0
0000001c 0
0000001a 0
0000001e winedevice.exe
00000026 0
00000022 0
00000021 0
0000001f 0
00000024 explorer.exe
00000029 0
00000028 0
00000027 0
00000025 0
00000034 SH3Cmdr.exe
00000035 0
00000046 S3F.exe
0000004f 0
0000004e 0
0000004b 0
0000004a 15
00000049 15
00000048 0
00000047 0
00000054 (D) Z:\home\zerk\Software\sh3-sf\gwx-sh3\sh3.exe
00000059 15
00000058 15
00000057 0
00000056 0
00000055 0 <==
System information:
Wine build: wine-4.0 (Debian 4.0-2)
Platform: i386 (WOW64)
Version: Windows 7
Host system: Linux
Host version: 4.19.0-12-amd64
The problem with this instruction:
repne scasb %es:(%edi)
I think is that it tries to indirectly address %edi, rather than register addressing it. So instead of using the data in %edi as an offset in a memory segment, it treats the data contained in %edi as an address to the memory location of that offset. Since %edi contains 0x00000000, the computer tries to access 0x00000000 to access that offset, which is invalid and therefore segfaults. I don't know how that occurred (and disassembling the previous instructions probably won't help, because I wouldn't grasp what was happening and why and how it could be fixed)
Looks like msvcr71 is problematic again. Disabling H.sie patch gives the same result. It should be 4GB patched and it crashes somewhere between 1/2 to 3/4 of the loading bar. Since I haven't ever started a career before, I'll have to test different setups to see if the problem lies in SH3, GWX, the mods, or Commander.
Does the part with the compatibility mode also apply to Wine? I always regarded Wine as being able to run legacy and new software alike.
Dowasnas
02-28-21, 09:37 AM
Note to self: It really is needed to follow step 06 or else one can't unpause the game. with gwx, at least it seems so.
I wasn't able to test vanilla for some reason, because the game wouldn't let me unpause it. I got this picture of my crewmen joyfully holding hands, though. :D
https://s3.imgcdn.dev/IDfDN.png
(I did it by pressing backspace a couple of times)
Will try now with GWX.
Note: Just because it's Linux, and you are a Windows user, doesn't mean you can't make suggestions. What doesn't work on Windows also often doesn't work on Linux.
Edit: GWX without any mods installed and without making commander aware of the SH3 install location works. I was able to enter the career without crashing, Will have to try with mods now.
Edit2: GWX with mods and without Commander aware of the installation works. Seems like Commander may be the issue. Will reset most of the Commander settings, to see if they were the issue.
Edit3: Resetting Commander settings to default still crashes the game. I have no idea what to do now. The features Commander offers seem very appealing.
Edit4: Success! I disabled all the other mods to see if it is a conflict between Commander and them, and it worked. Some of them sounded too heavy for my PC anyway. Will now enable the ones I think are the best and hope one of them wasn't the one that didn't like being used with commander.
Edit5: Ok, it runs now with this mod list:
GWX - 16km Atmosphere
GWX - Merged Campaign
Moon_light_mod
GWX - Axis Mediterranean Aircraft Skins
Radio Deutschland
Radio England
Optional O2-Gauges v2 (for V16B1)
S3H-H.sie-Patch-V16B1
TKSS18 Germa U-boat collection crashes the game in the same manner that it crashed when I had forgotten to set msvcr71 to native loading. What exactly does this mod do? Add new subs?
Anyways, it works now! Thank you all for the help you have given!
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.