HelixMod Feature List

From Bo3b's School for Shaderhackers
Revision as of 05:29, 7 September 2014 by DarkStarSword (Talk | contribs)

Jump to: navigation, search

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

Enables cycling of textures using predefined keyboard keys. Keys must be defined in the General section. The below example defines the semicolon key to cycle down textures & the apostrophe key to cycle up textures:

PrevTexKey = 186

NextTexKey = 222

DefPSViewSizeConst

DefSquareSurfaceMode

DefDepthStencilSurfaceMode

DefSurfaceCreationMode

SkipSetScissorRect

DefRtCreationMode

SurfaceCreationModeList

overridemethod

[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 [General] 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).

[VS*]

These sections define custom settings for specific vertex shaders. Replace * with the 10 digit CRC32 of the vertex shader.

CheckTexCRC

VBOffsetList

ValForDefined

ValNotDefined

TexCounterReg

UseDefinedOnly

DefinedTexturesVS

[VS*.*]

PointsList

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
DefPSViewSizeConst
DefSquareSurfaceMode
DefDepthStencilSurfaceMode
DefSurfaceCreationMode
SkipSetScissorRect
DefRtCreationMode
SurfaceCreationModeList
overridemethod
[Preset1]
Convergence X OK
Separation X OK
UseSepSettings X OK
[KEY*]
Key OK OK
Presets OK OK
Type OK OK
Delay OK
[PRES*]
Const1 OK OK
UseByDef OK
Convergence OK
Separation OK
UseSepSettings OK
SaveSepSettings OK
[VS*]
CheckTexCRC OK
VBOffsetList
ValForDefined OK
ValNotDefined OK
TexCounterReg OK
UseDefinedOnly OK
DefinedTexturesVS OK
[VS*.*]
PointsList