Flt2vhs: A BMS Replay Converter
-
version 0.7 crashes again on startup. latest working was 0.5. Probably again CPU related?
Cheers Obi1
-
The two of you have given me courage to run BMS under WinDbg, going forward…
Do it! Abelian and I have had good luck using it to debug crashes that don’t generate dumps. (Most of them seem to be heap corruption related.)
[consider] doing a ‘XOR rax,rax’ among the NOPs, just to be safe.
x64 has no-ops for every occasion!
+---------+---------------------------------------------+------------------------------+ | LENGTH | ASSEMBLY | BYTE SEQUENCE | +---------+---------------------------------------------+------------------------------+ | | | | | 2 bytes | 66 NOP | 66 90H | | | | | | 3 bytes | NOP DWORD ptr [EAX] | 0F 1F 00H | | | | | | 4 bytes | NOP DWORD ptr [EAX + 00H] | 0F 1F 40 00H | | | | | | 5 bytes | NOP DWORD ptr [EAX + EAX*1 + 00H] | 0F 1F 44 00 00H | | | | | | 6 bytes | 66 NOP DWORD ptr [EAX + EAX*1 + 00H] | 66 0F 1F 44 00 00H | | | | | | 7 bytes | NOP DWORD ptr [EAX + 00000000H] | 0F 1F 80 00 00 00 00H | | | | | | 8 bytes | NOP DWORD ptr [EAX + EAX*1 + 00000000H] | 0F 1F 84 00 00 00 00 00H | | | | | | 9 bytes | 66 NOP DWORD ptr [EAX + EAX*1 + 00000000H] | 66 0F 1F 84 00 00 00 00 00H | +---------+---------------------------------------------+------------------------------+
version 0.7 crashes again on startup. latest working was 0.5. Probably again CPU related?
Crap! It’s the same issue as before - I had fixed the bad build config on one machine but not the other. Apologies - I’ll fix the build later today.
-
https://github.com/mrkline/flt2vhs/releases/tag/v0.7 should now contain binaries without those pesky AVX instructions. Apologies again!
-
These are working again, thanks!
-
Announcing a new flt2vhs release, 0.9. Release notes:
- Experimental feature: flt2vhs now merges adjacent FLT files!
Tacview sometimes struggles to merge files, leaving “ghost” planes hanging in the air where one file ended and the next began. flt2vhs now takes a crack at merging files itself.
The merge algorithm is simplistic - find the closest object in the next file that’s the same type as the object in the previous one - but it works well in initial tests. - convert-all-flts now calls flt2vhs on all FLT files at once and exits.
It no longer waits for files BMS is writing - use patch-bms-novhs to disable BMS’s slow conversion. - Reduce VHS output size by changing object IDs to make the callsign table as dense as possible.
- VHS files are now memory-mapped and written in parallel.
Speedup depends heavily on disk performance, but saving is now about 30% faster (several seconds for a 1+ GB replay) on my SSD setup, or about twice as fast as ACMI-Compiler - Performance improvement: Use a faster hash function for all lookups.
Download link: https://github.com/mrkline/flt2vhs/releases/download/v0.9/flt2vhs-0.9.7z
- Experimental feature: flt2vhs now merges adjacent FLT files!
-
Tired of staring at a black screen for minutes while BMS writes out your flight recording after a mission? I’m happy to announce a beta of flt2vhs, a replay converter that does the job in seconds.
Those familiar with Loitho’s ACMI Compiler will wonder how this tool differs:
Nothing to run in the background: Instead of running a background program to steal FLT files from BMS, flt2vhs ships with a tool that just disables BMS’s slow conversion.
It merges flight files: BMS chunks recordings into multiple files if they were larger than 1 GB, and Tacview (as of 1.8.6) sometimes has trouble merging these, leaving “ghost” planes hanging in the air where one file ended and the next began. flt2vhs can merge consecutive FLT files into a single VHS. This feature is still in the experimental stage but seems to work well so far, even in 20+ player events with hundreds of units moving around.
It’s even faster: about twice as fast according to rough benchmarks. By organizing data more efficiently and handling files directly through your operating system’s page cache, flt2vhs minimizes the time you wait to start your debrief.
Just:
- Extract the 7zip archive into BMS/User/Acmi.
- Run patch-bms-novhs.exe to disable BMS’s (slow) FLT to VHS conversion. You only need to do this once.
- Record BMS flights normally with the AVTR switch in the cockpit, or by running BMS with -acmi. BMS should no longer pause to convert recordings when you exit 3D.
- Run convert-all-flts.exe to convert all FLT files to VHS, with names based on the times they were created. Or drag a FLT file file onto flt2vhs.exe to convert one at a time.
Special thanks to Loitho for making this project possible with the power of open source! Their code was instrumental to my understanding of both file formats, as were their many kind answers to my many silly questions. Thanks also to Streak for testing out an earlier build.
Download here: https://github.com/mrkline/flt2vhs/releases/latest
Project and README here: https://github.com/mrkline/flt2vhs#readmeFeel free to post any issues you have here, or create a ticket on the project: https://github.com/mrkline/flt2vhs/issues/new
Should be intergrated into the sim if possible. Great Stuff solving an ancient problem.
-
I’m not sure if I’m reapplying it wrongly, or if it doesn’t work anymore. EXE doesn’t get a new modification date either.
-
I’m not sure if I’m reapplying it wrongly, or if it doesn’t work anymore. EXE doesn’t get a new modification date either.
According to the creator,spoke with him will be checked and if needed update soon. You should still be able to use it without the exe patch for the moment
-
Not really, since BMS processes the files on 3D exit.
-
Not really, since BMS processes the files on 3D exit.
Messed up with loitos compiler which steals the acmi conversion from by renaming the flt.
Version 0.5 of flt2vhs will work as the exe patch was introduced with 0.6
-
Messed up with loitos compiler which steals the acmi conversion from by renaming the flt.
Version 0.5 of flt2vhs will work as the exe patch was introduced with 0.6
Ok, I’ll be waiting.
-
Ok, I’ll be waiting.
Version 0.10 is out with support for patching BMS 4.35U2. Thanks to abelian for the PR!
Users should run patch-bms-novhs.exe again to remove the built-in conversion after updating to U2.
-
With the latest version, convert-all-flts.exe converts the .flt to .flt.moved but not to .vhs am i doing something wrong?
-
Probably, it works here.
-
With the latest version, convert-all-flts.exe converts the .flt to .flt.moved but not to .vhs am i doing something wrong?
Happened to me sometimes with previous versions, haven’t tried yet U2/v0.10, no clue what’s happening but anyway drag and dropping the .flt.moved over the flt2vhs.exe successfully converted those rebels.
-
Even that wasnt working, maybe my file got corrupted or something.
-
Version 0.11 is out with a fix for an apparent BMS bug where unique ID’s… aren’t unique
Grab it at https://github.com/mrkline/flt2vhs/releases/tag/v0.11@oppotato said in Flt2vhs: A BMS Replay Converter:
With the latest version, convert-all-flts.exe converts the .flt to .flt.moved but not to .vhs am i doing something wrong?
Hopefully this was caused by the bug above. Another common issue is that BMS launched with
-acmi
will often create a series of small, useless .FLT files as you click around menus in 2D. I should add some code that ignores those… -
flt2vhs has been updated to support BMS 4.35U3. Users must run
patch-bms-novhs
once again to patch the (slow) built-in conversion out of U3. Additionally, by popular demand,convert-all-flts
now deletes the tiny, useless FLT files BMS generates with-acmi
Known Issues
flt2vhs
continues to use very crappy heuristics to see if it should merge files. To avoid accidentally merging multiple flights into the same VHS file, runconvert-all-flts
after each flight, or runflt2vhs
directly. (You can drag & drop FLT files ontoflt2vhs
!)convert-all-flts
can fail if BMS is running (especially with-acmi
). Please close BMS before running it.
Grab it here: https://github.com/mrkline/flt2vhs/releases/tag/v0.13
-
@mrkline -restore doesn’t change the date of the file. Shouldn’t it?
-
It certainly could, but then we’d have to either store the original date somewhere before modifying it, or force it to some fixed value.
I was more worried about the contents of the EXE - does having a different modification date break something?