This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
fuss:retroarch [2020/02/18 01:26] – created office | fuss:retroarch [2023/12/31 15:50] (current) – [Making Games with More than Two Players Work in Netplay (multitap)] office | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Fixing Fast and Uncontrollable Menu Behaviour ====== | ====== 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 '' | + | 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> | ||
+ | # | ||
+ | ########################################################################### | ||
+ | ## 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 | ./ | ||
+ | </ | ||
+ | |||
+ | ====== Complete RetroArch BIOS Files ====== | ||
+ | |||
+ | All the BIOS files on RetroArch must be placed inside the '' | ||
+ | |||
+ | {{fuss: | ||
+ | |||
+ | Under Lakka, ''/ | ||
+ | |||
+ | ====== Cheating in Any Game with RetroArch ====== | ||
+ | |||
+ | The cheat system built into RetroArch is a classic memory scanner and the procedure to change any in-game value is as follows: | ||
+ | * pick a value to change (amount of lives, weapons, etc...), | ||
+ | * scan the memory for the value, | ||
+ | * change the value by playing the game, | ||
+ | * scan the memory for the changed value, | ||
+ | * repeat the above until no new matches can be found, | ||
+ | * add the matches to the retroarch cheat list, | ||
+ | * for all matches, increment or set the value by a desired amount | ||
+ | |||
+ | {{video: | ||
+ | |||
+ | ====== Swapping CDs using PCX Emulator for PlayStation ====== | ||
+ | |||
+ | The second memory save card can be activated in order to be able to progress from one CD to the other while restoring the game. Games can be saved on the second memory save card which is shared amongst all games such that when a CD swap occurs the save game can be restored from the second memory card. To activate the shared second memory card, access the core menu '' | ||
+ | |||
+ | ====== Solving Netplay Compatibility Issues on RetroArch ====== | ||
+ | |||
+ | Ideally, for netplay, all connecting participants should have the exact same versions of all assets involving the game: | ||
+ | * same ROM, | ||
+ | * same core, | ||
+ | * same core version, | ||
+ | * same RetroArch version, | ||
+ | * same architecture between netplay clients, | ||
+ | * etc | ||
+ | |||
+ | in order to be able to connect and play without any issues. | ||
+ | |||
+ | The problem is that due to various retroarch distributions, | ||
+ | |||
+ | The trivial solution is to compile a core for all versions and for all participating clients in order to ensure that the same version is used. | ||
+ | |||
+ | As an example, the following instructions will compile a FBNeo core for Windows, for a given FBNeo release. Windows clients will then have to download the exact core version and use that in order to connect to clients using the exact same core version. | ||
+ | |||
+ | First, the '' | ||
+ | <code bash> | ||
+ | git clone https:// | ||
+ | </ | ||
+ | |||
+ | then the core that is to be used is retrieved using '' | ||
+ | <code bash> | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | The two commands will pull both the source and the most recent release of the FBNeo core. In order to match core versions, for instance, given a lobby room that advertises a game, such as: | ||
+ | < | ||
+ | Anonymous mslug FinalBurn Neo v1.0.0.03 c68d212 No 1.14.0 12 Mar 23 05:20 UTC | ||
+ | </ | ||
+ | with the FBNeo release hash '' | ||
+ | |||
+ | Since the FBNeo core is downloaded to the '' | ||
+ | <code bash> | ||
+ | cd libretro-fbneo/ | ||
+ | git checkout c68d212 | ||
+ | git reset --hard c68d212 | ||
+ | </ | ||
+ | |||
+ | In order to compile the FBNeo '' | ||
+ | <code bash> | ||
+ | export HOST_CC=x86_64-w64-mingw32 | ||
+ | export platform=win64 | ||
+ | ./ | ||
+ | </ | ||
+ | where: | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | and the final command '' | ||
+ | |||
+ | If successful, after compilation, | ||
+ | |||
+ | In order to use the compiled core, for Windows platforms, the '' | ||
+ | |||
+ | ===== Precompiled Cores ===== | ||
+ | |||
+ | Here are some precompiled cores that should match various FBNeo hashes: | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | along with a video demonstration on how to use the DLL files: | ||
+ | |||
+ | {{fuss: | ||
+ | |||
+ | ====== Making Games with More than Two Players Work in Netplay (multitap) ====== | ||
+ | |||
+ | {{video: | ||
+ | |||
+ | For more than 2 players, the 2nd controller '' | ||
+ | * load a game with support for more than 2 players, | ||
+ | * open up the RetroArch menu with the game open (< | ||
+ | * navigate to '' | ||
+ | * set the '' | ||
+ | * go back one screen ('' | ||
+ | * select either '' | ||
+ | * go to the top-level menu and select '' | ||
+ | |||
+ | Now, when loading up the game again, a notification should mention that a remap file has been loaded (either core or game if the instructions above have been followed), netplay can be started in order to host a rooom and the game should allow more than 2 players to join. | ||
+ | |||
+ | ====== Enabling Player Hotswap ====== | ||
+ | |||
+ | Sometimes when playing in multiplayer, | ||
+ | |||
+ | '' | ||
+ | |||
+ | that will make the current player register/ | ||
+ | |||
+ | For example, to switch between player 1 and player 2, both player 1 and player 2 use the above toggle to switch into spectate mode, after which player 2 switches again and becomes player 1 and finally player 1 switches again to become player 2. To switch back, the same operation is carried out. |
For the contact, copyright, license, warranty and privacy terms for the usage of this website please see the contact, license, privacy, copyright.