Thanks a lot to all testers.
I took the experiment a bit further and now frame delay can be enabled and disabled directly through the slider. Here is a
test build.
So by using this build, finally one can avoid having to create individual inis. The suggested setup would be setting frame_delay 0 in mame.ini, then enable frame_delay just for the desired games, directly from the ui.
The setting will then be stored in the game's cfg, and remembered by MAME from then on.
This new implementation also has an important difference with the previous one: now instead of saving all sliders, only the ones that have been modified by the user are stored (i.e. the ones that differ from their default value).
This was required in order for this new full frame delay ui support to be consistent. So, the behaviour with frame delay is as follows:
- The frame delay slider is only saved if you change it from its 'default' value.
- By 'default' value, GM takes the one from the .ini files (remind the .ini priority hierarchy)
- E.g., if frame_delay=1 in mame.ini, the slider will show "1", and won't be saved unless you change it.
- If you change the default value, it'll be stored in the game's cfg.
- The slider has always higher priority than mame.ini. So once you have a saved frame delay value, it'll override whatever you put in mame.ini.
- The slider has always a lower priority than command line or game specific .ini. So you can always override the slider by manually forcing an -fd value.EDIT: The slider will always have higher priority than command line or any .ini. It's done it this way to be coherent with the behaviour of the rest of sliders that do save currently in baseline (brightness, gamma, etc.).
So, if you already have some game specific .ini files, you can leave them and their values will be honored. But it's recommended to leave frame delay disabled in mame.ini (as it's always been).