This shows you the differences between two versions of the page.
Previous revisionNext revision | |||
— | fuss:retroarch [2020/11/04 13:12] – office | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Fixing Fast and Uncontrollable Menu Behaviour ====== | ||
+ | |||
+ | In case the menu seems to scoll uncontrollably or very sensitive then most likely vsync has been turned off. To fix this issue, navigate the menu '' | ||
+ | |||
+ | ====== Assigning a Default Core to all ROMs within a Playlist ====== | ||
+ | |||
+ | Some reasons for collecting ROM sets for various different versions of the same libretro emulation core would be: | ||
+ | * emulation cores such as MAME have versions that match specific ROM sets; for example, latest FinalBurn Neo releases are entirely synchronized to particular ROM sets, | ||
+ | * netplay will only work in case both players have the same matching ROM and the same matching core | ||
+ | |||
+ | For example, a MAME ROM collection might end up looking like a collection of folders containing ROMs meant to be ran by different libretro emulation cores: | ||
+ | < | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | where each path contains the ROM set version that is supposed to work with a certain MAME core version. | ||
+ | |||
+ | Unfortunately, | ||
+ | |||
+ | The following script traverses a previously generated playlist and attempts to set the " | ||
+ | |||
+ | <file bash coreMapper.sh> | ||
+ | #!/bin/bash | ||
+ | ########################################################################### | ||
+ | ## Copyright (C) Wizardry and Steamworks 2020 - License: GNU GPLv3 ## | ||
+ | ## Please see: http:// | ||
+ | ## rights of fair usage, the disclaimer and warranty conditions. | ||
+ | ########################################################################### | ||
+ | ## The following is a short script meant to read a retroarch playlist | ||
+ | ## and assign a default core for all ROMs previously scanned. | ||
+ | ########################################################################### | ||
+ | ## The script works on the principle that certain roms within ROM sets ## | ||
+ | ## (ie: Goodset, No-Intro or MAME ROMs) work best with a specific core ## | ||
+ | ## or core version and it is mostly impossible for retroarch to guess ## | ||
+ | ## what core variant a certain ROM works with. ## | ||
+ | ## ## | ||
+ | ## A playlist generated by retroarch may contain set the " | ||
+ | ## " | ||
+ | ## best-guess core that retroarch can find. Then, assuming, for example, ## | ||
+ | ## multiple MAME ROM sets stored on the drive in separate folders such ## | ||
+ | ## as 2003+, 0.37b5 or FBA 0.2.97.42, this script can be used to set the ## | ||
+ | ## " | ||
+ | ########################################################################### | ||
+ | ## Requirements: | ||
+ | ## * jq ## | ||
+ | ## * Bourne Shell (pure POSIX will not work, ie: dash) ## | ||
+ | ## Example invocation: | ||
+ | ## $ cat MAME.lpl | ./ | ||
+ | ########################################################################### | ||
+ | |||
+ | ########################################################################### | ||
+ | ## CONFIGURATION | ||
+ | ########################################################################### | ||
+ | |||
+ | # An array containing parts of paths in a retroarch playlist for which | ||
+ | # cores should be assigned. | ||
+ | PATH_MATCH=( | ||
+ | " | ||
+ | "FBA 0.2.97.42" | ||
+ | " | ||
+ | ) | ||
+ | |||
+ | # A list of retroarch cores matching the path parts that must be set. | ||
+ | ASSIGNED_CORE=( | ||
+ | "/ | ||
+ | "/ | ||
+ | "/ | ||
+ | ) | ||
+ | |||
+ | ASSIGNED_CORE_NAME=( | ||
+ | "MAME 2003-Plus" | ||
+ | " | ||
+ | "MAME 2000 (0.37b5)" | ||
+ | ) | ||
+ | |||
+ | # Set the jq binary that should be used (default: jq-win64.exe for Windows) | ||
+ | JQ=" | ||
+ | |||
+ | ########################################################################### | ||
+ | ## INTERNALS | ||
+ | ########################################################################### | ||
+ | |||
+ | # Grab STDIN (pine input) | ||
+ | INPUT=" | ||
+ | |||
+ | # Split indices using IFS (without other tools). | ||
+ | OIFS=$IFS | ||
+ | IFS=" " | ||
+ | INDICES=${!PATH_MATCH[*]} | ||
+ | IFS=$OIFS | ||
+ | |||
+ | # Perform all core substitutions based on the matching path part. | ||
+ | JSON=$INPUT | ||
+ | for i in $INDICES; do | ||
+ | MATCH=" | ||
+ | CORE=" | ||
+ | NAME=" | ||
+ | # Variable overloading without storing intermediary partial results. | ||
+ | IFS=" | ||
+ | read -d '' | ||
+ | $JQ " | ||
+ | walk( | ||
+ | if type == \" | ||
+ | then | ||
+ | (.core_path |= \"" | ||
+ | else | ||
+ | . | ||
+ | end | ||
+ | )") | ||
+ | IFS=$OIFS | ||
+ | done | ||
+ | |||
+ | # Pretty print JSON result. | ||
+ | echo $JSON | $JQ . | ||
+ | |||
+ | </ | ||
+ | |||
+ | In order to use the script, edit the variables under the '' | ||
+ | <code bash> | ||
+ | cat MAME.lpl | ./ | ||
+ | </ | ||