FEEL advanced configuration

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:

*master* level
*platform* level
*emulator* level
*gamelist* level
*game* level (optional)
[platform 1]
[emulator 1]
All games – emuname-0.ini
[list 1] – emuname-1.ini
[list 2] – emuname-2.ini
[emulator 2]
All games
[platform 2]
[emulator 3]
[emulator 4]
[platform 3]
[emulator 5]
[emulator 6]

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.



Parameter default levels

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)…

action_key                             1

menu_key                               LAlt

menu_ok                                 LCtrl

menu_cancel                             2

previous_game                           Up

next_game                               Down

previous_letter_game                   Left

next_letter_game                      Right

previous_page                           R

next_page                               F

random_game                             LCtrl

find_game                               LAlt

… “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”


Special parameters

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]

platform_title                         Arcade

emulator_list                           mame, daphne, vpinball


gamelist_list                           mame-0, mame-1, mame-2

current_gamelist                       mame-2

[ROM LIST.ini]

current_game                           1

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 other 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

current_layout                          sheet

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).


Alias (keywords)

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:

rom_path                         E:\daphne\gamesconfig

rom_extension                   txt…

emulator_commandline             E:\daphne\daphne.exe

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

Other configurations

Leave a Reply