Configurations

ashita

This page is subject to change heavily in the future when Ashita v4 gains its full UI launcher.

Once you have downloaded and extracted/installed Ashita, you are ready to begin configurations.

Configuration File Locations

Ashita includes its own built-in ConfigurationManager object which makes use of .ini files. To help keep things organized, all configuration files that make use of this system are stored in a central location, the /config/ folder. In addition to this manager, Ashita includes a settings library for addons to make use of which also stores per-character configurations within this folder.

The /config/ folder also contains sub-folders for more specific usages.

These are the main sub-folders you should expect to see:

  • /config/addons/
  • /config/ashita/
  • /config/boot/
  • /config/sandbox/

Addons and plugins can make their own folders for their various configuration settings.

Folder: /config/addons/

This folder contains addons’ per-character settings files made using the included settings addon library.

Folder: /config/ashita/

This folder contains Ashita specific configuration settings files. These are the main settings required in order for Ashita to function properly.

  • ashita.datmap.ini - Contains the various DAT file information that Ashita will parse internally via the ResourceManager.
  • ashita.offsets.ini - Contains the various memory offsets used with the pointer information internally.
  • ashita.pointers.ini - Contains the various memory pointer information used to hook game functions and locate game objects.

This folder can also include custom overrides for the various files that are already present in this folder. These override files are used to allow users to have Ashita target a different client version. Ashita will attempt to always keep the included ashita.xxx.ini configuration files up to date, but will not overwrite/update any custom.xxx.ini replacement files.

  • custom.datmap.ini - Can contain any overrides or new information to alter how the original datmap configurations are handled.
  • custom.offsets.ini - Can contain any overrides or new information to alter how the original offset configurations are handled.
  • custom.pointers.ini - Can contain any overrides or new information to alter how the original pointer configurations are handled.

You should NEVER alter the ashita.xxx.ini settings files! These will be overwritten when running the launcher by the latest available files. Instead, make use of the custom.xxx.ini files if you need to alter how Ashita functions.

Folder: /config/boot/

This folder contains the boot configurations/profiles used to launch the game. Players can create a single file and share it between all characters they wish to play, or you can create individual profiles for each character. These files hold the various configurations for Ashita settings as well as the game registry configuration overrides.

You can find more information about profile configurations below.

It is HIGHLY recommended that you DO NOT edit or use the included boot configuration files. Instead, you should make a copy of the one you wish to use, rename it, and edit that instead. This will avoid accidentally having your configurations overwritten!

Folder: /config/sandbox/

New to Ashita v4 is the Sandbox plugin. This plugin can completely emulate/virtualize the game installation allowing you to run FFXI without having to install it. (You must have a working copy of the game before making use of Sandbox!) This allows you to make FFXI portable and run it [nearly] anywhere.

This folder contains the required configuration files for Sandbox to function.

Boot Configurations

In order to launch the game and load Ashita, a boot configuration must be provided. These configuration files are stored within the /config/boot/ folder and hold the various configuration settings needed to prepare Ashita for usage, as well as handle the game registry settings.

Ashita v4 holds boot configurations within the .ini format. If you would like to learn more about this file format, you can find information here: https://en.wikipedia.org/wiki/INI_file

Following the normal format of .ini files, the boot configurations are broken into sections.
Below is information about each section and the settings available to that section.

Section: [ashita.launcher]

Contains configuration settings used with the Ashita launcher.

  • autoclose - (boolean)
    • Default: 1
    • Sets if the launcher should automatically close after successfully launching this configuration.
  • name - (string)
    • Default: (empty)
    • The name of the configuration to display in the launcher. If left empty, the launcher will use the file name instead.

Section: [ashita.boot]

