SOD in Arch Linux

SkepticalMystic

Dalayan Beginner
I used to play SOD years ago and would like to try again. Not having any luck with a fresh installation.

Arch Linux
NVIDIA 440.82
Wine Staging 5.8

I followed the various guides that I've seen on the forums.
- Created a new WINEPREFIX for the game.
- Downloaded the Steam version and copied the Everquest F2P directory into Program Files on the new PREFIX.
- Installed d3dx11_43, d3dx9_43, dinput8, and dotnet461 using winetricks.
- Run wine sodpatcher.exe.
- I select Repatch All, and the patcher runs successfully. Files are updated or downloaded as needed.

When I select on Run Game, the EQ window opens with a black screen and then crashes immediately with the error:
"A program on your system has crashed, but WineDbg was unable to attach to the process to obtain a backtrace."

Here's the final wine output from the point that I click Run Game:

Code:
00e0:fixme:d3dx:D3DXCpuOptimizations 0x1 - stub
00e0:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
00e0:fixme:d3d:wined3d_check_device_format_conversion output 0x16efee0, device_type WINED3D_DEVICE_TYPE_HAL, src_format WINED3DFMT_B8G8R8X8_UNORM, dst_format WINED3DFMT_B8G8R8X8_UNORM stub!
00e0:fixme:d3d:wined3d_check_device_format_conversion output 0x16efee0, device_type WINED3D_DEVICE_TYPE_HAL, src_format WINED3DFMT_B5G6R5_UNORM, dst_format WINED3DFMT_B5G6R5_UNORM stub!
wine: Unhandled page fault on read access to 00000044 at address 01ABB2F6 (thread 00e0), starting debugger...
Can't attach process 00dc: error 5
00d4:fixme:thread:NtQueryInformationThread ThreadIsIoPending info class not supported yet
00cc:fixme:thread:NtQueryInformationThread ThreadIsIoPending info class not supported yet
0108:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0108:fixme:seh:WerSetFlags (2) stub
0108:fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub
0118:fixme:process:SetProcessShutdownParameters (00000380, 00000000): partial stub.
0118:fixme:ntdll:EtwEventRegister ({319dc449-ada5-50f7-428e-957db6791668}, 0xef1a79, 0xf3ed50, 0xf3ed68) stub.
0118:fixme:ntdll:EtwEventSetInformation (deadbeef, 2, 0xed42e1, 28) stub
0118:fixme:service:QueryServiceConfig2W Level 6 not implemented
0118:fixme:service:QueryServiceConfig2W Level 6 not implemented
0118:fixme:service:QueryServiceConfig2W Level 6 not implemented
0118:fixme:service:QueryServiceConfig2W Level 6 not implemented
0118:fixme:service:QueryServiceConfig2W Level 6 not implemented
 
You made sure that you have i386 architecture enabled?

I'm currently running the game fine on Linux Mint / laptop Intel integrated GPU (lol) / Wine 4.0

Install process (I used playonlinux) was >> new 32-bit wineprefix >> dotnet461, dxfullsetup, dinput8

Once patched and eqgame.exe launched I also needed to use taskset to allow more than one CPU core to handle eqgame.exe, mostly because of the shit laptop I'm working with.
 
That setup works with both the Daybreak launcher and with the steam version.

You might also check your nvidia drivers -- given that debug stream could be an issue there.

What's your output from:
glxinfo | egrep '^OpenGL'
and
inxi -G
 
I tried using PlayOnLinux. Created the virtual drive, copied the game over. Setup the PREFIX with dxfullsetup and dinput8. dotnet461 wouldn't install. Patcher wouldn't load at all. So I used the same PREFIX from terminal and installed dotnet461 that way with winetricks. It ran through repair for dotnet40 and dotnet45, then finally installed 461 successfully. Patcher runs from POL now, and the game launches. I get to the server select screen. As soon as I launch server, I get the same error from my original post.

glxinfo | egrep '^OpenGL'
Code:
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 970/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 440.82
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6.0 NVIDIA 440.82
OpenGL shading language version string: 4.60 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 440.82
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

inxi -G
Graphics:
Device-1: NVIDIA GM204 [GeForce GTX 970] driver: nvidia v: 440.82
Display: x11 server: X.Org 1.20.8 driver: nvidia resolution:
1: 2560x1440~60Hz 2: 1920x1080~60Hz
OpenGL: renderer: GeForce GTX 970/PCIe/SSE2 v: 4.6.0 NVIDIA 440.82
 
Could you also post what's in your dbg.txt file in your Everquest/Logs directory?

Three ideas:
  1. On the Everquest login screen go into options and drop the graphics settings/resolution to minimums.
  2. You might try swapping the Nouveau drivers for your GPU instead of the proprietary drivers.
  3. Make sure your GPU has what it needs to run 32-bit applications, i.e., lib32-mesa for the nouveau and probably something like lib32-nvidia for proprietary drivers.
 
More progress. I switched my wine version to 4.0 to match yours (was using 5.7). That got me to the point that I could select to join the server now and I got the loading screen. Music started playing and the bar filled up, then just hung with a full progress bar. Eventually (15 minutes or so?) it timed out and went to "You have been disconnected." Kicked me back to the title screen.

I had tried various graphics settings, but I just turned off all new models and all settings, and set graphics to low. It worked. I got to character select and then logged into game. *PARTIAL SUCCESS* Yay!

The game is super choppy and unplayable though. Still have some tweaking to do if I'm going to actually be able to play.

You mentioned using Taskset to use multiple cores? Can you tell me where you set that?
 
Yeah that choppyness sounds like your cpu is single-threading.

In terminal once you have eqgame.exe launched you want to type:

pgrep eqgame

That'll give you the process ID for eqgame.exe. Then you take that ID and use taskset to assign it to multiple cores.

Example:
taskset -cp 0,1,2,3 9790

This sets process ID 9790 to be across my four cores (0 - 3).

Once you have things running smoothly you can tweak up the graphics settings from the in-game options menu.
 
Thank you so much for your help. I've tried this a few times over the past few years and just couldn't ever get it going. After setting it to use 4 cores, it's running smooth as butter.

I don't know anything about taskset. Is that something that is stored for that PID, or will I need to rerun that each time? Or is there a way to make POL do that when I open the game?
 
You could write a script for it. Possibly if you opened playonlinux using taskset it would then run other applications using that same setting, though I've never tried that. Personally, I just do the commands whenever I launch.
 
Back
Top Bottom