joypad extensions

From Wiki

Sword of Moonlight Extension Library

Revision as of 14:09, 11 May 2013 by Holy (talk | contribs) (woops: bad information)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


Extensions in this section take the form of a #pseudo button on the left of the equal (=) sign and a #keyboard macro on the right. Refer to #Action. This section is to be used by players to configure a game controller. An author may supply a modified default configuration database, however it is recommended that a stock configuration database be used.

A button in this section can be assigned a "reaction" so that if it represents a joystick axes for example, then when the axes is tilted in its negative direction the alternative action is taken. To assign a reaction prefix the button with an underscore (_) or use the formal 1st_button_action and 1st_button_reaction constructions where 1 is a button number and anything goes between it and _button_action or _button_reaction.

Note: as of 1.1.1.5 the addition of this section to the Ex.ini file will make game controllers not appear in the in-game Options menu. This is by design. The following extensions are in addition to the button configuration extension pattern explained in the paragraph above.

..._analog_gaits

Introduced around 1.1.1.5, this extension calibrates the sensitivity of the 8 axes. The part before _analog_gaits must be one of: axis, for the 1st, 2nd, and 3rd axes; axis2, for the 4th, 5th, and 6th axes; slider, for the the 7th axis; and slider2, for the 8th axis. Refer to #pseudo_..._axis, #pseudo_..._axis2, #pseudo_slider, and #pseudo_slider2 respectively.

This extension has 7 parts that must be separated in a way that is unambiguous. Any part not specified defaults to: 0.2, 0.333333, 0.5, 0.666666, 0.75, 0.875, and 0.95 respectively. This is a perfect linear mapping. A game controller may use a nonlinear mapping. In example, a DualShock controller is very biased; .2 .25 .3 .4 .55 .75 .95 gives a greater sense of control over its sticks by flattening out the windows between the gaits.

Note that this is not a mechanism for calibrating imbalance or fighting in a stick. That is done with the Windows Control Panel calibration feature.

The first and last numbers in the series are unique. An input below the first number is ignored. This is important because sticks usually require a wide "dead zone" so not to appear cocked when left still. An input above the last number is taken to be full tilt. A calibrated stick should achieve full tilt. An expanded window lessens the need to force a stick to full tilt.

If a number is less than or equal to the number before it results are undefined. The option to merge gaits will be visited at a later date. Values are limited to series of real numbers between 0 and 1.[#]

do_not_associate_pov_hat_diagonals

Introduced around 1.0.0.1, this extension in the affirmative disables the default behavior of treating a point-of-view hat as if it is an 8 direction-pad where pressing the diagonal directions of the pad is equivalent to simultaneously pressing the pseudo buttons assigned to the two non-diagonal directions on either side of the diagonal. Values are limited to binary statements.[#]

joypad_to_use_for_play

Introduced around 1.0.0.1, this extension selects the game controller or other device to be configured by the enclosing #Joypad section.

You can discover the name of your game controller either by looking for it in the Windows Control Panel, or looking for it in-game while playing a Sword of Moonlight game; note that whenever a Joypad section is present all controllers will appear to be unplugged in game.

You can even change the name of your controller via the Control Panel, however if you unplug the controller the name will revert to the factory default. Doing so can be useful if you have two controllers of the same make and model. The default behavior is to use the next available controller.

It is not necessary to specify the entire name. An asterisk (*) can be used in place of any portion of the name. A question mark (?) can take the place of a single character. Values are limited to MS-DOS wildcard expressions matching the device name of one of your plugged in game controllers.[#]

In the future it will be possible to specify a Windows GUID. However GUIDs are usually only useful to programs like Excellector.

pov_hat_to_use_for_play

Introduced around 1.0.0.1, this extension selects a point-of-view hat to be configured. A game controller may have multiple hats, but only one is able to be configured by #pseudo_pov_hat_.... Values are limited to positive whole numbers.[#]

pseudo_..._axis

Introduced around 1.0.0.1, this extension assigns an action and reaction pseudo button pair to the first 3 analog stick axes. This extension comes in 6 forms. The part between pseudo_ and _axis can be one of x, y, or z, for the 1st, 2nd, and 3rd axis respectively. Values are limited to pseudo buttons.[#]

pseudo_..._axis2

Introduced around 1.0.0.1, this extension assigns an action and reaction pseudo button pair to the second 3 analog stick axes. This extension comes in 6 forms. The part between pseudo_ and _axis can be one of x, y, or z, for the 4st, 5th, and 6th axis respectively. Values are limited to pseudo buttons.[#]

pseudo_pov_hat_...

Introduced around 1.0.0.1, this extension assigns an action or reaction pseudo button to one of the major angles of the point-of-view hat. Refer to #pov_hat_to_use_for_play.

The part after pseudo_pov_hat_ can be one of 0, 9000, 18000, 27000 for up, right, down, left respectively. And if #do_not_associate_pov_hat_diagonals 4500, 13500, 22500, 31500 for up right, bottom right, bottom left, up left respectively. Values are limited to pseudo buttons.[#]

pseudo_slider

Introduced around 1.0.0.1, this extension assigns an action and reaction pseudo button pair to the 7th analog stick axes. Values are limited to pseudo buttons.[#]

pseudo_slider2

Introduced around 1.0.0.1, this extension assigns an action and reaction pseudo button pair to the 8th analog stick axes. Values are limited to pseudo buttons.[#]