Contains configuration settings used with the boot loader and initial startup of the game.

  • file - (string)
    • Default: (empty)
    • Sets the boot file to launch to start FFXI.
    • If playing on retail, this can be left empty. Ashita will automatically find a valid install and launch the game. However, you may want to directly set this still if you have multiple game installs of FFXI. If playing on a private server, this should point to the boot loader used with the server.)
  • command - (string)
    • Default: (empty)
    • Sets the boot command that is passed to the boot loader (file) on launch.
    • If playing on retail, this can be left empty or set to /game eAZcFcB to show the quick-play icon inside of PlayOnline to log into FFXI faster. If playing on a private server, this should be the commands required by the server you are playing on in order to properly connect. (Usually the --server \<ip\> command is enough.)
  • gamemodule - (string)
    • Default: (empty)
    • Sets the name of the main game module Ashita should use when doing game module lookups.
    • If left blank, this will resolve to FFXiMain.dll. This should only be changed if the private server you are playing on has renamed FFXiMain.dll to something else.
  • script - (string)
    • Default: (empty)
    • Sets the script file to execute after Ashita has successfully injected into the game.
    • If left blank, Ashita will not execute any script automatically.
  • args - (string)
    • Default: (empty)
    • Sets the script arguments to pass to the ‘script’ (if set) above when it’s executed.
    • This can be useful if you share a script between multiple characters, but want to use specific values for token replacements. Such as binds/aliases that use the profiles specific character name.

Section: [ashita.fonts]

Contains configuration settings used with Ashita’s internal Direct3D based font system.

  • d3d8.disable_scaling - (boolean)
    • Default: 0
    • Sets if Ashita will disable scaling the Direct3D font objects by default.
    • If false, Ashita attempt to scale font objects based on the systems DPI setting. Otherwise, Ashita will default to its old behavior of an enforced scaling size.
  • d3d8.family - (string)
    • Default: Arial
    • Sets the default font family (face) that is used when creating a font object but not specifying one.
  • d3d8.height - (number)
    • Default: 10
    • Sets the default font height that is used when creating a font but not specifying one.

Section: [ashita.imgui.fonts]

Contains configuration settings used to change the default fonts used with Ashita’s implementation of ImGui.

Ashita makes use of the ImGui project to allow for custom UI elements ot be rendered into FFXI’s scene. By default, ImGui would use a pixel font called ProggyClean. Ashita has replaced this default font with a new one called Agave as the original does not scale well and is assumed to be used at a fixed small font size. To allow even more customization, Ashita uses this settings block to allow users to change the default settings of the new Agave font or to completely override the font(s) Ashita loads by default for ImGui.

When overriding the default font(s) entirely, this settings block will expects a specific format to be followed. The format for the section should look like this:

1[ashita.imgui.fonts]
2font0.family    = Arial.ttf
3font0.size      = 18
4font0.is_jp     = false

You can define multiple fonts at once by changing the number that postfixes the font part of the settings names. (ie. font0, font1, font2, etc.) The size and is_jp values are optional for each font entry, only the family entry must be defined. Ashita will walk this block indefinitely until it does not find a valid font#.family entry for the next expected index. (This means that if you define a font0.family and a font2.family, the font2 entry will not be loaded as there was no font1 found.)

