Problem - SOLVED - Problem with latest Orbiter build on Linux

johnnymanly

Donator
Donator
Joined
Mar 17, 2008
Messages
55
Reaction score
23
Points
8
Location
Southwest Pennsylginia
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:

jarmonik

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 28, 2008
Messages
2,666
Reaction score
794
Points
128
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.
 

Thunder Chicken

Fine Threads since 2008
Donator
Joined
Mar 22, 2008
Messages
4,339
Reaction score
3,262
Points
138
Location
Massachusetts
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?
 

jarmonik

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 28, 2008
Messages
2,666
Reaction score
794
Points
128
How does one "add" that code to Wine?
Just redirect it to Direct3DCreate9() function.
Code:
LPD3D9DEVICE9 Direct3DCreate9On12()
{
    return Direct3DCreate9()
}
 

Thunder Chicken

Fine Threads since 2008
Donator
Joined
Mar 22, 2008
Messages
4,339
Reaction score
3,262
Points
138
Location
Massachusetts
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?
 

kuddel

Donator
Donator
Joined
Apr 1, 2008
Messages
2,064
Reaction score
507
Points
113
@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);

    // ...
}
 

jarmonik

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 28, 2008
Messages
2,666
Reaction score
794
Points
128
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.
 
Top