Feel configuration structure, textfiles-based (.ini extension) is organized in a very simple and intuitive way to the user if on default settings, yet really powerful and advanced, able to manage any customization level, when knowing its principles (just some basic rules).
Sample structure is the following. In detail, there are 5 configuration levels:
||*game* level (optional)|
|All games – emuname-0.ini|
|[list 1] – emuname-1.ini|
|[list 2] – emuname-2.ini|
In each directory in the scheme a main .ini file, named to its containing directory (ex.: feel.ini, arcade.ini, mame.ini) is present, and in emulator-level directories there are gamelist-level .ini files (ex.: mame-0.ini, mame-1.ini, …), which are gamelist file descriptors (All games, Favorites, …).
The 3 main rules in FEEL configuration are:
- all the parameters in configuration (see: “Complete parameter list”) can be set AT ANY LEVEL, and on more than one level at the same time
- in case a parameter is missing at a certain level, its available upper-level value will be used, going up until first level
- when a single parameter is present at more than one level, value with heavier weight (i.e.: at the lowest level) will “win”
Using these 3 rules you can define in a simple yet very precise way how the frontend will work on a certain platform, emulator or even on a single game rom.
Being more precise, there is a level at which the most part of the parameters will find its “natural” place (default level).
For example, all the FEEL keyboard settings (here some)…
… “make sense” at *master* level (so that there’s a single value for the whole frontend usage).
Other parameters make sense (very special cases apart) only at emulator level.
Here shown for example, emulator run parameters set:
# run emulator
#emulator_commandline E:\Program Files\Feel\clew.exe
emulator_arguments -run_mame “[emulator_path]\mame.exe [rom_name] -offscreen_reload”
At last, there are some special parameters (internally managed by FEEL), concerning list of configurations present:
platform_list arcade, console, computer, utilities
current_platform arcade [GROUP.ini]
emulator_list mame, daphne, vpinball
gamelist_list mame-0, mame-1, mame-2
These parameters are updated by FEEL according to the configurations found on the filesystem under config directory, and should not modified (you can however change a list order changing it in …_list parameters).
All the other parameters (see: “Parameters complete list”) can be placed on any config level, so that their setting will be available at frontend-level, on a single group of emulators-level, on a single emulator, or even on a single game (see: “Rom-specific configuration with .ini files list”).
Example of a parameter which is easily moved at any level: parameter
which defines display layout (see: “Display layout configuration”), can make sense if set:
- at master level (same layout in all frontend)
- at platform level (specific layout for each platform, ex.: one for “Arcade”, one for “Console”, etc.)
- at emulator level (ex.: a specific layout for MAME, another for Daphne, etc.)
“Hibryd” solutions are also possible, such as setting a specific layout for Mame, and a generic one for all the others: in this case adding current_layout parameter in feel.ini e in mame.ini at the same time will be sufficient.
This trick is particularly adequated to manage keyboard re-mapping parameter (see: “Keyboard mapping”) input_mapping:
# ePSXe show window with LAlt or Ctrl+Space
input_mapping LAlt::L, Space::V
which can be set at a default value for most emulators (usually no mapping, expressed by empty string or “#” value), and then modified on very specific systems (for instance, on computer emulators, usually requiring a full keyboard to control the games).
When setting parameters (specially all those related to specific emulator launch command), there are some keywords used to access frontend internal data (selected game, paths, etc.).
Here the complete list with relevant descriptions is reproduced:
[rom_path] = current rom path (defined by rom_path parameter)
[rom_name] = currently selected rom name (managed da FEEL)
[rom_extension] = current rom extension (defined by rom_extension parameter)
[full_path] = [rom_path]\[rom_name].[rom_extension]
[full_dos_path] = [full_path] in DOS (8.3) format [emulator_path] = current emulator’s full path (defined by emulator_path parameter)
These keywords can be used to compose the execution command line, like in this example:
emulator_arguments [rom_name] vldp -framefile “[full_path]” -fullscreen -nohwaccel -noserversend
With these settings, starting “Dragon’s Lair” on Daphne, this command will be executed:
E:\daphne\daphne.exe lair vldp –framefile “E:\daphne\gamesconfig\lair.txt” –fullscreen –nohwaccel –noserversend