mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-02-18 04:45:39 +00:00
merge master
This commit is contained in:
parent
dbf76f92e6
commit
af50921d4b
54
CHANGELOG.md
54
CHANGELOG.md
|
@ -10,18 +10,23 @@
|
|||
|
||||
### Detailed list of changes
|
||||
|
||||
* Added alternative emulators support where additional emulators can be defined in es_systems.xml and be selected system-wide or per game via the user interface
|
||||
* Added alternative emulators support where additional emulators can be defined in es_systems.xml and be selected
|
||||
system-wide or per game via the user interface
|
||||
* Added a virtual keyboard partly based on code from batocera-emulationstation
|
||||
* Added the ability to make complementary game system customizations without having to replace the entire bundled es_systems.xml file
|
||||
* Added the ability to make complementary game system customizations without having to replace the entire bundled
|
||||
es_systems.xml file
|
||||
* Added a menu option to change the application exit key combination
|
||||
* Expanded the themeable options for "helpsystem" to support custom button graphics, dimmed text and icon colors, upper/lower/camel case and custom spacing
|
||||
* Expanded the themeable options for "helpsystem" to support custom button graphics, dimmed text and icon colors,
|
||||
upper/lower/camel case and custom spacing
|
||||
* Added support for using the left and right trigger buttons in the help prompts
|
||||
* Removed the "Choose" entry from the help prompts in the gamelist view
|
||||
* Changed the "Toggle screensaver" help entry in the system view to simply "Screensaver"
|
||||
* Added support for upscaling bitmap images using linear filtering
|
||||
* Changed the marquee image upscale filtering from nearest neighbor to linear for the launch screen and the gamelist views
|
||||
* Changed the marquee image upscale filtering from nearest neighbor to linear for the launch screen and the gamelist
|
||||
views
|
||||
* Moved the Media Viewer and Screensaver settings higher in the UI Settings menu
|
||||
* Moved the game media directory setting to the top of the Other Settings menu, following the new Alternative Emulators entry
|
||||
* Moved the game media directory setting to the top of the Other Settings menu, following the new Alternative Emulators
|
||||
entry
|
||||
* Added a blinking cursor to TextEditComponent
|
||||
* Changed the filter description "Text filter (game name)" to "Game name"
|
||||
* Added support for a new type of "flat style" button to ButtonComponent
|
||||
|
@ -31,7 +36,8 @@
|
|||
* Replaced all built-in matrix and vector data types and functions with GLM library equivalents
|
||||
* Replaced some additional math functions and moved the remaining built-in functions to a math utility namespace
|
||||
* Added a function to generate MD5 hashes
|
||||
* Moved the "complex" mode functionality from GuiComplexTextEditPopup into GuiTextEditPopup and removed the source files for the former
|
||||
* Moved the "complex" mode functionality from GuiComplexTextEditPopup into GuiTextEditPopup and removed the source files
|
||||
for the former
|
||||
* Increased the warning level for Clang/LLVM and GCC by adding -Wall, -Wpedantic and some additional flags
|
||||
* Fixed a lot of compiler warnings introduced by the -Wall and -Wpedantic flags
|
||||
* Changed the language standard from C++14 to C++17
|
||||
|
@ -40,23 +46,35 @@
|
|||
|
||||
### Bug fixes
|
||||
|
||||
* When multi-scraping in interactive mode with "Auto-accept single game matches" enabled, the game name could not be refined if there were no games found
|
||||
* When multi-scraping in interactive mode, the game counter was not decreased when skipping games, making it impossible to skip the final games in the queue
|
||||
* When multi-scraping in interactive mode with "Auto-accept single game matches" enabled, the game name could not be
|
||||
refined if there were no games found
|
||||
* When multi-scraping in interactive mode, the game counter was not decreased when skipping games, making it impossible
|
||||
to skip the final games in the queue
|
||||
* When multi-scraping in interactive mode, "No games found" results could be accepted using the "A" button
|
||||
* When scraping in interactive mode, any refining done using the "Y" button shortcut would not be shown when doing another refine using the "Refine search" button
|
||||
* Input consisting of only whitespace characters would get accepted by TextEditComponent which led to various strange behaviors
|
||||
* Leading and trailing whitespace characters would not get trimmed from the collection name when creating a new custom collection
|
||||
* When scraping in interactive mode, any refining done using the "Y" button shortcut would not be shown when doing
|
||||
another refine using the "Refine search" button
|
||||
* Input consisting of only whitespace characters would get accepted by TextEditComponent which led to various strange
|
||||
behaviors
|
||||
* Leading and trailing whitespace characters would not get trimmed from the collection name when creating a new custom
|
||||
collection
|
||||
* Leading and trailing whitespace characters would get included in scraper search refines and TheGamesDB searches
|
||||
* Game name (text) filters were matching the system names for collection systems if the "Show system names in collections" setting was enabled
|
||||
* Brackets such as () and [] were filtered from game names in collection systems if the "Show system names in collections" setting was enabled
|
||||
* Game name (text) filters were matching the system names for collection systems if the "Show system names in
|
||||
collections" setting was enabled
|
||||
* Brackets such as () and [] were filtered from game names in collection systems if the "Show system names in
|
||||
collections" setting was enabled
|
||||
* When navigating menus, the separator lines and menu components did not align properly and moved up and down slightly
|
||||
* When scrolling in menus, pressing other buttons than "Up" or "Down" did not stop the scrolling which caused all sorts of weird behavior
|
||||
* With the menu scale-up effect enabled and entering a submenu before the parent menu was completely scaled up, the parent would get stuck at a semi-scaled size
|
||||
* Disabling a collection while its gamelist was displayed would lead to a slide transition from a black screen if a gamelist on startup had been set
|
||||
* When marking a game to not be counted in the metadata editor and the game was part of a custom collection, no collection disabling notification was displayed
|
||||
* When scrolling in menus, pressing other buttons than "Up" or "Down" did not stop the scrolling which caused all sorts
|
||||
of weird behavior
|
||||
* With the menu scale-up effect enabled and entering a submenu before the parent menu was completely scaled up, the
|
||||
parent would get stuck at a semi-scaled size
|
||||
* Disabling a collection while its gamelist was displayed would lead to a slide transition from a black screen if a
|
||||
gamelist on startup had been set
|
||||
* When marking a game to not be counted in the metadata editor and the game was part of a custom collection, no
|
||||
collection disabling notification was displayed
|
||||
* Horizontal sizing of the TextComponent input field was not consistent across different screen resolutions
|
||||
* The "sortname" window header was incorrectly spelled when editing this type of entry in the metadata editor
|
||||
* When the last row of a menu had its text color changed, this color was completely desaturated when navigating to a button below the list
|
||||
* When the last row of a menu had its text color changed, this color was completely desaturated when navigating to a
|
||||
button below the list
|
||||
|
||||
## Version 1.1.0
|
||||
|
||||
|
|
|
@ -60,7 +60,6 @@ https://rapidjson.org
|
|||
SDL \
|
||||
https://www.libsdl.org
|
||||
|
||||
|
||||
# Code
|
||||
|
||||
Some code (like the virtual keyboard) was borrowed from Batocera.linux \
|
||||
|
@ -72,7 +71,6 @@ https://www.bzflag.org
|
|||
A few of the GLSL shaders were borrowed from the RetroArch project \
|
||||
https://www.retroarch.com
|
||||
|
||||
|
||||
# Resources
|
||||
|
||||
Akrobat font \
|
||||
|
|
|
@ -125,7 +125,9 @@ pkg_add vlc
|
|||
|
||||
In the same manner as for FreeBSD, Clang/LLVM and cURL should already be installed by default.
|
||||
|
||||
RapidJSON is not part of the OpenBSD ports/package collection as of v6.8, so you need to compile it yourself. At the time of writing, the latest release v1.1.0 does not compile on OpenBSD, so you need to use the latest available code from the master branch:
|
||||
RapidJSON is not part of the OpenBSD ports/package collection as of v6.8, so you need to compile it yourself. At the
|
||||
time of writing, the latest release v1.1.0 does not compile on OpenBSD, so you need to use the latest available code
|
||||
from the master branch:
|
||||
|
||||
```
|
||||
git clone https://github.com/Tencent/rapidjson.git
|
||||
|
@ -865,6 +867,7 @@ nmake
|
|||
```
|
||||
|
||||
MinGW:
|
||||
|
||||
```
|
||||
cmake -G "MinGW Makefiles" -DBUILD_SHARED_LIBS=ON .
|
||||
make
|
||||
|
@ -874,14 +877,13 @@ make
|
|||
|
||||
For RapidJSON you don't need to compile anything, you just need the include files.
|
||||
|
||||
At the time of writing, the latest release v1.1.0 generates some compiler warnings on Windows, but this can be avoided by using the latest available code from the master branch:
|
||||
At the time of writing, the latest release v1.1.0 generates some compiler warnings on Windows, but this can be avoided
|
||||
by using the latest available code from the master branch:
|
||||
|
||||
```
|
||||
git clone git://github.com/Tencent/rapidjson.git
|
||||
```
|
||||
|
||||
|
||||
|
||||
**Clone the ES-DE repository:**
|
||||
|
||||
This works the same as on Unix or macOS, just run the following:
|
||||
|
@ -1396,24 +1398,44 @@ For the following options, the es_settings.xml file is immediately updated/saved
|
|||
--show-hidden-games
|
||||
```
|
||||
|
||||
|
||||
## es_systems.xml
|
||||
|
||||
The es_systems.xml file contains the game systems configuration data for ES-DE, written in XML format. This defines the system name, the full system name, the ROM path, the allowed file extensions, the launch command, the platform (for scraping) and the theme to use.
|
||||
The es_systems.xml file contains the game systems configuration data for ES-DE, written in XML format. This defines the
|
||||
system name, the full system name, the ROM path, the allowed file extensions, the launch command, the platform (for
|
||||
scraping) and the theme to use.
|
||||
|
||||
ES-DE ships with a comprehensive `es_systems.xml` file and most users will probably never need to make any customizations. But there may be special circumstances such as wanting to use different emulators for some game systems or perhaps to add additional systems altogether.
|
||||
ES-DE ships with a comprehensive `es_systems.xml` file and most users will probably never need to make any
|
||||
customizations. But there may be special circumstances such as wanting to use different emulators for some game systems
|
||||
or perhaps to add additional systems altogether.
|
||||
|
||||
To accomplish this, ES-DE supports customizations via a separate es_systems.xml file that is to be placed in the `custom_systems` folder in the application home directory, i.e. `~/.emulationstation/custom_systems/es_systems.xml`. (The tilde symbol `~` translates to `$HOME` on Unix and macOS, and to `%HOMEPATH%` on Windows unless overridden via the --home command line option.)
|
||||
To accomplish this, ES-DE supports customizations via a separate es_systems.xml file that is to be placed in
|
||||
the `custom_systems` folder in the application home directory, i.e. `~/.emulationstation/custom_systems/es_systems.xml`
|
||||
. (The tilde symbol `~` translates to `$HOME` on Unix and macOS, and to `%HOMEPATH%` on Windows unless overridden via
|
||||
the --home command line option.)
|
||||
|
||||
This custom file functionality is designed to be complementary to the bundled es_systems.xml file, meaning you should only add entries to the custom configuration file for game systems that you actually want to add or override. So to for example customize a single system, this file should only contain a single `<system>` tag. The structure of the custom file is identical to the bundled file with the exception of an additional optional tag named `<loadExclusive/>`. If this is placed in the custom es_systems.xml file, ES-DE will not load the bundled file. This is normally not recommended and should only be used for special situations. At the end of this section you can find an example of a custom es_systems.xml file.
|
||||
This custom file functionality is designed to be complementary to the bundled es_systems.xml file, meaning you should
|
||||
only add entries to the custom configuration file for game systems that you actually want to add or override. So to for
|
||||
example customize a single system, this file should only contain a single `<system>` tag. The structure of the custom
|
||||
file is identical to the bundled file with the exception of an additional optional tag named `<loadExclusive/>`. If this
|
||||
is placed in the custom es_systems.xml file, ES-DE will not load the bundled file. This is normally not recommended and
|
||||
should only be used for special situations. At the end of this section you can find an example of a custom
|
||||
es_systems.xml file.
|
||||
|
||||
The bundled es_systems.xml file is located in the resources directory that is part of the application installation. For example this could be `/usr/share/emulationstation/resources/systems/unix/es_systems.xml` on Unix, `/Applications/EmulationStation Desktop Edition.app/Contents/Resources/resources/systems/macos/es_systems.xml` on macOS or `C:\Program Files\EmulationStation-DE\resources\systems\windows\es_systems.xml` on Windows. The actual location may differ from these examples of course, depending on where ES-DE has been installed.
|
||||
The bundled es_systems.xml file is located in the resources directory that is part of the application installation. For
|
||||
example this could be `/usr/share/emulationstation/resources/systems/unix/es_systems.xml` on
|
||||
Unix, `/Applications/EmulationStation Desktop Edition.app/Contents/Resources/resources/systems/macos/es_systems.xml` on
|
||||
macOS or `C:\Program Files\EmulationStation-DE\resources\systems\windows\es_systems.xml` on Windows. The actual location
|
||||
may differ from these examples of course, depending on where ES-DE has been installed.
|
||||
|
||||
It doesn't matter in which order you define the systems as they will be sorted by the full system name inside the application, but it's still probably a good idea to add them in alphabetical order to make the file easier to maintain.
|
||||
It doesn't matter in which order you define the systems as they will be sorted by the full system name inside the
|
||||
application, but it's still probably a good idea to add them in alphabetical order to make the file easier to maintain.
|
||||
|
||||
Keep in mind that you have to set up your emulators separately from ES-DE as the es_systems.xml file assumes that your emulator environment is properly configured.
|
||||
Keep in mind that you have to set up your emulators separately from ES-DE as the es_systems.xml file assumes that your
|
||||
emulator environment is properly configured.
|
||||
|
||||
Below is an overview of the file layout with various examples. For the command tag, the newer es_find_rules.xml logic described later in this document removes the need for most of the legacy options, but they are still supported for special configurations and for backward compatibility with old configuration files.
|
||||
Below is an overview of the file layout with various examples. For the command tag, the newer es_find_rules.xml logic
|
||||
described later in this document removes the need for most of the legacy options, but they are still supported for
|
||||
special configurations and for backward compatibility with old configuration files.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0"?>
|
||||
|
@ -1568,7 +1590,9 @@ And finally one for Windows:
|
|||
</system>
|
||||
```
|
||||
|
||||
As well, here's an example for Unix of a custom es_systems.xml file placed in ~/.emulationstation/custom_systems/ that overrides a single game system from the bundled configuration file:
|
||||
As well, here's an example for Unix of a custom es_systems.xml file placed in ~/.emulationstation/custom_systems/ that
|
||||
overrides a single game system from the bundled configuration file:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0"?>
|
||||
<!-- This is a custom ES-DE game systems configuration file for Unix -->
|
||||
|
@ -1585,7 +1609,8 @@ As well, here's an example for Unix of a custom es_systems.xml file placed in ~/
|
|||
</systemList>
|
||||
```
|
||||
|
||||
If adding the `<loadExclusive/>` tag to the file, the bundled es_systems.xml file will not be processed. For this example it wouldn't be a very good idea as NES would then be the only platform that could be used in ES-DE.
|
||||
If adding the `<loadExclusive/>` tag to the file, the bundled es_systems.xml file will not be processed. For this
|
||||
example it wouldn't be a very good idea as NES would then be the only platform that could be used in ES-DE.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0"?>
|
||||
|
@ -1608,9 +1633,11 @@ If adding the `<loadExclusive/>` tag to the file, the bundled es_systems.xml fil
|
|||
|
||||
This file makes it possible to define rules for where to search for the emulator binaries and emulator cores.
|
||||
|
||||
The file is located in the resources directory in the same location as the es_systems.xml file, but a customized copy can be placed in ~/.emulationstation/custom_systems, which will override the bundled file.
|
||||
The file is located in the resources directory in the same location as the es_systems.xml file, but a customized copy
|
||||
can be placed in ~/.emulationstation/custom_systems, which will override the bundled file.
|
||||
|
||||
Here's an example es_find_rules.xml file for Unix:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0"?>
|
||||
<!-- This is the ES-DE find rules configuration file for Unix -->
|
||||
|
|
259
USERGUIDE-DEV.md
259
USERGUIDE-DEV.md
|
@ -73,17 +73,37 @@ There's not really much to say about these operating systems, just install ES-DE
|
|||
|
||||
Upon first startup, ES-DE will create its `~/.emulationstation` home directory.
|
||||
|
||||
On Unix this means /home/\<username\>/.emulationstation/, on macOS /Users/\<username\>/.emulationstation/ and on Windows C:\Users\\<username\>\\.emulationstation\
|
||||
On Unix this means /home/\<username\>/.emulationstation/, on macOS /Users/\<username\>/.emulationstation/ and on Windows
|
||||
C:\Users\\<username\>\\.emulationstation\
|
||||
|
||||
**Note:** As of ES-DE v1.1 there is no internationalization support, which means that the application will always require the physical rather than the localized path to your home directory. For instance on macOS configured for the Swedish language /Users/myusername will be the physical path but /Användare/myusername is the localized path that is actually shown in the user interface. The same is true on Windows where the directories would be C:\Users\myusername and C:\Användare\myusername respectively. If attempting to enter the localized path for any directory-related setting, ES-DE will not be able to find it. But it's always possible to use the tilde `~` symbol when referring to your home directory, which ES-DE will expand to the physical location regardless of what language you have configured for your operating system. If you're using an English-localized system, this whole point is irrelevant as the physical and localized paths are then identical.
|
||||
**Note:** As of ES-DE v1.1 there is no internationalization support, which means that the application will always
|
||||
require the physical rather than the localized path to your home directory. For instance on macOS configured for the
|
||||
Swedish language /Users/myusername will be the physical path but /Användare/myusername is the localized path that is
|
||||
actually shown in the user interface. The same is true on Windows where the directories would be C:\Users\myusername and
|
||||
C:\Användare\myusername respectively. If attempting to enter the localized path for any directory-related setting, ES-DE
|
||||
will not be able to find it. But it's always possible to use the tilde `~` symbol when referring to your home directory,
|
||||
which ES-DE will expand to the physical location regardless of what language you have configured for your operating
|
||||
system. If you're using an English-localized system, this whole point is irrelevant as the physical and localized paths
|
||||
are then identical.
|
||||
|
||||
It's possible to override the home directory path using the --home command line option, but this is normally required only for very special situations so we can safely ignore that option for now.
|
||||
It's possible to override the home directory path using the --home command line option, but this is normally required
|
||||
only for very special situations so we can safely ignore that option for now.
|
||||
|
||||
Also on first startup the configuration file `es_settings.xml` will be generated in the ES-DE home directory, containing all the application settings at their default values. Following this, a file named `es_systems.xml` will be loaded from the resources directory (which is part of the ES-DE installation). This file contains the game system definitions including which emulator to use per platform. For some systems there are also alternative emulators defined which can be applied system-wide or per game. How that works is explained later in this guide. A customized systems configuration file can also be used, as described in the next section.
|
||||
Also on first startup the configuration file `es_settings.xml` will be generated in the ES-DE home directory, containing
|
||||
all the application settings at their default values. Following this, a file named `es_systems.xml` will be loaded from
|
||||
the resources directory (which is part of the ES-DE installation). This file contains the game system definitions
|
||||
including which emulator to use per platform. For some systems there are also alternative emulators defined which can be
|
||||
applied system-wide or per game. How that works is explained later in this guide. A customized systems configuration
|
||||
file can also be used, as described in the next section.
|
||||
|
||||
There's an application log file created in the ES-DE home directory named `es_log.txt`, please refer to this in case of any issues as it should hopefully provide information on what went wrong. Starting ES-DE with the --debug flag provides even more detailed information.
|
||||
There's an application log file created in the ES-DE home directory named `es_log.txt`, please refer to this in case of
|
||||
any issues as it should hopefully provide information on what went wrong. Starting ES-DE with the --debug flag provides
|
||||
even more detailed information.
|
||||
|
||||
After ES-DE finds at least one game file, it will populate that game system and the application will start. If there are no game files, a dialog will be shown explaining that you need to install your game files into your ROMs directory. You will also be given a choice to change that ROMs directory path if you don't want to use the default one. As well you have the option to generate the complete game systems directory structure based on information in es_systems.xml.
|
||||
After ES-DE finds at least one game file, it will populate that game system and the application will start. If there are
|
||||
no game files, a dialog will be shown explaining that you need to install your game files into your ROMs directory. You
|
||||
will also be given a choice to change that ROMs directory path if you don't want to use the default one. As well you
|
||||
have the option to generate the complete game systems directory structure based on information in es_systems.xml.
|
||||
|
||||
When generating the directory structure, a file named systeminfo.txt will be created in each game system folder which will provide you with some information about the system. Here's an example for the _gc_ system as seen on macOS:
|
||||
```
|
||||
|
@ -106,9 +126,11 @@ Theme folder:
|
|||
gc
|
||||
```
|
||||
|
||||
The primary use of this file is to see which RetroArch core the system needs, which you will have to install manually from inside the RetroArch user interface. Also the supported file extensions can be quite useful to know.
|
||||
The primary use of this file is to see which RetroArch core the system needs, which you will have to install manually
|
||||
from inside the RetroArch user interface. Also the supported file extensions can be quite useful to know.
|
||||
|
||||
In addition to this, a file named systems.txt will be created in the root of the ROMs directory which shows the mapping between the directory names and the full system names.
|
||||
In addition to this, a file named systems.txt will be created in the root of the ROMs directory which shows the mapping
|
||||
between the directory names and the full system names.
|
||||
|
||||
For example:
|
||||
|
||||
|
@ -118,32 +140,59 @@ genesis: Sega Genesis
|
|||
gx4000: Amstrad GX4000
|
||||
```
|
||||
|
||||
If a custom es_systems.xml file is present in ~/.emulationstation/custom_systems/ any entries from this file will have their names trailed by the text _(custom system)_. So if the GameCube system in the example above would be present in the custom systems configuration file, the system would be shown as `gc (custom system)` instead of simply `gc`. This is only applicable for the systems.txt and systeminfo.txt files, the trailing text is not applied or used anywhere else in the application.
|
||||
If a custom es_systems.xml file is present in ~/.emulationstation/custom_systems/ any entries from this file will have
|
||||
their names trailed by the text _(custom system)_. So if the GameCube system in the example above would be present in
|
||||
the custom systems configuration file, the system would be shown as `gc (custom system)` instead of simply `gc`. This is
|
||||
only applicable for the systems.txt and systeminfo.txt files, the trailing text is not applied or used anywhere else in
|
||||
the application.
|
||||
|
||||
Note that neither the systeminfo.txt files or the systems.txt file are needed to run ES-DE, they're only generated as a convenience to help with the setup.
|
||||
Note that neither the systeminfo.txt files or the systems.txt file are needed to run ES-DE, they're only generated as a
|
||||
convenience to help with the setup.
|
||||
|
||||
There will be a lot of directories created if using the es_systems.xml file bundled with the installation, so it may be a good idea to remove the ones you don't need. It's recommended to move them to another location to be able to use them later if more systems should be added. For example a directory named _DISABLED could be created inside the ROMs folder (i.e. ~/ROMs/_DISABLED) and all game system directories you don't need could be moved there. Doing this reduces the application startup time as ES-DE would otherwise need to scan for game files for all these systems.
|
||||
There will be a lot of directories created if using the es_systems.xml file bundled with the installation, so it may be
|
||||
a good idea to remove the ones you don't need. It's recommended to move them to another location to be able to use them
|
||||
later if more systems should be added. For example a directory named _DISABLED could be created inside the ROMs folder (
|
||||
i.e. ~/ROMs/_DISABLED) and all game system directories you don't need could be moved there. Doing this reduces the
|
||||
application startup time as ES-DE would otherwise need to scan for game files for all these systems.
|
||||
|
||||
![alt text](images/es-de_ui_easy_setup.png "ES-DE Easy Setup")
|
||||
_This is the dialog shown if no game files were found. It lets you configure the ROM directory if you don't want to use the default one, and you can also generate the game systems directory structure. Note that the directory is the physical path, and that your operating system may present this as a localized path if you are using a language other than English._
|
||||
|
||||
_This is the dialog shown if no game files were found. It lets you configure the ROM directory if you don't want to use
|
||||
the default one, and you can also generate the game systems directory structure. Note that the directory is the physical
|
||||
path, and that your operating system may present this as a localized path if you are using a language other than
|
||||
English._
|
||||
|
||||
## Game system customizations
|
||||
|
||||
The game systems configuration file `es_systems.xml` is located in the ES-DE resources directory which is part of the application installation. As such this file is not intended to be modified directly. If system customizations are required, a separate es_systems.xml file should instead be placed in the `custom_systems` folder in the ES-DE home directory, i.e. `~/.emulationstation/custom_systems/es_systems.xml`.
|
||||
The game systems configuration file `es_systems.xml` is located in the ES-DE resources directory which is part of the
|
||||
application installation. As such this file is not intended to be modified directly. If system customizations are
|
||||
required, a separate es_systems.xml file should instead be placed in the `custom_systems` folder in the ES-DE home
|
||||
directory, i.e. `~/.emulationstation/custom_systems/es_systems.xml`.
|
||||
|
||||
Although it's possible to make a copy of the bundled configuration file, to modify it and then place it in this directory, that is not how the system customization is designed to be done. Instead the intention is that the file in the custom_systems directory complements the bundled configuration, meaning only systems that are to be modified should be included.
|
||||
Although it's possible to make a copy of the bundled configuration file, to modify it and then place it in this
|
||||
directory, that is not how the system customization is designed to be done. Instead the intention is that the file in
|
||||
the custom_systems directory complements the bundled configuration, meaning only systems that are to be modified should
|
||||
be included.
|
||||
|
||||
For example you may want to replace the emulator launch command, modify the full name or change the supported file extensions for a single system. In this case it wouldn't make sense to copy the complete bundled file and just apply these minor modifications, instead an es_systems.xml file only containing the configuration for that single system should be placed in the custom_systems directory.
|
||||
|
||||
The instructions for how to customize the es_systems.xml file can be found in [INSTALL-DEV.md](INSTALL-DEV.md#es_systemsxml). There you can also find an example of a custom file that you can copy into ~/.emulationstation/custom_systems/ and modify as required.
|
||||
For example you may want to replace the emulator launch command, modify the full name or change the supported file
|
||||
extensions for a single system. In this case it wouldn't make sense to copy the complete bundled file and just apply
|
||||
these minor modifications, instead an es_systems.xml file only containing the configuration for that single system
|
||||
should be placed in the custom_systems directory.
|
||||
|
||||
The instructions for how to customize the es_systems.xml file can be found
|
||||
in [INSTALL-DEV.md](INSTALL-DEV.md#es_systemsxml). There you can also find an example of a custom file that you can copy
|
||||
into ~/.emulationstation/custom_systems/ and modify as required.
|
||||
|
||||
## Migrating from other EmulationStation forks
|
||||
|
||||
**IMPORTANT!!! IMPORTANT!!! IMPORTANT!!!**
|
||||
|
||||
ES-DE is designed to be backward compatible to a certain degree, that is, it should be able to read data from other/previous EmulationStation versions such as the RetroPie fork. But the opposite is not true and it's a one-way ticket for your gamelist.xml files and your custom collection files when migrating to ES-DE as they will be modified in ways that previous ES versions will see as data loss. For instance ES-DE does not use image tags inside the gamelist.xml files to find game media but instead matches the media to the names of the game/ROM files. So it will not save any such tags back to the gamelist files during updates, effectively removing the display of the game media if the files are opened in another ES fork.
|
||||
ES-DE is designed to be backward compatible to a certain degree, that is, it should be able to read data from
|
||||
other/previous EmulationStation versions such as the RetroPie fork. But the opposite is not true and it's a one-way
|
||||
ticket for your gamelist.xml files and your custom collection files when migrating to ES-DE as they will be modified in
|
||||
ways that previous ES versions will see as data loss. For instance ES-DE does not use image tags inside the gamelist.xml
|
||||
files to find game media but instead matches the media to the names of the game/ROM files. So it will not save any such
|
||||
tags back to the gamelist files during updates, effectively removing the display of the game media if the files are
|
||||
opened in another ES fork.
|
||||
|
||||
Due to this, always make backups of at least the following directories before testing ES-DE for the first time:
|
||||
|
||||
|
@ -377,7 +426,8 @@ The platform name for the Commodore 64 is `c64`, so the following structure woul
|
|||
~/ROMs/c64/Multidisk/Pirates/Pirates!.m3u
|
||||
```
|
||||
|
||||
It's highly recommended to create `.m3u` playlist files for multi-disc images as this normally automates disk swapping in the emulator. It's then this .m3u file that should be selected for launching the game.
|
||||
It's highly recommended to create `.m3u` playlist files for multi-disc images as this normally automates disk swapping
|
||||
in the emulator. It's then this .m3u file that should be selected for launching the game.
|
||||
|
||||
The .m3u file simply contains a list of the game files, for example in the case of Last Ninja 2.m3u:
|
||||
|
||||
|
@ -430,9 +480,13 @@ Apart from the potential difficulty in locating the emulator binary, there are s
|
|||
|
||||
#### Commodore Amiga
|
||||
|
||||
There are multiple ways to run Amiga games, but the recommended approach is to use WHDLoad. The best way is to use hard disk images in `.hdf` or `.hdz` format, meaning there will be a single file per game. This makes it just as easy to play Amiga games as any console with game ROMs.
|
||||
There are multiple ways to run Amiga games, but the recommended approach is to use WHDLoad. The best way is to use hard
|
||||
disk images in `.hdf` or `.hdz` format, meaning there will be a single file per game. This makes it just as easy to play
|
||||
Amiga games as any console with game ROMs.
|
||||
|
||||
An alternative would be to use `.adf` images as not all games may be available with WHDLoad support. For this, you can either put single-disc images in the root folder or in a dedicated adf directory, or multiple-disk games in separate folders. It's highly recommended to create `.m3u` playlist files for multi-disc images as described earlier.
|
||||
An alternative would be to use `.adf` images as not all games may be available with WHDLoad support. For this, you can
|
||||
either put single-disc images in the root folder or in a dedicated adf directory, or multiple-disk games in separate
|
||||
folders. It's highly recommended to create `.m3u` playlist files for multi-disc images as described earlier.
|
||||
|
||||
Here's an example of what the file structure could look like:
|
||||
|
||||
|
@ -872,7 +926,8 @@ If this setting is enabled and a folder has its flag set to be excluded from the
|
|||
|
||||
**Scrape actual folders** _(Multi-scraper only)_
|
||||
|
||||
Enabling this option causes folders themselves to be included by the scraper. This is useful for DOS games or any multi-disc games where there is a folder for each individual game.
|
||||
Enabling this option causes folders themselves to be included by the scraper. This is useful for DOS games or any
|
||||
multi-disc games where there is a folder for each individual game.
|
||||
|
||||
**Auto-retry on peer verification errors** _(ScreenScraper only)_
|
||||
|
||||
|
@ -944,27 +999,50 @@ Whether to sort your favorite games above your other games in the gamelists.
|
|||
|
||||
**Add star markings to favorite games**
|
||||
|
||||
With this setting enabled, there is a star symbol added at the beginning of the game name in the gamelist views. It's strongly recommended to keep this setting enabled if the option to sort favorite games above non-favorites has been enabled. If not, favorite games would be sorted on top of the gamelist with no visual indication that they are favorites, which would be quite confusing.
|
||||
With this setting enabled, there is a star symbol added at the beginning of the game name in the gamelist views. It's
|
||||
strongly recommended to keep this setting enabled if the option to sort favorite games above non-favorites has been
|
||||
enabled. If not, favorite games would be sorted on top of the gamelist with no visual indication that they are
|
||||
favorites, which would be quite confusing.
|
||||
|
||||
**Use plain ASCII for special gamelist characters**
|
||||
|
||||
There are some special characters in ES-DE such as the favorites star, the folder icon and the tickmark (seen when editing custom collections) that are displayed using symbols from the bundled Font Awesome. This normally looks perfectly fine, but on some specific theme sets with very pixelated fonts such as [es-themes-snes-mini](https://github.com/ruckage/es-theme-snes-mini) and [es-themes-workbench](https://github.com/ehettervik/es-theme-workbench) these symbols look terrible. For such themes, this option is available, which will use plain ASCII characters instead of the Font Awesome symbols. For the favorites an asterisk `*` will be used, for folders a hash sign `#` will be used and for the tickmark an exclamation mark `!` will be used. This only applies to the gamelist view, in all other places in the application the Font Awesome symbols are retained. Make sure to disable this option if not using such a pixelated theme as it looks equally terrible to enable this option on themes where it's not supposed to be used.
|
||||
There are some special characters in ES-DE such as the favorites star, the folder icon and the tickmark (seen when
|
||||
editing custom collections) that are displayed using symbols from the bundled Font Awesome. This normally looks
|
||||
perfectly fine, but on some specific theme sets with very pixelated fonts such
|
||||
as [es-themes-snes-mini](https://github.com/ruckage/es-theme-snes-mini)
|
||||
and [es-themes-workbench](https://github.com/ehettervik/es-theme-workbench) these symbols look terrible. For such
|
||||
themes, this option is available, which will use plain ASCII characters instead of the Font Awesome symbols. For the
|
||||
favorites an asterisk `*` will be used, for folders a hash sign `#` will be used and for the tickmark an exclamation
|
||||
mark `!` will be used. This only applies to the gamelist view, in all other places in the application the Font Awesome
|
||||
symbols are retained. Make sure to disable this option if not using such a pixelated theme as it looks equally terrible
|
||||
to enable this option on themes where it's not supposed to be used.
|
||||
|
||||
**Enable quick list scrolling overlay**
|
||||
|
||||
With this option enabled, there will be an overlay displayed when scrolling the gamelists quickly, i.e. when holding down the _Up_, _Down_, _Left shoulder_ or _Right shoulder_ buttons for some time. The overlay will darken the background slightly and display the first two characters of the game names. If the game is a favorite and the setting to sort favorites above non-favorites has been enabled, a star will be shown instead.
|
||||
With this option enabled, there will be an overlay displayed when scrolling the gamelists quickly, i.e. when holding
|
||||
down the _Up_, _Down_, _Left shoulder_ or _Right shoulder_ buttons for some time. The overlay will darken the background
|
||||
slightly and display the first two characters of the game names. If the game is a favorite and the setting to sort
|
||||
favorites above non-favorites has been enabled, a star will be shown instead.
|
||||
|
||||
**Enable virtual keyboard**
|
||||
|
||||
This enables a virtual (on-screen) keyboard that can be used at various places throughout the application to input text and numbers using a controller. The Shift and Alt keys can be toggled individually or combined together to access many special characters. The general use of the virtual keyboard should hopefully be self-explanatory.
|
||||
This enables a virtual (on-screen) keyboard that can be used at various places throughout the application to input text
|
||||
and numbers using a controller. The Shift and Alt keys can be toggled individually or combined together to access many
|
||||
special characters. The general use of the virtual keyboard should hopefully be self-explanatory.
|
||||
|
||||
**Enable toggle favorites button**
|
||||
|
||||
This setting enables the _Y_ button for quickly toggling a game as favorite. Although this may be convenient at times, it's also quite easy to accidentally remove a favorite tagging of a game when using the application more casually. As such it could sometimes make sense to disable this functionality. It's of course still possible to mark a game as favorite using the metadata editor when this setting is disabled. The option does not affect the use of the _Y_ button to add or remove games when editing custom collections.
|
||||
This setting enables the _Y_ button for quickly toggling a game as favorite. Although this may be convenient at times,
|
||||
it's also quite easy to accidentally remove a favorite tagging of a game when using the application more casually. As
|
||||
such it could sometimes make sense to disable this functionality. It's of course still possible to mark a game as
|
||||
favorite using the metadata editor when this setting is disabled. The option does not affect the use of the _Y_ button
|
||||
to add or remove games when editing custom collections.
|
||||
|
||||
**Enable random system or game button**
|
||||
|
||||
This enables or disables the ability to jump to a random system or game. It's mapped to the thumbstick click button, either the left or right thumbstick will work. The help prompts will also visually indicate whether this option is enabled or not.
|
||||
This enables or disables the ability to jump to a random system or game. It's mapped to the thumbstick click button,
|
||||
either the left or right thumbstick will work. The help prompts will also visually indicate whether this option is
|
||||
enabled or not.
|
||||
|
||||
**Enable gamelist filters**
|
||||
|
||||
|
@ -1242,7 +1320,11 @@ If this option is disabled, hidden files and folders within the ROMs directory t
|
|||
|
||||
**Show hidden games (requires restart)**
|
||||
|
||||
You can mark games as hidden in the metadata editor, which is useful for instance for DOS games where you may not want to see some batch files and executables inside ES-DE, or for multi-disc games where you may only want to show the .m3u playlists and not the individual game files. By disabling this option these files will not be processed at all when ES-DE starts up. If you enable the option you will see the files, but their name entries will be almost transparent in the gamelist view to visually indicate that they are hidden.
|
||||
You can mark games as hidden in the metadata editor, which is useful for instance for DOS games where you may not want
|
||||
to see some batch files and executables inside ES-DE, or for multi-disc games where you may only want to show the .m3u
|
||||
playlists and not the individual game files. By disabling this option these files will not be processed at all when
|
||||
ES-DE starts up. If you enable the option you will see the files, but their name entries will be almost transparent in
|
||||
the gamelist view to visually indicate that they are hidden.
|
||||
|
||||
**Enable custom event scripts**
|
||||
|
||||
|
@ -1350,9 +1432,14 @@ The following filters can be applied:
|
|||
|
||||
**Hidden**
|
||||
|
||||
With the exception of the game name text filter, all available filter values are assembled from metadata from the actual gamelist, so if there for instance are no games marked as completed, the Completed filter will only have the selectable option False, i.e. True will be missing.
|
||||
With the exception of the game name text filter, all available filter values are assembled from metadata from the actual
|
||||
gamelist, so if there for instance are no games marked as completed, the Completed filter will only have the selectable
|
||||
option False, i.e. True will be missing.
|
||||
|
||||
Be aware that although folders can have most of the metadata values set, the filters are only applied to files (this is also true for the game name text filter). So if you for example set a filter to only display your favorite games, any folder that contains a favorite game will be displayed, and other folders which are themselves marked as favorites but that do not contain any favorite games will be hidden.
|
||||
Be aware that although folders can have most of the metadata values set, the filters are only applied to files (this is
|
||||
also true for the game name text filter). So if you for example set a filter to only display your favorite games, any
|
||||
folder that contains a favorite game will be displayed, and other folders which are themselves marked as favorites but
|
||||
that do not contain any favorite games will be hidden.
|
||||
|
||||
The filters are always applied for the complete game system, including all folder content.
|
||||
|
||||
|
@ -1430,7 +1517,11 @@ A flag to mark whether the game is suitable for children. This will be applied a
|
|||
|
||||
**Hidden**
|
||||
|
||||
A flag to indicate that the game is hidden. If the corresponding option has been set in the main menu, the game will not be shown. Useful for example for DOS games to hide batch scripts and unnecessary binaries or to hide the actual game files for multi-disc games. If a file or folder is flagged as hidden but the corresponding option to hide hidden games has not been enabled, then the opacity of the text will be lowered significantly to make it clear that it's a hidden entry.
|
||||
A flag to indicate that the game is hidden. If the corresponding option has been set in the main menu, the game will not
|
||||
be shown. Useful for example for DOS games to hide batch scripts and unnecessary binaries or to hide the actual game
|
||||
files for multi-disc games. If a file or folder is flagged as hidden but the corresponding option to hide hidden games
|
||||
has not been enabled, then the opacity of the text will be lowered significantly to make it clear that it's a hidden
|
||||
entry.
|
||||
|
||||
**Broken/not working**
|
||||
|
||||
|
@ -1438,15 +1529,27 @@ A flag to indicate whether the game is broken. Useful for MAME games for instanc
|
|||
|
||||
**Exclude from game counter** _(files only)_
|
||||
|
||||
A flag to indicate whether the game should be excluded from being counted. If this is set for a game, it will not be included in the game counter shown per system on the system view, and it will not be included in the system information field in the gamelist view. As well, it will be excluded from all automatic and custom collections. This option is quite useful for multi-file games such as multi-disc Amiga or Commodore 64 games, or for DOS games where you want to exclude setup programs and similar but still need them available in ES-DE and therefore can't hide them. Files that have this flag set will have a lower opacity in the gamelists, making them easy to spot.
|
||||
A flag to indicate whether the game should be excluded from being counted. If this is set for a game, it will not be
|
||||
included in the game counter shown per system on the system view, and it will not be included in the system information
|
||||
field in the gamelist view. As well, it will be excluded from all automatic and custom collections. This option is quite
|
||||
useful for multi-file games such as multi-disc Amiga or Commodore 64 games, or for DOS games where you want to exclude
|
||||
setup programs and similar but still need them available in ES-DE and therefore can't hide them. Files that have this
|
||||
flag set will have a lower opacity in the gamelists, making them easy to spot.
|
||||
|
||||
**Exclude from multi-scraper**
|
||||
|
||||
Whether to exclude the file from the multi-scraper. This is quite useful in order to avoid scraping all the disks for multi-disc games for example. There is an option in the scraper settings to ignore this flag, but by default the multi-scraper will respect it.
|
||||
Whether to exclude the file from the multi-scraper. This is quite useful in order to avoid scraping all the disks for
|
||||
multi-disc games for example. There is an option in the scraper settings to ignore this flag, but by default the
|
||||
multi-scraper will respect it.
|
||||
|
||||
**Hide metadata fields**
|
||||
|
||||
This option will hide most metadata fields in the gamelist view. The intention is to be able to hide the fields for situations such as general folders (Multi-disc, Cartridges etc.) and for setup programs and similar (e.g. SETUP.EXE or INSTALL.BAT for DOS games). It could also be used on the game files for multi-disc games where perhaps only the .m3u playlist should have any metadata values. The only fields shown with this option enabled are the game name and description. Using the description it's possible to write some comments regarding the file or folder, should you want to. It's also possible to display game images and videos with this setting enabled.
|
||||
This option will hide most metadata fields in the gamelist view. The intention is to be able to hide the fields for
|
||||
situations such as general folders (Multi-disc, Cartridges etc.) and for setup programs and similar (e.g. SETUP.EXE or
|
||||
INSTALL.BAT for DOS games). It could also be used on the game files for multi-disc games where perhaps only the .m3u
|
||||
playlist should have any metadata values. The only fields shown with this option enabled are the game name and
|
||||
description. Using the description it's possible to write some comments regarding the file or folder, should you want
|
||||
to. It's also possible to display game images and videos with this setting enabled.
|
||||
|
||||
**Times played** _(files only)_
|
||||
|
||||
|
@ -1632,35 +1735,82 @@ Refer to the [INSTALL-DEV.md](INSTALL-DEV.md#command-line-options) document for
|
|||
|
||||
## Supported game systems
|
||||
|
||||
**Note:** The following list is what the default es_systems.xml files and the rbsimple-DE theme supports. This theme set is very comprehensive, so if you're using another theme, it may be that some or many of these systems are not supported. ES-DE will still work but the game system will unthemed which looks very ugly.
|
||||
**Note:** The following list is what the default es_systems.xml files and the rbsimple-DE theme supports. This theme set
|
||||
is very comprehensive, so if you're using another theme, it may be that some or many of these systems are not supported.
|
||||
ES-DE will still work but the game system will unthemed which looks very ugly.
|
||||
|
||||
Note as well that the list and corresponding es_systems.xml templates may not reflect what is readily available for all supported operating system. This is especially true on Unix/Linux if installing RetroArch via the OS repository instead of using the Snap or Flatpak distributions (or compiling from source code) as the repository versions are normally quite crippled.
|
||||
Note as well that the list and corresponding es_systems.xml templates may not reflect what is readily available for all
|
||||
supported operating system. This is especially true on Unix/Linux if installing RetroArch via the OS repository instead
|
||||
of using the Snap or Flatpak distributions (or compiling from source code) as the repository versions are normally quite
|
||||
crippled.
|
||||
|
||||
The column **System name** corresponds to the directory where you should put your game files, e.g. `~/ROMs/c64` or `~/ROMs/megadrive`.
|
||||
The column **System name** corresponds to the directory where you should put your game files, e.g. `~/ROMs/c64`
|
||||
or `~/ROMs/megadrive`.
|
||||
|
||||
Regional differences are handled by simply using the game system name corresponding to your region. For example for Sega Mega Drive, _megadrive_ would be used by most people in the world, although persons from North America would use _genesis_ instead. The same is true for _pcengine_ vs _tg16_ etc. This only affects the theme selection and the corresponding theme graphics, the same emulator and scraper settings are still used for the regional variants although that can of course be customized in the es_systems.xml file if you wish.
|
||||
Regional differences are handled by simply using the game system name corresponding to your region. For example for Sega
|
||||
Mega Drive, _megadrive_ would be used by most people in the world, although persons from North America would use _
|
||||
genesis_ instead. The same is true for _pcengine_ vs _tg16_ etc. This only affects the theme selection and the
|
||||
corresponding theme graphics, the same emulator and scraper settings are still used for the regional variants although
|
||||
that can of course be customized in the es_systems.xml file if you wish.
|
||||
|
||||
Sometimes the name of the console is (more or less) the same for multiple regions, and in those cases the region has been added as a suffix to the game system name. For instance `na` for North America has been added to `snes` (Super Nintendo) giving the system name `snesna`. The same goes for Japan, as in `megacd` and `megacdjp`. Again, this only affects the theme and theme graphics.
|
||||
Sometimes the name of the console is (more or less) the same for multiple regions, and in those cases the region has
|
||||
been added as a suffix to the game system name. For instance `na` for North America has been added to `snes` (Super
|
||||
Nintendo) giving the system name `snesna`. The same goes for Japan, as in `megacd` and `megacdjp`. Again, this only
|
||||
affects the theme and theme graphics.
|
||||
|
||||
For the **Full name** column, text inside square brackets [] are comments and not part of the actual system name.
|
||||
|
||||
The **Default emulator** column lists the primary emulator as configured in es_systems.xml. If this differs between Unix, macOS and Windows then it's specified in square brackets, such as [UW] for Unix and Windows and [M] for macOS. If not all of the three platforms are specified it means that the system is not available on the missing platforms. For example Lutris which is only avaialable on Unix is marked with only a _[U]_. Unless explicitly marked as **(Standalone)**, each emulator is a RetroArch core.
|
||||
The **Default emulator** column lists the primary emulator as configured in es_systems.xml. If this differs between
|
||||
Unix, macOS and Windows then it's specified in square brackets, such as [UW] for Unix and Windows and [M] for macOS. If
|
||||
not all of the three platforms are specified it means that the system is not available on the missing platforms. For
|
||||
example Lutris which is only avaialable on Unix is marked with only a _[U]_. Unless explicitly marked as **(
|
||||
Standalone)**, each emulator is a RetroArch core.
|
||||
|
||||
The **Alternative emulators** column lists additional emulators configured in es_systems.xml that can be selected per system and per game, as explained earlier in this guide. This does not necessarily include everything in existence, as for some platforms there are a lot of emulators to choose from. In those cases the included emulators is a curated selection. In the same manner as the _Default emulator_ column, differences between Unix, macOS and Windows are marked using square brackets. Unless explicitly marked as **(Standalone)**, echo emulator is a RetroArch core.
|
||||
The **Alternative emulators** column lists additional emulators configured in es_systems.xml that can be selected per
|
||||
system and per game, as explained earlier in this guide. This does not necessarily include everything in existence, as
|
||||
for some platforms there are a lot of emulators to choose from. In those cases the included emulators is a curated
|
||||
selection. In the same manner as the _Default emulator_ column, differences between Unix, macOS and Windows are marked
|
||||
using square brackets. Unless explicitly marked as **(Standalone)**, echo emulator is a RetroArch core.
|
||||
|
||||
The **Needs BIOS** column indicates if additional BIOS/system ROMs are required, as should be explained by the emulator documentation. Good starting points for such documentation are [https://docs.libretro.com](https://docs.libretro.com) and [https://docs.libretro.com/library/bios](https://docs.libretro.com/library/bios)
|
||||
The **Needs BIOS** column indicates if additional BIOS/system ROMs are required, as should be explained by the emulator
|
||||
documentation. Good starting points for such documentation are [https://docs.libretro.com](https://docs.libretro.com)
|
||||
and [https://docs.libretro.com/library/bios](https://docs.libretro.com/library/bios)
|
||||
|
||||
For additional details regarding which game file extensions are supported per system, refer to the es_systems.xml files [unix/es_systems.xml](resources/systems/unix/es_systems.xml), [macos/es_systems.xml](resources/systems/macos/es_systems.xml) and [windows/es_systems.xml](resources/systems/windows/es_systems.xml). Normally the extensions setup in these files should cover everything that the emulators support. Note that for systems that have alternative emulators defined, the list of extensions is a combination of what is supported by all the emulators. This approach is necessary as you want to be able to see all games for each system while potentially testing and switching between different emulators, either system-wide or on a per game basis.
|
||||
For additional details regarding which game file extensions are supported per system, refer to the es_systems.xml
|
||||
files [unix/es_systems.xml](resources/systems/unix/es_systems.xml)
|
||||
, [macos/es_systems.xml](resources/systems/macos/es_systems.xml)
|
||||
and [windows/es_systems.xml](resources/systems/windows/es_systems.xml). Normally the extensions setup in these files
|
||||
should cover everything that the emulators support. Note that for systems that have alternative emulators defined, the
|
||||
list of extensions is a combination of what is supported by all the emulators. This approach is necessary as you want to
|
||||
be able to see all games for each system while potentially testing and switching between different emulators, either
|
||||
system-wide or on a per game basis.
|
||||
|
||||
If you generated the ROMs directory structure when first starting ES-DE, the systeminfo.txt files located in each game system directory will also contain the information about the emulator core and supported file extensions.
|
||||
If you generated the ROMs directory structure when first starting ES-DE, the systeminfo.txt files located in each game
|
||||
system directory will also contain the information about the emulator core and supported file extensions.
|
||||
|
||||
For CD-based systems it's generally recommended to use CHD files (extension .chd) as this saves space due to compression compared to BIN/CUE, IMG, ISO etc. The CHD format is also supported by most emulators. You can convert to CHD from various formats using the MAME `chdman` utility, for example `chdman createcd -i mygame.iso -o mygame.chd`. Sometimes chdman has issues converting from the IMG and BIN formats, and in this case it's possible to first convert to ISO using `ccd2iso`, such as `ccd2iso mygame.img mygame.iso`.
|
||||
For CD-based systems it's generally recommended to use CHD files (extension .chd) as this saves space due to compression
|
||||
compared to BIN/CUE, IMG, ISO etc. The CHD format is also supported by most emulators. You can convert to CHD from
|
||||
various formats using the MAME `chdman` utility, for example `chdman createcd -i mygame.iso -o mygame.chd`. Sometimes
|
||||
chdman has issues converting from the IMG and BIN formats, and in this case it's possible to first convert to ISO
|
||||
using `ccd2iso`, such as `ccd2iso mygame.img mygame.iso`.
|
||||
|
||||
MAME emulation is a bit special as the choice of emulator depends on which ROM set you're using. It's recommended to go for the latest available set, as MAME is constantly improved with more complete and accurate emulation. Therefore the `arcade` system is configured to use _MAME - Current_ by default, which as the name implies will be the latest available MAME version. But if you have a really slow computer you may want to use another ROM set such as the popular 0.78. In this case, you can either select _MAME 2003-Plus_ as an alternative emulator, or you can use the `mame` system which comes configured with this emulator as the default. There are more MAME versions available as alternative emulators, as you can see in the table below.
|
||||
MAME emulation is a bit special as the choice of emulator depends on which ROM set you're using. It's recommended to go
|
||||
for the latest available set, as MAME is constantly improved with more complete and accurate emulation. Therefore
|
||||
the `arcade` system is configured to use _MAME - Current_ by default, which as the name implies will be the latest
|
||||
available MAME version. But if you have a really slow computer you may want to use another ROM set such as the popular
|
||||
0.78. In this case, you can either select _MAME 2003-Plus_ as an alternative emulator, or you can use the `mame` system
|
||||
which comes configured with this emulator as the default. There are more MAME versions available as alternative
|
||||
emulators, as you can see in the table below.
|
||||
|
||||
There are also other MAME forks and derivates available such as MAME4ALL, AdvanceMAME, FinalBurn Alpha and FinalBurn Neo but it's beyond the scope of this document to describe those in detail. For more information, refer to the [RetroPie arcade documentation](https://retropie.org.uk/docs/Arcade) which has a good overview of the various MAME alternatives.
|
||||
There are also other MAME forks and derivates available such as MAME4ALL, AdvanceMAME, FinalBurn Alpha and FinalBurn Neo
|
||||
but it's beyond the scope of this document to describe those in detail. For more information, refer to
|
||||
the [RetroPie arcade documentation](https://retropie.org.uk/docs/Arcade) which has a good overview of the various MAME
|
||||
alternatives.
|
||||
|
||||
In general .zip or .7z files are recommended for smaller-sized games like those from older systems (assuming the emulator supports it). But for CD-based systems it's not a good approach as uncompressing the larger CD images takes quite some time, leading to slow game launches. As explained above, converting CD images to CHD files is a better solution for achieving file compression while still enjoying fast game launches.
|
||||
In general .zip or .7z files are recommended for smaller-sized games like those from older systems (assuming the
|
||||
emulator supports it). But for CD-based systems it's not a good approach as uncompressing the larger CD images takes
|
||||
quite some time, leading to slow game launches. As explained above, converting CD images to CHD files is a better
|
||||
solution for achieving file compression while still enjoying fast game launches.
|
||||
|
||||
Consider the table below a work in progress as it's obvioulsy not fully populated yet!
|
||||
|
||||
|
@ -1721,7 +1871,8 @@ All emulators are RetroArch cores unless marked as **(Standalone**)
|
|||
| gx4000 | Amstrad GX4000 | | | | |
|
||||
| intellivision | Mattel Electronics Intellivision | FreeIntv | | | |
|
||||
| kodi | Kodi home theatre software | N/A | | No | |
|
||||
| lutris | Lutris open gaming platform | Lutris application **(Standalone)** [U] | | No | Shell script in root folder |
|
||||
| lutris | Lutris open gaming platform | Lutris application **(
|
||||
Standalone)** [U] | | No | Shell script in root folder |
|
||||
| lutro | Lutro game engine | Lutro | | | |
|
||||
| macintosh | Apple Macintosh | | | | |
|
||||
| mame | Multiple Arcade Machine Emulator | MAME 2003-Plus | MAME 2000,<br>MAME 2010,<br>MAME - Current,<br>FinalBurn Neo,<br>FB Alpha 2012 | Depends | Single archive file following MAME name standard in root folder |
|
||||
|
@ -1783,11 +1934,13 @@ All emulators are RetroArch cores unless marked as **(Standalone**)
|
|||
| snesna | Nintendo SNES (Super Nintendo) [North America] | Snes9x - Current | Snes9x 2010,<br>bsnes,<br>bsnes-mercury Accuracy,<br>Beetle Supafaust [UW],<br>Mesen-S | No | Single archive or ROM file in root folder |
|
||||
| solarus | Solarus game engine | | | | |
|
||||
| spectravideo | Spectravideo | blueMSX | | | |
|
||||
| steam | Valve Steam | Steam application **(Standalone)** | | No | Shell script/batch file in root folder |
|
||||
| steam | Valve Steam | Steam application **(
|
||||
Standalone)** | | No | Shell script/batch file in root folder |
|
||||
| stratagus | Stratagus game engine | | | | |
|
||||
| sufami | Bandai SuFami Turbo | Snes9x - Current | | | |
|
||||
| supergrafx | NEC SuperGrafx | Beetle SuperGrafx | Beetle PCE | | |
|
||||
| switch | Nintendo Switch | Yuzu **(Standalone)** [UW] | | Yes | |
|
||||
| switch | Nintendo Switch | Yuzu **(
|
||||
Standalone)** [UW] | | Yes | |
|
||||
| tanodragon | Tano Dragon | | | | |
|
||||
| tg16 | NEC TurboGrafx-16 | Beetle PCE | Beetle PCE FAST | No | Single archive or ROM file in root folder |
|
||||
| tg-cd | NEC TurboGrafx-CD | Beetle PCE | Beetle PCE FAST | Yes | |
|
||||
|
|
44
USERGUIDE.md
44
USERGUIDE.md
|
@ -364,7 +364,8 @@ The platform name for the Commodore 64 is `c64`, so the following structure woul
|
|||
~/ROMs/c64/Multidisk/Pirates/Pirates!.m3u
|
||||
```
|
||||
|
||||
It's highly recommended to create `.m3u` playlist files for multi-disc images as this normally automates disk swapping in the emulator. It's then this .m3u file that should be selected for launching the game.
|
||||
It's highly recommended to create `.m3u` playlist files for multi-disc images as this normally automates disk swapping
|
||||
in the emulator. It's then this .m3u file that should be selected for launching the game.
|
||||
|
||||
The .m3u file simply contains a list of the game files, for example in the case of Last Ninja 2.m3u:
|
||||
|
||||
|
@ -417,9 +418,13 @@ Apart from the potential difficulty in locating the emulator binary, there are s
|
|||
|
||||
#### Commodore Amiga
|
||||
|
||||
There are multiple ways to run Amiga games, but the recommended approach is to use WHDLoad. The best way is to use hard disk images in `.hdf` or `.hdz` format, meaning there will be a single file per game. This makes it just as easy to play Amiga games as any console with game ROMs.
|
||||
There are multiple ways to run Amiga games, but the recommended approach is to use WHDLoad. The best way is to use hard
|
||||
disk images in `.hdf` or `.hdz` format, meaning there will be a single file per game. This makes it just as easy to play
|
||||
Amiga games as any console with game ROMs.
|
||||
|
||||
An alternative would be to use `.adf` images as not all games may be available with WHDLoad support. For this, you can either put single-disk images in the root folder or in a dedicated adf directory, or multiple-disk games in separate folders. It's highly recommended to create `.m3u` playlist files for multi-disc images as described earlier.
|
||||
An alternative would be to use `.adf` images as not all games may be available with WHDLoad support. For this, you can
|
||||
either put single-disk images in the root folder or in a dedicated adf directory, or multiple-disk games in separate
|
||||
folders. It's highly recommended to create `.m3u` playlist files for multi-disc images as described earlier.
|
||||
|
||||
Here's an example of what the file structure could look like:
|
||||
|
||||
|
@ -859,7 +864,8 @@ If this setting is enabled and a folder has its flag set to be excluded from the
|
|||
|
||||
**Scrape actual folders** _(Multi-scraper only)_
|
||||
|
||||
Enabling this option causes folders themselves to be included by the scraper. This is useful for DOS games or any multi-disc games where there is a folder for each individual game.
|
||||
Enabling this option causes folders themselves to be included by the scraper. This is useful for DOS games or any
|
||||
multi-disc games where there is a folder for each individual game.
|
||||
|
||||
**Auto-retry on peer verification errors** _(ScreenScraper only)_
|
||||
|
||||
|
@ -1206,7 +1212,11 @@ If this option is disabled, hidden files and folders within the ROMs directory t
|
|||
|
||||
**Show hidden games (requires restart)**
|
||||
|
||||
You can mark games as hidden in the metadata editor, which is useful for instance for DOS games where you may not want to see some batch files and executables inside ES-DE, or for multi-disc games where you may only want to show the .m3u playlists and not the individual game files. By disabling this option these files will not be processed at all when ES-DE starts up. If you enable the option you will see the files, but their name entries will be almost transparent in the gamelist view to visually indicate that they are hidden.
|
||||
You can mark games as hidden in the metadata editor, which is useful for instance for DOS games where you may not want
|
||||
to see some batch files and executables inside ES-DE, or for multi-disc games where you may only want to show the .m3u
|
||||
playlists and not the individual game files. By disabling this option these files will not be processed at all when
|
||||
ES-DE starts up. If you enable the option you will see the files, but their name entries will be almost transparent in
|
||||
the gamelist view to visually indicate that they are hidden.
|
||||
|
||||
**Enable custom event scripts**
|
||||
|
||||
|
@ -1394,7 +1404,11 @@ A flag to mark whether the game is suitable for children. This will be applied a
|
|||
|
||||
**Hidden**
|
||||
|
||||
A flag to indicate that the game is hidden. If the corresponding option has been set in the main menu, the game will not be shown. Useful for example for DOS games to hide batch scripts and unnecessary binaries or to hide the actual game files for multi-disc games. If a file or folder is flagged as hidden but the corresponding option to hide hidden games has not been enabled, then the opacity of the text will be lowered significantly to make it clear that it's a hidden entry.
|
||||
A flag to indicate that the game is hidden. If the corresponding option has been set in the main menu, the game will not
|
||||
be shown. Useful for example for DOS games to hide batch scripts and unnecessary binaries or to hide the actual game
|
||||
files for multi-disc games. If a file or folder is flagged as hidden but the corresponding option to hide hidden games
|
||||
has not been enabled, then the opacity of the text will be lowered significantly to make it clear that it's a hidden
|
||||
entry.
|
||||
|
||||
**Broken/not working**
|
||||
|
||||
|
@ -1402,15 +1416,27 @@ A flag to indicate whether the game is broken. Useful for MAME games for instanc
|
|||
|
||||
**Exclude from game counter** _(files only)_
|
||||
|
||||
A flag to indicate whether the game should be excluded from being counted. If this is set for a game, it will not be included in the game counter shown per system on the system view, and it will not be included in the system information field in the gamelist view. As well, it will be excluded from all automatic and custom collections. This option is quite useful for multi-file games such as multi-disc Amiga or Commodore 64 games, or for DOS games where you want to exclude setup programs and similar but still need them available in ES-DE and therefore can't hide them. Files that have this flag set will have a lower opacity in the gamelists, making them easy to spot.
|
||||
A flag to indicate whether the game should be excluded from being counted. If this is set for a game, it will not be
|
||||
included in the game counter shown per system on the system view, and it will not be included in the system information
|
||||
field in the gamelist view. As well, it will be excluded from all automatic and custom collections. This option is quite
|
||||
useful for multi-file games such as multi-disc Amiga or Commodore 64 games, or for DOS games where you want to exclude
|
||||
setup programs and similar but still need them available in ES-DE and therefore can't hide them. Files that have this
|
||||
flag set will have a lower opacity in the gamelists, making them easy to spot.
|
||||
|
||||
**Exclude from multi-scraper**
|
||||
|
||||
Whether to exclude the file from the multi-scraper. This is quite useful in order to avoid scraping all the disks for multi-disc games for example. There is an option in the scraper settings to ignore this flag, but by default the multi-scraper will respect it.
|
||||
Whether to exclude the file from the multi-scraper. This is quite useful in order to avoid scraping all the disks for
|
||||
multi-disc games for example. There is an option in the scraper settings to ignore this flag, but by default the
|
||||
multi-scraper will respect it.
|
||||
|
||||
**Hide metadata fields**
|
||||
|
||||
This option will hide most metadata fields in the gamelist view. The intention is to be able to hide the fields for situations such as general folders (Multi-disc, Cartridges etc.) and for setup programs and similar (e.g. SETUP.EXE or INSTALL.BAT for DOS games). It could also be used on the game files for multi-disc games where perhaps only the .m3u playlist should have any metadata values. The only fields shown with this option enabled are the game name and description. Using the description it's possible to write some comments regarding the file or folder, should you want to. It's also possible to display game images and videos with this setting enabled.
|
||||
This option will hide most metadata fields in the gamelist view. The intention is to be able to hide the fields for
|
||||
situations such as general folders (Multi-disc, Cartridges etc.) and for setup programs and similar (e.g. SETUP.EXE or
|
||||
INSTALL.BAT for DOS games). It could also be used on the game files for multi-disc games where perhaps only the .m3u
|
||||
playlist should have any metadata values. The only fields shown with this option enabled are the game name and
|
||||
description. Using the description it's possible to write some comments regarding the file or folder, should you want
|
||||
to. It's also possible to display game images and videos with this setting enabled.
|
||||
|
||||
**Launch command** _(files only)_
|
||||
|
||||
|
|
|
@ -550,8 +550,7 @@ bool CollectionSystemsManager::isThemeCustomCollectionCompatible(
|
|||
return true;
|
||||
}
|
||||
|
||||
std::string CollectionSystemsManager::getValidNewCollectionName(std::string inName, int index)
|
||||
{
|
||||
std::string CollectionSystemsManager::getValidNewCollectionName(std::string inName, int index) {
|
||||
std::string name = inName;
|
||||
|
||||
// Trim leading and trailing whitespaces.
|
||||
|
@ -570,8 +569,7 @@ std::string CollectionSystemsManager::getValidNewCollectionName(std::string inNa
|
|||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-[]()' ")) !=
|
||||
std::string::npos)
|
||||
name.erase(remove, 1);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
name += " (" + std::to_string(index) + ")";
|
||||
}
|
||||
|
||||
|
@ -1333,8 +1331,7 @@ void CollectionSystemsManager::addEnabledCollectionsToDisplayedSystems(
|
|||
}
|
||||
}
|
||||
|
||||
std::vector<std::string> CollectionSystemsManager::getSystemsFromConfig()
|
||||
{
|
||||
std::vector<std::string> CollectionSystemsManager::getSystemsFromConfig() {
|
||||
std::vector<std::string> systems;
|
||||
std::vector<std::string> configPaths = SystemData::getConfigPath(false);
|
||||
|
||||
|
|
|
@ -33,15 +33,8 @@ FileData::FileData(FileType type,
|
|||
const std::string &path,
|
||||
SystemEnvironmentData *envData,
|
||||
SystemData *system)
|
||||
: metadata(type == GAME ? GAME_METADATA : FOLDER_METADATA)
|
||||
, mSourceFileData(nullptr)
|
||||
, mParent(nullptr)
|
||||
, mType(type)
|
||||
, mPath(path)
|
||||
, mEnvData(envData)
|
||||
, mSystem(system)
|
||||
, mOnlyFolders(false)
|
||||
, mDeletionFlag(false)
|
||||
: metadata(type == GAME ? GAME_METADATA : FOLDER_METADATA), mSourceFileData(nullptr), mParent(nullptr),
|
||||
mType(type), mPath(path), mEnvData(envData), mSystem(system), mOnlyFolders(false), mDeletionFlag(false)
|
||||
{
|
||||
// Metadata needs at least a name field (since that's what getName() will return).
|
||||
if (metadata.get("name").empty()) {
|
||||
|
@ -742,8 +735,7 @@ FileData::SortType FileData::getSortTypeFromString(std::string desc)
|
|||
return FileSorts::SortTypes.at(0);
|
||||
}
|
||||
|
||||
void FileData::launchGame(Window* window)
|
||||
{
|
||||
void FileData::launchGame(Window *window) {
|
||||
LOG(LogInfo) << "Launching game \"" << this->metadata.get("name") << "\"...";
|
||||
|
||||
SystemData *gameSystem = nullptr;
|
||||
|
|
|
@ -20,17 +20,9 @@
|
|||
#define INCLUDE_UNKNOWN false;
|
||||
|
||||
FileFilterIndex::FileFilterIndex()
|
||||
: mFilterByText(false)
|
||||
, mTextRemoveSystem(false)
|
||||
, mFilterByFavorites(false)
|
||||
, mFilterByGenre(false)
|
||||
, mFilterByPlayers(false)
|
||||
, mFilterByPubDev(false)
|
||||
, mFilterByRatings(false)
|
||||
, mFilterByKidGame(false)
|
||||
, mFilterByCompleted(false)
|
||||
, mFilterByBroken(false)
|
||||
, mFilterByHidden(false)
|
||||
: mFilterByText(false), mTextRemoveSystem(false), mFilterByFavorites(false), mFilterByGenre(false),
|
||||
mFilterByPlayers(false), mFilterByPubDev(false), mFilterByRatings(false), mFilterByKidGame(false),
|
||||
mFilterByCompleted(false), mFilterByBroken(false), mFilterByHidden(false)
|
||||
{
|
||||
clearAllFilters();
|
||||
|
||||
|
@ -367,8 +359,7 @@ bool FileFilterIndex::showFile(FileData* game)
|
|||
!(Utils::String::toUpper(game->getName().substr(0, game->getName().find_last_of("[")))
|
||||
.find(mTextFilter) != std::string::npos)) {
|
||||
return false;
|
||||
}
|
||||
else if (mTextFilter != "" &&
|
||||
} else if (mTextFilter != "" &&
|
||||
!(Utils::String::toUpper(game->getName()).find(mTextFilter) != std::string::npos)) {
|
||||
return false;
|
||||
}
|
||||
|
@ -381,8 +372,7 @@ bool FileFilterIndex::showFile(FileData* game)
|
|||
FilterDataDecl filterData = (*it);
|
||||
if (filterData.primaryKey == "kidgame" && UIModeController::getInstance()->isUIModeKid()) {
|
||||
return (getIndexableKey(game, filterData.type, false) != "FALSE");
|
||||
}
|
||||
else if (*(filterData.filteredByRef)) {
|
||||
} else if (*(filterData.filteredByRef)) {
|
||||
// Try to find a match.
|
||||
std::string key = getIndexableKey(game, filterData.type, false);
|
||||
keepGoing = isKeyBeingFilteredBy(key, filterData.type);
|
||||
|
|
|
@ -48,22 +48,37 @@ class FileFilterIndex
|
|||
public:
|
||||
FileFilterIndex();
|
||||
~FileFilterIndex();
|
||||
|
||||
void addToIndex(FileData *game);
|
||||
|
||||
void removeFromIndex(FileData *game);
|
||||
|
||||
void setFilter(FilterIndexType type, std::vector<std::string> *values);
|
||||
|
||||
void setTextFilter(std::string textFilter);
|
||||
|
||||
std::string getTextFilter() { return mTextFilter; }
|
||||
|
||||
void clearAllFilters();
|
||||
|
||||
void debugPrintIndexes();
|
||||
|
||||
bool showFile(FileData *game);
|
||||
|
||||
bool isFiltered();
|
||||
|
||||
bool isKeyBeingFilteredBy(std::string key, FilterIndexType type);
|
||||
|
||||
std::vector<FilterDataDecl> &getFilterDataDecls() { return filterDataDecl; }
|
||||
|
||||
void setTextRemoveSystem(bool status) { mTextRemoveSystem = status; }
|
||||
|
||||
void importIndex(FileFilterIndex *indexToImport);
|
||||
|
||||
void resetIndex();
|
||||
|
||||
void resetFilters();
|
||||
|
||||
void setKidModeFilters();
|
||||
|
||||
private:
|
||||
|
|
|
@ -227,8 +227,7 @@ namespace FileSorts
|
|||
return system1.compare(system2) < 0;
|
||||
}
|
||||
|
||||
bool compareSystemDescending(const FileData* file1, const FileData* file2)
|
||||
{
|
||||
bool compareSystemDescending(const FileData *file1, const FileData *file2) {
|
||||
std::string system1 = Utils::String::toUpper(file1->getSystemName());
|
||||
std::string system2 = Utils::String::toUpper(file2->getSystemName());
|
||||
return system1.compare(system2) > 0;
|
||||
|
|
|
@ -18,23 +18,41 @@ namespace FileSorts
|
|||
{
|
||||
bool compareName(const FileData* file1, const FileData* file2);
|
||||
bool compareNameDescending(const FileData* file1, const FileData* file2);
|
||||
|
||||
bool compareRating(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareRatingDescending(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareReleaseDate(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareReleaseDateDescending(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareDeveloper(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareDeveloperDescending(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool comparePublisher(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool comparePublisherDescending(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareGenre(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareGenreDescending(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareNumPlayers(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareNumPlayersDescending(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareLastPlayed(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareLastPlayedDescending(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareTimesPlayed(const FileData *file1, const FileData *fil2);
|
||||
|
||||
bool compareTimesPlayedDescending(const FileData *file1, const FileData *fil2);
|
||||
|
||||
bool compareSystem(const FileData *file1, const FileData *file2);
|
||||
|
||||
bool compareSystemDescending(const FileData *file1, const FileData *file2);
|
||||
|
||||
extern const std::vector<FileData::SortType> SortTypes;
|
||||
|
|
|
@ -216,8 +216,7 @@ GuiCollectionSystemsOptions::GuiCollectionSystemsOptions(Window* window, std::st
|
|||
mWindow, getHelpStyle(), "New Collection Name", "", createCollectionCall, false,
|
||||
"CREATE", "CREATE COLLECTION?"));
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
row.makeAcceptInputHandler([this, createCollectionCall] {
|
||||
mWindow->pushGui(new GuiTextEditPopup(mWindow, getHelpStyle(), "New Collection Name",
|
||||
"", createCollectionCall, false, "CREATE",
|
||||
|
|
|
@ -21,11 +21,8 @@
|
|||
GuiGameScraper::GuiGameScraper(Window *window,
|
||||
ScraperSearchParams params,
|
||||
std::function<void(const ScraperSearchResult &)> doneFunc)
|
||||
: GuiComponent(window)
|
||||
, mClose(false)
|
||||
, mGrid(window, glm::ivec2{1, 7})
|
||||
, mBox(window, ":/graphics/frame.svg")
|
||||
, mSearchParams(params)
|
||||
: GuiComponent(window), mClose(false), mGrid(window, glm::ivec2{1, 7}), mBox(window, ":/graphics/frame.svg"),
|
||||
mSearchParams(params)
|
||||
{
|
||||
addChild(&mBox);
|
||||
addChild(&mGrid);
|
||||
|
|
|
@ -29,8 +29,7 @@ GuiGamelistFilter::GuiGamelistFilter(Window* window,
|
|||
initializeMenu();
|
||||
}
|
||||
|
||||
void GuiGamelistFilter::initializeMenu()
|
||||
{
|
||||
void GuiGamelistFilter::initializeMenu() {
|
||||
addChild(&mMenu);
|
||||
|
||||
// Get filters from system.
|
||||
|
@ -94,8 +93,7 @@ void GuiGamelistFilter::resetAllFilters()
|
|||
|
||||
GuiGamelistFilter::~GuiGamelistFilter() { mFilterOptions.clear(); }
|
||||
|
||||
void GuiGamelistFilter::addFiltersToMenu()
|
||||
{
|
||||
void GuiGamelistFilter::addFiltersToMenu() {
|
||||
ComponentListRow row;
|
||||
|
||||
auto lbl = std::make_shared<TextComponent>(
|
||||
|
@ -134,8 +132,7 @@ void GuiGamelistFilter::addFiltersToMenu()
|
|||
mTextFilterField->getValue(), updateVal,
|
||||
false, "OK", "APPLY CHANGES?"));
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
row.makeAcceptInputHandler([this, updateVal] {
|
||||
mWindow->pushGui(new GuiTextEditPopup(mWindow, getHelpStyle(), "GAME NAME",
|
||||
mTextFilterField->getValue(), updateVal, false,
|
||||
|
|
|
@ -26,14 +26,8 @@
|
|||
#include "views/gamelist/IGameListView.h"
|
||||
|
||||
GuiGamelistOptions::GuiGamelistOptions(Window *window, SystemData *system)
|
||||
: GuiComponent(window)
|
||||
, mMenu(window, "OPTIONS")
|
||||
, mSystem(system)
|
||||
, mFiltersChanged(false)
|
||||
, mCancelled(false)
|
||||
, mIsCustomCollection(false)
|
||||
, mIsCustomCollectionGroup(false)
|
||||
, mCustomCollectionSystem(nullptr)
|
||||
: GuiComponent(window), mMenu(window, "OPTIONS"), mSystem(system), mFiltersChanged(false), mCancelled(false),
|
||||
mIsCustomCollection(false), mIsCustomCollectionGroup(false), mCustomCollectionSystem(nullptr)
|
||||
{
|
||||
addChild(&mMenu);
|
||||
|
||||
|
|
|
@ -15,11 +15,8 @@
|
|||
#include "utils/StringUtil.h"
|
||||
|
||||
GuiLaunchScreen::GuiLaunchScreen(Window *window)
|
||||
: GuiComponent(window)
|
||||
, mWindow(window)
|
||||
, mBackground(window, ":/graphics/frame.svg")
|
||||
, mGrid(nullptr)
|
||||
, mMarquee(nullptr)
|
||||
: GuiComponent(window), mWindow(window), mBackground(window, ":/graphics/frame.svg"), mGrid(nullptr),
|
||||
mMarquee(nullptr)
|
||||
{
|
||||
addChild(&mBackground);
|
||||
mWindow->setLaunchScreen(this);
|
||||
|
@ -220,8 +217,7 @@ void GuiLaunchScreen::update(int deltaTime)
|
|||
mScaleUp = glm::clamp(mScaleUp + 0.07f, 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
void GuiLaunchScreen::render(const glm::mat4& /*parentTrans*/)
|
||||
{
|
||||
void GuiLaunchScreen::render(const glm::mat4 & /*parentTrans*/) {
|
||||
// Scale up animation.
|
||||
if (mScaleUp < 1.0f)
|
||||
setScale(mScaleUp);
|
||||
|
|
|
@ -22,14 +22,17 @@ class GuiLaunchScreen : public Window::GuiLaunchScreen, GuiComponent
|
|||
{
|
||||
public:
|
||||
GuiLaunchScreen(Window *window);
|
||||
|
||||
virtual ~GuiLaunchScreen();
|
||||
|
||||
virtual void displayLaunchScreen(FileData *game) override;
|
||||
|
||||
virtual void closeLaunchScreen() override;
|
||||
|
||||
void onSizeChanged() override;
|
||||
|
||||
virtual void update(int deltaTime) override;
|
||||
|
||||
virtual void render(const glm::mat4 &parentTrans) override;
|
||||
|
||||
private:
|
||||
|
|
|
@ -37,9 +37,7 @@
|
|||
#include <algorithm>
|
||||
|
||||
GuiMenu::GuiMenu(Window *window)
|
||||
: GuiComponent(window)
|
||||
, mMenu(window, "MAIN MENU")
|
||||
, mVersion(window)
|
||||
: GuiComponent(window), mMenu(window, "MAIN MENU"), mVersion(window)
|
||||
{
|
||||
bool isFullUI = UIModeController::getInstance()->isUIModeFull();
|
||||
|
||||
|
@ -828,8 +826,7 @@ void GuiMenu::openOtherOptions()
|
|||
Settings::getInstance()->getString("MediaDirectory"), updateValMediaDir,
|
||||
multiLineMediaDir, "SAVE", "SAVE CHANGES?", mediaDirectoryStaticText,
|
||||
defaultDirectoryText, "load default directory"));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mWindow->pushGui(new GuiTextEditPopup(
|
||||
mWindow, getHelpStyle(), titleMediaDir,
|
||||
Settings::getInstance()->getString("MediaDirectory"), updateValMediaDir,
|
||||
|
|
|
@ -39,17 +39,10 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window,
|
|||
std::function<void()> saveCallback,
|
||||
std::function<void()> clearGameFunc,
|
||||
std::function<void()> deleteGameFunc)
|
||||
: GuiComponent(window)
|
||||
, mBackground(window, ":/graphics/frame.svg")
|
||||
, mGrid(window, glm::ivec2{1, 3})
|
||||
, mScraperParams(scraperParams)
|
||||
, mMetaDataDecl(mdd)
|
||||
, mMetaData(md)
|
||||
, mSavedCallback(saveCallback)
|
||||
, mClearGameFunc(clearGameFunc)
|
||||
, mDeleteGameFunc(deleteGameFunc)
|
||||
, mMediaFilesUpdated(false)
|
||||
, mInvalidEmulatorEntry(false)
|
||||
: GuiComponent(window), mBackground(window, ":/graphics/frame.svg"), mGrid(window, glm::ivec2{1, 3}),
|
||||
mScraperParams(scraperParams), mMetaDataDecl(mdd), mMetaData(md), mSavedCallback(saveCallback),
|
||||
mClearGameFunc(clearGameFunc), mDeleteGameFunc(deleteGameFunc), mMediaFilesUpdated(false),
|
||||
mInvalidEmulatorEntry(false)
|
||||
{
|
||||
addChild(&mBackground);
|
||||
addChild(&mGrid);
|
||||
|
@ -363,8 +356,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window,
|
|||
ed->setColor(DEFAULT_TEXTCOLOR);
|
||||
else
|
||||
ed->setColor(TEXTCOLOR_USERMARKED);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
ed->setValue(newVal);
|
||||
if (newVal == originalValue)
|
||||
ed->setColor(DEFAULT_TEXTCOLOR);
|
||||
|
@ -379,8 +371,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window,
|
|||
mWindow, getHelpStyle(), title, ed->getValue(), updateVal, multiLine,
|
||||
"apply", "APPLY CHANGES?", "", ""));
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
row.makeAcceptInputHandler([this, title, ed, updateVal, multiLine] {
|
||||
mWindow->pushGui(new GuiTextEditPopup(mWindow, getHelpStyle(), title,
|
||||
ed->getValue(), updateVal, multiLine,
|
||||
|
|
|
@ -14,10 +14,8 @@
|
|||
#include "views/ViewController.h"
|
||||
|
||||
GuiOfflineGenerator::GuiOfflineGenerator(Window *window, const std::queue<FileData *> &gameQueue)
|
||||
: GuiComponent(window)
|
||||
, mGameQueue(gameQueue)
|
||||
, mBackground(window, ":/graphics/frame.svg")
|
||||
, mGrid(window, glm::ivec2{6, 13})
|
||||
: GuiComponent(window), mGameQueue(gameQueue), mBackground(window, ":/graphics/frame.svg"),
|
||||
mGrid(window, glm::ivec2{6, 13})
|
||||
{
|
||||
addChild(&mBackground);
|
||||
addChild(&mGrid);
|
||||
|
|
|
@ -38,14 +38,8 @@
|
|||
#define FAILED_VERIFICATION_RETRIES 8
|
||||
|
||||
GuiScraperSearch::GuiScraperSearch(Window *window, SearchType type, unsigned int scrapeCount)
|
||||
: GuiComponent(window)
|
||||
, mGrid(window, glm::ivec2{4, 3})
|
||||
, mSearchType(type)
|
||||
, mScrapeCount(scrapeCount)
|
||||
, mRefinedSearch(false)
|
||||
, mFoundGame(false)
|
||||
, mScrapeRatings(false)
|
||||
, mBusyAnim(window)
|
||||
: GuiComponent(window), mGrid(window, glm::ivec2{4, 3}), mSearchType(type), mScrapeCount(scrapeCount),
|
||||
mRefinedSearch(false), mFoundGame(false), mScrapeRatings(false), mBusyAnim(window)
|
||||
{
|
||||
addChild(&mGrid);
|
||||
|
||||
|
@ -790,8 +784,7 @@ void GuiScraperSearch::updateThumbnail()
|
|||
}
|
||||
}
|
||||
|
||||
void GuiScraperSearch::openInputScreen(ScraperSearchParams& params)
|
||||
{
|
||||
void GuiScraperSearch::openInputScreen(ScraperSearchParams ¶ms) {
|
||||
auto searchForFunc = [&](std::string name) {
|
||||
// Trim leading and trailing whitespaces.
|
||||
name.erase(name.begin(), std::find_if(name.begin(), name.end(), [](char c) {
|
||||
|
@ -817,8 +810,7 @@ void GuiScraperSearch::openInputScreen(ScraperSearchParams& params)
|
|||
// regardless of whether the entry is an arcade game and TheGamesDB is used.
|
||||
if (Settings::getInstance()->getBool("ScraperSearchMetadataName")) {
|
||||
searchString = Utils::String::removeParenthesis(params.game->metadata.get("name"));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
// If searching based on the actual file name, then expand to the full game name
|
||||
// in case the scraper is set to TheGamesDB and it's an arcade game. This is
|
||||
// required as TheGamesDB does not support searches using the short MAME names.
|
||||
|
@ -828,8 +820,7 @@ void GuiScraperSearch::openInputScreen(ScraperSearchParams& params)
|
|||
else
|
||||
searchString = params.game->getCleanName();
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
searchString = params.nameOverride;
|
||||
}
|
||||
|
||||
|
@ -837,8 +828,7 @@ void GuiScraperSearch::openInputScreen(ScraperSearchParams& params)
|
|||
mWindow->pushGui(new GuiTextEditKeyboardPopup(mWindow, getHelpStyle(), "REFINE SEARCH",
|
||||
searchString, searchForFunc, false, "SEARCH",
|
||||
"SEARCH USING REFINED NAME?"));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mWindow->pushGui(new GuiTextEditPopup(mWindow, getHelpStyle(), "REFINE SEARCH",
|
||||
searchString, searchForFunc, false, "SEARCH",
|
||||
"SEARCH USING REFINED NAME?"));
|
||||
|
@ -928,8 +918,7 @@ bool GuiScraperSearch::saveMetadata(const ScraperSearchResult& result,
|
|||
return metadataUpdated;
|
||||
}
|
||||
|
||||
std::vector<HelpPrompt> GuiScraperSearch::getHelpPrompts()
|
||||
{
|
||||
std::vector<HelpPrompt> GuiScraperSearch::getHelpPrompts() {
|
||||
std::vector<HelpPrompt> prompts;
|
||||
|
||||
prompts.push_back(HelpPrompt("y", "refine search"));
|
||||
|
|
|
@ -63,39 +63,51 @@ public:
|
|||
{
|
||||
mAcceptCallback = acceptCallback;
|
||||
}
|
||||
void setSkipCallback(const std::function<void()>& skipCallback)
|
||||
{
|
||||
|
||||
void setSkipCallback(const std::function<void()> &skipCallback) {
|
||||
mSkipCallback = skipCallback;
|
||||
}
|
||||
void setCancelCallback(const std::function<void()>& cancelCallback)
|
||||
{
|
||||
|
||||
void setCancelCallback(const std::function<void()> &cancelCallback) {
|
||||
mCancelCallback = cancelCallback;
|
||||
}
|
||||
|
||||
bool input(InputConfig *config, Input input) override;
|
||||
|
||||
void update(int deltaTime) override;
|
||||
|
||||
void render(const glm::mat4 &parentTrans) override;
|
||||
|
||||
std::vector<HelpPrompt> getHelpPrompts() override;
|
||||
|
||||
HelpStyle getHelpStyle() override;
|
||||
|
||||
void onSizeChanged() override;
|
||||
|
||||
void decreaseScrapeCount()
|
||||
{
|
||||
void decreaseScrapeCount() {
|
||||
if (mScrapeCount > 0)
|
||||
mScrapeCount--;
|
||||
}
|
||||
|
||||
void unsetRefinedSearch() { mRefinedSearch = false; }
|
||||
|
||||
bool getRefinedSearch() { return mRefinedSearch; }
|
||||
|
||||
bool getFoundGame() { return mFoundGame; }
|
||||
|
||||
const std::string &getNameOverride() { return mLastSearch.nameOverride; }
|
||||
|
||||
void onFocusGained() override { mGrid.onFocusGained(); }
|
||||
|
||||
void onFocusLost() override { mGrid.onFocusLost(); }
|
||||
|
||||
private:
|
||||
void updateViewStyle();
|
||||
|
||||
void updateThumbnail();
|
||||
|
||||
void updateInfoPane();
|
||||
|
||||
void resizeMetadata();
|
||||
|
||||
void onSearchError(const std::string& error,
|
||||
|
|
|
@ -22,20 +22,10 @@
|
|||
#include "views/gamelist/IGameListView.h"
|
||||
|
||||
GuiSettings::GuiSettings(Window *window, std::string title)
|
||||
: GuiComponent(window)
|
||||
, mMenu(window, title)
|
||||
, mGoToSystem(nullptr)
|
||||
, mNeedsSaving(false)
|
||||
, mNeedsReloadHelpPrompts(false)
|
||||
, mNeedsCollectionsUpdate(false)
|
||||
, mNeedsSorting(false)
|
||||
, mNeedsSortingCollections(false)
|
||||
, mNeedsResetFilters(false)
|
||||
, mNeedsReloading(false)
|
||||
, mNeedsGoToStart(false)
|
||||
, mNeedsGoToSystem(false)
|
||||
, mNeedsGoToGroupedCollections(false)
|
||||
, mInvalidateCachedBackground(false)
|
||||
: GuiComponent(window), mMenu(window, title), mGoToSystem(nullptr), mNeedsSaving(false),
|
||||
mNeedsReloadHelpPrompts(false), mNeedsCollectionsUpdate(false), mNeedsSorting(false),
|
||||
mNeedsSortingCollections(false), mNeedsResetFilters(false), mNeedsReloading(false), mNeedsGoToStart(false),
|
||||
mNeedsGoToSystem(false), mNeedsGoToGroupedCollections(false), mInvalidateCachedBackground(false)
|
||||
{
|
||||
addChild(&mMenu);
|
||||
mMenu.addButton("BACK", "back", [this] { delete this; });
|
||||
|
@ -184,12 +174,10 @@ void GuiSettings::addEditableTextComponent(const std::string label,
|
|||
else if (isPassword && newVal == "") {
|
||||
ed->setValue("");
|
||||
ed->setHiddenValue("");
|
||||
}
|
||||
else if (isPassword) {
|
||||
} else if (isPassword) {
|
||||
ed->setValue("********");
|
||||
ed->setHiddenValue(newVal);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
ed->setValue(newVal);
|
||||
}
|
||||
};
|
||||
|
@ -205,8 +193,7 @@ void GuiSettings::addEditableTextComponent(const std::string label,
|
|||
ed->getValue(), updateVal, false,
|
||||
"SAVE", "SAVE CHANGES?"));
|
||||
});
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
row.makeAcceptInputHandler([this, label, ed, updateVal, isPassword] {
|
||||
if (isPassword)
|
||||
mWindow->pushGui(new GuiTextEditPopup(mWindow, getHelpStyle(), label, "", updateVal,
|
||||
|
|
|
@ -147,8 +147,7 @@ void thegamesdb_generate_json_scraper_requests(
|
|||
// using this regardless of whether the entry is an arcade game.
|
||||
if (Settings::getInstance()->getBool("ScraperSearchMetadataName")) {
|
||||
cleanName = Utils::String::removeParenthesis(params.game->metadata.get("name"));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
// If not searching based on the metadata name, then check whether it's an
|
||||
// arcade game and if so expand to the full game name. This is required as
|
||||
// TheGamesDB has issues with searching using the short MAME names.
|
||||
|
|
|
@ -17,32 +17,12 @@
|
|||
#define FADE_IN_TIME 650
|
||||
|
||||
DetailedGameListView::DetailedGameListView(Window* window, FileData* root)
|
||||
: BasicGameListView(window, root)
|
||||
, mThumbnail(window)
|
||||
, mMarquee(window)
|
||||
, mImage(window)
|
||||
, mLblRating(window)
|
||||
, mLblReleaseDate(window)
|
||||
, mLblDeveloper(window)
|
||||
, mLblPublisher(window)
|
||||
, mLblGenre(window)
|
||||
, mLblPlayers(window)
|
||||
, mLblLastPlayed(window)
|
||||
, mLblPlayCount(window)
|
||||
, mBadges(window)
|
||||
, mRating(window)
|
||||
, mReleaseDate(window)
|
||||
, mDeveloper(window)
|
||||
, mPublisher(window)
|
||||
, mGenre(window)
|
||||
, mPlayers(window)
|
||||
, mLastPlayed(window)
|
||||
, mPlayCount(window)
|
||||
, mName(window)
|
||||
, mDescContainer(window)
|
||||
, mDescription(window)
|
||||
, mGamelistInfo(window)
|
||||
, mLastUpdated(nullptr)
|
||||
: BasicGameListView(window, root), mThumbnail(window), mMarquee(window), mImage(window), mLblRating(window),
|
||||
mLblReleaseDate(window), mLblDeveloper(window), mLblPublisher(window), mLblGenre(window), mLblPlayers(window),
|
||||
mLblLastPlayed(window), mLblPlayCount(window), mBadges(window), mRating(window), mReleaseDate(window),
|
||||
mDeveloper(window),
|
||||
mPublisher(window), mGenre(window), mPlayers(window), mLastPlayed(window), mPlayCount(window), mName(window),
|
||||
mDescContainer(window), mDescription(window), mGamelistInfo(window), mLastUpdated(nullptr)
|
||||
{
|
||||
const float padding = 0.01f;
|
||||
|
||||
|
|
|
@ -20,31 +20,12 @@
|
|||
#define FADE_IN_TIME 650
|
||||
|
||||
GridGameListView::GridGameListView(Window* window, FileData* root)
|
||||
: ISimpleGameListView(window, root)
|
||||
, mGrid(window)
|
||||
, mMarquee(window)
|
||||
, mImage(window)
|
||||
, mLblRating(window)
|
||||
, mLblReleaseDate(window)
|
||||
, mLblDeveloper(window)
|
||||
, mLblPublisher(window)
|
||||
, mLblGenre(window)
|
||||
, mLblPlayers(window)
|
||||
, mLblLastPlayed(window)
|
||||
, mLblPlayCount(window)
|
||||
, mBadges(window)
|
||||
, mRating(window)
|
||||
, mReleaseDate(window)
|
||||
, mDeveloper(window)
|
||||
, mPublisher(window)
|
||||
, mGenre(window)
|
||||
, mPlayers(window)
|
||||
, mLastPlayed(window)
|
||||
, mPlayCount(window)
|
||||
, mName(window)
|
||||
, mDescContainer(window)
|
||||
, mDescription(window)
|
||||
, mGamelistInfo(window)
|
||||
: ISimpleGameListView(window, root), mGrid(window), mMarquee(window), mImage(window), mLblRating(window),
|
||||
mLblReleaseDate(window), mLblDeveloper(window), mLblPublisher(window), mLblGenre(window), mLblPlayers(window),
|
||||
mLblLastPlayed(window), mLblPlayCount(window), mBadges(window), mRating(window), mReleaseDate(window),
|
||||
mDeveloper(window),
|
||||
mPublisher(window), mGenre(window), mPlayers(window), mLastPlayed(window), mPlayCount(window), mName(window),
|
||||
mDescContainer(window), mDescription(window), mGamelistInfo(window)
|
||||
{
|
||||
const float padding = 0.01f;
|
||||
|
||||
|
|
|
@ -17,21 +17,10 @@
|
|||
#include <algorithm>
|
||||
|
||||
GuiComponent::GuiComponent(Window *window)
|
||||
: mWindow(window)
|
||||
, mParent(nullptr)
|
||||
, mOpacity(255)
|
||||
, mColor(0)
|
||||
, mSaturation(1.0f)
|
||||
, mColorShift(0)
|
||||
, mColorShiftEnd(0)
|
||||
, mPosition({})
|
||||
, mOrigin({})
|
||||
, mRotationOrigin(0.5f, 0.5f)
|
||||
, mSize({})
|
||||
, mIsProcessing(false)
|
||||
, mVisible(true)
|
||||
, mEnabled(true)
|
||||
, mTransform(Renderer::getIdentity())
|
||||
: mWindow(window), mParent(nullptr), mOpacity(255), mColor(0), mSaturation(1.0f), mColorShift(0),
|
||||
mColorShiftEnd(0),
|
||||
mPosition({}), mOrigin({}), mRotationOrigin(0.5f, 0.5f), mSize({}), mIsProcessing(false), mVisible(true),
|
||||
mEnabled(true), mTransform(Renderer::getIdentity())
|
||||
{
|
||||
for (unsigned char i = 0; i < MAX_ANIMATIONS; i++)
|
||||
mAnimationMap[i] = nullptr;
|
||||
|
|
|
@ -231,6 +231,7 @@ public:
|
|||
|
||||
protected:
|
||||
void renderChildren(const glm::mat4 &transform) const;
|
||||
|
||||
void updateSelf(int deltaTime); // Updates animations.
|
||||
void updateChildren(int deltaTime); // Updates animations.
|
||||
|
||||
|
|
|
@ -18,19 +18,9 @@ ButtonComponent::ButtonComponent(Window* window,
|
|||
const std::function<void()> &func,
|
||||
bool upperCase,
|
||||
bool flatStyle)
|
||||
: GuiComponent{window}
|
||||
, mBox{window, ":/graphics/button.svg"}
|
||||
, mFont{Font::get(FONT_SIZE_MEDIUM)}
|
||||
, mPadding{{}}
|
||||
, mFocused{false}
|
||||
, mEnabled{true}
|
||||
, mFlatStyle{flatStyle}
|
||||
, mTextColorFocused{0xFFFFFFFF}
|
||||
, mTextColorUnfocused{0x777777FF}
|
||||
, mFlatColorFocused{0x878787FF}
|
||||
, mFlatColorUnfocused{0x60606025}
|
||||
|
||||
{
|
||||
: GuiComponent{window}, mBox{window, ":/graphics/button.svg"}, mFont{Font::get(FONT_SIZE_MEDIUM)}, mPadding{{}},
|
||||
mFocused{false}, mEnabled{true}, mFlatStyle{flatStyle}, mTextColorFocused{0xFFFFFFFF},
|
||||
mTextColorUnfocused{0x777777FF}, mFlatColorFocused{0x878787FF}, mFlatColorUnfocused{0x60606025} {
|
||||
setPressedFunc(func);
|
||||
setText(text, helpText, upperCase);
|
||||
|
||||
|
@ -38,8 +28,7 @@ ButtonComponent::ButtonComponent(Window* window,
|
|||
updateImage();
|
||||
}
|
||||
|
||||
void ButtonComponent::onSizeChanged()
|
||||
{
|
||||
void ButtonComponent::onSizeChanged() {
|
||||
if (mFlatStyle)
|
||||
return;
|
||||
|
||||
|
@ -50,22 +39,19 @@ void ButtonComponent::onSizeChanged()
|
|||
glm::vec2{-cornerSize.x * 2.0f, -cornerSize.y * 2.0f});
|
||||
}
|
||||
|
||||
void ButtonComponent::onFocusGained()
|
||||
{
|
||||
void ButtonComponent::onFocusGained() {
|
||||
mFocused = true;
|
||||
if (!mFlatStyle)
|
||||
updateImage();
|
||||
}
|
||||
|
||||
void ButtonComponent::onFocusLost()
|
||||
{
|
||||
void ButtonComponent::onFocusLost() {
|
||||
mFocused = false;
|
||||
if (!mFlatStyle)
|
||||
updateImage();
|
||||
}
|
||||
|
||||
void ButtonComponent::setText(const std::string& text, const std::string& helpText, bool upperCase)
|
||||
{
|
||||
void ButtonComponent::setText(const std::string &text, const std::string &helpText, bool upperCase) {
|
||||
mText = upperCase ? Utils::String::toUpper(text) : text;
|
||||
mHelpText = helpText;
|
||||
|
||||
|
@ -80,15 +66,13 @@ void ButtonComponent::setText(const std::string& text, const std::string& helpTe
|
|||
updateHelpPrompts();
|
||||
}
|
||||
|
||||
void ButtonComponent::setEnabled(bool state)
|
||||
{
|
||||
void ButtonComponent::setEnabled(bool state) {
|
||||
mEnabled = state;
|
||||
if (!mFlatStyle)
|
||||
updateImage();
|
||||
}
|
||||
|
||||
void ButtonComponent::setPadding(const glm::vec4 padding)
|
||||
{
|
||||
void ButtonComponent::setPadding(const glm::vec4 padding) {
|
||||
if (mPadding == padding)
|
||||
return;
|
||||
|
||||
|
@ -96,8 +80,7 @@ void ButtonComponent::setPadding(const glm::vec4 padding)
|
|||
onSizeChanged();
|
||||
}
|
||||
|
||||
bool ButtonComponent::input(InputConfig* config, Input input)
|
||||
{
|
||||
bool ButtonComponent::input(InputConfig *config, Input input) {
|
||||
if (config->isMappedTo("a", input) && input.value != 0) {
|
||||
if (mPressedFunc && mEnabled)
|
||||
mPressedFunc();
|
||||
|
@ -107,8 +90,7 @@ bool ButtonComponent::input(InputConfig* config, Input input)
|
|||
return GuiComponent::input(config, input);
|
||||
}
|
||||
|
||||
void ButtonComponent::render(const glm::mat4& parentTrans)
|
||||
{
|
||||
void ButtonComponent::render(const glm::mat4 &parentTrans) {
|
||||
glm::mat4 trans{parentTrans * getTransform()};
|
||||
|
||||
if (mFlatStyle) {
|
||||
|
@ -117,15 +99,13 @@ void ButtonComponent::render(const glm::mat4& parentTrans)
|
|||
Renderer::drawRect(mPadding.x, mPadding.y, mSize.x - mPadding.x - mPadding.z,
|
||||
mSize.y - mPadding.y - mPadding.w, mFlatColorFocused,
|
||||
mFlatColorFocused);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
Renderer::setMatrix(trans);
|
||||
Renderer::drawRect(mPadding.x, mPadding.y, mSize.x - mPadding.x - mPadding.z,
|
||||
mSize.y - mPadding.y - mPadding.w, mFlatColorUnfocused,
|
||||
mFlatColorUnfocused);
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mBox.render(trans);
|
||||
}
|
||||
|
||||
|
@ -151,23 +131,20 @@ void ButtonComponent::render(const glm::mat4& parentTrans)
|
|||
renderChildren(trans);
|
||||
}
|
||||
|
||||
std::vector<HelpPrompt> ButtonComponent::getHelpPrompts()
|
||||
{
|
||||
std::vector<HelpPrompt> ButtonComponent::getHelpPrompts() {
|
||||
std::vector<HelpPrompt> prompts;
|
||||
prompts.push_back(HelpPrompt("a", mHelpText.empty() ? mText.c_str() : mHelpText.c_str()));
|
||||
return prompts;
|
||||
}
|
||||
|
||||
unsigned int ButtonComponent::getCurTextColor() const
|
||||
{
|
||||
unsigned int ButtonComponent::getCurTextColor() const {
|
||||
if (!mFocused)
|
||||
return mTextColorUnfocused;
|
||||
else
|
||||
return mTextColorFocused;
|
||||
}
|
||||
|
||||
void ButtonComponent::updateImage()
|
||||
{
|
||||
void ButtonComponent::updateImage() {
|
||||
if (!mEnabled || !mPressedFunc) {
|
||||
mBox.setImagePath(":/graphics/button_filled.svg");
|
||||
mBox.setCenterColor(0x770000FF);
|
||||
|
|
|
@ -14,8 +14,7 @@
|
|||
|
||||
class TextCache;
|
||||
|
||||
class ButtonComponent : public GuiComponent
|
||||
{
|
||||
class ButtonComponent : public GuiComponent {
|
||||
public:
|
||||
ButtonComponent(Window *window,
|
||||
const std::string &text = "",
|
||||
|
@ -25,30 +24,38 @@ public:
|
|||
bool flatStyle = false);
|
||||
|
||||
void onSizeChanged() override;
|
||||
|
||||
void onFocusGained() override;
|
||||
|
||||
void onFocusLost() override;
|
||||
|
||||
void setText(const std::string &text, const std::string &helpText, bool upperCase = true);
|
||||
|
||||
const std::string &getText() const { return mText; }
|
||||
|
||||
void setPressedFunc(std::function<void()> f) { mPressedFunc = f; }
|
||||
|
||||
void setEnabled(bool state) override;
|
||||
|
||||
void setPadding(const glm::vec4 padding);
|
||||
|
||||
glm::vec4 getPadding() { return mPadding; }
|
||||
|
||||
void setFlatColorFocused(unsigned int color) { mFlatColorFocused = color; }
|
||||
|
||||
void setFlatColorUnfocused(unsigned int color) { mFlatColorUnfocused = color; }
|
||||
|
||||
const std::function<void()> &getPressedFunc() const { return mPressedFunc; }
|
||||
|
||||
bool input(InputConfig *config, Input input) override;
|
||||
|
||||
void render(const glm::mat4 &parentTrans) override;
|
||||
|
||||
virtual std::vector<HelpPrompt> getHelpPrompts() override;
|
||||
|
||||
private:
|
||||
unsigned int getCurTextColor() const;
|
||||
|
||||
void updateImage();
|
||||
|
||||
NinePatchComponent mBox;
|
||||
|
|
|
@ -287,8 +287,7 @@ void ComponentGrid::resetCursor()
|
|||
}
|
||||
}
|
||||
|
||||
bool ComponentGrid::moveCursor(glm::ivec2 dir)
|
||||
{
|
||||
bool ComponentGrid::moveCursor(glm::ivec2 dir) {
|
||||
assert(dir.x || dir.y);
|
||||
|
||||
const glm::ivec2 origCursor{mCursor};
|
||||
|
@ -368,8 +367,7 @@ bool ComponentGrid::moveCursor(glm::ivec2 dir)
|
|||
return false;
|
||||
}
|
||||
|
||||
void ComponentGrid::moveCursorTo(int xPos, int yPos, bool selectLeftCell)
|
||||
{
|
||||
void ComponentGrid::moveCursorTo(int xPos, int yPos, bool selectLeftCell) {
|
||||
const glm::ivec2 origCursor{mCursor};
|
||||
|
||||
if (xPos != -1)
|
||||
|
@ -386,15 +384,13 @@ void ComponentGrid::moveCursorTo(int xPos, int yPos, bool selectLeftCell)
|
|||
onCursorMoved(origCursor, mCursor);
|
||||
}
|
||||
|
||||
void ComponentGrid::onFocusLost()
|
||||
{
|
||||
void ComponentGrid::onFocusLost() {
|
||||
const GridEntry *cursorEntry = getCellAt(mCursor);
|
||||
if (cursorEntry)
|
||||
cursorEntry->component->onFocusLost();
|
||||
}
|
||||
|
||||
void ComponentGrid::onFocusGained()
|
||||
{
|
||||
void ComponentGrid::onFocusGained() {
|
||||
const GridEntry *cursorEntry = getCellAt(mCursor);
|
||||
if (cursorEntry)
|
||||
cursorEntry->component->onFocusGained();
|
||||
|
|
|
@ -30,10 +30,10 @@ namespace GridFlags
|
|||
} // namespace GridFlags
|
||||
|
||||
// Provides basic layout of components in an X*Y grid.
|
||||
class ComponentGrid : public GuiComponent
|
||||
{
|
||||
class ComponentGrid : public GuiComponent {
|
||||
public:
|
||||
ComponentGrid(Window *window, const glm::ivec2 &gridDimensions);
|
||||
|
||||
virtual ~ComponentGrid();
|
||||
|
||||
bool removeEntry(const std::shared_ptr<GuiComponent> &comp);
|
||||
|
@ -46,36 +46,43 @@ public:
|
|||
unsigned int border = GridFlags::BORDER_NONE,
|
||||
GridFlags::UpdateType updateType = GridFlags::UPDATE_ALWAYS);
|
||||
|
||||
void setPastBoundaryCallback(const std::function<bool(InputConfig* config, Input input)>& func)
|
||||
{
|
||||
void setPastBoundaryCallback(const std::function<bool(InputConfig *config, Input input)> &func) {
|
||||
mPastBoundaryCallback = func;
|
||||
}
|
||||
|
||||
void textInput(const std::string &text) override;
|
||||
|
||||
bool input(InputConfig *config, Input input) override;
|
||||
|
||||
void update(int deltaTime) override;
|
||||
|
||||
void render(const glm::mat4 &parentTrans) override;
|
||||
|
||||
void onSizeChanged() override;
|
||||
|
||||
void resetCursor();
|
||||
|
||||
bool cursorValid();
|
||||
|
||||
float getColWidth(int col);
|
||||
|
||||
float getRowHeight(int row);
|
||||
|
||||
// If update is false, will not call an onSizeChanged() which triggers
|
||||
// a (potentially costly) repositioning + resizing of every element.
|
||||
void setColWidthPerc(int col, float width, bool update = true);
|
||||
|
||||
// Dito.
|
||||
void setRowHeightPerc(int row, float height, bool update = true);
|
||||
|
||||
bool moveCursor(glm::ivec2 dir);
|
||||
|
||||
// Pass -1 for xPos or yPos to keep its axis cursor position.
|
||||
void moveCursorTo(int xPos, int yPos, bool selectLeftCell = false);
|
||||
|
||||
void setCursorTo(const std::shared_ptr<GuiComponent> &comp);
|
||||
|
||||
std::shared_ptr<GuiComponent> getSelectedComponent()
|
||||
{
|
||||
std::shared_ptr<GuiComponent> getSelectedComponent() {
|
||||
const GridEntry *e = getCellAt(mCursor);
|
||||
if (e)
|
||||
return e->component;
|
||||
|
@ -84,6 +91,7 @@ public:
|
|||
}
|
||||
|
||||
void onFocusLost() override;
|
||||
|
||||
void onFocusGained() override;
|
||||
|
||||
virtual std::vector<HelpPrompt> getHelpPrompts() override;
|
||||
|
@ -122,10 +130,13 @@ private:
|
|||
|
||||
// Update position and size.
|
||||
void updateCellComponent(const GridEntry &cell);
|
||||
|
||||
void updateSeparators();
|
||||
|
||||
void onCursorMoved(glm::ivec2 from, glm::ivec2 to);
|
||||
|
||||
const GridEntry *getCellAt(int x, int y) const;
|
||||
|
||||
const GridEntry *getCellAt(const glm::ivec2 &pos) const { return getCellAt(pos.x, pos.y); }
|
||||
|
||||
std::vector<std::vector<float>> mSeparators;
|
||||
|
|
|
@ -71,8 +71,7 @@ bool ComponentList::input(InputConfig* config, Input input)
|
|||
if (mEntries.at(mCursor).data.input_handler) {
|
||||
if (mEntries.at(mCursor).data.input_handler(config, input))
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
// No input handler assigned, do the default, which is to give it
|
||||
// to the rightmost element in the row.
|
||||
auto &row = mEntries.at(mCursor).data;
|
||||
|
|
|
@ -13,16 +13,9 @@
|
|||
#include "utils/StringUtil.h"
|
||||
|
||||
DateTimeEditComponent::DateTimeEditComponent(Window *window, bool alignRight, DisplayMode dispMode)
|
||||
: GuiComponent(window)
|
||||
, mEditing(false)
|
||||
, mEditIndex(0)
|
||||
, mDisplayMode(dispMode)
|
||||
, mRelativeUpdateAccumulator(0)
|
||||
, mColor(0x777777FF)
|
||||
, mFont(Font::get(FONT_SIZE_SMALL, FONT_PATH_LIGHT))
|
||||
, mAlignRight(alignRight)
|
||||
, mUppercase(false)
|
||||
, mAutoSize(true)
|
||||
: GuiComponent(window), mEditing(false), mEditIndex(0), mDisplayMode(dispMode), mRelativeUpdateAccumulator(0),
|
||||
mColor(0x777777FF), mFont(Font::get(FONT_SIZE_SMALL, FONT_PATH_LIGHT)), mAlignRight(alignRight),
|
||||
mUppercase(false), mAutoSize(true)
|
||||
{
|
||||
updateTextCache();
|
||||
}
|
||||
|
|
|
@ -24,43 +24,45 @@ FlexboxComponent::FlexboxComponent(Window* window)
|
|||
// Initialize item margins.
|
||||
mItemMargin = glm::vec2{DEFAULT_MARGIN_X, DEFAULT_MARGIN_Y};
|
||||
|
||||
// Calculate flexbox layout.
|
||||
computeLayout();
|
||||
// Layout validity
|
||||
mLayoutValid = false;
|
||||
}
|
||||
|
||||
// Getters/Setters for rendering options.
|
||||
void FlexboxComponent::setDirection(std::string value)
|
||||
{
|
||||
mDirection = value;
|
||||
computeLayout();
|
||||
mLayoutValid = false;
|
||||
}
|
||||
std::string FlexboxComponent::getDirection() { return mDirection; }
|
||||
void FlexboxComponent::setAlign(std::string value)
|
||||
{
|
||||
mAlign = value;
|
||||
computeLayout();
|
||||
mLayoutValid = false;
|
||||
}
|
||||
std::string FlexboxComponent::getAlign() { return mAlign; }
|
||||
void FlexboxComponent::setItemsPerLine(unsigned int value)
|
||||
{
|
||||
mItemsPerLine = value;
|
||||
computeLayout();
|
||||
mLayoutValid = false;
|
||||
}
|
||||
unsigned int FlexboxComponent::getItemsPerLine() { return mItemsPerLine; }
|
||||
void FlexboxComponent::setItemMargin(glm::vec2 value)
|
||||
{
|
||||
mItemMargin = value;
|
||||
computeLayout();
|
||||
mLayoutValid = false;
|
||||
}
|
||||
glm::vec2 FlexboxComponent::getItemMargin() { return mItemMargin; }
|
||||
void FlexboxComponent::setItemWidth(float value)
|
||||
{
|
||||
mItemWidth = value;
|
||||
computeLayout();
|
||||
mLayoutValid = false;
|
||||
}
|
||||
float FlexboxComponent::getItemWidth() { return mItemWidth; }
|
||||
|
||||
void FlexboxComponent::onSizeChanged() { computeLayout(); }
|
||||
void FlexboxComponent::onSizeChanged() {
|
||||
mLayoutValid = false;
|
||||
}
|
||||
|
||||
void FlexboxComponent::computeLayout()
|
||||
{
|
||||
|
@ -139,20 +141,23 @@ void FlexboxComponent::computeLayout()
|
|||
if (directionRow.x == 0) {
|
||||
anchorY += lineWidth * directionRow.y;
|
||||
anchorX = anchorXStart;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
anchorX += lineWidth * directionRow.x;
|
||||
anchorY = anchorYStart;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mLayoutValid = true;
|
||||
}
|
||||
|
||||
void FlexboxComponent::render(const glm::mat4& parentTrans)
|
||||
{
|
||||
void FlexboxComponent::render(const glm::mat4& parentTrans) {
|
||||
if (!isVisible())
|
||||
return;
|
||||
|
||||
if (!mLayoutValid)
|
||||
computeLayout();
|
||||
|
||||
renderChildren(parentTrans);
|
||||
}
|
||||
|
||||
|
@ -189,8 +194,8 @@ void FlexboxComponent::applyTheme(const std::shared_ptr<ThemeData>& theme,
|
|||
|
||||
GuiComponent::applyTheme(theme, view, element, properties);
|
||||
|
||||
// Trigger layout computation.
|
||||
onSizeChanged();
|
||||
// Layout no longer valid.
|
||||
mLayoutValid = false;
|
||||
}
|
||||
|
||||
std::vector<HelpPrompt> FlexboxComponent::getHelpPrompts()
|
||||
|
|
|
@ -66,6 +66,7 @@ private:
|
|||
unsigned int mItemsPerLine;
|
||||
glm::vec2 mItemMargin;
|
||||
float mItemWidth;
|
||||
bool mLayoutValid;
|
||||
};
|
||||
|
||||
#endif // ES_APP_COMPONENTS_FLEXBOX_COMPONENT_H
|
||||
|
|
|
@ -28,22 +28,10 @@ glm::vec2 ImageComponent::getSize() const
|
|||
}
|
||||
|
||||
ImageComponent::ImageComponent(Window *window, bool forceLoad, bool dynamic)
|
||||
: GuiComponent(window)
|
||||
, mTargetSize({})
|
||||
, mFlipX(false)
|
||||
, mFlipY(false)
|
||||
, mTargetIsMax(false)
|
||||
, mTargetIsMin(false)
|
||||
, mColorShift(0xFFFFFFFF)
|
||||
, mColorShiftEnd(0xFFFFFFFF)
|
||||
, mColorGradientHorizontal(true)
|
||||
, mFadeOpacity(0)
|
||||
, mFading(false)
|
||||
, mForceLoad(forceLoad)
|
||||
, mDynamic(dynamic)
|
||||
, mRotateByTargetSize(false)
|
||||
, mTopLeftCrop({})
|
||||
, mBottomRightCrop(1.0f, 1.0f)
|
||||
: GuiComponent(window), mTargetSize({}), mFlipX(false), mFlipY(false), mTargetIsMax(false), mTargetIsMin(false),
|
||||
mColorShift(0xFFFFFFFF), mColorShiftEnd(0xFFFFFFFF), mColorGradientHorizontal(true), mFadeOpacity(0),
|
||||
mFading(false), mForceLoad(forceLoad), mDynamic(dynamic), mRotateByTargetSize(false), mTopLeftCrop({}),
|
||||
mBottomRightCrop(1.0f, 1.0f)
|
||||
{
|
||||
updateColors();
|
||||
}
|
||||
|
|
|
@ -25,12 +25,8 @@ GuiMsgBox::GuiMsgBox(Window* window,
|
|||
const std::function<void()> &func3,
|
||||
bool disableBackButton,
|
||||
bool deleteOnButtonPress)
|
||||
: GuiComponent(window)
|
||||
, mBackground(window, ":/graphics/frame.svg")
|
||||
, mGrid(window, glm::ivec2{1, 2})
|
||||
, mHelpStyle(helpstyle)
|
||||
, mDisableBackButton(disableBackButton)
|
||||
, mDeleteOnButtonPress(deleteOnButtonPress)
|
||||
: GuiComponent(window), mBackground(window, ":/graphics/frame.svg"), mGrid(window, glm::ivec2{1, 2}),
|
||||
mHelpStyle(helpstyle), mDisableBackButton(disableBackButton), mDeleteOnButtonPress(deleteOnButtonPress)
|
||||
{
|
||||
// Adjust the width relative to the aspect ratio of the screen to make the GUI look coherent
|
||||
// regardless of screen type. The 1.778 aspect ratio value is the 16:9 reference.
|
||||
|
|
|
@ -87,27 +87,13 @@ GuiTextEditKeyboardPopup::GuiTextEditKeyboardPopup(
|
|||
const std::string &loadBtnHelpText,
|
||||
const std::string &clearBtnHelpText,
|
||||
const std::string &cancelBtnHelpText)
|
||||
: GuiComponent{window}
|
||||
, mBackground{window, ":/graphics/frame.svg"}
|
||||
, mGrid{window, glm::ivec2{1, (infoString != "" && defaultValue != "" ? 8 : 6)}}
|
||||
, mHelpStyle{helpstyle}
|
||||
, mInitValue{initValue}
|
||||
, mAcceptBtnHelpText{acceptBtnHelpText}
|
||||
, mSaveConfirmationText{saveConfirmationText}
|
||||
, mLoadBtnHelpText{loadBtnHelpText}
|
||||
, mClearBtnHelpText{clearBtnHelpText}
|
||||
, mCancelBtnHelpText{cancelBtnHelpText}
|
||||
, mOkCallback{okCallback}
|
||||
, mMultiLine{multiLine}
|
||||
, mComplexMode{(infoString != "" && defaultValue != "")}
|
||||
, mDeleteRepeat{false}
|
||||
, mShift{false}
|
||||
, mAlt{false}
|
||||
, mDeleteRepeatTimer{0}
|
||||
, mNavigationRepeatTimer{0}
|
||||
, mNavigationRepeatDirX{0}
|
||||
, mNavigationRepeatDirY{0}
|
||||
{
|
||||
: GuiComponent{window}, mBackground{window, ":/graphics/frame.svg"},
|
||||
mGrid{window, glm::ivec2{1, (infoString != "" && defaultValue != "" ? 8 : 6)}}, mHelpStyle{helpstyle},
|
||||
mInitValue{initValue}, mAcceptBtnHelpText{acceptBtnHelpText}, mSaveConfirmationText{saveConfirmationText},
|
||||
mLoadBtnHelpText{loadBtnHelpText}, mClearBtnHelpText{clearBtnHelpText}, mCancelBtnHelpText{cancelBtnHelpText},
|
||||
mOkCallback{okCallback}, mMultiLine{multiLine}, mComplexMode{(infoString != "" && defaultValue != "")},
|
||||
mDeleteRepeat{false}, mShift{false}, mAlt{false}, mDeleteRepeatTimer{0}, mNavigationRepeatTimer{0},
|
||||
mNavigationRepeatDirX{0}, mNavigationRepeatDirY{0} {
|
||||
addChild(&mBackground);
|
||||
addChild(&mGrid);
|
||||
|
||||
|
@ -178,20 +164,17 @@ GuiTextEditKeyboardPopup::GuiTextEditKeyboardPopup(
|
|||
upper = DELETE_SYMBOL;
|
||||
alted = DELETE_SYMBOL;
|
||||
altshifted = DELETE_SYMBOL;
|
||||
}
|
||||
else if (lower == "OK") {
|
||||
} else if (lower == "OK") {
|
||||
lower = OK_SYMBOL;
|
||||
upper = OK_SYMBOL;
|
||||
alted = OK_SYMBOL;
|
||||
altshifted = OK_SYMBOL;
|
||||
}
|
||||
else if (lower == "SPACE") {
|
||||
} else if (lower == "SPACE") {
|
||||
lower = " ";
|
||||
upper = " ";
|
||||
alted = " ";
|
||||
altshifted = " ";
|
||||
}
|
||||
else if (lower != "SHIFT" && lower.length() > 1) {
|
||||
} else if (lower != "SHIFT" && lower.length() > 1) {
|
||||
lower = (lower.c_str());
|
||||
upper = (upper.c_str());
|
||||
alted = (alted.c_str());
|
||||
|
@ -202,13 +185,11 @@ GuiTextEditKeyboardPopup::GuiTextEditKeyboardPopup(
|
|||
mShiftButton = std::make_shared<ButtonComponent>(
|
||||
mWindow, (SHIFT_SYMBOL), ("SHIFT"), [this] { shiftKeys(); }, false, true);
|
||||
button = mShiftButton;
|
||||
}
|
||||
else if (lower == "ALT") {
|
||||
} else if (lower == "ALT") {
|
||||
mAltButton = std::make_shared<ButtonComponent>(
|
||||
mWindow, (ALT_SYMBOL), ("ALT"), [this] { altKeys(); }, false, true);
|
||||
button = mAltButton;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
button = makeButton(lower, upper, alted, altshifted);
|
||||
}
|
||||
|
||||
|
@ -258,8 +239,7 @@ GuiTextEditKeyboardPopup::GuiTextEditKeyboardPopup(
|
|||
mKeyboardGrid->moveCursorTo(mHorizontalKeyCount - 1, -1, true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (config->isMappedLike("right", input)) {
|
||||
} else if (config->isMappedLike("right", input)) {
|
||||
if (mGrid.getSelectedComponent() == mKeyboardGrid) {
|
||||
mKeyboardGrid->moveCursorTo(0, -1);
|
||||
return true;
|
||||
|
@ -279,8 +259,7 @@ GuiTextEditKeyboardPopup::GuiTextEditKeyboardPopup(
|
|||
|
||||
setPosition((static_cast<float>(Renderer::getScreenWidth()) - mSize.x) / 2.0f,
|
||||
(static_cast<float>(Renderer::getScreenHeight()) - mSize.y) / 2.0f);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (mComplexMode)
|
||||
setSize(width, KEYBOARD_HEIGHT + mDefaultValue->getSize().y * 3.0f);
|
||||
else
|
||||
|
@ -291,8 +270,7 @@ GuiTextEditKeyboardPopup::GuiTextEditKeyboardPopup(
|
|||
}
|
||||
}
|
||||
|
||||
void GuiTextEditKeyboardPopup::onSizeChanged()
|
||||
{
|
||||
void GuiTextEditKeyboardPopup::onSizeChanged() {
|
||||
mBackground.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f});
|
||||
mText->setSize(mSize.x - KEYBOARD_PADDINGX - KEYBOARD_PADDINGX, mText->getSize().y);
|
||||
|
||||
|
@ -303,8 +281,7 @@ void GuiTextEditKeyboardPopup::onSizeChanged()
|
|||
mGrid.setRowHeightPerc(1, (mInfoString->getSize().y * 0.6f) / mSize.y);
|
||||
mGrid.setRowHeightPerc(2, (mDefaultValue->getSize().y * 1.6f) / mSize.y);
|
||||
mGrid.setRowHeightPerc(1, (mText->getSize().y * 1.0f) / mSize.y);
|
||||
}
|
||||
else if (mMultiLine) {
|
||||
} else if (mMultiLine) {
|
||||
mGrid.setRowHeightPerc(1, (mText->getSize().y * 1.15f) / mSize.y);
|
||||
}
|
||||
|
||||
|
@ -319,8 +296,7 @@ void GuiTextEditKeyboardPopup::onSizeChanged()
|
|||
mKeyboardGrid->setPosition(KEYBOARD_PADDINGX, pos.y);
|
||||
}
|
||||
|
||||
bool GuiTextEditKeyboardPopup::input(InputConfig* config, Input input)
|
||||
{
|
||||
bool GuiTextEditKeyboardPopup::input(InputConfig *config, Input input) {
|
||||
// Enter/return key or numpad enter key accepts the changes.
|
||||
if (config->getDeviceId() == DEVICE_KEYBOARD && mText->isEditing() && !mMultiLine &&
|
||||
input.value && (input.id == SDLK_RETURN || input.id == SDLK_KP_ENTER)) {
|
||||
|
@ -365,8 +341,7 @@ bool GuiTextEditKeyboardPopup::input(InputConfig* config, Input input)
|
|||
delete this;
|
||||
return true;
|
||||
}));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
delete this;
|
||||
return true;
|
||||
}
|
||||
|
@ -399,8 +374,7 @@ bool GuiTextEditKeyboardPopup::input(InputConfig* config, Input input)
|
|||
|
||||
if (!editing)
|
||||
mText->stopEditing();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mDeleteRepeat = false;
|
||||
}
|
||||
return true;
|
||||
|
@ -426,8 +400,7 @@ bool GuiTextEditKeyboardPopup::input(InputConfig* config, Input input)
|
|||
if (input.value) {
|
||||
mNavigationRepeatDirX = -1;
|
||||
mNavigationRepeatTimer = -(NAVIGATION_REPEAT_START_DELAY - NAVIGATION_REPEAT_SPEED);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mNavigationRepeatDirX = 0;
|
||||
}
|
||||
}
|
||||
|
@ -436,8 +409,7 @@ bool GuiTextEditKeyboardPopup::input(InputConfig* config, Input input)
|
|||
if (input.value) {
|
||||
mNavigationRepeatDirX = 1;
|
||||
mNavigationRepeatTimer = -(NAVIGATION_REPEAT_START_DELAY - NAVIGATION_REPEAT_SPEED);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mNavigationRepeatDirX = 0;
|
||||
}
|
||||
}
|
||||
|
@ -446,8 +418,7 @@ bool GuiTextEditKeyboardPopup::input(InputConfig* config, Input input)
|
|||
if (input.value) {
|
||||
mNavigationRepeatDirY = -1;
|
||||
mNavigationRepeatTimer = -(NAVIGATION_REPEAT_START_DELAY - NAVIGATION_REPEAT_SPEED);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mNavigationRepeatDirY = 0;
|
||||
}
|
||||
}
|
||||
|
@ -456,8 +427,7 @@ bool GuiTextEditKeyboardPopup::input(InputConfig* config, Input input)
|
|||
if (input.value) {
|
||||
mNavigationRepeatDirY = 1;
|
||||
mNavigationRepeatTimer = -(NAVIGATION_REPEAT_START_DELAY - NAVIGATION_REPEAT_SPEED);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mNavigationRepeatDirY = 0;
|
||||
}
|
||||
}
|
||||
|
@ -468,22 +438,19 @@ bool GuiTextEditKeyboardPopup::input(InputConfig* config, Input input)
|
|||
return false;
|
||||
}
|
||||
|
||||
void GuiTextEditKeyboardPopup::update(int deltaTime)
|
||||
{
|
||||
void GuiTextEditKeyboardPopup::update(int deltaTime) {
|
||||
updateNavigationRepeat(deltaTime);
|
||||
updateDeleteRepeat(deltaTime);
|
||||
GuiComponent::update(deltaTime);
|
||||
}
|
||||
|
||||
std::vector<HelpPrompt> GuiTextEditKeyboardPopup::getHelpPrompts()
|
||||
{
|
||||
std::vector<HelpPrompt> GuiTextEditKeyboardPopup::getHelpPrompts() {
|
||||
std::vector<HelpPrompt> prompts = mGrid.getHelpPrompts();
|
||||
|
||||
if (!mText->isEditing()) {
|
||||
prompts.push_back(HelpPrompt("lt", "shift"));
|
||||
prompts.push_back(HelpPrompt("rt", "alt"));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
prompts.push_back(HelpPrompt("a", mAcceptBtnHelpText));
|
||||
}
|
||||
|
||||
|
@ -513,8 +480,7 @@ std::vector<HelpPrompt> GuiTextEditKeyboardPopup::getHelpPrompts()
|
|||
return prompts;
|
||||
}
|
||||
|
||||
void GuiTextEditKeyboardPopup::updateDeleteRepeat(int deltaTime)
|
||||
{
|
||||
void GuiTextEditKeyboardPopup::updateDeleteRepeat(int deltaTime) {
|
||||
if (!mDeleteRepeat)
|
||||
return;
|
||||
|
||||
|
@ -534,8 +500,7 @@ void GuiTextEditKeyboardPopup::updateDeleteRepeat(int deltaTime)
|
|||
}
|
||||
}
|
||||
|
||||
void GuiTextEditKeyboardPopup::updateNavigationRepeat(int deltaTime)
|
||||
{
|
||||
void GuiTextEditKeyboardPopup::updateNavigationRepeat(int deltaTime) {
|
||||
if (mNavigationRepeatDirX == 0 && mNavigationRepeatDirY == 0)
|
||||
return;
|
||||
|
||||
|
@ -562,15 +527,13 @@ void GuiTextEditKeyboardPopup::updateNavigationRepeat(int deltaTime)
|
|||
}
|
||||
}
|
||||
|
||||
void GuiTextEditKeyboardPopup::shiftKeys()
|
||||
{
|
||||
void GuiTextEditKeyboardPopup::shiftKeys() {
|
||||
mShift = !mShift;
|
||||
|
||||
if (mShift) {
|
||||
mShiftButton->setFlatColorFocused(0xFF2222FF);
|
||||
mShiftButton->setFlatColorUnfocused(0xFF2222FF);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mShiftButton->setFlatColorFocused(0x878787FF);
|
||||
mShiftButton->setFlatColorUnfocused(0x60606025);
|
||||
}
|
||||
|
@ -584,8 +547,7 @@ void GuiTextEditKeyboardPopup::shiftKeys()
|
|||
if (mAlt) {
|
||||
altKeys();
|
||||
altKeys();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
for (auto &kb: mKeyboardButtons) {
|
||||
const std::string &text = mShift ? kb.shiftedKey : kb.key;
|
||||
auto sz = kb.button->getSize();
|
||||
|
@ -595,15 +557,13 @@ void GuiTextEditKeyboardPopup::shiftKeys()
|
|||
}
|
||||
}
|
||||
|
||||
void GuiTextEditKeyboardPopup::altKeys()
|
||||
{
|
||||
void GuiTextEditKeyboardPopup::altKeys() {
|
||||
mAlt = !mAlt;
|
||||
|
||||
if (mAlt) {
|
||||
mAltButton->setFlatColorFocused(0xFF2222FF);
|
||||
mAltButton->setFlatColorUnfocused(0xFF2222FF);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mAltButton->setFlatColorFocused(0x878787FF);
|
||||
mAltButton->setFlatColorUnfocused(0x60606025);
|
||||
}
|
||||
|
@ -617,8 +577,7 @@ void GuiTextEditKeyboardPopup::altKeys()
|
|||
if (mShift) {
|
||||
shiftKeys();
|
||||
shiftKeys();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
for (auto &kb: mKeyboardButtons) {
|
||||
const std::string &text = mAlt ? kb.altedKey : kb.key;
|
||||
auto sz = kb.button->getSize();
|
||||
|
@ -628,8 +587,7 @@ void GuiTextEditKeyboardPopup::altKeys()
|
|||
}
|
||||
}
|
||||
|
||||
void GuiTextEditKeyboardPopup::altShiftKeys()
|
||||
{
|
||||
void GuiTextEditKeyboardPopup::altShiftKeys() {
|
||||
for (auto &kb: mKeyboardButtons) {
|
||||
const std::string &text = kb.altshiftedKey;
|
||||
auto sz = kb.button->getSize();
|
||||
|
@ -642,8 +600,7 @@ std::shared_ptr<ButtonComponent> GuiTextEditKeyboardPopup::makeButton(
|
|||
const std::string &key,
|
||||
const std::string &shiftedKey,
|
||||
const std::string &altedKey,
|
||||
const std::string& altshiftedKey)
|
||||
{
|
||||
const std::string &altshiftedKey) {
|
||||
std::shared_ptr<ButtonComponent> button = std::make_shared<ButtonComponent>(
|
||||
mWindow, key, key,
|
||||
[this, key, shiftedKey, altedKey, altshiftedKey] {
|
||||
|
@ -651,29 +608,24 @@ std::shared_ptr<ButtonComponent> GuiTextEditKeyboardPopup::makeButton(
|
|||
mOkCallback(mText->getValue());
|
||||
delete this;
|
||||
return;
|
||||
}
|
||||
else if (key == (DELETE_SYMBOL) || key == "DEL") {
|
||||
} else if (key == (DELETE_SYMBOL) || key == "DEL") {
|
||||
mText->startEditing();
|
||||
mText->textInput("\b");
|
||||
mText->stopEditing();
|
||||
return;
|
||||
}
|
||||
else if (key == "SPACE" || key == " ") {
|
||||
} else if (key == "SPACE" || key == " ") {
|
||||
mText->startEditing();
|
||||
mText->textInput(" ");
|
||||
mText->stopEditing();
|
||||
return;
|
||||
}
|
||||
else if (key == "LOAD") {
|
||||
} else if (key == "LOAD") {
|
||||
mText->setValue(mDefaultValue->getValue());
|
||||
mText->setCursor(mDefaultValue->getValue().size());
|
||||
return;
|
||||
}
|
||||
else if (key == "CLEAR") {
|
||||
} else if (key == "CLEAR") {
|
||||
mText->setValue("");
|
||||
return;
|
||||
}
|
||||
else if (key == "CANCEL") {
|
||||
} else if (key == "CANCEL") {
|
||||
delete this;
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -15,8 +15,7 @@
|
|||
#include "components/ComponentGrid.h"
|
||||
#include "components/TextEditComponent.h"
|
||||
|
||||
class GuiTextEditKeyboardPopup : public GuiComponent
|
||||
{
|
||||
class GuiTextEditKeyboardPopup : public GuiComponent {
|
||||
public:
|
||||
GuiTextEditKeyboardPopup(Window *window,
|
||||
const HelpStyle &helpstyle,
|
||||
|
@ -33,44 +32,47 @@ public:
|
|||
const std::string &cancelBtnHelpText = "DISCARD CHANGES");
|
||||
|
||||
void onSizeChanged() override;
|
||||
|
||||
bool input(InputConfig *config, Input input) override;
|
||||
|
||||
void update(int deltaTime) override;
|
||||
|
||||
std::vector<HelpPrompt> getHelpPrompts() override;
|
||||
|
||||
HelpStyle getHelpStyle() override { return mHelpStyle; }
|
||||
|
||||
private:
|
||||
class KeyboardButton
|
||||
{
|
||||
class KeyboardButton {
|
||||
public:
|
||||
std::shared_ptr<ButtonComponent> button;
|
||||
const std::string key;
|
||||
const std::string shiftedKey;
|
||||
const std::string altedKey;
|
||||
const std::string altshiftedKey;
|
||||
|
||||
KeyboardButton(const std::shared_ptr<ButtonComponent> b,
|
||||
const std::string &k,
|
||||
const std::string &sk,
|
||||
const std::string &ak,
|
||||
const std::string &ask)
|
||||
: button{b}
|
||||
, key{k}
|
||||
, shiftedKey{sk}
|
||||
, altedKey{ak}
|
||||
, altshiftedKey{ask} {};
|
||||
: button{b}, key{k}, shiftedKey{sk}, altedKey{ak}, altshiftedKey{ask} {};
|
||||
};
|
||||
|
||||
void updateDeleteRepeat(int deltaTime);
|
||||
|
||||
void updateNavigationRepeat(int deltaTime);
|
||||
|
||||
void shiftKeys();
|
||||
|
||||
void altKeys();
|
||||
|
||||
void altShiftKeys();
|
||||
|
||||
std::shared_ptr<ButtonComponent> makeButton(const std::string &key,
|
||||
const std::string &shiftedKey,
|
||||
const std::string &altedKey,
|
||||
const std::string &altshiftedKey);
|
||||
|
||||
std::vector<KeyboardButton> mKeyboardButtons;
|
||||
|
||||
std::shared_ptr<ButtonComponent> mShiftButton;
|
||||
|
|
|
@ -28,22 +28,12 @@ GuiTextEditPopup::GuiTextEditPopup(Window* window,
|
|||
const std::string &loadBtnHelpText,
|
||||
const std::string &clearBtnHelpText,
|
||||
const std::string &cancelBtnHelpText)
|
||||
: GuiComponent{window}
|
||||
, mBackground{window, ":/graphics/frame.svg"}
|
||||
, mGrid{window, glm::ivec2{1, (infoString != "" && defaultValue != "" ? 5 : 3)}}
|
||||
, mHelpStyle{helpstyle}
|
||||
, mInitValue{initValue}
|
||||
, mAcceptBtnText{acceptBtnText}
|
||||
, mSaveConfirmationText{saveConfirmationText}
|
||||
, mLoadBtnHelpText{loadBtnHelpText}
|
||||
, mClearBtnHelpText{clearBtnHelpText}
|
||||
, mCancelBtnHelpText{cancelBtnHelpText}
|
||||
, mOkCallback{okCallback}
|
||||
, mMultiLine{multiLine}
|
||||
, mComplexMode{(infoString != "" && defaultValue != "")}
|
||||
, mDeleteRepeat{false}
|
||||
, mDeleteRepeatTimer{0}
|
||||
{
|
||||
: GuiComponent{window}, mBackground{window, ":/graphics/frame.svg"},
|
||||
mGrid{window, glm::ivec2{1, (infoString != "" && defaultValue != "" ? 5 : 3)}}, mHelpStyle{helpstyle},
|
||||
mInitValue{initValue}, mAcceptBtnText{acceptBtnText}, mSaveConfirmationText{saveConfirmationText},
|
||||
mLoadBtnHelpText{loadBtnHelpText}, mClearBtnHelpText{clearBtnHelpText}, mCancelBtnHelpText{cancelBtnHelpText},
|
||||
mOkCallback{okCallback}, mMultiLine{multiLine}, mComplexMode{(infoString != "" && defaultValue != "")},
|
||||
mDeleteRepeat{false}, mDeleteRepeatTimer{0} {
|
||||
addChild(&mBackground);
|
||||
addChild(&mGrid);
|
||||
|
||||
|
@ -119,8 +109,7 @@ GuiTextEditPopup::GuiTextEditPopup(Window* window,
|
|||
mButtonGrid->getSize().y + mButtonGrid->getSize().y * 1.85f);
|
||||
setPosition((Renderer::getScreenWidth() - mSize.x) / 2.0f,
|
||||
(Renderer::getScreenHeight() - mSize.y) / 2.0f);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
float width = glm::clamp(0.54f * aspectValue, 0.20f, 0.70f) * Renderer::getScreenWidth();
|
||||
|
||||
setSize(width, mTitle->getFont()->getHeight() + textHeight + mButtonGrid->getSize().y +
|
||||
|
@ -135,8 +124,7 @@ GuiTextEditPopup::GuiTextEditPopup(Window* window,
|
|||
mText->startEditing();
|
||||
}
|
||||
|
||||
void GuiTextEditPopup::onSizeChanged()
|
||||
{
|
||||
void GuiTextEditPopup::onSizeChanged() {
|
||||
mBackground.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f});
|
||||
mText->setSize(mSize.x - 40.0f * Renderer::getScreenHeightModifier(), mText->getSize().y);
|
||||
|
||||
|
@ -150,8 +138,7 @@ void GuiTextEditPopup::onSizeChanged()
|
|||
mGrid.setSize(mSize);
|
||||
}
|
||||
|
||||
bool GuiTextEditPopup::input(InputConfig* config, Input input)
|
||||
{
|
||||
bool GuiTextEditPopup::input(InputConfig *config, Input input) {
|
||||
// Enter key (main key or via numpad) accepts the changes.
|
||||
if (config->getDeviceId() == DEVICE_KEYBOARD && mText->isEditing() && !mMultiLine &&
|
||||
input.value && (input.id == SDLK_RETURN || input.id == SDLK_KP_ENTER)) {
|
||||
|
@ -190,8 +177,7 @@ bool GuiTextEditPopup::input(InputConfig* config, Input input)
|
|||
delete this;
|
||||
return true;
|
||||
}));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
delete this;
|
||||
return true;
|
||||
}
|
||||
|
@ -216,8 +202,7 @@ bool GuiTextEditPopup::input(InputConfig* config, Input input)
|
|||
|
||||
if (!editing)
|
||||
mText->stopEditing();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
mDeleteRepeat = false;
|
||||
}
|
||||
return true;
|
||||
|
@ -243,14 +228,12 @@ bool GuiTextEditPopup::input(InputConfig* config, Input input)
|
|||
return false;
|
||||
}
|
||||
|
||||
void GuiTextEditPopup::update(int deltaTime)
|
||||
{
|
||||
void GuiTextEditPopup::update(int deltaTime) {
|
||||
updateDeleteRepeat(deltaTime);
|
||||
GuiComponent::update(deltaTime);
|
||||
}
|
||||
|
||||
std::vector<HelpPrompt> GuiTextEditPopup::getHelpPrompts()
|
||||
{
|
||||
std::vector<HelpPrompt> GuiTextEditPopup::getHelpPrompts() {
|
||||
std::vector<HelpPrompt> prompts = mGrid.getHelpPrompts();
|
||||
|
||||
if (mText->isEditing())
|
||||
|
@ -262,8 +245,7 @@ std::vector<HelpPrompt> GuiTextEditPopup::getHelpPrompts()
|
|||
return prompts;
|
||||
}
|
||||
|
||||
void GuiTextEditPopup::updateDeleteRepeat(int deltaTime)
|
||||
{
|
||||
void GuiTextEditPopup::updateDeleteRepeat(int deltaTime) {
|
||||
if (!mDeleteRepeat)
|
||||
return;
|
||||
|
||||
|
|
|
@ -15,8 +15,7 @@
|
|||
#include "components/ComponentGrid.h"
|
||||
#include "components/TextEditComponent.h"
|
||||
|
||||
class GuiTextEditPopup : public GuiComponent
|
||||
{
|
||||
class GuiTextEditPopup : public GuiComponent {
|
||||
public:
|
||||
GuiTextEditPopup(Window *window,
|
||||
const HelpStyle &helpstyle,
|
||||
|
@ -33,10 +32,13 @@ public:
|
|||
const std::string &cancelBtnHelpText = "DISCARD CHANGES");
|
||||
|
||||
void onSizeChanged() override;
|
||||
|
||||
bool input(InputConfig *config, Input input) override;
|
||||
|
||||
void update(int deltaTime) override;
|
||||
|
||||
std::vector<HelpPrompt> getHelpPrompts() override;
|
||||
|
||||
HelpStyle getHelpStyle() override { return mHelpStyle; }
|
||||
|
||||
private:
|
||||
|
|
|
@ -98,10 +98,12 @@
|
|||
<extension>.cmd .CMD .7z .7Z .zip .ZIP</extension>
|
||||
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.dylib %ROM%</command>
|
||||
<command label="MAME 2000">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2000_libretro.dylib %ROM%</command>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.dylib %ROM%</command>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="MAME 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2010_libretro.dylib %ROM%</command>
|
||||
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbneo_libretro.dylib %ROM%</command>
|
||||
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.dylib %ROM%</command>
|
||||
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.dylib %ROM%
|
||||
</command>
|
||||
<platform>arcade</platform>
|
||||
<theme>arcade</theme>
|
||||
</system>
|
||||
|
@ -218,10 +220,15 @@
|
|||
<name>c64</name>
|
||||
<fullname>Commodore 64</fullname>
|
||||
<path>%ROMPATH%/c64</path>
|
||||
<extension>.bin .BIN .cmd .CMD .crt .CRT .d2m .D2M .d4m .D4M .d64 .D64 .d6z .D6Z .d71 .D71 .d7z .D7Z .d80 .D80 .d81 .D81 .d82 .D82 .d8z .D8Z .g41 .G41 .g4z .G4Z .g64 .G64 .g6z .G6Z .gz .GZ .lnx .LNX .m3u .M3U .nbz .NBZ .nib .NIB .p00 .P00 .prg .PRG .t64 .T64 .tap .TAP .vfl .VFL .vsf .VSF .x64 .X64 .x6z .X6Z .7z .7Z .zip .ZIP</extension>
|
||||
<command label="VICE x64sc Accurate">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_x64sc_libretro.dylib %ROM%</command>
|
||||
<extension>.bin .BIN .cmd .CMD .crt .CRT .d2m .D2M .d4m .D4M .d64 .D64 .d6z .D6Z .d71 .D71 .d7z .D7Z .d80 .D80
|
||||
.d81 .D81 .d82 .D82 .d8z .D8Z .g41 .G41 .g4z .G4Z .g64 .G64 .g6z .G6Z .gz .GZ .lnx .LNX .m3u .M3U .nbz .NBZ
|
||||
.nib .NIB .p00 .P00 .prg .PRG .t64 .T64 .tap .TAP .vfl .VFL .vsf .VSF .x64 .X64 .x6z .X6Z .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="VICE x64sc Accurate">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_x64sc_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="VICE x64 Fast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_x64_libretro.dylib %ROM%</command>
|
||||
<command label="VICE x64 SuperCPU">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_xscpu64_libretro.dylib %ROM%</command>
|
||||
<command label="VICE x64 SuperCPU">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_xscpu64_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="VICE x128">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_x128_libretro.dylib %ROM%</command>
|
||||
<command label="Frodo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/frodo_libretro.dylib %ROM%</command>
|
||||
<platform>c64</platform>
|
||||
|
@ -354,11 +361,20 @@
|
|||
<fullname>FinalBurn Alpha</fullname>
|
||||
<path>%ROMPATH%/fba</path>
|
||||
<extension>.iso .ISO .7z .7Z .zip .ZIP</extension>
|
||||
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.dylib %ROM%</command>
|
||||
<command label="FB Alpha 2012 Neo Geo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_neogeo_libretro.dylib %ROM%</command>
|
||||
<command label="FB Alpha 2012 CPS-1">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps1_libretro.dylib %ROM%</command>
|
||||
<command label="FB Alpha 2012 CPS-2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps2_libretro.dylib %ROM%</command>
|
||||
<command label="FB Alpha 2012 CPS-3">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps3_libretro.dylib %ROM%</command>
|
||||
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="FB Alpha 2012 Neo Geo">%EMULATOR_RETROARCH% -L
|
||||
%CORE_RETROARCH%/fbalpha2012_neogeo_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="FB Alpha 2012 CPS-1">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps1_libretro.dylib
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="FB Alpha 2012 CPS-2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps2_libretro.dylib
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="FB Alpha 2012 CPS-3">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps3_libretro.dylib
|
||||
%ROM%
|
||||
</command>
|
||||
<platform>arcade</platform>
|
||||
<theme>fba</theme>
|
||||
</system>
|
||||
|
@ -438,9 +454,14 @@
|
|||
<name>genesis</name>
|
||||
<fullname>Sega Genesis</fullname>
|
||||
<path>%ROMPATH%/genesis</path>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.dylib %ROM%</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.dylib %ROM%</command>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx
|
||||
.MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L
|
||||
%CORE_RETROARCH%/genesis_plus_gx_wide_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.dylib %ROM%</command>
|
||||
<command label="BlastEm">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/blastem_libretro.dylib %ROM%</command>
|
||||
<platform>genesis</platform>
|
||||
|
@ -505,12 +526,14 @@
|
|||
<fullname>Multiple Arcade Machine Emulator</fullname>
|
||||
<path>%ROMPATH%/mame</path>
|
||||
<extension>.cmd .CMD .7z .7Z .zip .ZIP</extension>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.dylib %ROM%</command>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="MAME 2000">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2000_libretro.dylib %ROM%</command>
|
||||
<command label="MAME 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2010_libretro.dylib %ROM%</command>
|
||||
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.dylib %ROM%</command>
|
||||
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbneo_libretro.dylib %ROM%</command>
|
||||
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.dylib %ROM%</command>
|
||||
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.dylib %ROM%
|
||||
</command>
|
||||
<platform>arcade</platform>
|
||||
<theme>mame</theme>
|
||||
</system>
|
||||
|
@ -536,9 +559,14 @@
|
|||
<name>mastersystem</name>
|
||||
<fullname>Sega Master System</fullname>
|
||||
<path>%ROMPATH%/mastersystem</path>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .col .COL .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .rom .ROM .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.dylib %ROM%</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.dylib %ROM%</command>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .col .COL .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md
|
||||
.MD .mdx .MDX .rom .ROM .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L
|
||||
%CORE_RETROARCH%/genesis_plus_gx_wide_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="SMS Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/smsplus_libretro.dylib %ROM%</command>
|
||||
<command label="Gearsystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.dylib %ROM%</command>
|
||||
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.dylib %ROM%</command>
|
||||
|
@ -567,9 +595,14 @@
|
|||
<name>megadrive</name>
|
||||
<fullname>Sega Mega Drive</fullname>
|
||||
<path>%ROMPATH%/megadrive</path>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.dylib %ROM%</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.dylib %ROM%</command>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx
|
||||
.MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L
|
||||
%CORE_RETROARCH%/genesis_plus_gx_wide_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.dylib %ROM%</command>
|
||||
<command label="BlastEm">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/blastem_libretro.dylib %ROM%</command>
|
||||
<platform>megadrive</platform>
|
||||
|
@ -818,9 +851,13 @@
|
|||
<name>pcengine</name>
|
||||
<fullname>NEC PC Engine</fullname>
|
||||
<path>%ROMPATH%/pcengine</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.dylib %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.dylib %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.dylib
|
||||
%ROM%
|
||||
</command>
|
||||
<platform>pcengine</platform>
|
||||
<theme>pcengine</theme>
|
||||
</system>
|
||||
|
@ -828,9 +865,13 @@
|
|||
<name>pcenginecd</name>
|
||||
<fullname>NEC PC Engine CD</fullname>
|
||||
<path>%ROMPATH%/pcenginecd</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.dylib %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.dylib %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.dylib
|
||||
%ROM%
|
||||
</command>
|
||||
<platform>pcenginecd</platform>
|
||||
<theme>pcenginecd</theme>
|
||||
</system>
|
||||
|
@ -910,10 +951,14 @@
|
|||
<name>psx</name>
|
||||
<fullname>Sony PlayStation</fullname>
|
||||
<path>%ROMPATH%/psx</path>
|
||||
<extension>.bin .BIN .cbn .CBN .ccd .CCD .chd .CHD .cue .CUE .ecm .ECM .exe .EXE .img .IMG .iso .ISO .m3u .M3U .mdf .MDF .mds .MDS .pbp .PBP .psexe .PSEXE .psf .PSF .toc .TOC .z .Z .znx .ZNX .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .cbn .CBN .ccd .CCD .chd .CHD .cue .CUE .ecm .ECM .exe .EXE .img .IMG .iso .ISO .m3u .M3U
|
||||
.mdf .MDF .mds .MDS .pbp .PBP .psexe .PSEXE .psf .PSF .toc .TOC .z .Z .znx .ZNX .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PSX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_psx_libretro.dylib %ROM%</command>
|
||||
<command label="Beetle PSX HW">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_psx_hw_libretro.dylib %ROM%</command>
|
||||
<command label="PCSX ReARMed">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx_rearmed_libretro.dylib %ROM%</command>
|
||||
<command label="Beetle PSX HW">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_psx_hw_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="PCSX ReARMed">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx_rearmed_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="DuckStation">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/duckstation_libretro.dylib %ROM%</command>
|
||||
<platform>psx</platform>
|
||||
<theme>psx</theme>
|
||||
|
@ -1021,11 +1066,15 @@
|
|||
<name>snes</name>
|
||||
<fullname>Nintendo SNES (Super Nintendo)</fullname>
|
||||
<path>%ROMPATH%/snes</path>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC .smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC
|
||||
.smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Snes9x - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x_libretro.dylib %ROM%</command>
|
||||
<command label="Snes9x 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x2010_libretro.dylib %ROM%</command>
|
||||
<command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.dylib %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_mercury_accuracy_libretro.dylib %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L
|
||||
%CORE_RETROARCH%/bsnes_mercury_accuracy_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.dylib %ROM%</command>
|
||||
<platform>snes</platform>
|
||||
<theme>snes</theme>
|
||||
|
@ -1034,11 +1083,15 @@
|
|||
<name>snesna</name>
|
||||
<fullname>Nintendo SNES (Super Nintendo)</fullname>
|
||||
<path>%ROMPATH%/snesna</path>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC .smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC
|
||||
.smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Snes9x - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x_libretro.dylib %ROM%</command>
|
||||
<command label="Snes9x 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x2010_libretro.dylib %ROM%</command>
|
||||
<command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.dylib %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_mercury_accuracy_libretro.dylib %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L
|
||||
%CORE_RETROARCH%/bsnes_mercury_accuracy_libretro.dylib %ROM%
|
||||
</command>
|
||||
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.dylib %ROM%</command>
|
||||
<platform>snes</platform>
|
||||
<theme>snesna</theme>
|
||||
|
@ -1093,7 +1146,9 @@
|
|||
<fullname>NEC SuperGrafx</fullname>
|
||||
<path>%ROMPATH%/supergrafx</path>
|
||||
<extension>.pce .PCE .sgx .SGX .cue .CUE .ccd .CCD .chd .CHD .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Beetle SuperGrafx">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supergrafx_libretro.dylib %ROM%</command>
|
||||
<command label="Beetle SuperGrafx">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supergrafx_libretro.dylib
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.dylib %ROM%</command>
|
||||
<platform>supergrafx</platform>
|
||||
<theme>supergrafx</theme>
|
||||
|
@ -1120,9 +1175,13 @@
|
|||
<name>tg16</name>
|
||||
<fullname>NEC TurboGrafx-16</fullname>
|
||||
<path>%ROMPATH%/tg16</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.dylib %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.dylib %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.dylib
|
||||
%ROM%
|
||||
</command>
|
||||
<platform>pcengine</platform>
|
||||
<theme>tg16</theme>
|
||||
</system>
|
||||
|
@ -1130,9 +1189,13 @@
|
|||
<name>tg-cd</name>
|
||||
<fullname>NEC TurboGrafx-CD</fullname>
|
||||
<path>%ROMPATH%/tg-cd</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.dylib %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.dylib %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.dylib
|
||||
%ROM%
|
||||
</command>
|
||||
<theme>tg-cd</theme>
|
||||
</system>
|
||||
<system>
|
||||
|
|
|
@ -15,7 +15,8 @@
|
|||
<fullname>Nintendo 64DD</fullname>
|
||||
<path>%ROMPATH%/64dd</path>
|
||||
<extension>.n64 .N64 .v64 .V64 .z64 .Z64 .bin .BIN .u1 .U1 .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Mupen64Plus-Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mupen64plus_next_libretro.so %ROM%</command>
|
||||
<command label="Mupen64Plus-Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mupen64plus_next_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="ParaLLEl N64">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/parallel_n64_libretro.so %ROM%</command>
|
||||
<platform>n64</platform>
|
||||
<theme>64dd</theme>
|
||||
|
@ -99,7 +100,8 @@
|
|||
<extension>.cmd .CMD .7z .7Z .zip .ZIP</extension>
|
||||
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command>
|
||||
<command label="MAME 2000">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2000_libretro.so %ROM%</command>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.so %ROM%</command>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="MAME 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2010_libretro.so %ROM%</command>
|
||||
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbneo_libretro.so %ROM%</command>
|
||||
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM%</command>
|
||||
|
@ -219,10 +221,15 @@
|
|||
<name>c64</name>
|
||||
<fullname>Commodore 64</fullname>
|
||||
<path>%ROMPATH%/c64</path>
|
||||
<extension>.bin .BIN .cmd .CMD .crt .CRT .d2m .D2M .d4m .D4M .d64 .D64 .d6z .D6Z .d71 .D71 .d7z .D7Z .d80 .D80 .d81 .D81 .d82 .D82 .d8z .D8Z .g41 .G41 .g4z .G4Z .g64 .G64 .g6z .G6Z .gz .GZ .lnx .LNX .m3u .M3U .nbz .NBZ .nib .NIB .p00 .P00 .prg .PRG .t64 .T64 .tap .TAP .vfl .VFL .vsf .VSF .x64 .X64 .x6z .X6Z .7z .7Z .zip .ZIP</extension>
|
||||
<command label="VICE x64sc Accurate">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_x64sc_libretro.so %ROM%</command>
|
||||
<extension>.bin .BIN .cmd .CMD .crt .CRT .d2m .D2M .d4m .D4M .d64 .D64 .d6z .D6Z .d71 .D71 .d7z .D7Z .d80 .D80
|
||||
.d81 .D81 .d82 .D82 .d8z .D8Z .g41 .G41 .g4z .G4Z .g64 .G64 .g6z .G6Z .gz .GZ .lnx .LNX .m3u .M3U .nbz .NBZ
|
||||
.nib .NIB .p00 .P00 .prg .PRG .t64 .T64 .tap .TAP .vfl .VFL .vsf .VSF .x64 .X64 .x6z .X6Z .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="VICE x64sc Accurate">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_x64sc_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="VICE x64 Fast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_x64_libretro.so %ROM%</command>
|
||||
<command label="VICE x64 SuperCPU">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_xscpu64_libretro.so %ROM%</command>
|
||||
<command label="VICE x64 SuperCPU">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_xscpu64_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="VICE x128">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_x128_libretro.so %ROM%</command>
|
||||
<command label="Frodo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/frodo_libretro.so %ROM%</command>
|
||||
<platform>c64</platform>
|
||||
|
@ -356,10 +363,18 @@
|
|||
<path>%ROMPATH%/fba</path>
|
||||
<extension>.iso .ISO .7z .7Z .zip .ZIP</extension>
|
||||
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM%</command>
|
||||
<command label="FB Alpha 2012 Neo Geo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_neogeo_libretro.so %ROM%</command>
|
||||
<command label="FB Alpha 2012 CPS-1">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps1_libretro.so %ROM%</command>
|
||||
<command label="FB Alpha 2012 CPS-2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps2_libretro.so %ROM%</command>
|
||||
<command label="FB Alpha 2012 CPS-3">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps3_libretro.so %ROM%</command>
|
||||
<command label="FB Alpha 2012 Neo Geo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_neogeo_libretro.so
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="FB Alpha 2012 CPS-1">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps1_libretro.so
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="FB Alpha 2012 CPS-2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps2_libretro.so
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="FB Alpha 2012 CPS-3">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_cps3_libretro.so
|
||||
%ROM%
|
||||
</command>
|
||||
<platform>arcade</platform>
|
||||
<theme>fba</theme>
|
||||
</system>
|
||||
|
@ -439,9 +454,14 @@
|
|||
<name>genesis</name>
|
||||
<fullname>Sega Genesis</fullname>
|
||||
<path>%ROMPATH%/genesis</path>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.so %ROM%</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.so %ROM%</command>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx
|
||||
.MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.so
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command>
|
||||
<command label="BlastEm">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/blastem_libretro.so %ROM%</command>
|
||||
<platform>genesis</platform>
|
||||
|
@ -506,7 +526,8 @@
|
|||
<fullname>Multiple Arcade Machine Emulator</fullname>
|
||||
<path>%ROMPATH%/mame</path>
|
||||
<extension>.cmd .CMD .7z .7Z .zip .ZIP</extension>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.so %ROM%</command>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="MAME 2000">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2000_libretro.so %ROM%</command>
|
||||
<command label="MAME 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2010_libretro.so %ROM%</command>
|
||||
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command>
|
||||
|
@ -537,9 +558,14 @@
|
|||
<name>mastersystem</name>
|
||||
<fullname>Sega Master System</fullname>
|
||||
<path>%ROMPATH%/mastersystem</path>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .col .COL .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .rom .ROM .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.so %ROM%</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.so %ROM%</command>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .col .COL .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md
|
||||
.MD .mdx .MDX .rom .ROM .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.so
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="SMS Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/smsplus_libretro.so %ROM%</command>
|
||||
<command label="Gearsystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.so %ROM%</command>
|
||||
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command>
|
||||
|
@ -568,9 +594,14 @@
|
|||
<name>megadrive</name>
|
||||
<fullname>Sega Mega Drive</fullname>
|
||||
<path>%ROMPATH%/megadrive</path>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.so %ROM%</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.so %ROM%</command>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx
|
||||
.MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.so
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command>
|
||||
<command label="BlastEm">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/blastem_libretro.so %ROM%</command>
|
||||
<platform>megadrive</platform>
|
||||
|
@ -662,7 +693,8 @@
|
|||
<fullname>Nintendo 64</fullname>
|
||||
<path>%ROMPATH%/n64</path>
|
||||
<extension>.n64 .N64 .v64 .V64 .z64 .Z64 .bin .BIN .u1 .U1 .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Mupen64Plus-Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mupen64plus_next_libretro.so %ROM%</command>
|
||||
<command label="Mupen64Plus-Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mupen64plus_next_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="ParaLLEl N64">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/parallel_n64_libretro.so %ROM%</command>
|
||||
<platform>n64</platform>
|
||||
<theme>n64</theme>
|
||||
|
@ -820,9 +852,12 @@
|
|||
<name>pcengine</name>
|
||||
<fullname>NEC PC Engine</fullname>
|
||||
<path>%ROMPATH%/pcengine</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%
|
||||
</command>
|
||||
<platform>pcengine</platform>
|
||||
<theme>pcengine</theme>
|
||||
</system>
|
||||
|
@ -830,9 +865,12 @@
|
|||
<name>pcenginecd</name>
|
||||
<fullname>NEC PC Engine CD</fullname>
|
||||
<path>%ROMPATH%/pcenginecd</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%
|
||||
</command>
|
||||
<platform>pcenginecd</platform>
|
||||
<theme>pcenginecd</theme>
|
||||
</system>
|
||||
|
@ -912,9 +950,12 @@
|
|||
<name>psx</name>
|
||||
<fullname>Sony PlayStation</fullname>
|
||||
<path>%ROMPATH%/psx</path>
|
||||
<extension>.bin .BIN .cbn .CBN .ccd .CCD .chd .CHD .cue .CUE .ecm .ECM .exe .EXE .img .IMG .iso .ISO .m3u .M3U .mdf .MDF .mds .MDS .pbp .PBP .psexe .PSEXE .psf .PSF .toc .TOC .z .Z .znx .ZNX .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .cbn .CBN .ccd .CCD .chd .CHD .cue .CUE .ecm .ECM .exe .EXE .img .IMG .iso .ISO .m3u .M3U
|
||||
.mdf .MDF .mds .MDS .pbp .PBP .psexe .PSEXE .psf .PSF .toc .TOC .z .Z .znx .ZNX .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PSX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_psx_libretro.so %ROM%</command>
|
||||
<command label="Beetle PSX HW">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_psx_hw_libretro.so %ROM%</command>
|
||||
<command label="Beetle PSX HW">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_psx_hw_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="PCSX ReARMed">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx_rearmed_libretro.so %ROM%</command>
|
||||
<command label="DuckStation">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/duckstation_libretro.so %ROM%</command>
|
||||
<platform>psx</platform>
|
||||
|
@ -1023,12 +1064,18 @@
|
|||
<name>snes</name>
|
||||
<fullname>Nintendo SNES (Super Nintendo)</fullname>
|
||||
<path>%ROMPATH%/snes</path>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC .smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC
|
||||
.smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Snes9x - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x_libretro.so %ROM%</command>
|
||||
<command label="Snes9x 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x2010_libretro.so %ROM%</command>
|
||||
<command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_mercury_accuracy_libretro.so %ROM%</command>
|
||||
<command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L
|
||||
%CORE_RETROARCH%/bsnes_mercury_accuracy_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command>
|
||||
<platform>snes</platform>
|
||||
<theme>snes</theme>
|
||||
|
@ -1037,12 +1084,18 @@
|
|||
<name>snesna</name>
|
||||
<fullname>Nintendo SNES (Super Nintendo)</fullname>
|
||||
<path>%ROMPATH%/snesna</path>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC .smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC
|
||||
.smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Snes9x - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x_libretro.so %ROM%</command>
|
||||
<command label="Snes9x 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x2010_libretro.so %ROM%</command>
|
||||
<command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_mercury_accuracy_libretro.so %ROM%</command>
|
||||
<command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L
|
||||
%CORE_RETROARCH%/bsnes_mercury_accuracy_libretro.so %ROM%
|
||||
</command>
|
||||
<command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command>
|
||||
<platform>snes</platform>
|
||||
<theme>snesna</theme>
|
||||
|
@ -1097,7 +1150,9 @@
|
|||
<fullname>NEC SuperGrafx</fullname>
|
||||
<path>%ROMPATH%/supergrafx</path>
|
||||
<extension>.pce .PCE .sgx .SGX .cue .CUE .ccd .CCD .chd .CHD .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Beetle SuperGrafx">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supergrafx_libretro.so %ROM%</command>
|
||||
<command label="Beetle SuperGrafx">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supergrafx_libretro.so
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command>
|
||||
<platform>supergrafx</platform>
|
||||
<theme>supergrafx</theme>
|
||||
|
@ -1124,9 +1179,12 @@
|
|||
<name>tg16</name>
|
||||
<fullname>NEC TurboGrafx-16</fullname>
|
||||
<path>%ROMPATH%/tg16</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%
|
||||
</command>
|
||||
<platform>pcengine</platform>
|
||||
<theme>tg16</theme>
|
||||
</system>
|
||||
|
@ -1134,9 +1192,12 @@
|
|||
<name>tg-cd</name>
|
||||
<fullname>NEC TurboGrafx-CD</fullname>
|
||||
<path>%ROMPATH%/tg-cd</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%
|
||||
</command>
|
||||
<platform>pcenginecd</platform>
|
||||
<theme>tg-cd</theme>
|
||||
</system>
|
||||
|
|
|
@ -15,7 +15,8 @@
|
|||
<fullname>Nintendo 64DD</fullname>
|
||||
<path>%ROMPATH%\64dd</path>
|
||||
<extension>.n64 .N64 .v64 .V64 .z64 .Z64 .bin .BIN .u1 .U1 .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Mupen64Plus-Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mupen64plus_next_libretro.dll %ROM%</command>
|
||||
<command label="Mupen64Plus-Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mupen64plus_next_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="ParaLLEl N64">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\parallel_n64_libretro.dll %ROM%</command>
|
||||
<platform>n64</platform>
|
||||
<theme>64dd</theme>
|
||||
|
@ -99,7 +100,8 @@
|
|||
<extension>.cmd .CMD .7z .7Z .zip .ZIP</extension>
|
||||
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mame_libretro.dll %ROM%</command>
|
||||
<command label="MAME 2000">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mame2000_libretro.dll %ROM%</command>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mame2003_plus_libretro.dll %ROM%</command>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mame2003_plus_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="MAME 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mame2010_libretro.dll %ROM%</command>
|
||||
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\fbneo_libretro.dll %ROM%</command>
|
||||
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\fbalpha2012_libretro.dll %ROM%</command>
|
||||
|
@ -219,10 +221,15 @@
|
|||
<name>c64</name>
|
||||
<fullname>Commodore 64</fullname>
|
||||
<path>%ROMPATH%\c64</path>
|
||||
<extension>.bin .BIN .cmd .CMD .crt .CRT .d2m .D2M .d4m .D4M .d64 .D64 .d6z .D6Z .d71 .D71 .d7z .D7Z .d80 .D80 .d81 .D81 .d82 .D82 .d8z .D8Z .g41 .G41 .g4z .G4Z .g64 .G64 .g6z .G6Z .gz .GZ .lnx .LNX .m3u .M3U .nbz .NBZ .nib .NIB .p00 .P00 .prg .PRG .t64 .T64 .tap .TAP .vfl .VFL .vsf .VSF .x64 .X64 .x6z .X6Z .7z .7Z .zip .ZIP</extension>
|
||||
<command label="VICE x64sc Accurate">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\vice_x64sc_libretro.dll %ROM%</command>
|
||||
<extension>.bin .BIN .cmd .CMD .crt .CRT .d2m .D2M .d4m .D4M .d64 .D64 .d6z .D6Z .d71 .D71 .d7z .D7Z .d80 .D80
|
||||
.d81 .D81 .d82 .D82 .d8z .D8Z .g41 .G41 .g4z .G4Z .g64 .G64 .g6z .G6Z .gz .GZ .lnx .LNX .m3u .M3U .nbz .NBZ
|
||||
.nib .NIB .p00 .P00 .prg .PRG .t64 .T64 .tap .TAP .vfl .VFL .vsf .VSF .x64 .X64 .x6z .X6Z .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="VICE x64sc Accurate">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\vice_x64sc_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="VICE x64 Fast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\vice_x64_libretro.dll %ROM%</command>
|
||||
<command label="VICE x64 SuperCPU">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\vice_xscpu64_libretro.dll %ROM%</command>
|
||||
<command label="VICE x64 SuperCPU">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\vice_xscpu64_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="VICE x128">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\vice_x128_libretro.dll %ROM%</command>
|
||||
<command label="Frodo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\frodo_libretro.dll %ROM%</command>
|
||||
<platform>c64</platform>
|
||||
|
@ -356,10 +363,18 @@
|
|||
<path>%ROMPATH%\fba</path>
|
||||
<extension>.iso .ISO .7z .7Z .zip .ZIP</extension>
|
||||
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\fbalpha2012_libretro.dll %ROM%</command>
|
||||
<command label="FB Alpha 2012 Neo Geo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\fbalpha2012_neogeo_libretro.dll %ROM%</command>
|
||||
<command label="FB Alpha 2012 CPS-1">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\fbalpha2012_cps1_libretro.dll %ROM%</command>
|
||||
<command label="FB Alpha 2012 CPS-2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\fbalpha2012_cps2_libretro.dll %ROM%</command>
|
||||
<command label="FB Alpha 2012 CPS-3">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\fbalpha2012_cps3_libretro.dll %ROM%</command>
|
||||
<command label="FB Alpha 2012 Neo Geo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\fbalpha2012_neogeo_libretro.dll
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="FB Alpha 2012 CPS-1">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\fbalpha2012_cps1_libretro.dll
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="FB Alpha 2012 CPS-2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\fbalpha2012_cps2_libretro.dll
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="FB Alpha 2012 CPS-3">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\fbalpha2012_cps3_libretro.dll
|
||||
%ROM%
|
||||
</command>
|
||||
<platform>arcade</platform>
|
||||
<theme>fba</theme>
|
||||
</system>
|
||||
|
@ -439,9 +454,14 @@
|
|||
<name>genesis</name>
|
||||
<fullname>Sega Genesis</fullname>
|
||||
<path>%ROMPATH%\genesis</path>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_libretro.dll %ROM%</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_wide_libretro.dll %ROM%</command>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx
|
||||
.MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_wide_libretro.dll
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\picodrive_libretro.dll %ROM%</command>
|
||||
<command label="BlastEm">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\blastem_libretro.dll %ROM%</command>
|
||||
<platform>genesis</platform>
|
||||
|
@ -506,7 +526,8 @@
|
|||
<fullname>Multiple Arcade Machine Emulator</fullname>
|
||||
<path>%ROMPATH%\mame</path>
|
||||
<extension>.cmd .CMD .7z .7Z .zip .ZIP</extension>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mame2003_plus_libretro.dll %ROM%</command>
|
||||
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mame2003_plus_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="MAME 2000">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mame2000_libretro.dll %ROM%</command>
|
||||
<command label="MAME 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mame2010_libretro.dll %ROM%</command>
|
||||
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mame_libretro.dll %ROM%</command>
|
||||
|
@ -537,9 +558,14 @@
|
|||
<name>mastersystem</name>
|
||||
<fullname>Sega Master System</fullname>
|
||||
<path>%ROMPATH%\mastersystem</path>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .col .COL .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .rom .ROM .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_libretro.dll %ROM%</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_wide_libretro.dll %ROM%</command>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .col .COL .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md
|
||||
.MD .mdx .MDX .rom .ROM .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_wide_libretro.dll
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="SMS Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\smsplus_libretro.dll %ROM%</command>
|
||||
<command label="Gearsystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\gearsystem_libretro.dll %ROM%</command>
|
||||
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\picodrive_libretro.dll %ROM%</command>
|
||||
|
@ -568,9 +594,14 @@
|
|||
<name>megadrive</name>
|
||||
<fullname>Sega Mega Drive</fullname>
|
||||
<path>%ROMPATH%\megadrive</path>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_libretro.dll %ROM%</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_wide_libretro.dll %ROM%</command>
|
||||
<extension>.68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx
|
||||
.MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Genesis Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\genesis_plus_gx_wide_libretro.dll
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\picodrive_libretro.dll %ROM%</command>
|
||||
<command label="BlastEm">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\blastem_libretro.dll %ROM%</command>
|
||||
<platform>megadrive</platform>
|
||||
|
@ -662,7 +693,8 @@
|
|||
<fullname>Nintendo 64</fullname>
|
||||
<path>%ROMPATH%\n64</path>
|
||||
<extension>.n64 .N64 .v64 .V64 .z64 .Z64 .bin .BIN .u1 .U1 .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Mupen64Plus-Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mupen64plus_next_libretro.dll %ROM%</command>
|
||||
<command label="Mupen64Plus-Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mupen64plus_next_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="ParaLLEl N64">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\parallel_n64_libretro.dll %ROM%</command>
|
||||
<platform>n64</platform>
|
||||
<theme>n64</theme>
|
||||
|
@ -820,9 +852,12 @@
|
|||
<name>pcengine</name>
|
||||
<fullname>NEC PC Engine</fullname>
|
||||
<path>%ROMPATH%\pcengine</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_libretro.dll %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_fast_libretro.dll %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_fast_libretro.dll %ROM%
|
||||
</command>
|
||||
<platform>pcengine</platform>
|
||||
<theme>pcengine</theme>
|
||||
</system>
|
||||
|
@ -830,9 +865,12 @@
|
|||
<name>pcenginecd</name>
|
||||
<fullname>NEC PC Engine CD</fullname>
|
||||
<path>%ROMPATH%\pcenginecd</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_libretro.dll %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_fast_libretro.dll %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_fast_libretro.dll %ROM%
|
||||
</command>
|
||||
<platform>pcenginecd</platform>
|
||||
<theme>pcenginecd</theme>
|
||||
</system>
|
||||
|
@ -912,9 +950,12 @@
|
|||
<name>psx</name>
|
||||
<fullname>Sony PlayStation</fullname>
|
||||
<path>%ROMPATH%\psx</path>
|
||||
<extension>.bin .BIN .cbn .CBN .ccd .CCD .chd .CHD .cue .CUE .ecm .ECM .exe .EXE .img .IMG .iso .ISO .m3u .M3U .mdf .MDF .mds .MDS .pbp .PBP .psexe .PSEXE .psf .PSF .toc .TOC .z .Z .znx .ZNX .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .cbn .CBN .ccd .CCD .chd .CHD .cue .CUE .ecm .ECM .exe .EXE .img .IMG .iso .ISO .m3u .M3U
|
||||
.mdf .MDF .mds .MDS .pbp .PBP .psexe .PSEXE .psf .PSF .toc .TOC .z .Z .znx .ZNX .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PSX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_psx_libretro.dll %ROM%</command>
|
||||
<command label="Beetle PSX HW">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_psx_hw_libretro.dll %ROM%</command>
|
||||
<command label="Beetle PSX HW">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_psx_hw_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="PCSX ReARMed">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\pcsx_rearmed_libretro.dll %ROM%</command>
|
||||
<command label="DuckStation">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\duckstation_libretro.dll %ROM%</command>
|
||||
<platform>psx</platform>
|
||||
|
@ -1023,12 +1064,18 @@
|
|||
<name>snes</name>
|
||||
<fullname>Nintendo SNES (Super Nintendo)</fullname>
|
||||
<path>%ROMPATH%\snes</path>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC .smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC
|
||||
.smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Snes9x - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\snes9x_libretro.dll %ROM%</command>
|
||||
<command label="Snes9x 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\snes9x2010_libretro.dll %ROM%</command>
|
||||
<command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\bsnes_libretro.dll %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\bsnes_mercury_accuracy_libretro.dll %ROM%</command>
|
||||
<command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_supafaust_libretro.dll %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L
|
||||
%CORE_RETROARCH%\bsnes_mercury_accuracy_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_supafaust_libretro.dll
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mesen-s_libretro.dll %ROM%</command>
|
||||
<platform>snes</platform>
|
||||
<theme>snes</theme>
|
||||
|
@ -1037,12 +1084,18 @@
|
|||
<name>snesna</name>
|
||||
<fullname>Nintendo SNES (Super Nintendo)</fullname>
|
||||
<path>%ROMPATH%\snesna</path>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC .smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC
|
||||
.smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Snes9x - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\snes9x_libretro.dll %ROM%</command>
|
||||
<command label="Snes9x 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\snes9x2010_libretro.dll %ROM%</command>
|
||||
<command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\bsnes_libretro.dll %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\bsnes_mercury_accuracy_libretro.dll %ROM%</command>
|
||||
<command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_supafaust_libretro.dll %ROM%</command>
|
||||
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L
|
||||
%CORE_RETROARCH%\bsnes_mercury_accuracy_libretro.dll %ROM%
|
||||
</command>
|
||||
<command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_supafaust_libretro.dll
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mesen-s_libretro.dll %ROM%</command>
|
||||
<platform>snes</platform>
|
||||
<theme>snesna</theme>
|
||||
|
@ -1097,7 +1150,9 @@
|
|||
<fullname>NEC SuperGrafx</fullname>
|
||||
<path>%ROMPATH%\supergrafx</path>
|
||||
<extension>.pce .PCE .sgx .SGX .cue .CUE .ccd .CCD .chd .CHD .7z .7Z .zip .ZIP</extension>
|
||||
<command label="Beetle SuperGrafx">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_supergrafx_libretro.dll %ROM%</command>
|
||||
<command label="Beetle SuperGrafx">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_supergrafx_libretro.dll
|
||||
%ROM%
|
||||
</command>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_libretro.dll %ROM%</command>
|
||||
<platform>supergrafx</platform>
|
||||
<theme>supergrafx</theme>
|
||||
|
@ -1124,9 +1179,12 @@
|
|||
<name>tg16</name>
|
||||
<fullname>NEC TurboGrafx-16</fullname>
|
||||
<path>%ROMPATH%\tg16</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_libretro.dll %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_fast_libretro.dll %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_fast_libretro.dll %ROM%
|
||||
</command>
|
||||
<platform>pcengine</platform>
|
||||
<theme>tg16</theme>
|
||||
</system>
|
||||
|
@ -1134,9 +1192,12 @@
|
|||
<name>tg-cd</name>
|
||||
<fullname>NEC TurboGrafx-CD</fullname>
|
||||
<path>%ROMPATH%\tg-cd</path>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP</extension>
|
||||
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC
|
||||
.7z .7Z .zip .ZIP
|
||||
</extension>
|
||||
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_libretro.dll %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_fast_libretro.dll %ROM%</command>
|
||||
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%\mednafen_pce_fast_libretro.dll %ROM%
|
||||
</command>
|
||||
<platform>pcenginecd</platform>
|
||||
<theme>tg-cd</theme>
|
||||
</system>
|
||||
|
|
|
@ -238,7 +238,7 @@ based on: 'recalbox-multi' by the Recalbox community
|
|||
</text>
|
||||
<badges name="md_badges">
|
||||
<pos>0.8125 0.65</pos>
|
||||
<origin>0 0</origin>
|
||||
<origin>0.5 0.5</origin>
|
||||
|
||||
<!-- flexbox properties -->
|
||||
<direction>row</direction>
|
||||
|
|
Loading…
Reference in a new issue