Martin1454 Posted February 28, 2021 Posted February 28, 2021 Hi, so with my 160000m + TWCS throttle, I have a combined 9 axis - but the default TM target script only sets 8 axis. I currently use sedenion's hack for getting more inputs, and I found this part of the script: If I enable SLD2, I get an extra virtual axis (remeber to set DXBTCOUNT down from 120 to less) The issue is right now the Slider1 is bound to the same input as Slider0 Slider0 is setup in the following way: MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); So apparently the DX_SLIDER_AXIS acts for both Slider0 and Slider1 - How do I split those 2? Ideally I want to set "MapAxis(&TWCSThrottle, TRDR, *NAME_FOR_SLIDER1*, AXIS_NORMAL, MAP_ABSOLUTE);" -If you dont know how to enable the extra inputs, see here:
speed-of-heat Posted February 28, 2021 Posted February 28, 2021 you might see if the latest version helps ? SYSTEM SPECS: Hardware AMD 9800X3D, 64Gb RAM, 4090 FE, Virpil T50CM3 Throttle, WinWIng Orion 2 & F-16EX + MFG Crosswinds V2, Varjo Aero SOFTWARE: Microsoft Windows 11, VoiceAttack & VAICOM PRO YOUTUBE CHANNEL: @speed-of-heat
Rudel_chw Posted February 28, 2021 Posted February 28, 2021 DirectX is limited to 8 axes per device and since Target merged your two devices into a single virtual one it clashes against this limit. There is no workaround for this other than ditching Target and using just DCS to assign axes and buttons. For work: iMac mid-2010 of 27" - Core i7 870 - 6 GB DDR3 1333 MHz - ATI HD5670 - SSD 256 GB - HDD 2 TB - macOS High Sierra For Gaming: 34" Monitor - Ryzen 3600 - 32 GB DDR4 2400 - nVidia RTX2080 - SSD 1.25 TB - HDD 10 TB - Win10 Pro - TM HOTAS Cougar Mobile: iPad Pro 12.9" of 256 GB
Martin1454 Posted February 28, 2021 Author Posted February 28, 2021 Hmm... so maybe use target/ virtual for buttons and the "real" controller for axis?
Rudel_chw Posted February 28, 2021 Posted February 28, 2021 1 minute ago, Martin1454 said: Hmm... so maybe use target/ virtual for buttons and the "real" controller for axis? i’m not a Target expert, but I think that you cant use both .. once target creates its virtual device you no longer have access to the real ones. For work: iMac mid-2010 of 27" - Core i7 870 - 6 GB DDR3 1333 MHz - ATI HD5670 - SSD 256 GB - HDD 2 TB - macOS High Sierra For Gaming: 34" Monitor - Ryzen 3600 - 32 GB DDR4 2400 - nVidia RTX2080 - SSD 1.25 TB - HDD 10 TB - Win10 Pro - TM HOTAS Cougar Mobile: iPad Pro 12.9" of 256 GB
speed-of-heat Posted February 28, 2021 Posted February 28, 2021 (edited) you definately can, you just have to make sure that the device is not disabled Configure(&Joystick, MODE_KEEPENABLED); they are treated as separate devices Combined Axis and the original, but im not sure this application will "work" in the way that @martin1454 envisaged/... Edited February 28, 2021 by speed-of-heat SYSTEM SPECS: Hardware AMD 9800X3D, 64Gb RAM, 4090 FE, Virpil T50CM3 Throttle, WinWIng Orion 2 & F-16EX + MFG Crosswinds V2, Varjo Aero SOFTWARE: Microsoft Windows 11, VoiceAttack & VAICOM PRO YOUTUBE CHANNEL: @speed-of-heat
sedenion Posted March 2, 2021 Posted March 2, 2021 (edited) On 2/28/2021 at 10:05 AM, Martin1454 said: Hi, so with my 160000m + TWCS throttle, I have a combined 9 axis - but the default TM target script only sets 8 axis. I currently use sedenion's hack for getting more inputs, and I found this part of the script: If I enable SLD2, I get an extra virtual axis (remeber to set DXBTCOUNT down from 120 to less) The issue is right now the Slider1 is bound to the same input as Slider0 Slider0 is setup in the following way: MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); So apparently the DX_SLIDER_AXIS acts for both Slider0 and Slider1 - How do I split those 2? Ideally I want to set "MapAxis(&TWCSThrottle, TRDR, *NAME_FOR_SLIDER1*, AXIS_NORMAL, MAP_ABSOLUTE);" -If you dont know how to enable the extra inputs, see here: Hi, Definitions for virtual buttons and axes assignement values are located in the defines.tmh file, betwenn line 763 to 811, here is the currently defined axes : define DX_X_AXIS 1 define DX_Y_AXIS 2 define DX_Z_AXIS 3 define DX_XROT_AXIS 4 define DX_YROT_AXIS 5 define DX_ZROT_AXIS 6 define DX_THROTTLE_AXIS 7 define DX_SLIDER_AXIS 8 As you can see the sequence is regular, from 1 to 8. The names does not matter, what matters are the numerical values, which are the true thing used by functions. The "define" keyword is used to substitute a value to a convenient string which is replaced by the true numerical value at compilation time, it is a kind of embelishment to help make thing more readable. So, in fact, the line : MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); Is strictly equivalent to : MapAxis(&T16000, THR, 8, AXIS_NORMAL, MAP_ABSOLUTE); It is may be - but not sure - possible to extends values beyond the 8 and before the 1, so, to assign more than 8 axes. To try it, it is simple, you can for example call the mapping function with the value 9 instead of 8: MapAxis(&TWCSThrottle, TRDR, 9, AXIS_NORMAL, MAP_ABSOLUTE); At this stage, if you experience a big Blue-Screen-Of-Death, don't panic (nothing is broken, you simply marvelously crashed the kernel), this mean you simply reached the logical limit defined within the drivers, you (your program) tryed an out-of-bound array assigment, which is fatal at this software layer (very close to kernel). This however mean, you cannot go beyond 8 because there is a hard-coded limit in the drivers, which you cannot overstep. However, you may-be can assign the 0 value (maybe this value is reserved for another thing, like HAT, I don't know, but you can try). So you can try this: MapAxis(&TWCSThrottle, TRDR, 0, AXIS_NORMAL, MAP_ABSOLUTE); Again, if you got a BSOD, don't panic, reboot, but this mean you can't assign more than 8 axes, because the drivers have an hard-coded limit. At this stage, you cannot do anything. Once you find a suitable value (if it works), you can create your own define within your script to make thing more readable, for example: define MY_SLIDER2_AXIS 9 // ... MapAxis(&TWCSThrottle, TRDR, MY_SLIDER2_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); Edited March 2, 2021 by sedenion 1
Recommended Posts