Problem - SOLVED - Problem with latest Orbiter build on Linux

johnnymanly

Donator
Donator
Joined
Mar 17, 2008
Messages
179
Reaction score
116
Points
43
Location
Southwest Pennsylginia
Website
sites.google.com
Is anyone successfully running the latest Orbiter on Linux (1/17/2024)?
With DX9 client I'm getting a crash when the Orbiter Launchpad starts.
No crash with DX7 version.
Code:
wine: Call from 7BD2BD08 to unimplemented function d3d9.dll.20, aborting
Log:
Code:
**** Orbiter.log
000000.000: Build Jan 17 2024 [v.602931718]
000000.000: Timer precision: 1e-07 sec
000000.021: Found 0 joystick(s)
000000.642: ---------------------------------------------------------------
000000.642: BaseDir    : Z:\home\johnnymanly\Orbiter3\
000000.642: ConfigDir  : Z:\home\johnnymanly\Orbiter3\Config\
000000.642: MeshDir    : Z:\home\johnnymanly\Orbiter3\Meshes\
000000.642: TextureDir : Z:\home\johnnymanly\Orbiter3\Textures\
000000.643: HightexDir : Z:\home\johnnymanly\Orbiter3\Textures2\
000000.643: ScenarioDir: Z:\home\johnnymanly\Orbiter3\Scenarios\
000000.643: ---------------------------------------------------------------
000000.699: D3D9 DLLs  : C:\windows\system32\d3d9.dll [v 5.3.1.904]
000000.711:            : C:\windows\system32\d3dx9_43.dll [v 9.29.952.3111]
000000.723: ---------------------------------------------------------------
000000.723: Module D3D9Client.dll ........ [Build 240117, API 240117]
 
Last edited:
Most likely wine doesn't support following function:
C++:
g_pD3DObject = Direct3DCreate9On12(D3D_SDK_VERSION, &args, 1);

So, just add it to wine and problem solved.
 
Most likely wine doesn't support following function:
C++:
g_pD3DObject = Direct3DCreate9On12(D3D_SDK_VERSION, &args, 1);

So, just add it to wine and problem solved.
I think I have the same problem.

How does one "add" that code to Wine?
 
How does one "add" that code to Wine?
Just redirect it to Direct3DCreate9() function.
Code:
LPD3D9DEVICE9 Direct3DCreate9On12()
{
    return Direct3DCreate9()
}
 
Just redirect it to Direct3DCreate9() function.
Code:
LPD3D9DEVICE9 Direct3DCreate9On12()
{
    return Direct3DCreate9()
}
I should probably explain that I am a simple user. I'm afraid everything you are telling me is sailing over my head. How is this done?
 
@jarmonik : Couldn't it be decided in D3D9Client.cpp at runtime with something like this?
C++:
bool D3D9Client::clbkInitialise()
{
    // ...

    g_pD3DObject = OapiExtension::RunsUnderWINE()
        ? Direct3DCreate9(D3D_SDK_VERSION)
        : Direct3DCreate9On12(D3D_SDK_VERSION, &args, 1);

    // ...
}
 
Probably, yes. But it would likely require use of GetProcAddress() to dynamically link into it. I don't really expect wine developers to resolve the missing function issue, so, we should proceed as you suggested. But I am working on another issue right now.
 
Back
Top