HelixMod Feature List
Contents
- 1 Overview of DX9Settings.ini
- 1.1 [General]
- 1.1.1 UseRenderedShaders
- 1.1.2 DumpAll
- 1.1.3 DefPSSampler
- 1.1.4 DefVSSampler
- 1.1.5 DefVSConst1
- 1.1.6 DefPSConst1
- 1.1.7 PresetsKeysList
- 1.1.8 UseEndScene
- 1.1.9 bCalcTexCRCatStart
- 1.1.10 DefPSViewSizeConst
- 1.1.11 DefSquareSurfaceMode
- 1.1.12 DefDepthStencilSurfaceMode
- 1.1.13 DefSurfaceCreationMode
- 1.1.14 SkipSetScissorRect
- 1.1.15 DefRtCreationMode
- 1.1.16 SurfaceCreationModeList
- 1.2 [KEY*]
- 1.3 [PRES*]
- 1.1 [General]
- 2 Hex to Float conversion
- 3 List of features supported by HelixMod, and all versions available.
Overview of DX9Settings.ini
- Gotcha - it's a good to add comments to your DX9Settings.ini, but beware that comments must go on their own separate lines. If you add them to the end of a line the entire line will be ignored.
- Gotcha - Pressing F7 in the game (to save custom separation and convergence settings to a preset) will remove all comments from the DX9Settings.ini
[General]
UseRenderedShaders
UseRenderedShaders=true is nearly always useful, because it trims the list of shaders seen while hunting down to just those active in the current scene. Disable this only if you get crashes during hunting.
DumpAll
DumpAll will generate ASM text files for every shader seen by the game. This is usually worth doing once, but not useful for every run.
DefPSSampler
Defines which sampler register is used to retrieve the stereo settings from pixel shaders.
Defaults to s13
DefVSSampler
Defines which sampler register is used to retrieve the stereo settings from vertex shaders.
Defaults to s0
DefVSConst1
Defines which c register Const1 through Const4 will end up in in vertex shaders.
Note that all four constant values end up in the one register as x, y, z and w. There is no DefVSConst2 - to access Const2 you would use c200.y if DefVSConst1 is set to 200.
It's a good idea to search through the AllShaders dump to find a constant register that is not used by the game.
DefPSConst1
Same as DefVSConst1, but for pixel shaders.
PresetsKeysList
Defines which KEY sections are used by the DLL. Note that every number in this list needs to be followed by a semicolon, including the last number.
UseEndScene
bCalcTexCRCatStart
DefPSViewSizeConst
DefSquareSurfaceMode
DefDepthStencilSurfaceMode
DefSurfaceCreationMode
SkipSetScissorRect
DefRtCreationMode
SurfaceCreationModeList
[KEY*]
Replace * with a number. These sections are used to activate presets when pressing or holding various keys or mouse buttons.
Note that you must include all of these sections in the PresetsKeysList under [Genera] otherwise they will be ignored by HelixMod. For instance, if you have defined sections for [KEY1], [KEY3] and [KEY7], then you must set PresetsKeysList = 1;3;7;
Key
This specifies the keycode in decimal.
Microsoft virtual keycodes for Key= use. Especially helpful for those odd keys like Insert, or Pause or F-Keys or Numpad. Must be converted from Hexadecimal to Decimal: http://msdn.microsoft.com/en-us/library/ms927178.aspx
ASCII table for normal keyboard keys. Use the Dec column: http://www.asciitable.com/
501 is the right mouse button, which is useful to switch presets while holding aim in some games.
Type
Type=1 will activate when the key is pressed down.
Type=2 is momentary - it will activate the first preset when the key is pressed down, and the second preset when the key is released.
Presets
This specifies which PRES* sections are activated by this key.
Each number in this list should end with a semicolon, including the last one.
Note that the order in this list is unimportant, however the numerical value of each of the presets does!
For type 2 keys, there should be exactly two entries in the list - the lower numbered entry will be activated while the button is held and the higher numbered entry will be activated when the button is released.
For type 1 keys you can have one or more entries in this list. If you have more than one entry it will cycle through each of them in numerical order when the key is pressed, wrapping back to the first after the last one. A list of two presets would toggle between each of them.
Delay
Defines an optional delay in milliseconds before the next preset will be activated.
Only seems to affect the 'to' and not the 'from' when using Type=2
[PRES*]
Replace * with a number. These sections define various presets that can be activated with key presses.
These sections should be referenced from the Presets list in at least one KEY* section.
Const1, Const2, Const3 & Const4
Each of these can be used to set a value that can be accessed from shaders through the c register defined by DefVSConst1 and DefPSConst1. The four of these make up the x, y, z and w values of a single c register (there is no DefVSConst2, Const2 will be the y value of DefVSConst1).
These must be specified in hex (see below).
UseByDef
If true, this preset will be activated when the game is started.
If this preset can also be activated via a key press, it is recommended to make the numerically highest preset associated with that key the default. Otherwise the first time the key is pressed it may not appear to do anything as it activated the already active preset.
UseByDef can be set on multiple presets. This is useful if you have several independent preset groups - e.g. one group to control the convergence settings, and another to select different UI depths.
UseSepSettings
Set to true to allow this preset to change the separation and/or convergence settings.
SaveSepSettings
Set to true to allow custom separation & convergence settings to be saved in this preset.
To use it the preset must be activated in the game (UseByDef=true does not seem to be sufficient) while the user adjusts their settings via the normal keybindings for the driver. With the preset still active they then press F7 (not to be confused with Ctrl+F7) which will cause HelixMod to write the new settings to DX9Settings.ini
CAUTION: Pressing F7 will strip all comments from DX9Settings.ini!
Separation
Set a custom separation value between 0.0 and 100.0 when this preset is activated. You must also set UseSepSettings=true for this to work. The value must be specified in hex (see below).
Convergence
Set a custom convergence value when this preset is activated. You must also set UseSepSettings=true for this to work. The value must be specified in hex (see below).
Hex to Float conversion
Several values in the ini file are floating point values that must be specified in hex. These include Separation, Convergence, Const1, Const2, Const3 and Const4.
You can use this online converter to convert between float and hex: http://gregstoll.dyndns.org/~gregstoll/floattohex/
Alternatively, if you prefer working in a command line environment, you might considder this Python script: https://raw.githubusercontent.com/DarkStarSword/3d-fixes/master/float_to_hex.py
List of features supported by HelixMod, and all versions available.
Horizontally across the top, we've got versions of the DLL, based on the mod-date found in the zip file. We are using the YYMMDD format.
Going down vertically, we have the different features that are available. Not all features are available or work in all DLLs.
Entries in the table are:
- blank if untested or unknown to work.
- OK if tested and known to work.
- X if tested and known to fail.
140302 | 130906 | 130305 | 120401 | 120304 | |
---|---|---|---|---|---|
[General] | |||||
DumpAll | OK | OK | OK | OK | X |
UseRenderedShaders | OK | OK | X | X | X |
DefVSConst1 | OK | OK | |||
DefPSConst1 | OK | OK | |||
UseEndScene | OK | OK | OK | OK | OK |
DefPSSampler | OK | OK | OK | OK | OK |
DefVSSampler | OK | OK | OK | OK | OK |
bCalcTexCRCatStart | OK | OK | OK | X | X |
PresetsKeyList | OK | OK | |||
Preset1Key | X | X | |||
[Preset1] | |||||
Convergence | X | OK | |||
Separation | X | OK | |||
UseSepSettings | X | OK | |||
[KEY1] | |||||
Key | OK | OK | |||
Presets | OK | OK | |||
Type | OK | OK | |||
[PRES1] | |||||
Const1 | OK | OK | |||
UseByDef | OK |