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.
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.
/config/addons/
This folder contains addons’ per-character settings files made using the included settings
addon library.
/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.
/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!
/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.
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.
[ashita.launcher]
Contains configuration settings used with the Ashita launcher.
autoclose
- (boolean)name
- (string)[ashita.boot]
Contains configuration settings used with the boot loader and initial startup of the game.
file
- (string)command
- (string)/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)FFXiMain.dll
. This should only be changed if the private server you are playing on has renamed FFXiMain.dll
to something else.script
- (string)args
- (string)[ashita.fonts]
Contains configuration settings used with Ashita’s internal Direct3D based font system.
d3d8.disable_scaling
- (boolean)d3d8.family
- (string)d3d8.height
- (number)[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:
18
.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!
[ashita.input]
Contains configuration settings used with the various input devices to interact with the game.
gamepad.allowbackground
- (boolean)gamepad.disableenumeration
- (boolean)keyboard.blockinput
- (boolean)keyboard.blockbindsduringinput
- (boolean)keyboard.silentbinds
- (boolean)keyboard.windowskeyenabled
- (boolean)mouse.blockinput
- (boolean)mouse.unhook
- (boolean)[ashita.language]
Contains configuration settings used to determine which language data is used for defaults.
playonline
- (number)0 = Default
, 1 = Japanese
, 2 = English
, 3 = European
ashita
- (number)0 = Default
, 1 = Japanese
, 2 = English
, 3 = European
[ashita.logging]
Contains configuration settings used for Ashita’s debugging/logging features.
level
- (number)0 = None
, 1 = Critical
, 2 = Error
, 3 = Warn
, 4 = Info
, 5 = Debug
crashdumps
- (number)[ashita.misc]
Contains configuration settings used for various Ashita related settings.
addons.silent
- (boolean)aliases.silent
- (boolean)plugins.silent
- (boolean)[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.
[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.
[ashita.resources]
Contains configuration settings used with Ashita’s custom resource data override configuration files.
offsets.use_overrides
- (boolean)custom.offsets.ini
configuration file.pointers.use_overrides
- (boolean)custom.pointers.ini
configuration file.resources.use_overrides
- (boolean)custom.datmap.ini
configuration file.[ashita.taskpool]
Contains configuration settings used with Ashita’s internal task queue system.
threadcount
- (number)[ashita.window.startpos]
Contains configuration settings used to set the startup position of the game window.
x
- (number)y
- (number)[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)presentparams.backbuffercount
- (number)presentparams.multisampletype
- (number)presentparams.swapeffect
- (number)presentparams.enableautodepthstencil
- (number)presentparams.autodepthstencilformat
- (number)presentparams.flags
- (number)presentparams.fullscreen_refreshrateinhz
- (number)presentparams.fullscreen_presentationinterval
- (number)behaviorflags.fpu_preserve
- (number)When set to -1, any of the above values in this section will use the current value already being used by the game.
[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)0 = Off
, 1 = On, Lowest Quality
… 6 = On, Best Quality
0001
- (number)0002
- (number)0003
- (number)0004
- (number)0005
- (number)0006
- (number)0007
- (number)0 = Disabled
, 1 = Enabled
0008
- (number)0009
- (number)0010
- (number)0011
- (number)0 = Off
, 1 = Normal
, 2 = Smooth
0012
- (number)0013
- (number)0014
- (number)0015
- (number)0016
- (number)0017
- (number)0 = Off
, 1 = On
0018
- (number)0 = High
, 1 = Low
, 2 = Uncompressed
0019
- (number)0 = Compressed
, 1 = Uncompressed
0020
- (number)0021
- (number)0 = Off
, 1 = On
0022
- (number)0 = Off
, 1 = On
0023
- (number)0 = Off
, 1 = On
0024
- (number)0025
- (number)0026
- (number)0027
- (number)0028
- (number)0029
- (number)12 = Lowest
… 20 = Highest
0030
- (number)0 = Disabled
, 1 = Enabled
0031
- (number)0032
- (number)0033
- (number)0034
- (number)0 = Fullscreen
, 1 = Windowed
, 2 = Fullscreen Windowed (Undocumented)
, 3 = Borderless Windowed
Borderless Windowed
is actually Fullscreen Windowed
, and Fullscreen Windowed
is actually Borderless Windowed
.0035
- (number)0 = Off
, 1 = On
0036
- (number)0 = Compressed
, 1 = Uncompressed
, 2 = High Quality
0037
- (number)0038
- (number)0039
- (number)0 = v1
, 1 = v2
0040
- (number)0 = Off
, 1 = On
0041
- (number)0 = Disabled
, 1 = Enabled
0042
- (string)Screenshots
plugin from Ashita does not use this path.0043
- (number)0 = Off
, 1 = On
Screenshots
plugin from Ashita does not use this option.0044
- (number)0 = Off
, 1 = On
0045
- (number)padmode000
- (array)padsin000
- (array)padguid000
- (string)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:
Option | Description |
---|---|
Enable Gamepad | Enables or disables the gamepad functionality. |
Enable Force Feedback | Enables or disables the gamepad force feedback (rumble) features. |
Enable Sliders | Enables or disables the gamepad slider controls. |
Enable Hat Switches | Enables or disables the gamepad hat switch controls. |
Enable When Inactive | Enables or disables the gamepad working if the game window is not focused. |
Enable XInput | Enables 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:
Index | Action Description |
---|---|
0 | Toggle auto-run. |
1 | Toggle CTRL macro bar display. |
2 | Toggle first/third person view. |
3 | Toggle ALT macro bar display. |
4 | Toggle /heal, lock target. |
5 | Cancel. |
6 | Main menu. |
7 | Select, Confirm selection. |
8 | Select active window. |
9 | Toggle menu/window visibility. |
10 | Menu navigation with movement thumbstick while held. |
11 | Move camera with movement thumbstick while held. |
12 | Toggle logout window. |
13 | Player movement. (up) |
14 | Player movement. (down) |
15 | Player movement. (left) |
16 | Player movement. (right) |
17 | Camera movement. (up) |
18 | Camera movement. (down) |
19 | Camera movement. (left) |
20 | Camera movement. (right) |
21 | Menu movement. (up) (Also handles targeting.) |
22 | Menu movement. (down) (Also handles targeting.) |
23 | Menu movement. (left) (Also handles targeting.) |
24 | Menu movement. (right) (Also handles targeting.) |
25 | Take screenshot. (Menu/windows must be hidden.) |
26 | Toggle 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.
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.