The below information explains each of these settings options when overriding the default font. (Note: The # character in the settings names is used to note where you would place the current number index of the font you are editing, starting with 0.)

font#.family - (string)

Defines the font family file name. Ashita will now load custom fonts from a new predefined location of:

  • <Ashita Path>/resources/fonts/

This value should be the actual file name as it is on disk within this folder. (ImGui does not directly support loading already installed system fonts. You must place the font file you wish to use in this folder!)

font#.size - (number|array)

Defines the font size(s) that you wish to use with this font. (This value is optional.)

This value can be defined in the following manners:

  • Blank - If the value is left blank, or not given at all, then the system will default to the font size of 18.
  • Single - If the value is a single numerical value, the system will use this value as the font size to load.
  • Array - If the value is a comma-separated array, then the system will load the font at each of the given font sizes. (ie. 14,18,32)

font#.is_jp - (boolean)

Defines if the font includes, and should load, Japanese glyphs. (This value is optional, default is false.)

If the user wishes to use Japanese fonts with ImGui, this flag should be set to true with the desired font. Otherwise, it should be left off to avoid potential errors/issues trying to load fonts without the expected glyphs.

Here are some examples of using this settings block to override the default font:

Loading only NotoSans Japanese font.

1[ashita.imgui.fonts]
2font0.family = NotoSansCJKjp-Regular.otf
3font0.size   = 14
4font0.is_jp  = true

Loading two fonts. (Arial defaults to font size 18px.)

1[ashita.imgui.fonts]
2font0.family = NotoSansCJKjp-Regular.otf
3font0.size   = 14
4font0.is_jp  = true
5font1.family = Arial.ttf

Loading two fonts with custom sizes.

1[ashita.imgui.fonts]
2font0.family = NotoSansCJKjp-Regular.otf
3font0.size   = 14
4font0.is_jp  = true
5font1.family = Arial.ttf
6font1.size   = 14,18,32

Players can also alter the default font only if they wish. As mentioned above, Ashita will automatically load and use the Agave font if no other fonts are defined in this section. There is a special case made for editing the default font. If you wish to edit the default fonts settings, you can define the font family as just Agave with no file extension. Ashita will specifically look for and treat this case for the default font.

Here is an example of editing the default font. This will override the system to only load Agave at the font size 18 instead of the normal 18,24,32:

1[ashita.imgui.fonts]
2font0.family = Agave
3font0.size   = 18
4font0.is_jp  = false

Please note: ImGui uses a single internal texture to hold the entire font map for all registered fonts. Because of this, it is possible to define too many fonts or use font sizes that are too large causing the texture to fail to be created. Please try and only define absolutely needed fonts here and use a realistic size that makes sense. It is also important to note; Ashita will internally add the FontAwesome glyph map to all fonts that are loaded into it!

Section: [ashita.input]

Contains configuration settings used with the various input devices to interact with the game.

  • gamepad.allowbackground - (boolean)
    • Default: 0
    • Sets if controllers should still work if the game is out of focus.
  • gamepad.disableenumeration - (boolean)
    • Default: 0
    • Sets if Ashita should disable the ability for game controllers to be discovered.
    • This is useful to turn on if you leave controllers enabled but not use one. You may notice a micro-stutter while playing. Turning this on will usually fix that micro-stutter. However, while this is on, you will not be able to use a controller until its turned off.
  • keyboard.blockinput - (boolean)
    • Default: 0
    • Sets if Ashita should completely disable all keyboard input.
  • keyboard.blockbindsduringinput - (boolean)
    • Default: 1
    • Sets if Ashita should ignore keybinds while the game is expecting input.
    • This will block keybinds while entering chat into the chat box, or editing things like search comments, bazaar comments, etc.
  • keyboard.silentbinds - (boolean)
    • Default: 0
    • Sets if Ashita should announce bind related information, such as setting a new keybind.
    • If enabled, Ashita will not print bind related messages to the chat log.
  • keyboard.windowskeyenabled - (boolean)
    • Default: 0
    • Sets if the Windows key should be enabled and work like normal.
  • mouse.blockinput - (boolean)
    • Default: 0
    • Sets if Ashita should completely block all mouse input.
  • mouse.unhook - (boolean)
    • Default: 1
    • Sets if Ashita should unhook the mouse from being automatically repositioned by the game menu system.

Section: [ashita.language]

Contains configuration settings used to determine which language data is used for defaults.

  • playonline - (number)
    • Default: 2
    • Sets the default PlayOnline language the launcher will use when trying to launch retail and no direct boot file was given.
    • If set to 0, Ashita will default to English.
    • Valid values are: 0 = Default, 1 = Japanese, 2 = English, 3 = European
  • ashita - (number)
    • Default: 2
    • Sets the default language used with the internal ResourceManager string data.
    • If set to 0 or 3, Ashita will default to English. (SE no longer translates strings to European.)
    • Valid values are: 0 = Default, 1 = Japanese, 2 = English, 3 = European

Section: [ashita.logging]

Contains configuration settings used for Ashita’s debugging/logging features.

  • level - (number)
    • Default: 5
    • Sets the level of debugging information Ashita will output to its log files.
    • Valid values are: 0 = None, 1 = Critical, 2 = Error, 3 = Warn, 4 = Info, 5 = Debug
  • crashdumps - (number)
    • Default: 1
    • Sets if Ashita should create crash dumps automatically when a critical error occurs.

Section: [ashita.misc]

Contains configuration settings used for various Ashita related settings.

  • addons.silent - (boolean)
    • Default: 1
    • Sets if Ashita should stop announcing loading and unloading addons to the chat window.
  • aliases.silent - (boolean)
    • Default: 1
    • Sets if Ashita should stop announcing alias related command results to the chat window.
  • plugins.silent - (boolean)
    • Default: 1
    • Sets if Ashita should stop announcing loading and unloading plugins to the chat window.

Section: [ashita.polplugins]

Contains the list of plugins Ashita will launch immediately as it injects. (IPolPlugin instances.)

This does not work with normal plugins! This will only work for ‘PlayOnline Plugins’.

This section expects each entry to be the name of the plugin and a boolean value (0 or 1) if it should be enabled.

1[ashita.polplugins]
2sandbox = 1
3pivot = 0

In this example, Sandbox would be loaded, but Pivot would not.

Section: [ashita.polplugins.args]

Contains the plugin-specific arguments to pass to a ‘PlayOnline Plugin’ when its loaded.

This section expects each entry to be the name of the plugin and a string value of arguments to be passed to the plugin when its loaded. In most cases, plugins will not require arguments to load and do not need an entry here. Consult the desired plugins documentation to see if any arguments are required.

As an example:

1[ashita.polplugins.args]
2sandbox = args1 args2 args3 args4

This would pass the string args1 args2 args3 args4 to Sandbox when its loaded.

Section: [ashita.resources]

Contains configuration settings used with Ashita’s custom resource data override configuration files.

  • offsets.use_overrides - (boolean)
    • Default: 1
    • Sets if Ashita should load and merge in the custom overrides within the custom.offsets.ini configuration file.
  • pointers.use_overrides - (boolean)
    • Default: 1
    • Sets if Ashita should load and merge in the custom overrides within the custom.pointers.ini configuration file.
  • resources.use_overrides - (boolean)
    • Default: 1
    • Sets if Ashita should load and merge in the custom overrides within the custom.datmap.ini configuration file.

Section: [ashita.taskpool]

Contains configuration settings used with Ashita’s internal task queue system.

  • threadcount - (number)
    • Default: -1
    • Sets the maximum number of threads the task queue will attempt to use.
    • If set to 0 or lower, the internal task queue will query the system for the available number of logical cores and determine the best number of threads to use. It is recommended to leave this as -1 and let the system determine the best number itself.

Section: [ashita.window.startpos]

Contains configuration settings used to set the startup position of the game window.

  • x - (number)
    • Default: -1
    • Sets the X screen position to start the game window at.
    • If set to -1, will use the center X position of the screen.
  • y - (number)
    • Default: -1
    • Sets the Y screen position to start the game window at.
    • If set to -1, will use the center Y position of the screen.

Section: [ffxi.direct3d8]

Contains configuration settings used to override Direct3D8 device creation parameters.

Note: This is for advanced users only! Edit with caution!

  • presentparams.backbufferformat - (number)
    • Default: -1
    • Sets the back buffer format passed with the device creation present parameters.
  • presentparams.backbuffercount - (number)
    • Default: -1
    • Sets the back buffer count passed with the device creation present parameters.
  • presentparams.multisampletype - (number)
    • Default: -1
    • Sets the multisample type passed with the device creation present parameters.
  • presentparams.swapeffect - (number)
    • Default: -1
    • Sets the swap effect passed with the device creation present parameters.
  • presentparams.enableautodepthstencil - (number)
    • Default: -1
    • Sets the auto-depth stencil enabled flag passed with the device creation present parameters.
  • presentparams.autodepthstencilformat - (number)
    • Default: -1
    • Sets the auto-depth stencil format passed with the device creation present parameters.
  • presentparams.flags - (number)
    • Default: -1
    • Sets the flags passed with the device creation present parameters.
  • presentparams.fullscreen_refreshrateinhz - (number)
    • Default: -1
    • Sets the fullscreen refresh rate passed with the device creation present parameters.
  • presentparams.fullscreen_presentationinterval - (number)
    • Default: -1
    • Sets the fullscreen presentation interval passed with the device creation present parameters.
  • behaviorflags.fpu_preserve - (number)
    • Default: 0
    • Sets if the fpu preserve behavior flag is enabled by force.

When set to -1, any of the above values in this section will use the current value already being used by the game.

Section: [ffxi.registry]

Contains configuration settings used to override Final Fantasy XI’s registry settings. These settings take priority over what is actually within the system registry for the game. A value of -1 means that Ashita will default to what value is already in the real registry for the given setting.

  • 0000 - (number)
    • Default: -1
    • Recommended: 6
    • Sets the games mip mapping setting.
    • Valid values: 0 = Off, 1 = On, Lowest Quality6 = On, Best Quality
  • 0001 - (number)
    • Default: -1
    • Sets the games window resolution width.
  • 0002 - (number)
    • Default: -1
    • Sets the games window resolution height.
  • 0003 - (number)
    • Default: -1
    • Recommended: 4096
    • Sets the games background resolution width.
    • For best performance, this value is best if divisible by 2.
  • 0004 - (number)
    • Default: -1
    • Recommended: 4096
    • Sets the games background resolution height.
    • For best performance, this value is best if divisible by 2.
  • 0005 - (number)
    • Default: -1
    • Unknown / unused.
  • 0006 - (number)
    • Default: -1
    • Unknown / unused.
  • 0007 - (number)
    • Default: -1
    • Sets if the games sound is enabled.
    • Valid values: 0 = Disabled, 1 = Enabled
  • 0008 - (number)
    • Default: -1
    • Unknown / unused.
  • 0009 - (number)
    • Default: -1
    • Unknown / unused.
  • 0010 - (number)
    • Default: -1
    • Unknown / unused.
  • 0011 - (number)
    • Default: -1
    • Sets the games environment animations mode.
    • Value values: 0 = Off, 1 = Normal, 2 = Smooth
  • 0012 - (number)
    • Default: -1
    • Unknown / unused.
  • 0013 - (number)
    • Default: -1
    • Unknown / unused.
  • 0014 - (number)
    • Default: -1
    • Unknown / unused.
  • 0015 - (number)
    • Default: -1
    • Unknown / unused.
  • 0016 - (number)
    • Default: -1
    • Unknown / unused.
  • 0017 - (number)
    • Default: -1
    • Recommended: 1
    • Sets the games bump mapping.
    • Valid values: 0 = Off, 1 = On
  • 0018 - (number)
    • Default: -1
    • Recommended: 2
    • Sets the games texture compression level.
    • Valid values: 0 = High, 1 = Low, 2 = Uncompressed
  • 0019 - (number)
    • Default: -1
    • Recommended: 1
    • Sets the games texture compression level.
    • Valid values: 0 = Compressed, 1 = Uncompressed
  • 0020 - (number)
    • Default: -1
    • Unknown / unused.
  • 0021 - (number)
    • Default: -1
    • Recommended: 1
    • Sets the games hardware mouse option.
    • Valid values: 0 = Off, 1 = On
  • 0022 - (number)
    • Default: -1
    • Recommended: 0
    • Sets the games show opening movie option.
    • Valid values: 0 = Off, 1 = On
  • 0023 - (number)
    • Default: -1
    • Recommended: 0
    • Sets the games simplified character creation visuals option.
    • Valid values: 0 = Off, 1 = On
  • 0024 - (number)
    • Default: -1
    • Unknown / unused.
  • 0025 - (number)
    • Default: -1
    • Unknown / unused.
  • 0026 - (number)
    • Default: -1
    • Unknown / unused.
  • 0027 - (number)
    • Default: -1
    • Unknown / unused.
  • 0028 - (number)
    • Default: -1
    • Sets the games gamma base.
    • Float based value, 0 is the default game value.
  • 0029 - (number)
    • Default: -1
    • Recommended: 20
    • Sets the games maximum number of sounds.
    • Valid values: 12 = Lowest20 = Highest
  • 0030 - (number)
    • Default: -1
    • Sets the games 3D LCD mode.
    • Valid values: 0 = Disabled, 1 = Enabled
  • 0031 - (number)
    • Default: -1
    • Unknown / unused.
  • 0032 - (number)
    • Default: -1
    • Unknown / unused.
  • 0033 - (number)
    • Default: -1
    • Unknown / unused.
  • 0034 - (number)
    • Default: -1
    • Sets the games windowed mode.
    • Valid values: 0 = Fullscreen, 1 = Windowed, 2 = Fullscreen Windowed (Undocumented), 3 = Borderless Windowed
    • Note: There is a bug in the official client handling of this setting where Borderless Windowed is actually Fullscreen Windowed, and Fullscreen Windowed is actually Borderless Windowed.
  • 0035 - (number)
    • Default: -1
    • Recommended: 1
    • Sets the games sound always on option. (Play sound while game is in background.)
    • Valid values: 0 = Off, 1 = On
  • 0036 - (number)
    • Default: -1
    • Recommended: 2
    • Sets the games font compression.
    • Valid values: 0 = Compressed, 1 = Uncompressed, 2 = High Quality
  • 0037 - (number)
    • Default: -1
    • Recommended: Use the same value as your window width resolution. (0001)
    • Sets the games menu resolution width.
  • 0038 - (number)
    • Default: -1
    • Recommended: Use the same value as your window height resolution. (0002)
    • Sets the games menu resolution height.
  • 0039 - (number)
    • Default: -1
    • Sets the games IME mode.
    • Valid values: 0 = v1, 1 = v2
  • 0040 - (number)
    • Default: -1
    • Recommended: 0
    • Sets the games graphics stabilization option.
    • Valid values: 0 = Off, 1 = On
  • 0041 - (number)
    • Default: -1
    • Sets the games beta UI option.
    • Valid values: 0 = Disabled, 1 = Enabled
    • Note: This is not available in the retail client.
  • 0042 - (string)
    • Default: -1
    • Sets the games default screenshot path.
    • Note: This path is only used for the games built-in screenshots. The included Screenshots plugin from Ashita does not use this path.
  • 0043 - (number)
    • Default: -1
    • Sets the games screenshot in screen resolution option.
    • Valid values: 0 = Off, 1 = On
    • Note: The included Screenshots plugin from Ashita does not use this option.
  • 0044 - (number)
    • Default: -1
    • Sets the games maintain window aspect ratio option.
    • Valid values: 0 = Off, 1 = On
  • 0045 - (number)
    • Default: -1
    • Unknown / unused.
  • padmode000 - (array)
    • Default: -1
    • Sets the games gamepad configuration settings. (See below for more information.)
  • padsin000 - (array)
    • Default: -1
    • Sets the games gamepad button map settings. (See below for more information.)
  • padguid000 - (string)
    • Default: -1
    • Sets the games gamepad GUID that the client will attempt to automatically attach to. (See below for more information.)

padmode000

The padmode000 value is a comma-separated list of booleans, such as: 1,1,1,1,1,0. There are 6 options in total in the following order:

OptionDescription
Enable GamepadEnables or disables the gamepad functionality.
Enable Force FeedbackEnables or disables the gamepad force feedback (rumble) features.
Enable SlidersEnables or disables the gamepad slider controls.
Enable Hat SwitchesEnables or disables the gamepad hat switch controls.
Enable When InactiveEnables or disables the gamepad working if the game window is not focused.
Enable XInputEnables or disables if the gamepad should be detected as XInput or not.

padsin000

The padsin000 value is a comma-separated list of numbers. There are 27 options in total. Each ‘slot’ in this list represents an in-action and the value given for that slot is the button id mapped to it. (Note: The button ids are different depending if XInput mode is enabled or not in the padmode000 value!)

The 27 slots are in the following order:

IndexAction Description
0Toggle auto-run.
1Toggle CTRL macro bar display.
2Toggle first/third person view.
3Toggle ALT macro bar display.
4Toggle /heal, lock target.
5Cancel.
6Main menu.
7Select, Confirm selection.
8Select active window.
9Toggle menu/window visibility.
10Menu navigation with movement thumbstick while held.
11Move camera with movement thumbstick while held.
12Toggle logout window.
13Player movement. (up)
14Player movement. (down)
15Player movement. (left)
16Player movement. (right)
17Camera movement. (up)
18Camera movement. (down)
19Camera movement. (left)
20Camera movement. (right)
21Menu movement. (up) (Also handles targeting.)
22Menu movement. (down) (Also handles targeting.)
23Menu movement. (left) (Also handles targeting.)
24Menu movement. (right) (Also handles targeting.)
25Take screenshot. (Menu/windows must be hidden.)
26Toggle use of movement, menu and camera controls.

padguid000

The padguid000 value is used to tell the client which gamepad device should be used when automatically detecting controller devices. This is a newer feature made available to the client which allows players to specifically connect to a desired controller instead of having the client automatically connect to the first one it finds, as it did before. This is useful for players who have multiple controllers connected to their machine, or have additional kinds of controllers or other input devices that identify as controllers (such as racing wheels) and want to only ever use a specific one with FFXI.

This setting expects the raw GUID string of the controller device, in the normal format of: {00000000-0000-0000-0000-000000000000}

The included gamepad configuration tool that ships with Final Fantasy XI now has the ability to select the desired controller you wish to use.

DirectInput Button Mappings

Click to reveal the DirectInput button mapping information...

The FFXiPadConfig tool does not handle DirectInput controllers fully the same way the actual game client does. The configuration tool only supports upto 32 buttons (ie. DIJOYSTATE) meanwhile the actual game client will support up to 128 buttons. (ie. DIJOYSTATE2) It is possible to map to these extra buttons by editing the padsin000 value manually.

XInput Button Mappings

Click to reveal the XInput button mapping information...