Commit Graph

2122 Commits

Author SHA1 Message Date
LibretroAdmin d0b3c1742d (Video) use flags for FBO passes, GL2 renderchain, etc 2022-10-26 21:21:21 +02:00
LibretroAdmin d30f16dc79 Remove cursor directory/cursor manager list - Views obsoleted
this
2022-10-25 15:21:47 +02:00
LibretroAdmin 07ae7ff7f1 Turn more static const variables in config.def.h into define macros 2022-10-18 13:39:21 +02:00
LibretroAdmin 57d5b8749e (Android) Enable 'Vibrate On Key Press' by default
(config.def.h) Turn some const variables into define macros
2022-10-18 12:13:47 +02:00
Michael Burgardt 254ac65549
Add British English language option (#14504) 2022-10-12 23:26:00 +02:00
LibretroAdmin 7d956b611c rarch_setting - we can downgrade flags and free_flags to 32bit
since the flags don't come anywhere near close to 64 unique flags
2022-10-05 04:34:47 +02:00
LibretroAdmin ffa1ae4143 setting_list.c - implement cmd_trigger_event_triggered as flag 2022-10-05 04:23:02 +02:00
LibretroAdmin fa40754585 (MIST/STEAM/STEAMDECK) Don't expose Black Frame Insertion if we are
running RetroArch on a Steam Deck
2022-10-04 22:59:57 +02:00
LibretroAdmin 8c49eed56c rarch_setting - remove dont_use_enum_idx_representation value -
set it as a flag instead
2022-10-03 15:42:36 +02:00
LibretroAdmin 0a8ff5d15d (menu_setting) enforce_minrange and enforce_maxrange become flags,
and make remainder of minrange/maxrange local variables of type
float
2022-10-03 02:28:12 +02:00
LibretroAdmin 13cc6b7f46 Use float values now that setting min/max are float instead of double 2022-10-03 01:53:58 +02:00
sonninnos e902df3b0d
(XMB) Add options for hiding header and horizontal title margin (#14439) 2022-09-26 12:57:20 +02:00
Bobby Smith cd93bdc058
Fix "Windowed Scale" dropdown menu (#14433) 2022-09-22 12:58:56 +02:00
LibretroAdmin ce8389d4a6 (menu_setting.c) Remove code duplicated functions 2022-09-13 11:06:37 +02:00
tr12345 8cc866b051
New Menu Items for disabling Info & Search buttons in the menu (#14259)
* New Menu Items Disable Info & Search

Add menu options for disabling Info and   Search buttons

* Update msg_hash_us.h

Update Sublabels

* Update menu_setting.c

Set Advanced flag for new settings
2022-09-12 23:17:24 +02:00
LibretroAdmin 84868ab21f (Setting) Windowed scale should be an integer instead of float 2022-09-05 04:03:04 +02:00
LibretroAdmin 003cea5d42 Fix some 'implicit conversion loses precision' warnings 2022-09-01 15:15:48 +02:00
LibretroAdmin 19c72a413f (gfx_thumbnail_path.c) Cache localized string
(menu_displaylist.c) Some optimizations:
* Make sure val_d is never bigger than 16, it should just
contain a number. 16 is more than plenty (and probably too big even)
* Hose val_d out of loops if its value never changes inside the loop
* Attempt to avoid calling msg_hash_to_str inside loops unnecessarily
2022-08-27 13:20:29 +02:00
LibretroAdmin d67cb22c7f (menu_setting.c) Replace trivial usage of snprintf with strlcpy (where it only printed a
string and nothing else, or similar simple usage)
2022-08-25 19:56:44 +02:00
LibretroAdmin 6f738d4fbd Gradually get rid of strcpy_literal
Reasons:
1 - Just a macro for strcpy
1.2 - doesn't have a return type unlike strlcpy, can't be used
for string concatenation
1.3 - unsafe compared to strlcpy

Do either manual string assignment per character or strlcpy, no
inbetween by resorting to strcpy
2022-08-23 15:04:47 +02:00
MrHuu 46bafd6e46
(3DS) Add bottom menu options (#14323) 2022-08-17 08:23:07 +02:00
Cthulhu-throwaway c180560165
(Netplay) Improve check frames menu entry (#14320) 2022-08-13 22:28:43 +02:00
Cthulhu-throwaway 908667d97a
(Netplay) Removal of older unused code (#14312) 2022-08-11 23:17:33 +02:00
LibretroAdmin a6e210e9db Get rid of some strlcats 2022-08-08 22:41:32 +02:00
Cthulhu-throwaway c030e1c5dc
(Netplay) Support for customizing chat colors (#14305) 2022-08-08 20:09:06 +02:00
TheRhysWyrill 9d939a35d6
Add Daite XMB Icon Theme (#14263) 2022-08-05 04:27:34 +02:00
LibretroAdmin 02df727cb2 Avoid strtof() since it's C99/POSIX. Go for strtod followed by float
cast since it should be almost identical
2022-08-03 14:07:32 +02:00
TheRhysWyrill 522d1ed16d
Add Purple Rain Theme (#14212)
* Add Purple Rain Theme

* Revert "Add Purple Rain Theme"

This reverts commit ceb896785b.

* Add Purple Rain Theme
2022-07-24 21:26:16 +02:00
libretroadmin 4b5c7856e6 Remove some more explicit NULL-termination when we're calling a
string function that calls strlcpy under the hood
2022-07-19 20:43:12 +02:00
LibretroAdmin 87240556ea
Should fix Android strtol regression (when converting from sscanf) (#14183) 2022-07-18 04:38:52 +02:00
libretroadmin fbd765f167 Change menu_setting.c back 2022-07-18 03:11:38 +02:00
libretroadmin 08cccc811c Some slight optimizations of menu callback functions - better variable
scoping
2022-07-17 18:09:28 +02:00
libretroadmin c3483654c9 Revert back to sscanf for versions of MSVC prior to MSVC2013 - prior
to MSVC2013, MSVC did not yet support strtof
2022-07-17 17:37:22 +02:00
libretroadmin 3ebfcbc7c7 setting_set_with_string_representation - avoid sscanf for trivial
operations when we can use strtol/strtoul/strtof
2022-07-17 09:46:27 +02:00
libretroadmin b7926605f4 Remove fill_short_pathname_representation 2022-07-11 21:40:09 +02:00
libretroadmin e91cf0e40d No longer use fill_pathname_noext - just basic strlcpy/strlcat string
concatenation
2022-07-11 18:48:02 +02:00
libretroadmin 281a498474 Backport 05a98b7efe
- fix off by one error for input_block_timeout setting
also default to 0 for this setting (pretty massive performance gain)
2022-07-07 18:03:45 +02:00
Cthulhu-throwaway b55fa28896
(Netplay/Menu) Localize relay servers (#14136) 2022-07-03 13:45:13 +02:00
Cthulhu-throwaway 78bc42de68
(Netplay/Lobby) Add setting for filtering out rooms with non-installed cores (#14124) 2022-07-02 00:24:33 +02:00
sonninnos 860155969e
Add 'Ago' to playlist last played styles (#14086) 2022-06-22 22:55:32 +02:00
sonninnos a0bfdcce3b
(D3D11/12) Make waitable swapchains optional (#14074) 2022-06-19 21:25:37 +02:00
sonninnos ca0b3095e8
(D3D11/12) Make low-latency optional (#14073) 2022-06-19 14:14:34 +02:00
sonninnos 3d619de114 Automatic Frame Delay improvements 2022-06-14 07:11:43 +03:00
sonninnos 0bb65fb39c (D3D11/12) Add waitable swapchains and max frame latency option 2022-06-07 00:25:03 +03:00
Ryunam d7cfcd3f9b Add option to toggle automatic refresh rate switching 2022-05-16 17:50:11 +02:00
LibretroAdmin 9dd03f6d9f
Merge pull request #13835 from sonninnos/quickmenu-reorder
Reorganize Quick Menu items
2022-05-16 12:06:19 +01:00
LibretroAdmin dc0054a747
Merge pull request #13927 from jdgleaver/auto-video-swap-interval
Enable automatic configuration of 'VSync Swap Interval'
2022-05-13 14:17:56 +01:00
LibretroAdmin 533d746f64
Merge pull request #13649 from phcoder/ctrl
Add a configurable workaround for Android reconnecting devices
2022-05-12 20:56:58 +02:00
jdgleaver 801b16885e Enable automatic configuration of 'VSync Swap Interval' 2022-05-12 14:22:46 +01:00
Cthulhu-throwaway 80a9c16b3f
(Netplay/Lobby) Add a toggleable filter for passworded rooms (#13920)
In addition, move lobby filters into its own submenu for better organization.
2022-05-08 04:24:58 +02:00
Alexander Trufanov 55aceb5356
Allow mitm server selection on OK callback (#13906)
* Allow mitm server selection on OK callback
2022-05-02 19:44:53 +02:00
sonninnos 0b55188969 Reorganize Quick Menu items 2022-04-28 18:57:46 +03:00
jdgleaver 37c56d0d09
Add option to disable automatic saving of input remap files (#13894) 2022-04-27 19:12:53 +02:00
Michael Burgardt e185955bc1
Add Catalan language option (#13850) 2022-04-20 14:37:24 +02:00
Joel Puig Rubio 03146e4604
Label Valencian as a Catalan dialect (#13837) 2022-04-19 11:58:50 +02:00
sonninnos c185c3b916
Hide UI Companion menu items when they are not available (#13807) 2022-04-13 14:50:33 +02:00
Vladimir Serbinenko 2ef2ff1b36 Add a configurable workaround for Android reconnecting devices
Closes https://github.com/libretro/RetroArch/issues/3414

I have investigated the issue. The crux of the problem is that on Android there
is no way distinguishing 2 scenarios:
1) 2 identical bluetooth controllers A and B and first there are button presses
only on controller A and then on controller B
2) the same controller disconnects and reconnects.
Android doesn't give bluetooth mac address of where the touch came from, only
opaque ID and this opaque ID changes after reconnect. Hence without changes to
android this is infeasible without giving up the ability for 2 users to play on
identical controllers.

I guess that this sacrifice makes sense for affected users
2022-04-05 18:40:27 +02:00
Jamiras dcabde33fc
disallow manual frame delay setting in hardcore (#13826) 2022-04-05 01:06:47 +02:00
Mats 4a1a1e2fa7
(steam) Introduce Steam Rich Presence (#13798) 2022-04-02 08:07:40 +01:00
Tony 569b3945d6
Move 'Show Menu Bar' under 'Windowed Mode' settings (#13806) 2022-03-31 17:30:44 +02:00
Michael Burgardt fd35162cbe
Add Valencian language option (#13789) 2022-03-30 17:59:09 +02:00
twinaphex af0e49df57 Fix some warnings 2022-03-25 15:41:30 +01:00
sonninnos 8fc14354e9 (RGUI) Add 'Gray Dark + Light' themes 2022-03-22 17:27:54 +01:00
sonninnos 8e962e495c (GLUI) Add 'Gray Dark + Light' themes 2022-03-22 13:09:48 +01:00
sonninnos fb444f9d91 (Ozone) Add 'Gray Dark + Light' themes 2022-03-22 06:59:05 +01:00
jdgleaver 1e31a8d5fd Remove 'Advanced Settings' flag from 'Settings > Core' menu 2022-03-21 15:10:31 +01:00
sonninnos 27a6210f96 (XMB) Add title margin adjustment 2022-03-18 13:24:50 +01:00
jdgleaver b08314cf60 Prevent 'global' configuration of input libretro device type 2022-03-15 17:43:28 +01:00
Tony c1216fd16d
(XMB) Vertical Fade corrections (#13736) 2022-03-12 16:50:56 +01:00
Nikos Chantziaras d9bc8fb796
Ozone: Add thumbnail scale option (#13620)
* Ozone: Add thumbnail scale option

* CHANGES.md: Add ozone thumbnail bar scaling option
2022-03-11 15:51:41 +01:00
Jamiras b4d9d6c5fc
move slowdown disable into toggle_hardcore_active (#13734) 2022-03-11 07:17:54 +01:00
jdgleaver c67806dbd7
Enable manual selection of which cores are displayed in the 'Standalone Cores' menu (#13722) 2022-03-09 17:49:16 +01:00
Mats 249241d7cd
(steam) Initial integration with Steam API w/ mist (#13710) 2022-03-09 15:05:07 +01:00
MrHuu 9ed51bc528
(3DS) Add new3ds speedup toggle (#13718) 2022-03-09 08:20:15 +01:00
vaguerant 1726d8acb9
Add Optimize for GamePad option on Wii U (#13257)
* Add 'Optimize for Wii U GamePad' option

* style nit
2022-03-08 14:56:51 +01:00
Michael Burgardt 56f2e2f7b8
Add Czech language option (#13680) 2022-03-07 19:11:39 +01:00
jdgleaver 9b0cb0fc92
Add 'Standalone Cores' menu (#13655) 2022-02-22 19:23:48 +01:00
MrHuu a7b7472c34
(RGUI) Add dynamic theme (#13612)
* (RGUI) Add dynamic theme

* (RGUI) Cleanup

* (RGUI) Apply jdgleaver's dynamic theme patch
2022-02-16 15:56:10 +01:00
Tony d9a4dc52c0
Increase maximum fast-forward ratio (#13552) 2022-01-27 11:37:09 +01:00
Tony 84f558db0b
Add optional frame skipping when fast-forwarding (#13550) 2022-01-26 18:30:33 +01:00
Michael Burgardt 311fec15d9
Add Indonesian, Swedish and Ukrainian language options (#13490)
* Add Indonesian, Swedish and Ukrainian language options

* Enable Indonesian and Swedish localisations for RGUI
2022-01-19 19:12:55 +01:00
Vincent Pelletier d8d21e9947
Use mapped controller name in setting_action_ok_bind_all_save_autoconfig (#13500)
Consistently with input_config_get_device_name use in
get_string_representation_split_joycon.
Fixes a bug where saved autoconfig would not match the current device, but
an unpredictable other device in the system.
2022-01-17 13:47:25 +01:00
jdgleaver 209b3b76b3
Restore missing 'Cache Core Info Files' menu entry (#13487) 2022-01-13 19:59:19 +01:00
Tony b7d77e9484
(XMB) Optional vertical list item fade (#13455) 2022-01-07 08:46:49 +01:00
Cthulhu-throwaway c29fd8e53a
Menu setting fixes (#13439)
Fixes for some netplay settings that don't work well in the menu.
2022-01-04 13:21:53 +01:00
Tony 17f63e6e39
(XMB+Ozone) Category + History/Favorites icons (#13433)
* (XMB+Ozone) Icons for matching core option categories

* (XMB+Ozone) Playlist content icon option for history/favorites
2021-12-30 20:14:57 +01:00
Cthulhu-throwaway d017ce7b03
Filter out non-connectable rooms (#13429)
Add an option for filtering out non-connectable netplay rooms.
2021-12-30 08:33:54 +01:00
Nikos Chantziaras be650a790c
Add option for showing the overlay behind the menu (#13360)
* Add option for showing the overlay behind the menu

This commit lays the groundwork for this option. Support for this option
in the video drivers themselves is going to be added in later commits.

* gl1: Add overlay behind menu support

* gl2: Add overlay behind menu support

* gl3: Add overlay behind menu support

* vulkan: Add overlay behind menu support

* ctr: Add overlay behind menu support

* d3d9: Add overlay behind menu support

* d3d10: Add overlay behind menu support

* d3d11: Add overlay behind menu support

* d3d12: Add overlay behind menu support

* CHANGES.md: overlay behind menu

Co-authored-by: MrHuu <MrHuu@users.noreply.github.com>
Co-authored-by: Tony <45124675+sonninnos@users.noreply.github.com>
2021-12-26 04:56:44 +01:00
Cthulhu-throwaway c752f9b0de
Custom relay server support (#13395)
* Custom relay server support

Add support for custom user-ran relay servers.

* snprintf NULL fix
2021-12-23 13:54:52 +01:00
Cthulhu-throwaway 690c802921
Netplay Stuff (#13375)
* Netplay Stuff

## PROTOCOL FALLBACK
In order to support older clients a protocol fallback system was introduced.
The host will no longer send its header automatically after a TCP connection is established, instead, it awaits for the client to send his before determining which protocol this connection is going to operate on.
Netplay has now two protocols, a low protocol and a high protocol; the low protocol is the minimum protocol it supports, while the high protocol is the highest protocol it can operate on.
To fully support older clients, a hack was necessary: sending the high protocol in the unused client's header salt field, while keeping the protocol field to the low protocol. Without this hack we would only be able to support older clients if a newer client was the host.
Any future system can make use of this system by checking connection->netplay_protocol, which is available for both the client and host.

## NETPLAY CHAT
Starting with protocol 6, netplay chat is available through the new NETPLAY_CMD_PLAYER_CHAT command.
Limitations of the command code, which causes a disconnection on unknown commands, makes this system not possible on protocol 5.
Protocol 5 connections can neither send nor receive chat, but other netplay operations are unaffected.
Clients send chat as a string to the server, and it's the server's sole responsability to relay chat messages.
As of now, sending chat uses RetroArch's input menu, while the display of on-screen chat uses a widget overlay and RetroArch's notifications as a fallback.
If a new overlay and/or input system is desired, no backwards compatibility changes need to be made.
Only clients in playing mode (as opposed to spectating mode) can send and receive chat.

## SETTINGS SHARING
Some settings are better used when both host and clients share the same configuration.
As of protocol 6, the following settings will be shared from host to clients (without altering a client's configuration file): input latency frames and allow pausing.

## NETPLAY TUNNEL/MITM
With the current MITM system being defunct (at least as of 1.9.X), a new system was in order to solve most if not all of the problems with the current system.
This new system uses a tunneling approach, which is similar to most VPN and tunneling services around.

Tunnel commands:
RATS[unique id] (RetroArch Tunnel Session) - 16 bytes -> When this command is sent with a zeroed unique id, the tunnel server interprets this as a netplay host wanting to create a new session, in this case, the same command is returned to the host, but now with its unique session id. When a client needs to connect to a host, this command is sent with the unique session id of the host, causing the tunnel server to send a RATL command to the host.
RATL[unique id] (RetroArch Tunnel Link) - 16 bytes -> The tunnel server sends this command to the host when a client wants to connect to the host. Once the host receives this command, it establishes a new connection to the tunnel server, sending this command together with the client's unique id through this new connection, causing the tunnel server to link this connection to the connection of the client.
RATP (RetroArch Tunnel Ping) - 4 bytes -> The tunnel server sends this command to verify that the host, whom the session belongs to, is still around. The host replies with the same command. A session is closed if the tunnel server can not verify that the host is alive.

Operations:
Host -> Instead of listening and accepting connections, it connects to the tunnel server, requests a new session and then monitor this connection for new linking requests. Once a request is received, it establishes a new connection to the tunnel server for linking with a client. The tunnel server's address and port are obtained by querying the lobby server. The host will publish its session id together with the rest of its info to the lobby server.
Client -> It connects to the tunnel server and then sends the session id of the host it wants to connect to. A host's session id is obtained from the json data sent by the lobby server.

Improvements (from current MITM system):
No longer a risk of TCP port exhaustion; we only use one port now at the tunnel server.
Very little cpu usage. About 95% net I/O bound now.
Future backwards compatible with any and all changes to netplay as it no longer runs any netplay logic at MITM servers.
No longer operates the host in client mode, which was a source of many of the current problems.
Cleaner and more maintainable system and code.

Notable functions:
netplay_mitm_query -> Grabs the tunnel's address and port from the lobby server.
init_tcp_socket -> Handles the creation and operation mode of the TCP socket based on whether it's host, host+MITM or client.
handle_mitm_connection -> Creates and completes linking connections and replies to ping commands (only 1 of each per call to not affect performance).

## MISC
Ping Limiter: If a client's estimated latency to the server is higher than this value, connection will be dropped just before finishing the netplay handshake.
Ping Counter: A ping counter (similar to the FPS one) can be shown in the bottom right corner of the screen, if you are connected to a host.
LAN Discovery: Refactored and moved to its own "Refresh Netplay LAN List" button.

## FIXES
Many minor fixes to the current netplay implementation are also included.

* Remove NETPLAY_TEST_BUILD
2021-12-19 16:58:01 +01:00
Tony 698ab4729a
Vulkan max swapchain images option adjustments (#13374) 2021-12-18 17:45:32 +01:00
Tony 71836c1055
Add option for showing notifications only in menu (#13326) 2021-12-16 14:38:43 +01:00
jdgleaver 688c652673
[GameMode] Improve error handling (#13362) 2021-12-15 19:01:39 +01:00
Nikos Chantziaras 430baf7c21
Add Linux GameMode support (#13339)
This can fix a lot of performance issues, like audio crackling and frame
time spikes. This requires the GameMode package to be installed. See:

https://github.com/FeralInteractive/gamemode

This commit adds a "Game Mode" bool option to the "Power
Management" and "Latency" settings sections, and it can be toggled
on/off without restarting RA.

The actual toggling of game mode happens in a new frontend platform
interface function. Perhaps this will become useful for other platforms
that provide some equivalent of Linux GameMode.

Since the GameMode ABI is fixed, and the API comes as a single,
header-only file with no actual deps, we simply bundle the header
(deps/feralgamemode/gamemode_client.h.) That way, all Linux builds will
have support for GameMode regardless of whether the GameMode development
package is installed or not.
2021-12-14 14:07:42 +01:00
Autechre b6695d8921
Netplay changes proposed for 1.9.14 (#13314)
* Added setting to allow/disallow players other than the host from pausing the game.
* Added a sublabel for netplay max connections.
* Fixed port override macro from not being set immediately after the port setting.
* Fixed memory leaks.
2021-12-04 02:34:21 +01:00
jdgleaver 73b252a0d8
Fix display of midi driver menu entry (#13286) 2021-11-25 13:24:52 +01:00
Autechre 113e9340c1
Move ui_companion_driver code out of retroarch.c (#13268)
* Move ui_companion_driver code out of retroarch.c

* Buildfix

* Fix error - was reading the array out of (preinitialized) bounds

* Remove unused variable
2021-11-21 23:19:23 +01:00
Autechre 5f49899343
Bluetooth refactor (#13266)
* Use HAVE_BLUETOOTH ifdef to strip out this code when not defined

* Split up bluetooth code into its own file
2021-11-21 20:44:08 +01:00
Autechre 71b30d7846
Split up wifi networking code - move it into separate file (#13262) 2021-11-21 12:37:39 +01:00
Tomáš Kelemen (vudiq) efad7a7dcc
Lakka: CD-ROM eject menu item
Adds new entry (where the entry for dumping CD is) to eject the disc -
in case the CD drive has no physical button to eject the disc / the
button does not work. Useless for most, but quality of life improvement
for some.

Upstream of patch used by Lakka at build time
1943ad296e/packages/libretro/retroarch/patches/retroarch-99-eject_disc.patch
2021-11-18 00:36:01 +01:00