diff --git a/CHANGELOG.md b/CHANGELOG.md
index 37ae9dc95..6a198002b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -29,10 +29,17 @@
* (Linux) Added support for the Microsoft Xbox 360 (xbox360) game system by running xenia via Wine
* (Linux) Added support for the Atari Jaguar CD (atarijaguarcd) game system by running BigPEmu via Wine
* (Linux) Added BigPEmu Wine as an alternative emulator for the atarijaguar system
+* (Linux) Added 3dSen Wine as an alternative emulator for the famicom and nes systems
* (Linux) Added support for the Visual Pinball (vpinball) game system
* (Linux) Added support for using the RetroArch AppImage release in portable mode (added corepath find rules)
* (Linux) Added support for the AppImage release of Snes9x
+* (Linux) Added support for the Flatpak release of Cemu
* (Linux) Added the PCSX2 Flatpak release to the non-legacy PCSX2 find rule configuration
+* (Linux) Updated the DuckStation find rules as the AppImage release filename has changed
+* (Linux) Updated the Citra find rules as the AppImage release filename has changed
+* (Windows) Added 3dSen standalone as an alternative emulator for the famicom and nes systems
+* (Windows) Added the .url file extension to the epic system
+* (Windows) Added the .lnk file extension to the steam system
* Removed atarijaguarcd as an extra platform for the atarijaguar system as it actually made scraping worse
* Changed the screensaver to never show the same game again until all games have been cycled through
* Reduced the slideshow screensaver fade-in time
@@ -60,7 +67,9 @@
* Added a "textRelativeScale" property to the carousel to size text smaller than the overall item size
* Added "iterationCount" and "onIterationsDone" properties to the video element
* Changed the "path" property for the video element to consider the set value even if it points to a non-existing file
+* Made it possible to set the defaultImage property for the carousel and grid elements using variables
* Added theme support for the "manual" metadata type for the text element
+* Added support for binding multiple texture units for use in the shaders
* Added the device serial number to the es_log.txt entries when adding or removing controllers
* Changed the application updater to not use the scraper's transfer and connection timeout settings
* Added support to MathUtil::md5Hash() for streaming files in chunks
@@ -69,6 +78,7 @@
* Added horizontal text scrolling functionality to TextComponent
* Removed all horizontal text scrolling code from ComponentList and TextListComponent
* Refactored TextListComponent to work more like the other primary components
+* Added conversion of some additional HTML character codes when scraping using ScreenScraper
* Added a lot more debug log output to the scraper
* Changed a number of stream operations to open files for writing in binary mode (to always create proper Unix line breaks)
* Changed the concept of "theme set" to simply "theme" everywhere in the code and documentation
@@ -80,10 +90,14 @@
* (Windows) Now only redirect the standard input/output streams to the console if there actually is a console
* (macOS) Changed the minimum required OS version from 10.14 "Mojave" to 10.15 "Catalina"
* (macOS) Completely removed support for the legacy OS build
+* Updated the MAME index files to include ROMs up to MAME version 0.258
+* Bundled the August 2023 release of the Mozilla TLS/SSL certificates
+* Updated SDL to 2.28.3 on Windows, macOS and the Linux AppImage builds
* Updated RapidJSON to commit a95e013b97ca6523f32da23f5095fcc9dd6067e5
* Updated rlottie to commit f969abf62c8df773e3951a1176000e70fcde637f
* Updated LunaSVG to 2.3.6
* Updated CImg to 3.2.6
+* (Windows) Updated curl to 8.2.1
### Bug fixes
diff --git a/THEMES-DEV.md b/THEMES-DEV.md
index 31cd5f67d..4955cf4f1 100644
--- a/THEMES-DEV.md
+++ b/THEMES-DEV.md
@@ -1983,6 +1983,7 @@ Properties:
* `tile` - type: BOOLEAN
- If true, the image will be tiled instead of stretched to fit its size. Useful for backgrounds. Do not combine with the `maxSize` or `cropSize` properties, instead always use `size` when tiling.
- Default is `false`
+ - This property can only be used when `path` has been set.
* `tileSize` - type: NORMALIZED_PAIR
- Size of the individual images making up the tile as opposed to the overall size for the element which is defined by the `size` property. If only one axis is specified (and the other is zero), then the other axis will be automatically calculated in accordance with the image's aspect ratio. Setting both axes to 0 is an error and tiling will be disabled in this case. If this property is omitted, then the size will be set to the actual image dimensions. For SVG images this means whatever canvas size has been defined inside the file.
- Minimum value per axis is `0` and maximum value per axis is `1`.
diff --git a/USERGUIDE-DEV.md b/USERGUIDE-DEV.md
index 9d8f7c589..554c2d93f 100644
--- a/USERGUIDE-DEV.md
+++ b/USERGUIDE-DEV.md
@@ -664,7 +664,7 @@ The following emulators are supported in AppImage format when using the bundled
| gc | Triforce | dolphin-emu-triforce*.AppImage |
| macintosh | Basilisk II | BasiliskII*.AppImage |
| macintosh | SheepShaver | SheepShaver*.AppImage |
-| n3ds | Citra | citra*.AppImage |
+| n3ds | Citra | citra-qt*.AppImage |
| n64 | RMG | RMG*.AppImage |
| n64dd | RMG | RMG*.AppImage |
| ps2 | PCSX2 | pcsx2*.AppImage |
@@ -739,7 +739,7 @@ So placing a manually downloaded emulator binary in either of these directories
The following manually downloaded emulators are supported when using the bundled configuration:
-| System name | Emulator | Filename configuration |
+| System name | Emulator | Filename |
| :------------------------------- | :--------------- | :-------------------------------- |
| amstradcpc | CPCemu | cpcemu/cpcemu |
| apple2 | LinApple | linapple/linapple |
@@ -781,6 +781,14 @@ cd ~/Applications/Cemu
chmod +x Cemu
```
+In addition to the above there are a couple of Windows emulators that need to run via Wine. Detailed setup instructions for these can be found elsewhere in this guide, but here's a table of the required installation paths:
+
+| System name | Emulator | Filename |
+| :------------------------------- | :--------------- | :-------------------------------- |
+| atarijaguar/atarijaguarcd | BigPEmu | BigPEmu/BigPEmu.exe |
+| famicom/nes | 3dSen | 3dSen/3dSen.exe |
+| xbox360 | xenia | xenia/xenia.exe |
+
## Running emulators in fullscreen mode
In general ES-DE does not pass command line parameters to emulators to start them in fullscreen mode. This is so as for most (if not all) emulators, command line arguments overrides the settings the user has defined. This means that windowed mode would become impossible to achieve without creating custom systems configuration entries if ES-DE enforced fullscreen mode. There are only a very few exceptions for emulators where there is no other way to enter fullscreen mode than by passing such options during game launch.
@@ -1064,15 +1072,15 @@ Note that scraper support is currently very poor for this system, so you may nee
**General**
-For all the supported MAME variants as well as Final Burn Alpha/FinalBurn Neo and Neo Geo, single file archives should be used. But these should retain the MAME names as filenames since ES-DE ships with MAME lookup tables, meaning the MAME names are expanded to the full game names.
+For all the supported MAME variants as well as Final Burn Alpha/FinalBurn Neo and Neo Geo, single file archives should be used. These files should retain the MAME filenames as ES-DE ships with MAME lookup tables, meaning the short names are expanded to full game names.
For instance `topgunnr.7z` will be expanded to `Top Gunner`.
This is required by the TheGamesDB scraper where the expanded filenames are used for game searches. (Screenscraper natively supports searches using the MAME names). It's also quite nice to have the gamelist populated with the expanded game names even before any scraping has taken place.
-By default ES-DE will filter out BIOSes and devices that can't be launched directly, meaning these will never show up in the gamelist. But this only applies to files that are listed in the regular MAME driver file and BIOSes and devices for systems like MESS will not be filtered out. You'll instead need to manually hide these files using the _Hidden_ option in the metadata editor.
+BIOS and device files must be placed together with the ROM files in the game system directory and not in the MAME configuration/home directory. It's pointless to separate potentially hundreds of BIOS and device files from the game files, and ES-DE will also automatically filter out such files. This means they will never show up in the gamelist. But this only applies to files that are listed in the regular MAME driver file, so BIOSes and devices for systems like MESS will not be filtered out. You'll instead need to manually hide these files using the _Hidden_ option in the metadata editor.
-If using the standalone release of FinalBurn Neo you also need to define the ROM directory in the fbneo.ini file or via the user interface as this emulator does not support passing the full path to the game ROM on game launch (see the comments about Model 2 Emulator below for more details).
+If using the standalone release of FinalBurn Neo you need to define the ROM directory in the fbneo.ini file or via the user interface as this emulator does not support passing the full path to the game ROM on game launch (see the comments about Model 2 Emulator below for more details).
**Sega Model 2**
@@ -1671,6 +1679,62 @@ Following this setup you will be able to launch games with the .ndd, .d64, .7z a
For ares you need the `64DD_IPL.bin` file added to the Firmware configuration screen inside the emulator. Following this you should be able to launch games with the .ndd file extension or such files compressed into .zip archives.
+### Nintendo NES and Famicom in 3D
+
+There is a commercial and proprietary emulator named [3dSen](http://www.geodstudio.net) that can be used to run NES and Famicom games in 3D. Only a limited set of games are supported and the quality of the 3D effect varies, but it's an interesting effect if you don't mind supporting closed-source emulator projects.
+
+For this guide it's assumed that you have purchased the emulator via Steam. ES-DE will however not run it via the Steam frontend, you'll instead need to relocate the 3dSen installation directory as detailed below.
+
+**Linux-specific installation**
+
+As 3dSen is a Windows-only emulator you'll need Wine to run it. More specifically you need the AppImage release of Wine which can be downloaded from here:\
+https://github.com/mmtrt/WINE_AppImage/releases
+
+Make sure to get the stable x86_64 release, for this example we assume that the file `wine-stable_8.0.2-x86_64.AppImage` has been downloaded.
+
+If it doesn't already exist, then create an `~/Applications` directory and be mindful that the letter case is correct. Copy the 3dSen installation directory into this folder. Following this move the Wine AppImage into this directory as well and set executable permissions for the file:
+```
+cd ~/Applications/3dSen
+chmod +x wine-stable_8.0.2-x86_64.AppImage
+```
+
+The find rule for 3dSen looks like the following so the Wine filename needs to match this pattern:
+```xml
+~/Applications/3dSen/wine*.AppImage
+```
+
+To conserve disk space if using Wine for multiple emulators you can of course instead symlink the Wine AppImage from a common location.
+
+**Windows-specific installation**
+
+If using the installer release of ES-DE you need to add the location of the 3dSen directory to your Path environment variable and if using the portable release you need to copy the 3dSen directory to the `Emulators` folder.
+
+**Game setup**
+
+In order to launch games using 3dSen you first need to add each game to the emulator interface. This is required as 3dSen does not support passing a game file location from the command line. Refer to the 3dSen documentation on how to accomplish this.
+
+After adding the games inside 3dSen you need to create launch files for use with ES-DE. These are simply named the same as the game files, but with the .3dsen extension:
+
+```
+~/ROMs/nes/Contra.3dsen
+~/ROMs/nes/Contra.nes
+~/ROMs/nes/Ice Climber.3dsen
+~/ROMs/nes/Ice Climber.nes
+```
+
+You could of course separate the 3D files into their own directory if you prefer that:
+```
+~/ROMs/nes/3D/Contra.3dsen
+~/ROMs/nes/3D/Ice Climber.3dsen
+~/ROMs/nes/Contra.nes
+~/ROMs/nes/Ice Climber.nes
+```
+
+Finally you need to add the 3dSen game ID to each file. The RetroBat project maintains a list of supported game IDs for the 3dSen emulator that you can find here:\
+https://wiki.retrobat.org/systems-and-emulators/supported-game-systems/game-consoles/nintendo-game-consoles/nes-3d
+
+To launch the .3dsen files you'll need to use the alternative emulator entry _3dSen (Wine)_ or _3dSen (Standalone)_ depending on your operating system. As you're unlikely to use 3dSen as your primary NES or Famicom emulator it's recommended to set this on a per-game basis using the metadata editor.
+
### Nintendo Wii U
The .wua archive format is the preferred method to use for Wii U games, but the method of using unpacked games is also documented here for reference.
@@ -3353,7 +3417,7 @@ The **@** symbol indicates that the emulator is _deprecated_ and will be removed
| easyrpg | EasyRPG Game Engine | EasyRPG | EasyRPG Player **(Standalone)** | No | See the specific _EasyRPG Game Engine_ section elsewhere in this guide |
| emulators | Emulators | _Suspend ES-DE_ | _Keep ES-DE running_,
_AppImage (Suspend ES-DE)_ [U],
_AppImage (Keep ES-DE running)_ [U] | No | See the specific _Ports and desktop applications_ section elsewhere in this guide |
| epic | Epic Games Store | Epic Games Store **(Standalone)** | | No | Shortcut (.desktop/.app/.lnk) file |
-| famicom | Nintendo Family Computer | Mesen | Mesen **(Standalone)** [UW],
Nestopia UE,
Nestopia UE **(Standalone)** [U],
FCEUmm,
QuickNES,
puNES **(Standalone)** [UW],
Mednafen **(Standalone)**,
ares **(Standalone)**,
ares FDS **(Standalone)** | No | Single archive or ROM file |
+| famicom | Nintendo Family Computer | Mesen | Mesen **(Standalone)** [UW],
Nestopia UE,
Nestopia UE **(Standalone)** [U],
FCEUmm,
QuickNES,
puNES **(Standalone)** [UW],
Mednafen **(Standalone)**,
ares **(Standalone)**,
ares FDS **(Standalone)**,
3dSen **(Wine)** [U],
3dSen **(Standalone)** [W] | No | Single archive or ROM file. For Famicom games in 3D see the specific _Nintendo NES and Famicom in 3D_ section elsewhere in this guide |
| fba | FinalBurn Alpha | FB Alpha 2012 | FB Alpha 2012 Neo Geo,
FB Alpha 2012 CPS-1,
FB Alpha 2012 CPS-2,
FB Alpha 2012 CPS-3 | Yes | See the specific _Arcade and Neo Geo_ section elsewhere in this guide |
| fbneo | FinalBurn Neo | FinalBurn Neo | FinalBurn Neo **(Standalone)** [UW] | Yes | See the specific _Arcade and Neo Geo_ section elsewhere in this guide |
| fds | Nintendo Famicom Disk System | Mesen | Mesen **(Standalone)** [UW],
Nestopia UE,
Nestopia UE **(Standalone)** [U],
FCEUmm,
Mednafen **(Standalone)**,
ares **(Standalone)** | Yes | Single archive or ROM file |
@@ -3407,7 +3471,7 @@ The **@** symbol indicates that the emulator is _deprecated_ and will be removed
| neogeo | SNK Neo Geo | FinalBurn Neo | FinalBurn Neo **(Standalone)** [UW],
MAME **(Standalone)** | Yes | See the specific _Arcade and Neo Geo_ section elsewhere in this guide |
| neogeocd | SNK Neo Geo CD | NeoCD | FinalBurn Neo,
FinalBurn Neo **(Standalone)** [U],
MAME **(Standalone)** | Yes | .chd (NeoCD and MAME only) or .cue file |
| neogeocdjp | SNK Neo Geo CD [Japan] | NeoCD | FinalBurn Neo,
FinalBurn Neo **(Standalone)** [U],
MAME **(Standalone)** | Yes | .chd (NeoCD and MAME only) or .cue file |
-| nes | Nintendo Entertainment System | Mesen | Mesen **(Standalone)** [UW],
Nestopia UE,
Nestopia UE **(Standalone)** [U],
FCEUmm,
QuickNES,
puNES **(Standalone)** [UW],
Mednafen **(Standalone)**,
ares **(Standalone)**,
ares FDS **(Standalone)** | No | Single archive or ROM file |
+| nes | Nintendo Entertainment System | Mesen | Mesen **(Standalone)** [UW],
Nestopia UE,
Nestopia UE **(Standalone)** [U],
FCEUmm,
QuickNES,
puNES **(Standalone)** [UW],
Mednafen **(Standalone)**,
ares **(Standalone)**,
ares FDS **(Standalone)**,
3dSen **(Wine)** [U],
3dSen **(Standalone)** [W] | No | Single archive or ROM file. For NES games in 3D see the specific _Nintendo NES and Famicom in 3D_ section elsewhere in this guide |
| ngp | SNK Neo Geo Pocket | Beetle NeoPop | RACE,
Mednafen **(Standalone)**,
ares **(Standalone)** | | |
| ngpc | SNK Neo Geo Pocket Color | Beetle NeoPop | RACE,
Mednafen **(Standalone)**,
ares **(Standalone)** | | |
| odyssey2 | Magnavox Odyssey2 | O2EM | | | |