Falcon BMS on GNU/Linux
-
Hello guys,
one of the only things that stops me from going into Linux is Falcon. I wish to ask you what is the process of running BMS on UBUNTU for example. I’m not very experienced with Linux so keep that in mind. I also want my TIR4 with clip to work and I use the MSS2 Joystick. Can someone give me a guide for what I need to do? this thread is full of advice but I need something more full.
Thanks,
RF -
Hi,
The easiest approach is, for what I know, to install PlayOnLinux, a Wine frontend that really excels at helping user to install Windows programs and games under Linux. Until very recently, modern Falcon BMS didn’t work under Wine, but it seems that finally now it does.Anyway, usual steps would be:
- Install PlayOnLinux as usual, through package manager (apt-get install playonlinux). That will bring Wine and related as a dependency.
- Open PlayOnLinux and use the “Install” button. In tha dialog, click on the “Install a non-listed program” link at bottom).
- Follow the steps to install the game: this usually involves creating a new virtual drive using Wine default options, then pointing to the F4BMS installer to install the game.
- Once installed, the game links will appear on the PlayOnLinux main screen, from where you will be able to launch the program.
As I posted in a previous anwser, only change I had to make in F4BMS config was to disable Triple Buffering, else I was getting a black screen whn entering the game simulation.
Regarding TIR4 I’m afraid I can’t help, as I don’t have the device. I don’t think it works under Linux, though. If I’m wrong, I hope someone will jump and correct me.
Finally, regarding the the joystick: in theory, it should simply work under Linux and you should be able to use it on the game without any major issues. If you like to “program” the device, though, you might want to try JSMapper (check my sig), which is a software I’m developing to make joysticks completely programmable under Linux. It works fine, but unfortunately I haven’t had yet the time to set up proper installation packages for it, so I’m afraid you’ll need to go the manual mode to install it, which might require some advanced skills…
Kind regards,
Eduard Huguet -
Maybe a TrackIR with software version 4 could run, because it do not need a special USB-driver, like version 5. (Me has a TrackIR-4, running with software version 5.xxx, that is the reason I know this).
Or one could try to install this special USB-driver for a TrackIR software version 5, so I think…I never tried this, because of some blackscreens by trying to run the sim under Wine and a following hard reset, which me and my computer do not like very much.
Greetings!
Earlybite -
I’m pleased to report that on open-source drivers:
OpenGL version string: 3.0 Mesa 9.3.0-devel (git-a77ee8b)
Falcon BMS works 4.32u6 with the exception of missing HDR rendering. It renders as if HDR was off.
There are no more CP stalls on CAYMAN 6970, same for broken shaders in newer shader models… It was a pixel/fragment shader, not the recently-optimized vertex shader that caused these errors, so credit goes to Mesa folk in all regard.
I’m going to ask some relatively friendly people over at WineHQ/CodeWeavers, as to what causes missing HDR rendering.
Would be very grateful if you guys pointed out it on your own in some way, e.g. whether old shader models miss HDR, as in:
fx_2_0 sm_2_0 sm_3_0
Is it fx_2_0 that only enables HDR or sm_3_0 has it too? Keep in mind that Wine/Mesa is years behind on OpenGL/D3D implementation support.
Even got my USB audio to work!
Edit: There’s still a GPU freeze which can be worked around by environment variable R600_HYPERZ=0
-
Update: HDR works and on Radeon 6970 renders 50-60 FPS in Basic Handling.
HDR didn’t work due to missing –enable-texture-float which is patented. It needs to be enabled for 32-bit Mesa, as BMS is a 32-bit app. That’s why the glxinfo program returned existing ARB_texture_{rg,float} but in BMS it didn’t.
-
Paging @hedgehog
gallium-nine is a new implementation of d3d9 as a Mesa3D gallium state tracker.
https://github.com/chrisbmr/Mesa-3D/tree/gallium-nine
Did you try it? Does it even work on radeon on intel for you?
-
With following settings, I get 88 FPS in basic handling after pressing the ‘3’ key twice:
env vblank_mode=0 R600_DEBUG=nohyperz,nollvm,sb,sbstat
diff: dw:0%, gpr:-100%, stk:0%, alu groups:0%, alu clauses: 0%, alu:0%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-36%, gpr:-66%, stk:0%, alu groups:-50%, alu clauses: 0%, alu:-50%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-36%, gpr:-66%, stk:0%, alu groups:-50%, alu clauses: 0%, alu:-50%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-69%, gpr:-40%, stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-50%, gpr:-33%, stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-71%, gpr:-100%, stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:0%, gpr:-100%, stk:0%, alu groups:0%, alu clauses: 0%, alu:0%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-36%, gpr:-66%, stk:0%, alu groups:-50%, alu clauses: 0%, alu:-50%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-36%, gpr:-66%, stk:0%, alu groups:-50%, alu clauses: 0%, alu:-50%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-69%, gpr:-40%, stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-50libpng warning: Application built with libpng-1.6.6 but running with 1.5.13% , gpr:-33%err:menubuilder:convert_to_native_icon error 0x80004005 initializing encoder , stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-71%, gpr:-100%, stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% context diff: dw:-50%, gpr:-58%, stk:0%, alu groups:-75%, alu clauses: -60%, alu:-75%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:0%, gpr:-100%, stk:0%, alu groups:0%, alu clauses: 0%, alu:0%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-36%, gpr:-66%, stk:0%, alu groups:-50%, alu clauses: 0%, alu:-50%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-36%, gpr:-66%, stk:0%, alu groups:-50%, alu clauses: 0%, alu:-50%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-69%, gpr:-40%, stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-50%, gpr:-33%, stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-71%, gpr:-100%, stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:0%, gpr:-100%, stk:0%, alu groups:0%, alu clauses: 0%, alu:0%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-36%, gpr:-66%, stk:0%, alu groups:-50%, alu clauses: 0%, alu:-50%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-36%, gpr:-66%, stk:0%, alu groups:-50%, alu clauses: 0%, alu:-50%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-69%, gpr:-40%, stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-50%, gpr:-33%, stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-71%, gpr:-100%, stk:0%, alu groups:-100%, alu clauses: -100%, alu:-100%, fetch:0%, fetch clauses:0%, cf:0% context diff: dw:-50%, gpr:-58%, stk:0%, alu groups:-75%, alu clauses: -60%, alu:-75%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-26%, gpr:-66%, stk:0%, alu groups:-33%, alu clauses: 0%, alu:-33%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:4%, gpr:-50%, stk:0%, alu groups:20%, alu clauses: 0%, alu:5%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-36%, gpr:-66%, stk:0%, alu groups:-50%, alu clauses: 0%, alu:-50%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-56%, gpr:-88%, stk:0%, alu groups:-37%, alu clauses: 0%, alu:-62%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-10%, gpr:-60%, stk:0%, alu groups:0%, alu clauses: 0%, alu:-12%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-28%, gpr:-75%, stk:0%, alu groups:-50%, alu clauses: 0%, alu:-50%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:0%, gpr:-50%, stk:0%, alu groups:0%, alu clauses: 0%, alu:0%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:0%, gpr:-50%, stk:0%, alu groups:0%, alu clauses: 0%, alu:0%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:4%, gpr:-50%, stk:0%, alu groups:20%, alu clauses: 0%, alu:5%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-26%, gpr:-66%, stk:0%, alu groups:-33%, alu clauses: 0%, alu:-33%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-32%, gpr:-66%, stk:0%, alu groups:-37%, alu clauses: 0%, alu:-41%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:4%, gpr:-50%, stk:0%, alu groups:20%, alu clauses: 0%, alu:5%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-29%, gpr:-85%, stk:0%, alu groups:-37%, alu clauses: 0%, alu:-37%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-16%, gpr:-50%, stk:0%, alu groups:-20%, alu clauses: 0%, alu:-20%, fetch:0%, fetch clauses:0%, cf:0% diff: dw:-23%, gpr:-85%, stk:0%, alu groups:-28%, alu clauses: 0%, alu:-30%, fetch:0%, fetch clauses:0%, cf:0% context diff: dw:-23%, gpr:-64%, stk:0%, alu groups:-23%, alu clauses: -13%, alu:-29%, fetch:0%, fetch clauses:0%, cf:0%
The speedup is possible due to awesome work by Vadim Girlin (vadimg, mesa committer) who created the SB backend.
The code block is shader optimization amount. GPR for instance is the amount of registers Mesa uses with BMS shaders. Invididual shaders aren’t outputted in the list, though there are few of them. Each line represents one entry.
One day I’ll check with hyperz, but it used to crash…
HDR is on, pit shadows, high FOV, RedFlag by A.S. active. Previously only got up to 62 FPS in Basic Handling. The framerate doesn’t drop dramatically when viewing terrain, either…
OpenGL version string: 3.0 Mesa 9.3.0-devel (git-c4e6569)
Please keep in mind that proper multilib setup is necessary for Mesa!
–
HYPER-Z SUPPORT IS BROKEN!!! NOT JUST ME BUT ALSO HEDGEHOG GOT HARD LOCKUPS OF THE GPU DUE TO IT!!!
–
xorg.conf follows:
Section "Device" Option "EnablePageFlip" "true" Option "ColorTiling" "true" Option "ColorTiling2D" "true" Option "RenderAccel" "true" Option "AccelMethod" "EXA" Option "AccelDFS" "true" Option "EXAVSync" "true" Option "EXAPixmaps" "true" Option "SwapbuffersWait" "false" Identifier "Card2" Driver "radeon"
–
If anyone needs help, I’lm gladly offering it.
-
Apologies for YET another bump but this is fragging important!!!
On Linux, no pinning to cores necessary with kernel 3.9+. I’ve got constant 75FPS in basic handling without it!!!
My hypothesis - without ‘bouncing cow’ scheduling issue as on Windows, BMS works faster on Linux! That’s because it can use more CPU on flot when it matters, without affecting the software negatively.
Please consider adding pinning to threads, or using thread pools… So that Windows guys aren’t unhappy.
You have to take my word for it, but BMS worker thread on core zero remains there without bouncing around! This is fragging amazing.
-sh 20131009
-
Please help toolchain people:
12:16 <sthalik>=>0 0xf7469483 __strstr_sse42+0x303(s1="/bin/sh /home/sthalik/bin/falcon-bms.sh", s2="vtserver.bin") [/var/tmp/portage/sys-libs/glibc-2.18/work/glibc-2.18/string/../sysdeps/x86_64/multiarch/strstr.c:209] in libc.so.6 (0x7d77ca70) 12:16 <sthalik>1 0xf6eaee24 in libgl.so.1 (+0x60e23) (0x0032ed24)</sthalik></sthalik>
Looks like GNU CC is at fault for not inlining strstr_sse42!!!
I’m using gcc 4.7.3 and glibc 2.18
Any ideas?
–
https://sourceware.org/ml/libc-alpha/2013-08/msg00380.html
–
trying now glibc --disable-multi-arch
-
Please help toolchain people:
12:16 <sthalik>=>0 0xf7469483 __strstr_sse42+0x303(s1="/bin/sh /home/sthalik/bin/falcon-bms.sh", s2="vtserver.bin") [/var/tmp/portage/sys-libs/glibc-2.18/work/glibc-2.18/string/../sysdeps/x86_64/multiarch/strstr.c:209] in libc.so.6 (0x7d77ca70) 12:16 <sthalik>1 0xf6eaee24 in libgl.so.1 (+0x60e23) (0x0032ed24)</sthalik></sthalik>
Looks like GNU CC is at fault for not inlining strstr_sse42!!!
I’m using gcc 4.7.3 and glibc 2.18
Any ideas?
–
https://sourceware.org/ml/libc-alpha/2013-08/msg00380.html
–
trying now glibc --disable-multi-arch
Sorry, I don’t understand what you are doing. That seems some kind of stack trace from a Gentoo system, but I can’t see the relationship wifth Falcon.
What your script “falcon-bms.sh” does, exactly? What is “vtserver.bin”?Could you please ellaborate a litle bit more on the issue?
Kind regards,
Eduard Huguet -
vtserver.bin is, by a wild guess, some software that fglrx is applying kludges for, such as advertising different GL capabilities than what normally goes. It checks apparently argv[0] for its presence.
My script uses xboxdrv –evdev in order to use all 9 axes and more than 32 buttons on an X65. For Mesa, it also sets a few environment variables.
The issue is GNU glibc runtime CPU detection, i.e. the very presence of strstr_sse42 despite -march=x86-64 and the resulting unaligned accesses on sse42 code, which the caller doesn’t expect even to require proper alignment. GNU maintainers blame it on each other not the first time, gcc/glibc, gcc/torvalds, gcc/binutils… Instead of solving the issues.
I’ve disabled this so-called ‘mutliarch support’ and the problem is no more. I might switch back to Mesa now.
Thanks for your attention, guys!
To avoid bump, use:
CONFIG_TRANSPARENT_HUGEPAGE_MADVISE
instead of the ‘all’ option, it sucks and causes OOM GPU breakage!
This is Mesa:
vblank_mode=0 R600_DEBUG=sb,sbstat,nollvm,nohyperz wine Falcon\ BMS.exe -window || true
Live Free or die!
–--------------
Linux launch script for BMS with X65:
1002 ~ % cat bin/falcon-bms.sh #!/bin/sh sudo -n xboxdrv \ --evdev /dev/input/by-id/usb-Saitek_Pro_Flight_X65_Control_System-event-joystick \ --evdev-no-grab \ --evdev-absmap ABS_#41=y1,ABS_MISC=x1 \ --evdev-keymap BTN_TRIGGER_HAPPY24=a,BTN_TRIGGER_HAPPY25=b,BTN_TRIGGER_HAPPY17=dl,BTN_TRIGGER_HAPPY18=dr,BTN_TRIGGER_HAPPY19=du,BTN_TRIGGER_HAPPY20=dd,BTN_TRIGGER_HAPPY31=x,BTN_TRIGGER_HAPPY32=y,BTN_TRIGGER_HAPPY33=tl,BTN_TRIGGER_HAPPY34=tr \ --deadzone 0 \ --dpad-as-button \ --trigger-as-button \ --silent \ & pid=$! cd '/home/sthalik/.wine/drive_c/Falcon BMS 4.32/Bin/x86' && vblank_mode=0 WINEDEBUG=-all R600_DEBUG=sb,nosbstat,nollvm,nohyperz wine Falcon\ BMS.exe || true sudo -n kill $pid wait $pid /home/sthalik 1003 ~ %
-
Game works fine on archlinux with wine 1.7.24, TrackIR 5 works perfectly (linuxtrack 0.99.8 with wine plugin installed) and also saitek x52.
The only bad thing is low FPS ( around 15/20fps ) with a nvidia gtx560ti, with all graphic details at minimum (no shaders on bms conf, low settings on f4 )… But game works. Need to find a way to get more FPS.
-
yeap. Install win7 64bit.
-
-
Sure.
-
I already have it on win7 too. Trying to make it work correctly under linux is for personal fun ( or at least to remove win7 )
-
There’s some work being done with native directx support by chrisbmr and others.
If a compatibility library exists from DX11 to DX9 it’s as “simple” as placing that library where wine would use it.
-
I am never sure which direct version to install inside wine ( so much different version provided by winetricks… ) Is there some specific version which is bettre than others for bms ?
-
No, that’s not what I was even talking about.
As for your question, one that BMS actually uses will suffice.
-
Hi,
The easiest approach is, for what I know, to install PlayOnLinux, a Wine frontend that really excels at helping user to install Windows programs and games under Linux. Until very recently, modern Falcon BMS didn’t work under Wine, but it seems that finally now it does.Anyway, usual steps would be:
- Install PlayOnLinux as usual, through package manager (apt-get install playonlinux). That will bring Wine and related as a dependency.
- Open PlayOnLinux and use the “Install” button. In tha dialog, click on the “Install a non-listed program” link at bottom).
- Follow the steps to install the game: this usually involves creating a new virtual drive using Wine default options, then pointing to the F4BMS installer to install the game.
- Once installed, the game links will appear on the PlayOnLinux main screen, from where you will be able to launch the program.
As I posted in a previous anwser, only change I had to make in F4BMS config was to disable Triple Buffering, else I was getting a black screen whn entering the game simulation.
Regarding TIR4 I’m afraid I can’t help, as I don’t have the device. I don’t think it works under Linux, though. If I’m wrong, I hope someone will jump and correct me.
Finally, regarding the the joystick: in theory, it should simply work under Linux and you should be able to use it on the game without any major issues. If you like to “program” the device, though, you might want to try JSMapper (check my sig), which is a software I’m developing to make joysticks completely programmable under Linux. It works fine, but unfortunately I haven’t had yet the time to set up proper installation packages for it, so I’m afraid you’ll need to go the manual mode to install it, which might require some advanced skills…
Kind regards,
Eduard HuguetDo you have a link to a list of software that works with Play on Linux? Also, what version of Linux is required for a base for Play on Linux?