MiSTer-devel / Main_MiSTer

Main MiSTer binary and Wiki
GNU General Public License v3.0
2.99k stars 317 forks source link

[Feature Request] Per Game Core Configs #745

Open JaydeSix opened 1 year ago

JaydeSix commented 1 year ago

As cores have received more options and become more complex there's a growing number of use cases where choosing a single set of core settings no longer results in the best experience for all games. Currently we can have alternate mister.ini files and presets to change the video processing but nothing that can reconfigure a cores settings based on different situations.

Per game core config files could fill this gap, some examples:

PSX: Games where the PSX gpu is too fast causing visual glitches and is not fixable on current hardware, a work around exists, enabling options like 24bit dithering or texture filtering but this has adverse effects in other games (24bit dithering can cause gamma errors)

PSX: Some Games require fixed vblank and hblank to display correctly but this causes large black borders, the crop option can be used but there is two different settings that crop different amounts since some games loose parts of the UI if cropped too much.

Genesis: Some games were designed with the YM3438 in mind and have distortion or improper fadeouts when set to YM2612. There are also games that use the limitations of the YM2612 and do not sound correct when using the YM3438

SNES: There are Filters and Presets that people would like to use but are too sharp with the 512p setting on, but there are games that require it.

Per game configs could also be used for enhancements, for stuff like turbo options, extra sprites, faster cd read speed, since those break some games, and for stuff like the genesis corrected aspect ratio which looks right for some games and not for others.

It wouldn't need any menu options, an unofficial repo could be setup to host the config files as an optional download. This way it would not "break" anyone's setup without them realizing what happened. This would also allow it to be community driven, where configs could be shared, and would eliminate needing to keep a document of game/core quirks that need special settings.

Thank you for your consideration.

sorgelig commented 1 year ago

MGL files support made exactly for that.

JaydeSix commented 1 year ago

A few questions about using mgl files for this application.

If I understand correctly you can change the 'setname' so it will use a different config but that also creates a new folder in games correct? 'Path' could be used to point to the rom files but it would still create a bunch of empty folders?

This would also mean the user would have a bunch of duplicate titles in the file select menu and would have to make sure to load the mgl file right? Cause keeping the mgls in their own folder or making 'new' cores with mgls would require thte user to remember or keep notes on every game that needed a fix.

If a user loaded a mgl file with the core settings fixed for that game, wouldn't the user have to go into the core selector and reload the actual rbf file to get the default settings back before loading a new game?

If a user were to setup all these fixes with mgls, they would have to load up and change an mgl file of each fix type if they changed a core setting that they wanted to be universal across all games of that core. Also if a repo were set up to share these mgl fix files would they then need to share the config files too right? And a user would still have to go in to each mgl of a certain fix type to change settings that they may not want or work for their setup.

kwinsch commented 4 months ago

Atari Lynx: Some games like Klax and Gauntlet have different orientation than the rest of the library. The core supports in the CONF_STR the parameters P1OAB and P1OF that should be influenceable per game or at least overwritten for the games require a different setting.

As @sorgelig mentioned, MGL can be used as a workaround with the parameter "setname" set to a new core name, which produces a separate config. This approach may lead to clutter unfortunately, since every core config needs a separate game folder. For my PSX games, this would result in

Related is the per game controller setting, that may be needed for switching between controller types, like rotary, joystick, digtial, analog etc.

An alternative may be to place a config file alongside the game file that mister main can pick up and overwrite some settings. For the game Klax.lyx, it may be Klax.cnf or similar.